Mercurial > hg > graal-compiler
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 |