| 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;
|
|
|