Revision: 18097
Author: [email protected]
Date: Wed Nov 27 10:07:57 2013 UTC
Log: Avoid trying to decode the raw inline constant which is part of
the aged code prologue.
BUG=v8:3007
LOG=N
[email protected]
Review URL: https://codereview.chromium.org/88303003
http://code.google.com/p/v8/source/detail?r=18097
Modified:
/branches/bleeding_edge/src/arm/constants-arm.h
/branches/bleeding_edge/src/arm/disasm-arm.cc
=======================================
--- /branches/bleeding_edge/src/arm/constants-arm.h Thu Sep 12 10:37:42
2013 UTC
+++ /branches/bleeding_edge/src/arm/constants-arm.h Wed Nov 27 10:07:57
2013 UTC
@@ -49,6 +49,9 @@
ASSERT((instr & kConstantPoolMarkerMask) == kConstantPoolMarker);
return ((instr >> 4) & 0xfff0) | (instr & 0xf);
}
+
+// Used in code age prologue - ldr(pc, MemOperand(pc, -4))
+const int kCodeAgeJumpInstruction = 0xe51ff004;
// Number of registers in normal ARM mode.
const int kNumRegisters = 16;
=======================================
--- /branches/bleeding_edge/src/arm/disasm-arm.cc Fri Aug 30 08:16:04 2013
UTC
+++ /branches/bleeding_edge/src/arm/disasm-arm.cc Wed Nov 27 10:07:57 2013
UTC
@@ -1679,6 +1679,14 @@
"constant pool begin (length %d)",
DecodeConstantPoolLength(instruction_bits));
return Instruction::kInstrSize;
+ } else if (instruction_bits == kCodeAgeJumpInstruction) {
+ // The code age prologue has a constant immediatly following the jump
+ // instruction.
+ Instruction* target = Instruction::At(instr_ptr +
Instruction::kInstrSize);
+ DecodeType2(instr);
+ OS::SNPrintF(out_buffer_ + out_buffer_pos_,
+ " (0x%08x)", target->InstructionBits());
+ return 2 * Instruction::kInstrSize;
}
switch (instr->TypeValue()) {
case 0:
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.