Commit 688b3b21 authored by Ng Zhi An's avatar Ng Zhi An Committed by V8 LUCI CQ

[logging] Specify CodeEvent when logging CodeLinePosInfo

In gdbbjit's event handler, we return early if code_type is not
JIT_CODE. Unfortunately, in all CodeLinePosInfo event, we memset the
struct, so code_type is always BYTE_CODE, so no line information was
getting saved.

Drive-by clean up to aggregate initialize JitCodeEvent. Since the
initializer list is empty, all members are value-initialized, and in
this case, zero-initialized.

Bug: v8:12035
Change-Id: I67df2688f13fafbb0806546568eb2574ac8d5e2e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3071909Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#76179}
parent 16d9a1eb
...@@ -601,9 +601,9 @@ MaybeHandle<Code> CodeGenerator::FinalizeCode() { ...@@ -601,9 +601,9 @@ MaybeHandle<Code> CodeGenerator::FinalizeCode() {
isolate()->counters()->total_compiled_code_size()->Increment( isolate()->counters()->total_compiled_code_size()->Increment(
code->raw_body_size()); code->raw_body_size());
LOG_CODE_EVENT(isolate(), LOG_CODE_EVENT(isolate(), CodeLinePosInfoRecordEvent(
CodeLinePosInfoRecordEvent(code->raw_instruction_start(), code->raw_instruction_start(),
*source_positions)); *source_positions, JitCodeEvent::JIT_CODE));
return code; return code;
} }
......
...@@ -950,7 +950,8 @@ void TranslateSourcePositionTable(Isolate* isolate, Handle<BytecodeArray> code, ...@@ -950,7 +950,8 @@ void TranslateSourcePositionTable(Isolate* isolate, Handle<BytecodeArray> code,
code->set_source_position_table(*new_source_position_table, kReleaseStore); code->set_source_position_table(*new_source_position_table, kReleaseStore);
LOG_CODE_EVENT(isolate, LOG_CODE_EVENT(isolate,
CodeLinePosInfoRecordEvent(code->GetFirstBytecodeAddress(), CodeLinePosInfoRecordEvent(code->GetFirstBytecodeAddress(),
*new_source_position_table)); *new_source_position_table,
JitCodeEvent::BYTE_CODE));
} }
void UpdatePositions(Isolate* isolate, Handle<SharedFunctionInfo> sfi, void UpdatePositions(Isolate* isolate, Handle<SharedFunctionInfo> sfi,
......
...@@ -1246,7 +1246,7 @@ Handle<ByteArray> BytecodeGenerator::FinalizeSourcePositionTable( ...@@ -1246,7 +1246,7 @@ Handle<ByteArray> BytecodeGenerator::FinalizeSourcePositionTable(
LOG_CODE_EVENT(isolate, LOG_CODE_EVENT(isolate,
CodeLinePosInfoRecordEvent( CodeLinePosInfoRecordEvent(
info_->bytecode_array()->GetFirstBytecodeAddress(), info_->bytecode_array()->GetFirstBytecodeAddress(),
*source_position_table)); *source_position_table, JitCodeEvent::BYTE_CODE));
return source_position_table; return source_position_table;
} }
......
...@@ -24,8 +24,10 @@ void LocalLogger::ScriptEvent(Logger::ScriptEventType type, int script_id) { ...@@ -24,8 +24,10 @@ void LocalLogger::ScriptEvent(Logger::ScriptEventType type, int script_id) {
logger_->ScriptEvent(type, script_id); logger_->ScriptEvent(type, script_id);
} }
void LocalLogger::CodeLinePosInfoRecordEvent(Address code_start, void LocalLogger::CodeLinePosInfoRecordEvent(Address code_start,
ByteArray source_position_table) { ByteArray source_position_table,
logger_->CodeLinePosInfoRecordEvent(code_start, source_position_table); JitCodeEvent::CodeType code_type) {
logger_->CodeLinePosInfoRecordEvent(code_start, source_position_table,
code_type);
} }
void LocalLogger::MapCreate(Map map) { logger_->MapCreate(map); } void LocalLogger::MapCreate(Map map) { logger_->MapCreate(map); }
......
...@@ -23,7 +23,8 @@ class LocalLogger { ...@@ -23,7 +23,8 @@ class LocalLogger {
void ScriptDetails(Script script); void ScriptDetails(Script script);
void ScriptEvent(Logger::ScriptEventType type, int script_id); void ScriptEvent(Logger::ScriptEventType type, int script_id);
void CodeLinePosInfoRecordEvent(Address code_start, void CodeLinePosInfoRecordEvent(Address code_start,
ByteArray source_position_table); ByteArray source_position_table,
JitCodeEvent::CodeType code_type);
void MapCreate(Map map); void MapCreate(Map map);
void MapDetails(Map map); void MapDetails(Map map);
......
...@@ -681,10 +681,12 @@ class JitLogger : public CodeEventLogger { ...@@ -681,10 +681,12 @@ class JitLogger : public CodeEventLogger {
Handle<SharedFunctionInfo> shared) override {} Handle<SharedFunctionInfo> shared) override {}
void AddCodeLinePosInfoEvent(void* jit_handler_data, int pc_offset, void AddCodeLinePosInfoEvent(void* jit_handler_data, int pc_offset,
int position, int position,
JitCodeEvent::PositionType position_type); JitCodeEvent::PositionType position_type,
JitCodeEvent::CodeType code_type);
void* StartCodePosInfoEvent(); void* StartCodePosInfoEvent(JitCodeEvent::CodeType code_type);
void EndCodePosInfoEvent(Address start_address, void* jit_handler_data); void EndCodePosInfoEvent(Address start_address, void* jit_handler_data,
JitCodeEvent::CodeType code_type);
private: private:
void LogRecordedBuffer(Handle<AbstractCode> code, void LogRecordedBuffer(Handle<AbstractCode> code,
...@@ -705,8 +707,7 @@ JitLogger::JitLogger(Isolate* isolate, JitCodeEventHandler code_event_handler) ...@@ -705,8 +707,7 @@ JitLogger::JitLogger(Isolate* isolate, JitCodeEventHandler code_event_handler)
void JitLogger::LogRecordedBuffer(Handle<AbstractCode> code, void JitLogger::LogRecordedBuffer(Handle<AbstractCode> code,
MaybeHandle<SharedFunctionInfo> maybe_shared, MaybeHandle<SharedFunctionInfo> maybe_shared,
const char* name, int length) { const char* name, int length) {
JitCodeEvent event; JitCodeEvent event = {};
memset(static_cast<void*>(&event), 0, sizeof(event));
event.type = JitCodeEvent::CODE_ADDED; event.type = JitCodeEvent::CODE_ADDED;
event.code_start = reinterpret_cast<void*>(code->InstructionStart()); event.code_start = reinterpret_cast<void*>(code->InstructionStart());
event.code_type = event.code_type =
...@@ -727,8 +728,7 @@ void JitLogger::LogRecordedBuffer(Handle<AbstractCode> code, ...@@ -727,8 +728,7 @@ void JitLogger::LogRecordedBuffer(Handle<AbstractCode> code,
#if V8_ENABLE_WEBASSEMBLY #if V8_ENABLE_WEBASSEMBLY
void JitLogger::LogRecordedBuffer(const wasm::WasmCode* code, const char* name, void JitLogger::LogRecordedBuffer(const wasm::WasmCode* code, const char* name,
int length) { int length) {
JitCodeEvent event; JitCodeEvent event = {};
memset(static_cast<void*>(&event), 0, sizeof(event));
event.type = JitCodeEvent::CODE_ADDED; event.type = JitCodeEvent::CODE_ADDED;
event.code_type = JitCodeEvent::JIT_CODE; event.code_type = JitCodeEvent::JIT_CODE;
event.code_start = code->instructions().begin(); event.code_start = code->instructions().begin();
...@@ -793,10 +793,11 @@ void JitLogger::CodeMoveEvent(AbstractCode from, AbstractCode to) { ...@@ -793,10 +793,11 @@ void JitLogger::CodeMoveEvent(AbstractCode from, AbstractCode to) {
void JitLogger::AddCodeLinePosInfoEvent( void JitLogger::AddCodeLinePosInfoEvent(
void* jit_handler_data, int pc_offset, int position, void* jit_handler_data, int pc_offset, int position,
JitCodeEvent::PositionType position_type) { JitCodeEvent::PositionType position_type,
JitCodeEvent event; JitCodeEvent::CodeType code_type) {
memset(static_cast<void*>(&event), 0, sizeof(event)); JitCodeEvent event = {};
event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO; event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO;
event.code_type = code_type;
event.user_data = jit_handler_data; event.user_data = jit_handler_data;
event.line_info.offset = pc_offset; event.line_info.offset = pc_offset;
event.line_info.pos = position; event.line_info.pos = position;
...@@ -806,10 +807,10 @@ void JitLogger::AddCodeLinePosInfoEvent( ...@@ -806,10 +807,10 @@ void JitLogger::AddCodeLinePosInfoEvent(
code_event_handler_(&event); code_event_handler_(&event);
} }
void* JitLogger::StartCodePosInfoEvent() { void* JitLogger::StartCodePosInfoEvent(JitCodeEvent::CodeType code_type) {
JitCodeEvent event; JitCodeEvent event = {};
memset(static_cast<void*>(&event), 0, sizeof(event));
event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING; event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING;
event.code_type = code_type;
event.isolate = reinterpret_cast<v8::Isolate*>(isolate_); event.isolate = reinterpret_cast<v8::Isolate*>(isolate_);
code_event_handler_(&event); code_event_handler_(&event);
...@@ -817,10 +818,11 @@ void* JitLogger::StartCodePosInfoEvent() { ...@@ -817,10 +818,11 @@ void* JitLogger::StartCodePosInfoEvent() {
} }
void JitLogger::EndCodePosInfoEvent(Address start_address, void JitLogger::EndCodePosInfoEvent(Address start_address,
void* jit_handler_data) { void* jit_handler_data,
JitCodeEvent event; JitCodeEvent::CodeType code_type) {
memset(static_cast<void*>(&event), 0, sizeof(event)); JitCodeEvent event = {};
event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING; event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING;
event.code_type = code_type;
event.code_start = reinterpret_cast<void*>(start_address); event.code_start = reinterpret_cast<void*>(start_address);
event.user_data = jit_handler_data; event.user_data = jit_handler_data;
event.isolate = reinterpret_cast<v8::Isolate*>(isolate_); event.isolate = reinterpret_cast<v8::Isolate*>(isolate_);
...@@ -1529,35 +1531,38 @@ void Logger::CodeDependencyChangeEvent(Handle<Code> code, ...@@ -1529,35 +1531,38 @@ void Logger::CodeDependencyChangeEvent(Handle<Code> code,
namespace { namespace {
void CodeLinePosEvent(JitLogger& jit_logger, Address code_start, void CodeLinePosEvent(JitLogger& jit_logger, Address code_start,
SourcePositionTableIterator& iter) { SourcePositionTableIterator& iter,
void* jit_handler_data = jit_logger.StartCodePosInfoEvent(); JitCodeEvent::CodeType code_type) {
void* jit_handler_data = jit_logger.StartCodePosInfoEvent(code_type);
for (; !iter.done(); iter.Advance()) { for (; !iter.done(); iter.Advance()) {
if (iter.is_statement()) { if (iter.is_statement()) {
jit_logger.AddCodeLinePosInfoEvent(jit_handler_data, iter.code_offset(), jit_logger.AddCodeLinePosInfoEvent(jit_handler_data, iter.code_offset(),
iter.source_position().ScriptOffset(), iter.source_position().ScriptOffset(),
JitCodeEvent::STATEMENT_POSITION); JitCodeEvent::STATEMENT_POSITION,
code_type);
} }
jit_logger.AddCodeLinePosInfoEvent(jit_handler_data, iter.code_offset(), jit_logger.AddCodeLinePosInfoEvent(jit_handler_data, iter.code_offset(),
iter.source_position().ScriptOffset(), iter.source_position().ScriptOffset(),
JitCodeEvent::POSITION); JitCodeEvent::POSITION, code_type);
} }
jit_logger.EndCodePosInfoEvent(code_start, jit_handler_data); jit_logger.EndCodePosInfoEvent(code_start, jit_handler_data, code_type);
} }
} // namespace } // namespace
void Logger::CodeLinePosInfoRecordEvent(Address code_start, void Logger::CodeLinePosInfoRecordEvent(Address code_start,
ByteArray source_position_table) { ByteArray source_position_table,
JitCodeEvent::CodeType code_type) {
if (!jit_logger_) return; if (!jit_logger_) return;
SourcePositionTableIterator iter(source_position_table); SourcePositionTableIterator iter(source_position_table);
CodeLinePosEvent(*jit_logger_, code_start, iter); CodeLinePosEvent(*jit_logger_, code_start, iter, code_type);
} }
void Logger::CodeLinePosInfoRecordEvent( void Logger::CodeLinePosInfoRecordEvent(
Address code_start, base::Vector<const byte> source_position_table) { Address code_start, base::Vector<const byte> source_position_table) {
if (!jit_logger_) return; if (!jit_logger_) return;
SourcePositionTableIterator iter(source_position_table); SourcePositionTableIterator iter(source_position_table);
CodeLinePosEvent(*jit_logger_, code_start, iter); CodeLinePosEvent(*jit_logger_, code_start, iter, JitCodeEvent::JIT_CODE);
} }
void Logger::CodeNameEvent(Address addr, int pos, const char* code_name) { void Logger::CodeNameEvent(Address addr, int pos, const char* code_name) {
......
...@@ -240,7 +240,8 @@ class Logger : public CodeEventListener { ...@@ -240,7 +240,8 @@ class Logger : public CodeEventListener {
// Emits a code line info record event. // Emits a code line info record event.
void CodeLinePosInfoRecordEvent(Address code_start, void CodeLinePosInfoRecordEvent(Address code_start,
ByteArray source_position_table); ByteArray source_position_table,
JitCodeEvent::CodeType code_type);
void CodeLinePosInfoRecordEvent( void CodeLinePosInfoRecordEvent(
Address code_start, base::Vector<const byte> source_position_table); Address code_start, base::Vector<const byte> source_position_table);
......
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