diff options
author | Michaël Zasso <targos@protonmail.com> | 2019-11-08 15:39:11 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2019-11-08 15:46:25 +0100 |
commit | 6ca81ad72a3c6fdf16c683335be748f22aaa9a0d (patch) | |
tree | 33c8ee75f729aed76c2c0b89c63f9bf1b4dd66aa /deps/v8/src/logging | |
parent | 1eee0b8bf8bba39b600fb16a9223e545e3bac2bc (diff) | |
download | android-node-v8-6ca81ad72a3c6fdf16c683335be748f22aaa9a0d.tar.gz android-node-v8-6ca81ad72a3c6fdf16c683335be748f22aaa9a0d.tar.bz2 android-node-v8-6ca81ad72a3c6fdf16c683335be748f22aaa9a0d.zip |
deps: update V8 to 7.9.317.20
PR-URL: https://github.com/nodejs/node/pull/30020
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/src/logging')
-rw-r--r-- | deps/v8/src/logging/counters-definitions.h | 2 | ||||
-rw-r--r-- | deps/v8/src/logging/counters.cc | 2 | ||||
-rw-r--r-- | deps/v8/src/logging/counters.h | 6 | ||||
-rw-r--r-- | deps/v8/src/logging/log-utils.cc | 7 | ||||
-rw-r--r-- | deps/v8/src/logging/log-utils.h | 2 | ||||
-rw-r--r-- | deps/v8/src/logging/log.cc | 128 | ||||
-rw-r--r-- | deps/v8/src/logging/log.h | 26 |
7 files changed, 90 insertions, 83 deletions
diff --git a/deps/v8/src/logging/counters-definitions.h b/deps/v8/src/logging/counters-definitions.h index 8c808276fa..3931712152 100644 --- a/deps/v8/src/logging/counters-definitions.h +++ b/deps/v8/src/logging/counters-definitions.h @@ -221,6 +221,8 @@ namespace internal { MICROSECOND) \ HT(compile_script_no_cache_because_cache_too_cold, \ V8.CompileScriptMicroSeconds.NoCache.CacheTooCold, 1000000, MICROSECOND) \ + HT(compile_script_streaming_finalization, \ + V8.CompileScriptMicroSeconds.StreamingFinalization, 1000000, MICROSECOND) \ HT(compile_script_on_background, \ V8.CompileScriptMicroSeconds.BackgroundThread, 1000000, MICROSECOND) \ HT(compile_function_on_background, \ diff --git a/deps/v8/src/logging/counters.cc b/deps/v8/src/logging/counters.cc index ce2b1fe9c0..a6a56fac83 100644 --- a/deps/v8/src/logging/counters.cc +++ b/deps/v8/src/logging/counters.cc @@ -551,7 +551,7 @@ base::Thread::LocalStorageKey WorkerThreadRuntimeCallStats::GetKey() { RuntimeCallStats* WorkerThreadRuntimeCallStats::NewTable() { DCHECK(TracingFlags::is_runtime_stats_enabled()); std::unique_ptr<RuntimeCallStats> new_table = - base::make_unique<RuntimeCallStats>(); + std::make_unique<RuntimeCallStats>(); RuntimeCallStats* result = new_table.get(); base::MutexGuard lock(&mutex_); diff --git a/deps/v8/src/logging/counters.h b/deps/v8/src/logging/counters.h index 35df5ec038..99a3c3cf9b 100644 --- a/deps/v8/src/logging/counters.h +++ b/deps/v8/src/logging/counters.h @@ -5,6 +5,8 @@ #ifndef V8_LOGGING_COUNTERS_H_ #define V8_LOGGING_COUNTERS_H_ +#include <memory> + #include "include/v8.h" #include "src/base/atomic-utils.h" #include "src/base/optional.h" @@ -780,7 +782,6 @@ class RuntimeCallTimer final { V(Message_GetStartColumn) \ V(Module_Evaluate) \ V(Module_InstantiateModule) \ - V(Module_SetSyntheticModuleExport) \ V(NumberObject_New) \ V(NumberObject_NumberValue) \ V(Object_CallAsConstructor) \ @@ -1018,16 +1019,13 @@ class RuntimeCallTimer final { V(LoadIC_LoadNormalDH) \ V(LoadIC_LoadNormalFromPrototypeDH) \ V(LoadIC_NonReceiver) \ - V(LoadIC_Premonomorphic) \ V(LoadIC_SlowStub) \ V(LoadIC_StringLength) \ V(LoadIC_StringWrapperLength) \ V(StoreGlobalIC_SlowStub) \ V(StoreGlobalIC_StoreScriptContextField) \ - V(StoreGlobalIC_Premonomorphic) \ V(StoreIC_HandlerCacheHit_Accessor) \ V(StoreIC_NonReceiver) \ - V(StoreIC_Premonomorphic) \ V(StoreIC_SlowStub) \ V(StoreIC_StoreAccessorDH) \ V(StoreIC_StoreAccessorOnPrototypeDH) \ diff --git a/deps/v8/src/logging/log-utils.cc b/deps/v8/src/logging/log-utils.cc index 3980882402..e5c0b027fa 100644 --- a/deps/v8/src/logging/log-utils.cc +++ b/deps/v8/src/logging/log-utils.cc @@ -75,8 +75,7 @@ FILE* Log::Close() { } output_handle_ = nullptr; - DeleteArray(format_buffer_); - format_buffer_ = nullptr; + format_buffer_.reset(); is_stopped_ = false; return result; @@ -84,7 +83,7 @@ FILE* Log::Close() { Log::MessageBuilder::MessageBuilder(Log* log) : log_(log), lock_guard_(&log_->mutex_) { - DCHECK_NOT_NULL(log_->format_buffer_); + DCHECK_NOT_NULL(log_->format_buffer_.get()); } void Log::MessageBuilder::AppendString(String str, @@ -185,7 +184,7 @@ void Log::MessageBuilder::AppendSymbolNameDetails(String str, int Log::MessageBuilder::FormatStringIntoBuffer(const char* format, va_list args) { - Vector<char> buf(log_->format_buffer_, Log::kMessageBufferSize); + Vector<char> buf(log_->format_buffer_.get(), Log::kMessageBufferSize); int length = v8::internal::VSNPrintF(buf, format, args); // |length| is -1 if output was truncated. if (length == -1) length = Log::kMessageBufferSize; diff --git a/deps/v8/src/logging/log-utils.h b/deps/v8/src/logging/log-utils.h index bc5b09d438..e89a449f3b 100644 --- a/deps/v8/src/logging/log-utils.h +++ b/deps/v8/src/logging/log-utils.h @@ -125,7 +125,7 @@ class Log { // Buffer used for formatting log messages. This is a singleton buffer and // mutex_ should be acquired before using it. - char* format_buffer_; + std::unique_ptr<char[]> format_buffer_; Logger* logger_; diff --git a/deps/v8/src/logging/log.cc b/deps/v8/src/logging/log.cc index 9b86a16031..2befcd330a 100644 --- a/deps/v8/src/logging/log.cc +++ b/deps/v8/src/logging/log.cc @@ -180,9 +180,9 @@ class CodeEventLogger::NameBuffer { }; CodeEventLogger::CodeEventLogger(Isolate* isolate) - : isolate_(isolate), name_buffer_(new NameBuffer) {} + : isolate_(isolate), name_buffer_(std::make_unique<NameBuffer>()) {} -CodeEventLogger::~CodeEventLogger() { delete name_buffer_; } +CodeEventLogger::~CodeEventLogger() = default; void CodeEventLogger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, AbstractCode code, const char* comment) { @@ -477,6 +477,23 @@ void ExternalCodeEventListener::RegExpCodeCreateEvent(AbstractCode code, code_event_handler_->Handle(reinterpret_cast<v8::CodeEvent*>(&code_event)); } +void ExternalCodeEventListener::CodeMoveEvent(AbstractCode from, + AbstractCode to) { + CodeEvent code_event; + code_event.previous_code_start_address = + static_cast<uintptr_t>(from.InstructionStart()); + code_event.code_start_address = static_cast<uintptr_t>(to.InstructionStart()); + code_event.code_size = static_cast<size_t>(to.InstructionSize()); + code_event.function_name = isolate_->factory()->empty_string(); + code_event.script_name = isolate_->factory()->empty_string(); + code_event.script_line = 0; + code_event.script_column = 0; + code_event.code_type = v8::CodeEventType::kRelocationType; + code_event.comment = ""; + + code_event_handler_->Handle(reinterpret_cast<v8::CodeEvent*>(&code_event)); +} + // Low-level logging support. class LowLevelLogger : public CodeEventLogger { public: @@ -816,7 +833,7 @@ class Ticker : public sampler::Sampler { Ticker(Isolate* isolate, int interval_microseconds) : sampler::Sampler(reinterpret_cast<v8::Isolate*>(isolate)), sampling_thread_( - base::make_unique<SamplingThread>(this, interval_microseconds)) {} + std::make_unique<SamplingThread>(this, interval_microseconds)) {} ~Ticker() override { if (IsActive()) Stop(); @@ -910,13 +927,11 @@ void Profiler::Run() { Logger::Logger(Isolate* isolate) : isolate_(isolate), - log_events_(nullptr), is_logging_(false), - log_(nullptr), is_initialized_(false), existing_code_logger_(isolate) {} -Logger::~Logger() { delete log_; } +Logger::~Logger() = default; const LogSeparator Logger::kNext = LogSeparator::kSeparator; @@ -931,7 +946,7 @@ void Logger::RemoveCodeEventListener(CodeEventListener* listener) { void Logger::ProfilerBeginEvent() { if (!log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "profiler" << kNext << "begin" << kNext << FLAG_prof_sampling_interval; msg.WriteToLogFile(); } @@ -942,7 +957,7 @@ void Logger::StringEvent(const char* name, const char* value) { void Logger::UncheckedStringEvent(const char* name, const char* value) { if (!log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << name << kNext << value; msg.WriteToLogFile(); } @@ -953,7 +968,7 @@ void Logger::IntPtrTEvent(const char* name, intptr_t value) { void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { if (!log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << name << kNext; msg.AppendFormatString("%" V8PRIdPTR, value); msg.WriteToLogFile(); @@ -961,14 +976,14 @@ void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { void Logger::HandleEvent(const char* name, Address* location) { if (!log_->IsEnabled() || !FLAG_log_handles) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << name << kNext << reinterpret_cast<void*>(location); msg.WriteToLogFile(); } void Logger::ApiSecurityCheck() { if (!log_->IsEnabled() || !FLAG_log_api) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "api" << kNext << "check-security"; msg.WriteToLogFile(); } @@ -977,7 +992,7 @@ void Logger::SharedLibraryEvent(const std::string& library_path, uintptr_t start, uintptr_t end, intptr_t aslr_slide) { if (!log_->IsEnabled() || !FLAG_prof_cpp) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "shared-library" << kNext << library_path.c_str() << kNext << reinterpret_cast<void*>(start) << kNext << reinterpret_cast<void*>(end) << kNext << aslr_slide; @@ -988,7 +1003,7 @@ void Logger::CodeDeoptEvent(Code code, DeoptimizeKind kind, Address pc, int fp_to_sp_delta) { if (!log_->IsEnabled()) return; Deoptimizer::DeoptInfo info = Deoptimizer::GetDeoptInfo(code, pc); - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "code-deopt" << kNext << timer_.Elapsed().InMicroseconds() << kNext << code.CodeSize() << kNext << reinterpret_cast<void*>(code.InstructionStart()); @@ -1014,14 +1029,14 @@ void Logger::CodeDeoptEvent(Code code, DeoptimizeKind kind, Address pc, void Logger::CurrentTimeEvent() { if (!log_->IsEnabled()) return; DCHECK(FLAG_log_internal_timer_events); - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "current-time" << kNext << timer_.Elapsed().InMicroseconds(); msg.WriteToLogFile(); } void Logger::TimerEvent(Logger::StartEnd se, const char* name) { if (!log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); switch (se) { case START: msg << "timer-event-start"; @@ -1053,7 +1068,7 @@ void Logger::ApiNamedPropertyAccess(const char* tag, JSObject holder, Object property_name) { DCHECK(property_name.IsName()); if (!log_->IsEnabled() || !FLAG_log_api) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "api" << kNext << tag << kNext << holder.class_name() << kNext << Name::cast(property_name); msg.WriteToLogFile(); @@ -1062,7 +1077,7 @@ void Logger::ApiNamedPropertyAccess(const char* tag, JSObject holder, void Logger::ApiIndexedPropertyAccess(const char* tag, JSObject holder, uint32_t index) { if (!log_->IsEnabled() || !FLAG_log_api) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "api" << kNext << tag << kNext << holder.class_name() << kNext << index; msg.WriteToLogFile(); @@ -1070,21 +1085,21 @@ void Logger::ApiIndexedPropertyAccess(const char* tag, JSObject holder, void Logger::ApiObjectAccess(const char* tag, JSObject object) { if (!log_->IsEnabled() || !FLAG_log_api) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "api" << kNext << tag << kNext << object.class_name(); msg.WriteToLogFile(); } void Logger::ApiEntryCall(const char* name) { if (!log_->IsEnabled() || !FLAG_log_api) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "api" << kNext << name; msg.WriteToLogFile(); } void Logger::NewEvent(const char* name, void* object, size_t size) { if (!log_->IsEnabled() || !FLAG_log) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "new" << kNext << name << kNext << object << kNext << static_cast<unsigned int>(size); msg.WriteToLogFile(); @@ -1092,7 +1107,7 @@ void Logger::NewEvent(const char* name, void* object, size_t size) { void Logger::DeleteEvent(const char* name, void* object) { if (!log_->IsEnabled() || !FLAG_log) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "delete" << kNext << name << kNext << object; msg.WriteToLogFile(); } @@ -1100,7 +1115,7 @@ void Logger::DeleteEvent(const char* name, void* object) { void Logger::CallbackEventInternal(const char* prefix, Name name, Address entry_point) { if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << kLogEventsNames[CodeEventListener::CODE_CREATION_EVENT] << kNext << kLogEventsNames[CodeEventListener::CALLBACK_TAG] << kNext << -2 << kNext << timer_.Elapsed().InMicroseconds() << kNext @@ -1149,7 +1164,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, AbstractCode code, const char* comment) { if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, tag, code, &timer_); msg << comment; msg.WriteToLogFile(); @@ -1159,7 +1174,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, AbstractCode code, Name name) { if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, tag, code, &timer_); msg << name; msg.WriteToLogFile(); @@ -1175,7 +1190,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, return; } - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, tag, code, &timer_); msg << name << kNext << reinterpret_cast<void*>(shared.address()) << kNext << ComputeMarker(shared, code); @@ -1186,7 +1201,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, const wasm::WasmCode* code, wasm::WasmName name) { if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, tag, AbstractCode::Kind::WASM_FUNCTION, code->instructions().begin(), code->instructions().length(), &timer_); @@ -1215,7 +1230,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; { - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, tag, code, &timer_); msg << shared.DebugName() << " " << source << ":" << line << ":" << column << kNext << reinterpret_cast<void*>(shared.address()) << kNext @@ -1250,7 +1265,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, // <function-id> is an index into the <fns> function table // <fns> is the function table encoded as a sequence of strings // S<shared-function-info-address> - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "code-source-info" << kNext << reinterpret_cast<void*>(code.InstructionStart()) << kNext << script.id() << kNext << shared.StartPosition() << kNext @@ -1307,7 +1322,7 @@ void Logger::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag, void Logger::CodeDisableOptEvent(AbstractCode code, SharedFunctionInfo shared) { if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << kLogEventsNames[CodeEventListener::CODE_DISABLE_OPT_EVENT] << kNext << shared.DebugName() << kNext << GetBailoutReason(shared.disable_optimization_reason()); @@ -1323,7 +1338,7 @@ void Logger::CodeMovingGCEvent() { void Logger::RegExpCodeCreateEvent(AbstractCode code, String source) { if (!is_listening_to_code_events()) return; if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendCodeCreateHeader(msg, CodeEventListener::REG_EXP_TAG, code, &timer_); msg << source; msg.WriteToLogFile(); @@ -1373,7 +1388,7 @@ void Logger::CodeLinePosInfoRecordEvent( void Logger::CodeNameEvent(Address addr, int pos, const char* code_name) { if (code_name == nullptr) return; // Not a code object. - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << kLogEventsNames[CodeEventListener::SNAPSHOT_CODE_NAME_EVENT] << kNext << pos << kNext << code_name; msg.WriteToLogFile(); @@ -1387,7 +1402,7 @@ void Logger::SharedFunctionInfoMoveEvent(Address from, Address to) { void Logger::MoveEventInternal(CodeEventListener::LogEventsAndTags event, Address from, Address to) { if (!FLAG_log_code || !log_->IsEnabled()) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << kLogEventsNames[event] << kNext << reinterpret_cast<void*>(from) << kNext << reinterpret_cast<void*>(to); msg.WriteToLogFile(); @@ -1395,7 +1410,7 @@ void Logger::MoveEventInternal(CodeEventListener::LogEventsAndTags event, void Logger::ResourceEvent(const char* name, const char* tag) { if (!log_->IsEnabled() || !FLAG_log) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << name << kNext << tag << kNext; uint32_t sec, usec; @@ -1409,7 +1424,7 @@ void Logger::ResourceEvent(const char* name, const char* tag) { void Logger::SuspectReadEvent(Name name, Object obj) { if (!log_->IsEnabled() || !FLAG_log_suspect) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); String class_name = obj.IsJSObject() ? JSObject::cast(obj).class_name() : ReadOnlyRoots(isolate_).empty_string(); msg << "suspect-read" << kNext << class_name << kNext << name; @@ -1432,7 +1447,7 @@ void Logger::FunctionEvent(const char* reason, int script_id, double time_delta, int start_position, int end_position, String function_name) { if (!log_->IsEnabled() || !FLAG_log_function_events) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendFunctionMessage(msg, reason, script_id, time_delta, start_position, end_position, &timer_); if (!function_name.is_null()) msg << function_name; @@ -1444,7 +1459,7 @@ void Logger::FunctionEvent(const char* reason, int script_id, double time_delta, const char* function_name, size_t function_name_length) { if (!log_->IsEnabled() || !FLAG_log_function_events) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); AppendFunctionMessage(msg, reason, script_id, time_delta, start_position, end_position, &timer_); if (function_name_length > 0) { @@ -1456,7 +1471,7 @@ void Logger::FunctionEvent(const char* reason, int script_id, double time_delta, void Logger::CompilationCacheEvent(const char* action, const char* cache_type, SharedFunctionInfo sfi) { if (!log_->IsEnabled() || !FLAG_log_function_events) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); int script_id = -1; if (sfi.script().IsScript()) { script_id = Script::cast(sfi.script()).id(); @@ -1470,7 +1485,7 @@ void Logger::CompilationCacheEvent(const char* action, const char* cache_type, void Logger::ScriptEvent(ScriptEventType type, int script_id) { if (!log_->IsEnabled() || !FLAG_log_function_events) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "script" << Logger::kNext; switch (type) { case ScriptEventType::kReserveId: @@ -1497,7 +1512,7 @@ void Logger::ScriptEvent(ScriptEventType type, int script_id) { void Logger::ScriptDetails(Script script) { if (!log_->IsEnabled() || !FLAG_log_function_events) return; { - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "script-details" << Logger::kNext << script.id() << Logger::kNext; if (script.name().IsString()) { msg << String::cast(script.name()); @@ -1514,7 +1529,7 @@ void Logger::ScriptDetails(Script script) { bool Logger::EnsureLogScriptSource(Script script) { if (!log_->IsEnabled()) return false; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); // Make sure the script is written to the log file. int script_id = script.id(); if (logged_source_code_.find(script_id) != logged_source_code_.end()) { @@ -1544,7 +1559,7 @@ void Logger::RuntimeCallTimerEvent() { RuntimeCallStats* stats = isolate_->counters()->runtime_call_stats(); RuntimeCallCounter* counter = stats->current_counter(); if (counter == nullptr) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "active-runtime-timer" << kNext << counter->name(); msg.WriteToLogFile(); } @@ -1555,7 +1570,7 @@ void Logger::TickEvent(TickSample* sample, bool overflow) { v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE)) { RuntimeCallTimerEvent(); } - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << kLogEventsNames[CodeEventListener::TICK_EVENT] << kNext << reinterpret_cast<void*>(sample->pc) << kNext << timer_.Elapsed().InMicroseconds(); @@ -1577,7 +1592,7 @@ void Logger::ICEvent(const char* type, bool keyed, Map map, Object key, char old_state, char new_state, const char* modifier, const char* slow_stub_reason) { if (!log_->IsEnabled() || !FLAG_trace_ic) return; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); if (keyed) msg << "Keyed"; int line; int column; @@ -1611,7 +1626,7 @@ void Logger::MapEvent(const char* type, Map from, Map to, const char* reason, if (!isolate_->bootstrapper()->IsActive()) { pc = isolate_->GetAbstractPC(&line, &column); } - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "map" << kNext << type << kNext << timer_.Elapsed().InMicroseconds() << kNext << AsHex::Address(from.ptr()) << kNext << AsHex::Address(to.ptr()) << kNext << AsHex::Address(pc) << kNext @@ -1634,7 +1649,7 @@ void Logger::MapEvent(const char* type, Map from, Map to, const char* reason, void Logger::MapCreate(Map map) { if (!log_->IsEnabled() || !FLAG_trace_maps) return; DisallowHeapAllocation no_gc; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "map-create" << kNext << timer_.Elapsed().InMicroseconds() << kNext << AsHex::Address(map.ptr()); msg.WriteToLogFile(); @@ -1643,7 +1658,7 @@ void Logger::MapCreate(Map map) { void Logger::MapDetails(Map map) { if (!log_->IsEnabled() || !FLAG_trace_maps) return; DisallowHeapAllocation no_gc; - Log::MessageBuilder msg(log_); + Log::MessageBuilder msg(log_.get()); msg << "map-details" << kNext << timer_.Elapsed().InMicroseconds() << kNext << AsHex::Address(map.ptr()) << kNext; if (FLAG_trace_maps_details) { @@ -1842,24 +1857,25 @@ bool Logger::SetUp(Isolate* isolate) { std::ostringstream log_file_name; std::ostringstream source_log_file_name; PrepareLogFileName(log_file_name, isolate, FLAG_logfile); - log_ = new Log(this, log_file_name.str().c_str()); + log_ = std::make_unique<Log>(this, log_file_name.str().c_str()); if (FLAG_perf_basic_prof) { - perf_basic_logger_.reset(new PerfBasicLogger(isolate)); + perf_basic_logger_ = std::make_unique<PerfBasicLogger>(isolate); AddCodeEventListener(perf_basic_logger_.get()); } if (FLAG_perf_prof) { - perf_jit_logger_.reset(new PerfJitLogger(isolate)); + perf_jit_logger_ = std::make_unique<PerfJitLogger>(isolate); AddCodeEventListener(perf_jit_logger_.get()); } if (FLAG_ll_prof) { - ll_logger_.reset(new LowLevelLogger(isolate, log_file_name.str().c_str())); + ll_logger_ = + std::make_unique<LowLevelLogger>(isolate, log_file_name.str().c_str()); AddCodeEventListener(ll_logger_.get()); } - ticker_.reset(new Ticker(isolate, FLAG_prof_sampling_interval)); + ticker_ = std::make_unique<Ticker>(isolate, FLAG_prof_sampling_interval); if (Log::InitLogAtStart()) { is_logging_ = true; @@ -1868,7 +1884,7 @@ bool Logger::SetUp(Isolate* isolate) { timer_.Start(); if (FLAG_prof_cpp) { - profiler_.reset(new Profiler(isolate)); + profiler_ = std::make_unique<Profiler>(isolate); is_logging_ = true; profiler_->Engage(); } @@ -1891,7 +1907,7 @@ void Logger::SetCodeEventHandler(uint32_t options, if (isolate_->wasm_engine() != nullptr) { isolate_->wasm_engine()->EnableCodeLogging(isolate_); } - jit_logger_.reset(new JitLogger(isolate_, event_handler)); + jit_logger_ = std::make_unique<JitLogger>(isolate_, event_handler); AddCodeEventListener(jit_logger_.get()); if (options & kJitCodeEventEnumExisting) { HandleScope scope(isolate_); @@ -2042,9 +2058,9 @@ void ExistingCodeLogger::LogCompiledFunctions() { const int wasm_module_objects_count = EnumerateWasmModuleObjects(heap, nullptr); - std::unique_ptr<Handle<WasmModuleObject>[]> module_objects( - new Handle<WasmModuleObject>[wasm_module_objects_count]); - EnumerateWasmModuleObjects(heap, module_objects.get()); + ScopedVector<Handle<WasmModuleObject>> module_objects( + wasm_module_objects_count); + EnumerateWasmModuleObjects(heap, module_objects.begin()); for (int i = 0; i < wasm_module_objects_count; ++i) { module_objects[i]->native_module()->LogWasmCodes(isolate_); } diff --git a/deps/v8/src/logging/log.h b/deps/v8/src/logging/log.h index 3c28222982..69760c4c6c 100644 --- a/deps/v8/src/logging/log.h +++ b/deps/v8/src/logging/log.h @@ -5,6 +5,7 @@ #ifndef V8_LOGGING_LOG_H_ #define V8_LOGGING_LOG_H_ +#include <memory> #include <set> #include <string> @@ -115,6 +116,9 @@ class Logger : public CodeEventListener { kStreamingCompile }; + explicit Logger(Isolate* isolate); + ~Logger(); + // The separator is used to write an unescaped "," into the log. static const LogSeparator kNext; @@ -273,9 +277,6 @@ class Logger : public CodeEventListener { void LogCodeObject(Object code_object); private: - explicit Logger(Isolate* isolate); - ~Logger() override; - // Emits the profiler's first message. void ProfilerBeginEvent(); @@ -314,21 +315,11 @@ class Logger : public CodeEventListener { // of samples. std::unique_ptr<Profiler> profiler_; - // An array of log events names. - const char* const* log_events_; - - // Internal implementation classes with access to - // private members. - friend class EventLog; - friend class Isolate; - friend class TimeLog; + // Internal implementation classes with access to private members. friend class Profiler; - template <StateTag Tag> - friend class VMState; - friend class LoggerTestHelper; bool is_logging_; - Log* log_; + std::unique_ptr<Log> log_; std::unique_ptr<PerfBasicLogger> perf_basic_logger_; std::unique_ptr<PerfJitLogger> perf_jit_logger_; std::unique_ptr<LowLevelLogger> ll_logger_; @@ -419,7 +410,7 @@ class V8_EXPORT_PRIVATE CodeEventLogger : public CodeEventListener { virtual void LogRecordedBuffer(const wasm::WasmCode* code, const char* name, int length) = 0; - NameBuffer* name_buffer_; + std::unique_ptr<NameBuffer> name_buffer_; }; struct CodeEvent { @@ -432,6 +423,7 @@ struct CodeEvent { int script_column; CodeEventType code_type; const char* comment; + uintptr_t previous_code_start_address; }; class ExternalCodeEventListener : public CodeEventListener { @@ -457,7 +449,7 @@ class ExternalCodeEventListener : public CodeEventListener { void SetterCallbackEvent(Name name, Address entry_point) override {} void SharedFunctionInfoMoveEvent(Address from, Address to) override {} void NativeContextMoveEvent(Address from, Address to) override {} - void CodeMoveEvent(AbstractCode from, AbstractCode to) override {} + void CodeMoveEvent(AbstractCode from, AbstractCode to) override; void CodeDisableOptEvent(AbstractCode code, SharedFunctionInfo shared) override {} void CodeMovingGCEvent() override {} |