Add more details the --trace-deopt output
R=ager@chromium.org Review URL: http://codereview.chromium.org/6735007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
886a3806a9
commit
5310b07c04
@ -288,14 +288,33 @@ void Deoptimizer::DoComputeOsrOutputFrame() {
|
|||||||
|
|
||||||
// There are no translation commands for the caller's pc and fp, the
|
// There are no translation commands for the caller's pc and fp, the
|
||||||
// context, and the function. Set them up explicitly.
|
// 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) {
|
||||||
uint32_t input_value = input_->GetFrameSlot(input_offset);
|
uint32_t input_value = input_->GetFrameSlot(input_offset);
|
||||||
if (FLAG_trace_osr) {
|
if (FLAG_trace_osr) {
|
||||||
PrintF(" [sp + %d] <- 0x%08x ; [sp + %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(" [sp + %d] <- 0x%08x ; [sp + %d] (fixed part - %s)\n",
|
||||||
output_offset,
|
output_offset,
|
||||||
input_value,
|
input_value,
|
||||||
input_offset);
|
input_offset,
|
||||||
|
name);
|
||||||
}
|
}
|
||||||
|
|
||||||
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
||||||
input_offset -= kPointerSize;
|
input_offset -= kPointerSize;
|
||||||
output_offset -= kPointerSize;
|
output_offset -= kPointerSize;
|
||||||
|
@ -369,13 +369,31 @@ void Deoptimizer::DoComputeOsrOutputFrame() {
|
|||||||
|
|
||||||
// There are no translation commands for the caller's pc and fp, the
|
// There are no translation commands for the caller's pc and fp, the
|
||||||
// context, and the function. Set them up explicitly.
|
// 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) {
|
||||||
uint32_t input_value = input_->GetFrameSlot(input_offset);
|
uint32_t input_value = input_->GetFrameSlot(input_offset);
|
||||||
if (FLAG_trace_osr) {
|
if (FLAG_trace_osr) {
|
||||||
PrintF(" [esp + %d] <- 0x%08x ; [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(" [esp + %d] <- 0x%08x ; [esp + %d] (fixed part - %s)\n",
|
||||||
output_offset,
|
output_offset,
|
||||||
input_value,
|
input_value,
|
||||||
input_offset);
|
input_offset,
|
||||||
|
name);
|
||||||
}
|
}
|
||||||
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
||||||
input_offset -= kPointerSize;
|
input_offset -= kPointerSize;
|
||||||
|
@ -361,13 +361,32 @@ void Deoptimizer::DoComputeOsrOutputFrame() {
|
|||||||
|
|
||||||
// There are no translation commands for the caller's pc and fp, the
|
// There are no translation commands for the caller's pc and fp, the
|
||||||
// context, and the function. Set them up explicitly.
|
// 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);
|
intptr_t input_value = input_->GetFrameSlot(input_offset);
|
||||||
if (FLAG_trace_osr) {
|
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,
|
output_offset,
|
||||||
input_value,
|
input_value,
|
||||||
input_offset);
|
input_offset,
|
||||||
|
name);
|
||||||
}
|
}
|
||||||
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
output_[0]->SetFrameSlot(output_offset, input_->GetFrameSlot(input_offset));
|
||||||
input_offset -= kPointerSize;
|
input_offset -= kPointerSize;
|
||||||
|
Loading…
Reference in New Issue
Block a user