Chromium Code Reviews

Unified Diff: src/disassembler.cc

Issue 422063005: Contribution of PowerPC port. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
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);
}

Powered by Google App Engine