| Index: src/gdb-jit.cc
|
| diff --git a/src/gdb-jit.cc b/src/gdb-jit.cc
|
| index 5ca6dfd1851e208a09e05485ed5768ba0b474039..f3a5cb55a266add09583dc392338c1e24596d32c 100644
|
| --- a/src/gdb-jit.cc
|
| +++ b/src/gdb-jit.cc
|
| @@ -2063,8 +2063,6 @@ void GDBJITInterface::AddCode(const char* name,
|
| GDBJITInterface::CodeTag tag,
|
| Script* script,
|
| CompilationInfo* info) {
|
| - if (!FLAG_gdbjit) return;
|
| -
|
| base::LockGuard<base::Mutex> lock_guard(mutex.Pointer());
|
| DisallowHeapAllocation no_gc;
|
|
|
| @@ -2109,45 +2107,6 @@ void GDBJITInterface::AddCode(const char* name,
|
| }
|
|
|
|
|
| -void GDBJITInterface::AddCode(GDBJITInterface::CodeTag tag,
|
| - const char* name,
|
| - Code* code) {
|
| - if (!FLAG_gdbjit) return;
|
| -
|
| - EmbeddedVector<char, 256> buffer;
|
| - StringBuilder builder(buffer.start(), buffer.length());
|
| -
|
| - builder.AddString(Tag2String(tag));
|
| - if ((name != NULL) && (*name != '\0')) {
|
| - builder.AddString(": ");
|
| - builder.AddString(name);
|
| - } else {
|
| - builder.AddFormatted(": code object %p", static_cast<void*>(code));
|
| - }
|
| -
|
| - AddCode(builder.Finalize(), code, tag, NULL, NULL);
|
| -}
|
| -
|
| -
|
| -void GDBJITInterface::AddCode(GDBJITInterface::CodeTag tag,
|
| - Name* name,
|
| - Code* code) {
|
| - if (!FLAG_gdbjit) return;
|
| - if (name != NULL && name->IsString()) {
|
| - AddCode(tag, String::cast(name)->ToCString(DISALLOW_NULLS).get(), code);
|
| - } else {
|
| - AddCode(tag, "", code);
|
| - }
|
| -}
|
| -
|
| -
|
| -void GDBJITInterface::AddCode(GDBJITInterface::CodeTag tag, Code* code) {
|
| - if (!FLAG_gdbjit) return;
|
| -
|
| - AddCode(tag, "", code);
|
| -}
|
| -
|
| -
|
| void GDBJITInterface::RemoveCode(Code* code) {
|
| if (!FLAG_gdbjit) return;
|
|
|
| @@ -2199,10 +2158,27 @@ static void RegisterDetailedLineInfo(Code* code, LineInfo* line_info) {
|
| void GDBJITInterface::EventHandler(const v8::JitCodeEvent* event) {
|
| if (!FLAG_gdbjit) return;
|
| switch (event->type) {
|
| - case v8::JitCodeEvent::CODE_ADDED:
|
| + case v8::JitCodeEvent::CODE_ADDED: {
|
| + Code* code = Code::GetCodeFromTargetAddress(
|
| + reinterpret_cast<Address>(event->code_start));
|
| + if (code->kind() == Code::OPTIMIZED_FUNCTION ||
|
| + code->kind() == Code::FUNCTION) {
|
| + break;
|
| + }
|
| + EmbeddedVector<char, 256> buffer;
|
| + StringBuilder builder(buffer.start(), buffer.length());
|
| + builder.AddSubstring(event->name.str, static_cast<int>(event->name.len));
|
| + AddCode(builder.Finalize(), code, NON_FUNCTION, NULL, NULL);
|
| + break;
|
| + }
|
| case v8::JitCodeEvent::CODE_MOVED:
|
| - case v8::JitCodeEvent::CODE_REMOVED:
|
| break;
|
| + case v8::JitCodeEvent::CODE_REMOVED: {
|
| + Code* code = Code::GetCodeFromTargetAddress(
|
| + reinterpret_cast<Address>(event->code_start));
|
| + RemoveCode(code);
|
| + break;
|
| + }
|
| case v8::JitCodeEvent::CODE_ADD_LINE_POS_INFO: {
|
| LineInfo* line_info = reinterpret_cast<LineInfo*>(event->user_data);
|
| line_info->SetPosition(static_cast<intptr_t>(event->line_info.offset),
|
|
|