diff options
author | Trevor Norris <trev.norris@gmail.com> | 2013-03-18 13:49:34 -0700 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2013-03-20 01:11:01 +0100 |
commit | 83261e789eb903da39f279cb5a161611482e7df5 (patch) | |
tree | 4133b5ca9f53bed4365e1a94544a227d68a0cf12 /deps/v8/src/disassembler.cc | |
parent | a05f973f82d2be8527aad4c371d40d3c7e4c564e (diff) | |
download | android-node-v8-83261e789eb903da39f279cb5a161611482e7df5.tar.gz android-node-v8-83261e789eb903da39f279cb5a161611482e7df5.tar.bz2 android-node-v8-83261e789eb903da39f279cb5a161611482e7df5.zip |
deps: update v8 to 3.17.13
Diffstat (limited to 'deps/v8/src/disassembler.cc')
-rw-r--r-- | deps/v8/src/disassembler.cc | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/deps/v8/src/disassembler.cc b/deps/v8/src/disassembler.cc index 9f8b9a820b..f168f84ae7 100644 --- a/deps/v8/src/disassembler.cc +++ b/deps/v8/src/disassembler.cc @@ -111,11 +111,12 @@ static void DumpBuffer(FILE* f, StringBuilder* out) { static const int kOutBufferSize = 2048 + String::kMaxShortPrintLength; static const int kRelocInfoPosition = 57; -static int DecodeIt(FILE* f, +static int DecodeIt(Isolate* isolate, + FILE* f, const V8NameConverter& converter, byte* begin, byte* end) { - NoHandleAllocation ha; + NoHandleAllocation ha(isolate); AssertNoAllocation no_alloc; ExternalReferenceEncoder ref_encoder; Heap* heap = HEAP; @@ -281,13 +282,22 @@ static int DecodeIt(FILE* f, if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { out.AddFormatted(" (id = %d)", static_cast<int>(relocinfo.data())); } - } else if (rmode == RelocInfo::RUNTIME_ENTRY && - Isolate::Current()->deoptimizer_data() != NULL) { + } else if (RelocInfo::IsRuntimeEntry(rmode) && + isolate->deoptimizer_data() != NULL) { // A runtime entry reloinfo might be a deoptimization bailout. Address addr = relocinfo.target_address(); - int id = Deoptimizer::GetDeoptimizationId(addr, Deoptimizer::EAGER); + int id = Deoptimizer::GetDeoptimizationId(isolate, + addr, + Deoptimizer::EAGER); if (id == Deoptimizer::kNotDeoptimizationEntry) { - out.AddFormatted(" ;; %s", RelocInfo::RelocModeName(rmode)); + id = Deoptimizer::GetDeoptimizationId(isolate, + addr, + Deoptimizer::LAZY); + if (id == Deoptimizer::kNotDeoptimizationEntry) { + out.AddFormatted(" ;; %s", RelocInfo::RelocModeName(rmode)); + } else { + out.AddFormatted(" ;; lazy deoptimization bailout %d", id); + } } else { out.AddFormatted(" ;; deoptimization bailout %d", id); } @@ -314,15 +324,17 @@ static int DecodeIt(FILE* f, } -int Disassembler::Decode(FILE* f, byte* begin, byte* end) { +int Disassembler::Decode(Isolate* isolate, FILE* f, byte* begin, byte* end) { V8NameConverter defaultConverter(NULL); - return DecodeIt(f, defaultConverter, begin, end); + return DecodeIt(isolate, f, defaultConverter, begin, end); } // Called by Code::CodePrint. void Disassembler::Decode(FILE* f, Code* code) { - int decode_size = (code->kind() == Code::OPTIMIZED_FUNCTION) + Isolate* isolate = code->GetIsolate(); + int decode_size = (code->kind() == Code::OPTIMIZED_FUNCTION || + code->kind() == Code::COMPILED_STUB) ? static_cast<int>(code->safepoint_table_offset()) : code->instruction_size(); // If there might be a stack check table, stop before reaching it. @@ -334,13 +346,15 @@ void Disassembler::Decode(FILE* f, Code* code) { byte* begin = code->instruction_start(); byte* end = begin + decode_size; V8NameConverter v8NameConverter(code); - DecodeIt(f, v8NameConverter, begin, end); + DecodeIt(isolate, f, v8NameConverter, begin, end); } #else // ENABLE_DISASSEMBLER void Disassembler::Dump(FILE* f, byte* begin, byte* end) {} -int Disassembler::Decode(FILE* f, byte* begin, byte* end) { return 0; } +int Disassembler::Decode(Isolate* isolate, FILE* f, byte* begin, byte* end) { + return 0; +} void Disassembler::Decode(FILE* f, Code* code) {} #endif // ENABLE_DISASSEMBLER |