Index: src/deoptimizer.cc |
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc |
index bfe2e1874150342de272e99683e947db16546580..84f1530d49ac23732cbef05e57c7231c52ca11f1 100644 |
--- a/src/deoptimizer.cc |
+++ b/src/deoptimizer.cc |
@@ -900,15 +900,15 @@ void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator, |
// input frame. For all subsequent output frames, it can be read from the |
// previous one. This frame's pc can be computed from the non-optimized |
// function code and AST id of the bailout. |
- output_offset -= kPointerSize; |
- input_offset -= kPointerSize; |
+ output_offset -= kPCOnStackSize; |
+ input_offset -= kPCOnStackSize; |
intptr_t value; |
if (is_bottommost) { |
value = input_->GetFrameSlot(input_offset); |
} else { |
value = output_[frame_index - 1]->GetPc(); |
} |
- output_frame->SetFrameSlot(output_offset, value); |
+ output_frame->SetCallerPc(output_offset, value); |
if (trace_) { |
PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
V8PRIxPTR " ; caller's pc\n", |
@@ -919,14 +919,14 @@ void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator, |
// as in the input frame. For all subsequent output frames, it can be |
// read from the previous one. Also compute and set this frame's frame |
// pointer. |
- output_offset -= kPointerSize; |
- input_offset -= kPointerSize; |
+ output_offset -= kFPOnStackSize; |
+ input_offset -= kFPOnStackSize; |
if (is_bottommost) { |
value = input_->GetFrameSlot(input_offset); |
} else { |
value = output_[frame_index - 1]->GetFp(); |
} |
- output_frame->SetFrameSlot(output_offset, value); |
+ output_frame->SetCallerFp(output_offset, value); |
intptr_t fp_value = top_address + output_offset; |
ASSERT(!is_bottommost || (input_->GetRegister(fp_reg.code()) + |
has_alignment_padding_ * kPointerSize) == fp_value); |
@@ -1049,9 +1049,9 @@ void Deoptimizer::DoComputeArgumentsAdaptorFrame(TranslationIterator* iterator, |
} |
// Read caller's PC from the previous frame. |
- output_offset -= kPointerSize; |
+ output_offset -= kPCOnStackSize; |
intptr_t callers_pc = output_[frame_index - 1]->GetPc(); |
- output_frame->SetFrameSlot(output_offset, callers_pc); |
+ output_frame->SetCallerPc(output_offset, callers_pc); |
if (trace_) { |
PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
V8PRIxPTR " ; caller's pc\n", |
@@ -1059,9 +1059,9 @@ void Deoptimizer::DoComputeArgumentsAdaptorFrame(TranslationIterator* iterator, |
} |
// Read caller's FP from the previous frame, and set this frame's FP. |
- output_offset -= kPointerSize; |
+ output_offset -= kFPOnStackSize; |
intptr_t value = output_[frame_index - 1]->GetFp(); |
- output_frame->SetFrameSlot(output_offset, value); |
+ output_frame->SetCallerFp(output_offset, value); |
intptr_t fp_value = top_address + output_offset; |
output_frame->SetFp(fp_value); |
if (trace_) { |
@@ -1152,9 +1152,9 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, |
} |
// Read caller's PC from the previous frame. |
- output_offset -= kPointerSize; |
+ output_offset -= kPCOnStackSize; |
intptr_t callers_pc = output_[frame_index - 1]->GetPc(); |
- output_frame->SetFrameSlot(output_offset, callers_pc); |
+ output_frame->SetCallerPc(output_offset, callers_pc); |
if (trace_) { |
PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
V8PRIxPTR " ; caller's pc\n", |
@@ -1162,9 +1162,9 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, |
} |
// Read caller's FP from the previous frame, and set this frame's FP. |
- output_offset -= kPointerSize; |
+ output_offset -= kFPOnStackSize; |
intptr_t value = output_[frame_index - 1]->GetFp(); |
- output_frame->SetFrameSlot(output_offset, value); |
+ output_frame->SetCallerFp(output_offset, value); |
intptr_t fp_value = top_address + output_offset; |
output_frame->SetFp(fp_value); |
if (trace_) { |
@@ -1265,7 +1265,9 @@ void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, |
// MacroAssembler::EnterFrame). For a setter stub frame we need one additional |
// entry for the implicit return value, see |
// StoreStubCompiler::CompileStoreViaSetter. |
- unsigned fixed_frame_entries = 1 + 4 + (is_setter_stub_frame ? 1 : 0); |
+ unsigned fixed_frame_entries = (kPCOnStackSize / kPointerSize) + |
+ (kFPOnStackSize / kPointerSize) + 3 + |
+ (is_setter_stub_frame ? 1 : 0); |
unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; |
unsigned output_frame_size = height_in_bytes + fixed_frame_size; |
@@ -1287,9 +1289,9 @@ void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, |
unsigned output_offset = output_frame_size; |
// Read caller's PC from the previous frame. |
- output_offset -= kPointerSize; |
+ output_offset -= kPCOnStackSize; |
intptr_t callers_pc = output_[frame_index - 1]->GetPc(); |
- output_frame->SetFrameSlot(output_offset, callers_pc); |
+ output_frame->SetCallerPc(output_offset, callers_pc); |
if (trace_) { |
PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR |
" ; caller's pc\n", |
@@ -1297,9 +1299,9 @@ void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, |
} |
// Read caller's FP from the previous frame, and set this frame's FP. |
- output_offset -= kPointerSize; |
+ output_offset -= kFPOnStackSize; |
intptr_t value = output_[frame_index - 1]->GetFp(); |
- output_frame->SetFrameSlot(output_offset, value); |
+ output_frame->SetCallerFp(output_offset, value); |
intptr_t fp_value = top_address + output_offset; |
output_frame->SetFp(fp_value); |
if (trace_) { |
@@ -1435,10 +1437,10 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator, |
output_frame->SetTop(top_address); |
// Read caller's PC (JSFunction continuation) from the input frame. |
- unsigned input_frame_offset = input_frame_size - kPointerSize; |
- unsigned output_frame_offset = output_frame_size - kPointerSize; |
+ unsigned input_frame_offset = input_frame_size - kPCOnStackSize; |
+ unsigned output_frame_offset = output_frame_size - kFPOnStackSize; |
intptr_t value = input_->GetFrameSlot(input_frame_offset); |
- output_frame->SetFrameSlot(output_frame_offset, value); |
+ output_frame->SetCallerPc(output_frame_offset, value); |
if (trace_) { |
PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08" |
V8PRIxPTR " ; caller's pc\n", |
@@ -1446,10 +1448,10 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator, |
} |
// Read caller's FP from the input frame, and set this frame's FP. |
- input_frame_offset -= kPointerSize; |
+ input_frame_offset -= kFPOnStackSize; |
value = input_->GetFrameSlot(input_frame_offset); |
- output_frame_offset -= kPointerSize; |
- output_frame->SetFrameSlot(output_frame_offset, value); |
+ output_frame_offset -= kFPOnStackSize; |
+ output_frame->SetCallerFp(output_frame_offset, value); |
intptr_t frame_ptr = input_->GetRegister(fp_reg.code()); |
output_frame->SetRegister(fp_reg.code(), frame_ptr); |
output_frame->SetFp(frame_ptr); |