comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 4661:9ae5048b9153

Call uncommon_trap instead of fetch_unroll_info to correctly revoke biased locks on deopt.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Tue, 21 Feb 2012 19:31:06 +0100
parents 04b9a2566eec
children 8021e46f4a99 c2384f5b2e6e
comparison
equal deleted inserted replaced
4660:b06ade6e927c 4661:9ae5048b9153
2700 __ jcc(Assembler::equal, L); 2700 __ jcc(Assembler::equal, L);
2701 __ stop("SharedRuntime::generate_deopt_blob: last_Java_fp not cleared"); 2701 __ stop("SharedRuntime::generate_deopt_blob: last_Java_fp not cleared");
2702 __ bind(L); 2702 __ bind(L);
2703 } 2703 }
2704 #endif // ASSERT 2704 #endif // ASSERT
2705
2706 __ movl(c_rarg1, (int32_t)(Deoptimization::make_trap_request(Deoptimization::Reason_unreached, Deoptimization::Action_none)));
2705 __ mov(c_rarg0, r15_thread); 2707 __ mov(c_rarg0, r15_thread);
2706 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info))); 2708 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap)));
2709 oop_maps->add_gc_map( __ pc()-start, map->deep_copy());
2710
2711 //__ reset_last_Java_frame(false, false);
2712 //__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info)));
2707 2713
2708 // Need to have an oopmap that tells fetch_unroll_info where to 2714 // Need to have an oopmap that tells fetch_unroll_info where to
2709 // find any register it might need. 2715 // find any register it might need.
2710 oop_maps->add_gc_map(__ pc() - start, map); 2716 // oop_maps->add_gc_map(__ pc() - start, map);
2711 2717
2712 __ reset_last_Java_frame(false, false); 2718 __ reset_last_Java_frame(false, false);
2713 2719
2714 __ bind(after_fetch_unroll_info_call); 2720 __ bind(after_fetch_unroll_info_call);
2715 2721