hotspot/src/cpu/ppc/vm/cppInterpreter_ppc.cpp
changeset 23211 954e3a81da29
parent 22867 309bcf262a19
child 23221 b70675ece1ce
equal deleted inserted replaced
23209:da015b1dca01 23211:954e3a81da29
  1134   //
  1134   //
  1135   // Our signature handlers copy required arguments to the C stack
  1135   // Our signature handlers copy required arguments to the C stack
  1136   // (outgoing C args), R3_ARG1 to R10_ARG8, and F1_ARG1 to
  1136   // (outgoing C args), R3_ARG1 to R10_ARG8, and F1_ARG1 to
  1137   // F13_ARG13.
  1137   // F13_ARG13.
  1138   __ mr(R3_ARG1, R18_locals);
  1138   __ mr(R3_ARG1, R18_locals);
       
  1139 #if !defined(ABI_ELFv2)
  1139   __ ld(signature_handler_fd, 0, signature_handler_fd);
  1140   __ ld(signature_handler_fd, 0, signature_handler_fd);
       
  1141 #endif
  1140   __ call_stub(signature_handler_fd);
  1142   __ call_stub(signature_handler_fd);
  1141   // reload method
  1143   // reload method
  1142   __ ld(R19_method, state_(_method));
  1144   __ ld(R19_method, state_(_method));
  1143 
  1145 
  1144   // Remove the register parameter varargs slots we allocated in
  1146   // Remove the register parameter varargs slots we allocated in
  1293   // Block.  We do the call directly and leave the current
  1295   // Block.  We do the call directly and leave the current
  1294   // last_Java_frame setup undisturbed.  We must save any possible
  1296   // last_Java_frame setup undisturbed.  We must save any possible
  1295   // native result acrosss the call. No oop is present
  1297   // native result acrosss the call. No oop is present
  1296 
  1298 
  1297   __ mr(R3_ARG1, R16_thread);
  1299   __ mr(R3_ARG1, R16_thread);
       
  1300 #if defined(ABI_ELFv2)
       
  1301   __ call_c(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans),
       
  1302             relocInfo::none);
       
  1303 #else
  1298   __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, JavaThread::check_special_condition_for_native_trans),
  1304   __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, JavaThread::check_special_condition_for_native_trans),
  1299             relocInfo::none);
  1305             relocInfo::none);
       
  1306 #endif
  1300   __ bind(sync_check_done);
  1307   __ bind(sync_check_done);
  1301 
  1308 
  1302   //=============================================================================
  1309   //=============================================================================
  1303   // <<<<<< Back in Interpreter Frame >>>>>
  1310   // <<<<<< Back in Interpreter Frame >>>>>
  1304 
  1311 
  1411   // exception handler, pop the frame and return to the handler.
  1418   // exception handler, pop the frame and return to the handler.
  1412 
  1419 
  1413   // First, pop to caller's frame.
  1420   // First, pop to caller's frame.
  1414   __ pop_interpreter_frame(R11_scratch1, R12_scratch2, R21_tmp1  /* set to return pc */, R22_tmp2);
  1421   __ pop_interpreter_frame(R11_scratch1, R12_scratch2, R21_tmp1  /* set to return pc */, R22_tmp2);
  1415 
  1422 
  1416   __ push_frame_abi112(0, R11_scratch1);
  1423   __ push_frame_reg_args(0, R11_scratch1);
  1417   // Get the address of the exception handler.
  1424   // Get the address of the exception handler.
  1418   __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
  1425   __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
  1419                   R16_thread,
  1426                   R16_thread,
  1420                   R21_tmp1 /* return pc */);
  1427                   R21_tmp1 /* return pc */);
  1421   __ pop_frame();
  1428   __ pop_frame();
  2543 
  2550 
  2544   __ mr(R14, R3_ARG1);   // R14 := ARG1
  2551   __ mr(R14, R3_ARG1);   // R14 := ARG1
  2545   __ mr(R4_ARG2, R3_ARG1);  // ARG2 := ARG1
  2552   __ mr(R4_ARG2, R3_ARG1);  // ARG2 := ARG1
  2546 
  2553 
  2547   // Find the address of the "catch_exception" stub.
  2554   // Find the address of the "catch_exception" stub.
  2548   __ push_frame_abi112(0, R11_scratch1);
  2555   __ push_frame_reg_args(0, R11_scratch1);
  2549   __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
  2556   __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
  2550                   R16_thread,
  2557                   R16_thread,
  2551                   R4_ARG2);
  2558                   R4_ARG2);
  2552   __ pop_frame();
  2559   __ pop_frame();
  2553 
  2560