Avoid trying to decode the raw inline constant which is part of the aged code prologue.
BUG=v8:3007 LOG=N R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/88303003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
525876350d
commit
49627050d0
@ -50,6 +50,9 @@ inline int DecodeConstantPoolLength(int instr) {
|
||||
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;
|
||||
|
||||
|
@ -1679,6 +1679,14 @@ int Decoder::InstructionDecode(byte* instr_ptr) {
|
||||
"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:
|
||||
|
Loading…
Reference in New Issue
Block a user