Chromium Code Reviews| Index: src/disassembler.cc |
| diff --git a/src/disassembler.cc b/src/disassembler.cc |
| index d58e1b073f0f2a0a43eafafe2e65573904296ba0..53cb15c67ee9e9b3793ef3fa637b7ecf81be1063 100644 |
| --- a/src/disassembler.cc |
| +++ b/src/disassembler.cc |
| @@ -107,11 +107,14 @@ static int DecodeIt(Isolate* isolate, |
| } else { |
| // No relocation information when printing code stubs. |
| } |
| +#if !V8_TARGET_ARCH_PPC |
| int constants = -1; // no constants being decoded at the start |
| +#endif |
| while (pc < end) { |
| // First decode instruction so that we know its length. |
| byte* prev_pc = pc; |
| +#if !V8_TARGET_ARCH_PPC |
| if (constants > 0) { |
| SNPrintF(decode_buffer, |
| "%08x constant", |
| @@ -136,6 +139,22 @@ static int DecodeIt(Isolate* isolate, |
| ptr - begin); |
| pc += 4; |
| } else { |
| +#elif ABI_USES_FUNCTION_DESCRIPTORS || V8_OOL_CONSTANT_POOL |
| + // V8_TARGET_ARCH_PPC |
| + { |
| + // Function descriptors are specially decoded and skipped. |
| + // Other internal references (load of ool constant pool pointer) |
| + // are not since they are a encoded as a regular mov sequence. |
| + int skip; |
| + if (it != NULL && !it->done() && it->rinfo()->pc() == pc && |
|
danno
2014/07/29 13:24:08
Again, please try to avoid non-boilerplate platfor
andrew_low
2014/07/30 13:27:04
I'm going to need a bit more help / detail here. Y
|
| + it->rinfo()->rmode() == RelocInfo::INTERNAL_REFERENCE && |
| + (skip = Assembler::DecodeInternalReference(decode_buffer, pc))) { |
| + pc += skip; |
| + } else { |
| +#else |
| + { |
| + { |
| +#endif |
| decode_buffer[0] = '\0'; |
| pc += d.InstructionDecode(decode_buffer, pc); |
| } |