Mercurial > hg > graal-jvmci-8
diff src/cpu/ppc/vm/sharedRuntime_ppc.cpp @ 22717:ba7846fcb814
Fix ppc and x86_32 after fetch_unroll_info_helper changes
Changes in 3c1edc9c60d8 only included x86_64 and sparc.
This change also reuses the existing unpack_kind instead of a new
field in UnrollBlock.
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Mon, 02 Nov 2015 15:33:53 +0100 |
parents | a433eb716ce1 |
children | 48fde4d03767 |
line wrap: on
line diff
--- a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Fri Oct 30 12:28:17 2015 +0100 +++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Mon Nov 02 15:33:53 2015 +0100 @@ -2841,7 +2841,7 @@ __ set_last_Java_frame(R1_SP, noreg); // With EscapeAnalysis turned on, this call may safepoint! - __ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info), R16_thread); + __ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info), R16_thread, exec_mode_reg); address calls_return_pc = __ last_calls_return_pc(); // Set an oopmap for the call site that describes all our saved registers. oop_maps->add_gc_map(calls_return_pc - start, map); @@ -2854,6 +2854,8 @@ // by save_volatile_registers(...). RegisterSaver::restore_result_registers(masm, first_frame_size_in_bytes); + // reload the exec mode from the UnrollBlock (it might have changed) + __ lwz(exec_mode_reg, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes(), unroll_block_reg); // In excp_deopt_mode, restore and clear exception oop which we // stored in the thread during exception entry above. The exception // oop will be the return value of this stub. @@ -2989,8 +2991,9 @@ __ set_last_Java_frame(/*sp*/R1_SP, /*pc*/R11_scratch1); __ mr(klass_index_reg, R3); + __ li(R5, Deoptimization::Unpack_exception); __ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap), - R16_thread, klass_index_reg); + R16_thread, klass_index_reg, R5); // Set an oopmap for the call site. oop_maps->add_gc_map(gc_map_pc - start, map);