2251 |
2251 |
2252 // We can finally stop using that last_Java_frame we setup ages ago |
2252 // We can finally stop using that last_Java_frame we setup ages ago |
2253 |
2253 |
2254 __ reset_last_Java_frame(thread, false); |
2254 __ reset_last_Java_frame(thread, false); |
2255 |
2255 |
2256 // Unpack oop result |
2256 // Unbox oop result, e.g. JNIHandles::resolve value. |
2257 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2257 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2258 Label L; |
2258 __ resolve_jobject(rax /* value */, |
2259 __ cmpptr(rax, (int32_t)NULL_WORD); |
2259 thread /* thread */, |
2260 __ jcc(Assembler::equal, L); |
2260 rcx /* tmp */); |
2261 __ movptr(rax, Address(rax, 0)); |
|
2262 __ bind(L); |
|
2263 __ verify_oop(rax); |
|
2264 } |
2261 } |
2265 |
2262 |
2266 if (!is_critical_native) { |
2263 if (!is_critical_native) { |
2267 // reset handle block |
2264 // reset handle block |
2268 __ movptr(rcx, Address(thread, JavaThread::active_handles_offset())); |
2265 __ movptr(rcx, Address(thread, JavaThread::active_handles_offset())); |