Index: src/x64/deoptimizer-x64.cc |
diff --git a/src/x64/deoptimizer-x64.cc b/src/x64/deoptimizer-x64.cc |
index c58d5ea4af8adcd7c58775c2c5d51ea2c925443e..2080c615cad498ece0eaf3134d857c6e43afac2e 100644 |
--- a/src/x64/deoptimizer-x64.cc |
+++ b/src/x64/deoptimizer-x64.cc |
@@ -361,13 +361,32 @@ void Deoptimizer::DoComputeOsrOutputFrame() { |
// There are no translation commands for the caller's pc and fp, the |
// context, and the function. Set them up explicitly. |
- for (int i = 0; ok && i < 4; i++) { |
+ for (int i = StandardFrameConstants::kCallerPCOffset; |
+ ok && i >= StandardFrameConstants::kMarkerOffset; |
+ i -= kPointerSize) { |
intptr_t input_value = input_->GetFrameSlot(input_offset); |
if (FLAG_trace_osr) { |
- PrintF(" [esp + %d] <- 0x%08" V8PRIxPTR " ; [esp + %d] (fixed part)\n", |
+ const char* name = "UNKNOWN"; |
+ switch (i) { |
+ case StandardFrameConstants::kCallerPCOffset: |
+ name = "caller's pc"; |
+ break; |
+ case StandardFrameConstants::kCallerFPOffset: |
+ name = "fp"; |
+ break; |
+ case StandardFrameConstants::kContextOffset: |
+ name = "context"; |
+ break; |
+ case StandardFrameConstants::kMarkerOffset: |
+ name = "function"; |
+ break; |
+ } |
+ PrintF(" [rsp + %d] <- 0x%08" V8PRIxPTR " ; [rsp + %d] " |
+ "(fixed part - %s)\n", |
output_offset, |
input_value, |
- input_offset); |
+ input_offset, |
+ name); |
} |
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset)); |
input_offset -= kPointerSize; |