Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Unified Diff: src/deoptimizer.cc

Issue 19802002: Introduce kRegisterSize, kPCOnStackSize and kFPOnStackSize constants (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/deoptimizer.h ('k') | src/frames.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « src/deoptimizer.h ('k') | src/frames.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698