diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2015-03-27 12:04:12 +0100 |
---|---|---|
committer | Chris Dickinson <christopher.s.dickinson@gmail.com> | 2015-04-28 14:38:16 -0700 |
commit | 36cd5fb9d27b830320e57213f5b8829ffbb93324 (patch) | |
tree | bbab4215d26f8597019135206426fccf27a3089e /deps/v8/src/disassembler.cc | |
parent | b57cc51d8d3f4ad279591ae8fa6584ee22773b97 (diff) | |
download | node-new-36cd5fb9d27b830320e57213f5b8829ffbb93324.tar.gz |
deps: upgrade v8 to 4.2.77.13
This commit applies some secondary changes in order to make `make test`
pass cleanly:
* disable broken postmortem debugging in common.gypi
* drop obsolete strict mode test in parallel/test-repl
* drop obsolete test parallel/test-v8-features
PR-URL: https://github.com/iojs/io.js/pull/1232
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Diffstat (limited to 'deps/v8/src/disassembler.cc')
-rw-r--r-- | deps/v8/src/disassembler.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/deps/v8/src/disassembler.cc b/deps/v8/src/disassembler.cc index bedff451e9..e0316441af 100644 --- a/deps/v8/src/disassembler.cc +++ b/deps/v8/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", @@ -112,12 +115,31 @@ static int DecodeIt(Isolate* isolate, std::ostream* os, "%08" V8PRIxPTR " jump table entry %4" V8PRIdPTR, reinterpret_cast<intptr_t>(ptr), ptr - begin); - pc += 4; + pc += sizeof(ptr); } else { decode_buffer[0] = '\0'; 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); @@ -173,6 +195,11 @@ static int DecodeIt(Isolate* isolate, std::ostream* os, } else { out.AddFormatted(" ;; debug: position %d", relocinfo.data()); } + } else if (rmode == RelocInfo::DEOPT_REASON) { + Deoptimizer::DeoptReason reason = + static_cast<Deoptimizer::DeoptReason>(relocinfo.data()); + out.AddFormatted(" ;; debug: deopt reason '%s'", + Deoptimizer::GetDeoptReason(reason)); } else if (rmode == RelocInfo::EMBEDDED_OBJECT) { HeapStringAllocator allocator; StringStream accumulator(&allocator); |