< 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 >