Mercurial > hg > graal-compiler
diff src/share/vm/runtime/deoptimization.cpp @ 2338:4f148718983e
7025485: leverage shared x86-only deoptimization code
Summary: removed an ifdef IA32 around harmless code useful for some ports
Reviewed-by: chrisphi, never
author | bdelsart |
---|---|
date | Thu, 10 Mar 2011 17:44:32 +0100 |
parents | b92c45f2bc75 |
children | 0654ee04b214 2e038ad0c1d0 |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.cpp Mon Mar 07 16:03:28 2011 -0500 +++ b/src/share/vm/runtime/deoptimization.cpp Thu Mar 10 17:44:32 2011 +0100 @@ -101,9 +101,9 @@ _frame_pcs = frame_pcs; _register_block = NEW_C_HEAP_ARRAY(intptr_t, RegisterMap::reg_count * 2); _return_type = return_type; + _initial_fp = 0; // PD (x86 only) _counter_temp = 0; - _initial_fp = 0; _unpack_kind = 0; _sender_sp_temp = 0; @@ -459,18 +459,9 @@ frame_sizes, frame_pcs, return_type); -#if defined(IA32) || defined(AMD64) - // We need a way to pass fp to the unpacking code so the skeletal frames - // come out correct. This is only needed for x86 because of c2 using ebp - // as an allocatable register. So this update is useless (and harmless) - // on the other platforms. It would be nice to do this in a different - // way but even the old style deoptimization had a problem with deriving - // this value. NEEDS_CLEANUP - // Note: now that c1 is using c2's deopt blob we must do this on all - // x86 based platforms - intptr_t** fp_addr = (intptr_t**) (((address)info) + info->initial_fp_offset_in_bytes()); - *fp_addr = array->sender().fp(); // was adapter_caller -#endif /* IA32 || AMD64 */ + // On some platforms, we need a way to pass fp to the unpacking code + // so the skeletal frames come out correct. + info->set_initial_fp((intptr_t) array->sender().fp()); if (array->frames() > 1) { if (VerifyStack && TraceDeoptimization) {