hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
changeset 38931 3cf28d630349
parent 38685 e34308190947
child 39444 2eae9b74c1f3
equal deleted inserted replaced
38929:1ee62412a66f 38931:3cf28d630349
  1396 #else
  1396 #else
  1397   // workaround not needed on !LINUX :-)
  1397   // workaround not needed on !LINUX :-)
  1398   ShouldNotCallThis();
  1398   ShouldNotCallThis();
  1399   return NULL;
  1399   return NULL;
  1400 #endif
  1400 #endif
       
  1401 }
       
  1402 
       
  1403 void MacroAssembler::reserved_stack_check(Register return_pc) {
       
  1404   // Test if reserved zone needs to be enabled.
       
  1405   Label no_reserved_zone_enabling;
       
  1406 
       
  1407   ld_ptr(R0, JavaThread::reserved_stack_activation_offset(), R16_thread);
       
  1408   cmpld(CCR0, R1_SP, R0);
       
  1409   blt_predict_taken(CCR0, no_reserved_zone_enabling);
       
  1410 
       
  1411   // Enable reserved zone again, throw stack overflow exception.
       
  1412   push_frame_reg_args(0, R0);
       
  1413   call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone), R16_thread);
       
  1414   pop_frame();
       
  1415   mtlr(return_pc);
       
  1416   load_const_optimized(R0, StubRoutines::throw_delayed_StackOverflowError_entry());
       
  1417   mtctr(R0);
       
  1418   bctr();
       
  1419 
       
  1420   should_not_reach_here();
       
  1421 
       
  1422   bind(no_reserved_zone_enabling);
  1401 }
  1423 }
  1402 
  1424 
  1403 // CmpxchgX sets condition register to cmpX(current, compare).
  1425 // CmpxchgX sets condition register to cmpX(current, compare).
  1404 void MacroAssembler::cmpxchgw(ConditionRegister flag, Register dest_current_value,
  1426 void MacroAssembler::cmpxchgw(ConditionRegister flag, Register dest_current_value,
  1405                               Register compare_value, Register exchange_value,
  1427                               Register compare_value, Register exchange_value,