| Index: src/disassembler.cc
|
| diff --git a/src/disassembler.cc b/src/disassembler.cc
|
| index bedff451e9f87d0e4bcaae5a21c5b4ed9b6d34b3..215e2b88911c164d0857da74188c388ee4081c94 100644
|
| --- a/src/disassembler.cc
|
| +++ b/src/disassembler.cc
|
| @@ -85,11 +85,14 @@ static int DecodeIt(Isolate* isolate, std::ostream* os,
|
| } 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",
|
| @@ -118,6 +121,25 @@ static int DecodeIt(Isolate* isolate, std::ostream* os,
|
| pc += d.InstructionDecode(decode_buffer, pc);
|
| }
|
| }
|
| +#else // !V8_TARGET_ARCH_PPC
|
| +#if ABI_USES_FUNCTION_DESCRIPTORS || V8_OOL_CONSTANT_POOL
|
| + // 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 &&
|
| + it->rinfo()->rmode() == RelocInfo::INTERNAL_REFERENCE &&
|
| + (skip = Assembler::DecodeInternalReference(decode_buffer, pc))) {
|
| + pc += skip;
|
| + } else {
|
| + decode_buffer[0] = '\0';
|
| + pc += d.InstructionDecode(decode_buffer, pc);
|
| + }
|
| +#else
|
| + decode_buffer[0] = '\0';
|
| + pc += d.InstructionDecode(decode_buffer, pc);
|
| +#endif // ABI_USES_FUNCTION_DESCRIPTORS || V8_OOL_CONSTANT_POOL
|
| +#endif // !V8_TARGET_ARCH_PPC
|
|
|
| // Collect RelocInfo for this instruction (prev_pc .. pc-1)
|
| List<const char*> comments(4);
|
|
|