equal
deleted
inserted
replaced
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 |