@@ -191,8 +191,8 @@ class CodeEventLogger::NameBuffer {
191191 uc16 utf16_buffer[kUtf16BufferSize ];
192192};
193193
194-
195- CodeEventLogger::CodeEventLogger () : name_buffer_(new NameBuffer) { }
194+ CodeEventLogger::CodeEventLogger (Isolate* isolate)
195+ : isolate_(isolate), name_buffer_(new NameBuffer) {}
196196
197197CodeEventLogger::~CodeEventLogger () { delete name_buffer_; }
198198
@@ -267,7 +267,7 @@ void CodeEventLogger::RegExpCodeCreateEvent(AbstractCode* code,
267267// Linux perf tool logging support
268268class PerfBasicLogger : public CodeEventLogger {
269269 public:
270- PerfBasicLogger ();
270+ explicit PerfBasicLogger (Isolate* isolate );
271271 ~PerfBasicLogger () override ;
272272
273273 void CodeMoveEvent (AbstractCode* from, Address to) override {}
@@ -293,7 +293,8 @@ const char PerfBasicLogger::kFilenameFormatString[] = "/tmp/perf-%d.map";
293293// Extra space for the PID in the filename
294294const int PerfBasicLogger::kFilenameBufferPadding = 16 ;
295295
296- PerfBasicLogger::PerfBasicLogger () : perf_output_handle_(nullptr ) {
296+ PerfBasicLogger::PerfBasicLogger (Isolate* isolate)
297+ : CodeEventLogger(isolate), perf_output_handle_(nullptr ) {
297298 // Open the perf JIT dump file.
298299 int bufferSize = sizeof (kFilenameFormatString ) + kFilenameBufferPadding ;
299300 ScopedVector<char > perf_dump_name (bufferSize);
@@ -492,7 +493,7 @@ void ExternalCodeEventListener::RegExpCodeCreateEvent(AbstractCode* code,
492493// Low-level logging support.
493494class LowLevelLogger : public CodeEventLogger {
494495 public:
495- explicit LowLevelLogger (const char * file_name);
496+ LowLevelLogger (Isolate* isolate, const char * file_name);
496497 ~LowLevelLogger () override ;
497498
498499 void CodeMoveEvent (AbstractCode* from, Address to) override ;
@@ -546,7 +547,8 @@ class LowLevelLogger : public CodeEventLogger {
546547
547548const char LowLevelLogger::kLogExt [] = " .ll" ;
548549
549- LowLevelLogger::LowLevelLogger (const char * name) : ll_output_handle_(nullptr ) {
550+ LowLevelLogger::LowLevelLogger (Isolate* isolate, const char * name)
551+ : CodeEventLogger(isolate), ll_output_handle_(nullptr ) {
550552 // Open the low-level log file.
551553 size_t len = strlen (name);
552554 ScopedVector<char > ll_name (static_cast <int >(len + sizeof (kLogExt )));
@@ -637,7 +639,7 @@ void LowLevelLogger::CodeMovingGCEvent() {
637639
638640class JitLogger : public CodeEventLogger {
639641 public:
640- explicit JitLogger (JitCodeEventHandler code_event_handler);
642+ JitLogger (Isolate* isolate, JitCodeEventHandler code_event_handler);
641643
642644 void CodeMoveEvent (AbstractCode* from, Address to) override ;
643645 void CodeDisableOptEvent (AbstractCode* code,
@@ -659,10 +661,8 @@ class JitLogger : public CodeEventLogger {
659661 base::Mutex logger_mutex_;
660662};
661663
662-
663- JitLogger::JitLogger (JitCodeEventHandler code_event_handler)
664- : code_event_handler_(code_event_handler) {
665- }
664+ JitLogger::JitLogger (Isolate* isolate, JitCodeEventHandler code_event_handler)
665+ : CodeEventLogger(isolate), code_event_handler_(code_event_handler) {}
666666
667667void JitLogger::LogRecordedBuffer (AbstractCode* code,
668668 SharedFunctionInfo* shared, const char * name,
@@ -682,6 +682,7 @@ void JitLogger::LogRecordedBuffer(AbstractCode* code,
682682 event.script = ToApiHandle<v8::UnboundScript>(shared_function_handle);
683683 event.name .str = name;
684684 event.name .len = length;
685+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
685686 code_event_handler_ (&event);
686687}
687688
@@ -695,6 +696,7 @@ void JitLogger::LogRecordedBuffer(const wasm::WasmCode* code, const char* name,
695696 event.code_len = code->instructions ().length ();
696697 event.name .str = name;
697698 event.name .len = length;
699+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
698700 code_event_handler_ (&event);
699701}
700702
@@ -713,6 +715,7 @@ void JitLogger::CodeMoveEvent(AbstractCode* from, Address to) {
713715
714716 // Calculate the new start address of the instructions.
715717 event.new_code_start = reinterpret_cast <void *>(to + header_size);
718+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
716719
717720 code_event_handler_ (&event);
718721}
@@ -729,6 +732,7 @@ void JitLogger::AddCodeLinePosInfoEvent(
729732 event.line_info .offset = pc_offset;
730733 event.line_info .pos = position;
731734 event.line_info .position_type = position_type;
735+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
732736
733737 code_event_handler_ (&event);
734738}
@@ -738,6 +742,7 @@ void* JitLogger::StartCodePosInfoEvent() {
738742 JitCodeEvent event;
739743 memset (&event, 0 , sizeof (event));
740744 event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING;
745+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
741746
742747 code_event_handler_ (&event);
743748 return event.user_data ;
@@ -750,6 +755,7 @@ void JitLogger::EndCodePosInfoEvent(Address start_address,
750755 event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING;
751756 event.code_start = reinterpret_cast <void *>(start_address);
752757 event.user_data = jit_handler_data;
758+ event.isolate = reinterpret_cast <v8::Isolate*>(isolate_);
753759
754760 code_event_handler_ (&event);
755761}
@@ -1967,17 +1973,17 @@ bool Logger::SetUp(Isolate* isolate) {
19671973 log_ = new Log (this , log_file_name.str ().c_str ());
19681974
19691975 if (FLAG_perf_basic_prof) {
1970- perf_basic_logger_ = new PerfBasicLogger ();
1976+ perf_basic_logger_ = new PerfBasicLogger (isolate );
19711977 AddCodeEventListener (perf_basic_logger_);
19721978 }
19731979
19741980 if (FLAG_perf_prof) {
1975- perf_jit_logger_ = new PerfJitLogger ();
1981+ perf_jit_logger_ = new PerfJitLogger (isolate );
19761982 AddCodeEventListener (perf_jit_logger_);
19771983 }
19781984
19791985 if (FLAG_ll_prof) {
1980- ll_logger_ = new LowLevelLogger (log_file_name.str ().c_str ());
1986+ ll_logger_ = new LowLevelLogger (isolate, log_file_name.str ().c_str ());
19811987 AddCodeEventListener (ll_logger_);
19821988 }
19831989
@@ -2012,7 +2018,7 @@ void Logger::SetCodeEventHandler(uint32_t options,
20122018 }
20132019
20142020 if (event_handler) {
2015- jit_logger_ = new JitLogger (event_handler);
2021+ jit_logger_ = new JitLogger (isolate_, event_handler);
20162022 AddCodeEventListener (jit_logger_);
20172023 if (options & kJitCodeEventEnumExisting ) {
20182024 HandleScope scope (isolate_);
0 commit comments