Commit db90b8d6 authored by Dan Elphick's avatar Dan Elphick Committed by Commit Bot

[roheap] Add Isolate parameter to Code::Disassemble

In preparation for Code objects that aren't executable and can be in
RO_SPACE, pass an Isolate into Code::Disassemble.

Bug: v8:7464
Change-Id: I99f5faf23dd4709a48925e1ae44d1ce595ea6f5f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1822043Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63962}
parent e1b0086a
......@@ -206,7 +206,7 @@ void Builtins::PrintBuiltinCode() {
CStrVector(FLAG_print_builtin_code_filter))) {
CodeTracer::Scope trace_scope(isolate_->GetCodeTracer());
OFStream os(trace_scope.file());
code->Disassemble(builtin_name, os);
code->Disassemble(builtin_name, os, isolate_);
os << "\n";
}
}
......
......@@ -754,7 +754,7 @@ void PrintCode(Isolate* isolate, Handle<Code> code,
Handle<SharedFunctionInfo> shared = info->shared_info();
os << "source_position = " << shared->StartPosition() << "\n";
}
code->Disassemble(debug_name.get(), os);
code->Disassemble(debug_name.get(), os, isolate);
os << "--- End code ---\n";
}
#endif // ENABLE_DISASSEMBLER
......@@ -1244,7 +1244,7 @@ CompilationJob::Status WasmHeapStubCompilationJob::FinalizeJobImpl(
if (FLAG_print_opt_code) {
CodeTracer::Scope tracing_scope(isolate->GetCodeTracer());
OFStream os(tracing_scope.file());
code->Disassemble(compilation_info()->GetDebugName().get(), os);
code->Disassemble(compilation_info()->GetDebugName().get(), os, isolate);
}
#endif
return SUCCEEDED;
......@@ -3124,7 +3124,7 @@ MaybeHandle<Code> PipelineImpl::FinalizeCode(bool retire_broker) {
if (data->profiler_data()) {
#ifdef ENABLE_DISASSEMBLER
std::ostringstream os;
code->Disassemble(nullptr, os);
code->Disassemble(nullptr, os, isolate());
data->profiler_data()->SetCode(&os);
#endif // ENABLE_DISASSEMBLER
}
......@@ -3140,7 +3140,7 @@ MaybeHandle<Code> PipelineImpl::FinalizeCode(bool retire_broker) {
<< "\"data\":\"";
#ifdef ENABLE_DISASSEMBLER
std::stringstream disassembly_stream;
code->Disassemble(nullptr, disassembly_stream);
code->Disassemble(nullptr, disassembly_stream, isolate());
std::string disassembly_string(disassembly_stream.str());
for (const auto& c : disassembly_string) {
json_of << AsEscapedUC16ForJSON(c);
......
......@@ -1632,7 +1632,7 @@ void Code::CodePrint(std::ostream& os) { // NOLINT
os << "\n";
#ifdef ENABLE_DISASSEMBLER
if (FLAG_use_verbose_printer) {
Disassemble(nullptr, os);
Disassemble(nullptr, os, GetIsolate());
}
#endif
}
......@@ -2824,7 +2824,7 @@ V8_EXPORT_PRIVATE extern void _v8_internal_Print_Code(void* object) {
}
#ifdef ENABLE_DISASSEMBLER
i::StdoutStream os;
code.Disassemble(nullptr, os, address);
code.Disassemble(nullptr, os, isolate, address);
#else // ENABLE_DISASSEMBLER
code.Print();
#endif // ENABLE_DISASSEMBLER
......
......@@ -3398,7 +3398,7 @@ Handle<Code> GenerateBytecodeHandler(Isolate* isolate, const char* debug_name,
#ifdef ENABLE_DISASSEMBLER
if (FLAG_trace_ignition_codegen) {
StdoutStream os;
code->Disassemble(Bytecodes::ToString(bytecode), os);
code->Disassemble(Bytecodes::ToString(bytecode), os, isolate);
os << std::flush;
}
#endif // ENABLE_DISASSEMBLER
......
......@@ -669,8 +669,8 @@ inline void DisassembleCodeRange(Isolate* isolate, std::ostream& os, Code code,
} // namespace
void Code::Disassemble(const char* name, std::ostream& os, Address current_pc) {
Isolate* isolate = GetIsolate();
void Code::Disassemble(const char* name, std::ostream& os, Isolate* isolate,
Address current_pc) {
os << "kind = " << Kind2String(kind()) << "\n";
if (name == nullptr) {
name = GetName(isolate);
......
......@@ -61,6 +61,7 @@ class Code : public HeapObject {
#ifdef ENABLE_DISASSEMBLER
const char* GetName(Isolate* isolate) const;
V8_EXPORT_PRIVATE void Disassemble(const char* name, std::ostream& os,
Isolate* isolate,
Address current_pc = kNullAddress);
#endif
......
......@@ -860,7 +860,7 @@ bool RegExpImpl::Compile(Isolate* isolate, Zone* zone, RegExpCompileData* data,
OFStream os(trace_scope.file());
Handle<Code> c(Code::cast(result.code), isolate);
auto pattern_cstring = pattern->ToCString();
c->Disassemble(pattern_cstring.get(), os);
c->Disassemble(pattern_cstring.get(), os, isolate);
}
#endif
if (FLAG_print_regexp_bytecode &&
......
......@@ -170,7 +170,7 @@ void TestReturnMultipleValues(MachineType type) {
#ifdef ENABLE_DISASSEMBLER
if (FLAG_print_code) {
StdoutStream os;
code->Disassemble("multi_value", os);
code->Disassemble("multi_value", os, handles.main_isolate());
}
#endif
......@@ -218,7 +218,7 @@ void TestReturnMultipleValues(MachineType type) {
Handle<Code> code2 = mt.GetCode();
if (FLAG_print_code) {
StdoutStream os;
code2->Disassemble("multi_value_call", os);
code2->Disassemble("multi_value_call", os, handles.main_isolate());
}
#endif
CHECK_EQ(expect, mt.Call());
......
......@@ -254,7 +254,7 @@ Handle<Code> CompileGraph(const char* name, CallDescriptor* call_descriptor,
#ifdef ENABLE_DISASSEMBLER
if (FLAG_print_opt_code) {
StdoutStream os;
code->Disassemble(name, os);
code->Disassemble(name, os, isolate);
}
#endif
return code;
......
......@@ -479,7 +479,7 @@ Handle<Code> WasmFunctionWrapper::GetWrapperCode() {
CodeTracer::Scope tracing_scope(isolate->GetCodeTracer());
OFStream os(tracing_scope.file());
code->Disassemble("wasm wrapper", os);
code->Disassemble("wasm wrapper", os, isolate);
}
#endif
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment