equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
2224 |
2224 |
2225 // We can finally stop using that last_Java_frame we setup ages ago |
2225 // We can finally stop using that last_Java_frame we setup ages ago |
2226 |
2226 |
2227 __ reset_last_Java_frame(thread, false); |
2227 __ reset_last_Java_frame(thread, false); |
2228 |
2228 |
2229 // Unpack oop result |
2229 // Unbox oop result, e.g. JNIHandles::resolve value. |
2230 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2230 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2231 Label L; |
2231 __ resolve_jobject(rax /* value */, |
2232 __ cmpptr(rax, (int32_t)NULL_WORD); |
2232 thread /* thread */, |
2233 __ jcc(Assembler::equal, L); |
2233 rcx /* tmp */); |
2234 __ movptr(rax, Address(rax, 0)); |
|
2235 __ bind(L); |
|
2236 __ verify_oop(rax); |
|
2237 } |
2234 } |
2238 |
2235 |
2239 if (CheckJNICalls) { |
2236 if (CheckJNICalls) { |
2240 // clear_pending_jni_exception_check |
2237 // clear_pending_jni_exception_check |
2241 __ movptr(Address(thread, JavaThread::pending_jni_exception_check_fn_offset()), NULL_WORD); |
2238 __ movptr(Address(thread, JavaThread::pending_jni_exception_check_fn_offset()), NULL_WORD); |