8129757: ppc/aarch: Fix passing thread to runtime after "8073165: Contended Locking fast exit bucket."

Reviewed-by: enevill, simonis, adinn
This commit is contained in:
Goetz Lindenmaier 2015-06-24 09:13:12 +02:00
parent 2ef39760e6
commit 1a88faab89
2 changed files with 6 additions and 4 deletions

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved. * Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -2120,6 +2120,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
save_native_result(masm, ret_type, stack_slots); save_native_result(masm, ret_type, stack_slots);
} }
__ mov(c_rarg2, rthread);
__ lea(c_rarg1, Address(sp, lock_slot_offset * VMRegImpl::stack_slot_size)); __ lea(c_rarg1, Address(sp, lock_slot_offset * VMRegImpl::stack_slot_size));
__ mov(c_rarg0, obj_reg); __ mov(c_rarg0, obj_reg);
@ -2128,7 +2129,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
__ ldr(r19, Address(rthread, in_bytes(Thread::pending_exception_offset()))); __ ldr(r19, Address(rthread, in_bytes(Thread::pending_exception_offset())));
__ str(zr, Address(rthread, in_bytes(Thread::pending_exception_offset()))); __ str(zr, Address(rthread, in_bytes(Thread::pending_exception_offset())));
rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), 2, 0, 1); rt_call(masm, CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), 3, 0, 1);
#ifdef ASSERT #ifdef ASSERT
{ {

View File

@ -2475,7 +2475,8 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
// Slow case of monitor enter. // Slow case of monitor enter.
// Inline a special case of call_VM that disallows any pending_exception. // Inline a special case of call_VM that disallows any pending_exception.
__ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), r_oop, r_box); // Arguments are (oop obj, BasicLock* lock, JavaThread* thread).
__ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C), r_oop, r_box, R16_thread);
__ asm_assert_mem8_is_zero(thread_(pending_exception), __ asm_assert_mem8_is_zero(thread_(pending_exception),
"no pending exception allowed on exit from SharedRuntime::complete_monitor_unlocking_C", 0); "no pending exception allowed on exit from SharedRuntime::complete_monitor_unlocking_C", 0);