equal
deleted
inserted
replaced
99 _number_of_frames = number_of_frames; |
99 _number_of_frames = number_of_frames; |
100 _frame_sizes = frame_sizes; |
100 _frame_sizes = frame_sizes; |
101 _frame_pcs = frame_pcs; |
101 _frame_pcs = frame_pcs; |
102 _register_block = NEW_C_HEAP_ARRAY(intptr_t, RegisterMap::reg_count * 2); |
102 _register_block = NEW_C_HEAP_ARRAY(intptr_t, RegisterMap::reg_count * 2); |
103 _return_type = return_type; |
103 _return_type = return_type; |
|
104 _initial_fp = 0; |
104 // PD (x86 only) |
105 // PD (x86 only) |
105 _counter_temp = 0; |
106 _counter_temp = 0; |
106 _initial_fp = 0; |
|
107 _unpack_kind = 0; |
107 _unpack_kind = 0; |
108 _sender_sp_temp = 0; |
108 _sender_sp_temp = 0; |
109 |
109 |
110 _total_frame_sizes = size_of_frames(); |
110 _total_frame_sizes = size_of_frames(); |
111 } |
111 } |
457 caller_adjustment * BytesPerWord, |
457 caller_adjustment * BytesPerWord, |
458 number_of_frames, |
458 number_of_frames, |
459 frame_sizes, |
459 frame_sizes, |
460 frame_pcs, |
460 frame_pcs, |
461 return_type); |
461 return_type); |
462 #if defined(IA32) || defined(AMD64) |
462 // On some platforms, we need a way to pass fp to the unpacking code |
463 // We need a way to pass fp to the unpacking code so the skeletal frames |
463 // so the skeletal frames come out correct. |
464 // come out correct. This is only needed for x86 because of c2 using ebp |
464 info->set_initial_fp((intptr_t) array->sender().fp()); |
465 // as an allocatable register. So this update is useless (and harmless) |
|
466 // on the other platforms. It would be nice to do this in a different |
|
467 // way but even the old style deoptimization had a problem with deriving |
|
468 // this value. NEEDS_CLEANUP |
|
469 // Note: now that c1 is using c2's deopt blob we must do this on all |
|
470 // x86 based platforms |
|
471 intptr_t** fp_addr = (intptr_t**) (((address)info) + info->initial_fp_offset_in_bytes()); |
|
472 *fp_addr = array->sender().fp(); // was adapter_caller |
|
473 #endif /* IA32 || AMD64 */ |
|
474 |
465 |
475 if (array->frames() > 1) { |
466 if (array->frames() > 1) { |
476 if (VerifyStack && TraceDeoptimization) { |
467 if (VerifyStack && TraceDeoptimization) { |
477 tty->print_cr("Deoptimizing method containing inlining"); |
468 tty->print_cr("Deoptimizing method containing inlining"); |
478 } |
469 } |