< prev index next >

src/cpu/x86/vm/sharedRuntime_x86_64.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 2577,2591 **** restore_native_result(masm, ret_type, stack_slots); } __ reset_last_Java_frame(false); ! // Unbox oop result, e.g. JNIHandles::resolve value. if (ret_type == T_OBJECT || ret_type == T_ARRAY) { ! __ resolve_jobject(rax /* value */, ! r15_thread /* thread */, ! rcx /* tmp */); } if (CheckJNICalls) { // clear_pending_jni_exception_check __ movptr(Address(r15_thread, JavaThread::pending_jni_exception_check_fn_offset()), NULL_WORD); --- 2577,2594 ---- restore_native_result(masm, ret_type, stack_slots); } __ reset_last_Java_frame(false); ! // Unpack oop result if (ret_type == T_OBJECT || ret_type == T_ARRAY) { ! Label L; ! __ testptr(rax, rax); ! __ jcc(Assembler::zero, L); ! __ movptr(rax, Address(rax, 0)); ! __ bind(L); ! __ verify_oop(rax); } if (CheckJNICalls) { // clear_pending_jni_exception_check __ movptr(Address(r15_thread, JavaThread::pending_jni_exception_check_fn_offset()), NULL_WORD);
< prev index next >