Revision: 7557
Author: [email protected]
Date: Fri Apr 8 04:25:19 2011
Log: Fix compilation with gdbjit=on.
Ensure mutual exclusion on access to GDBJITInterface internal structures to
make it work correctly with several isolates.
Review URL: http://codereview.chromium.org/6816053
http://code.google.com/p/v8/source/detail?r=7557
Modified:
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/gdb-jit.cc
/branches/bleeding_edge/src/gdb-jit.h
=======================================
--- /branches/bleeding_edge/src/compiler.cc Thu Apr 7 07:42:37 2011
+++ /branches/bleeding_edge/src/compiler.cc Fri Apr 8 04:25:19 2011
@@ -784,7 +784,7 @@
}
}
- GDBJIT(AddCode(name,
+ GDBJIT(AddCode(Handle<String>(shared->DebugName()),
Handle<Script>(info->script()),
Handle<Code>(info->code())));
}
=======================================
--- /branches/bleeding_edge/src/gdb-jit.cc Fri Mar 18 13:35:07 2011
+++ /branches/bleeding_edge/src/gdb-jit.cc Fri Apr 8 04:25:19 2011
@@ -1443,6 +1443,9 @@
}
#endif // V8_TARGET_ARCH_X64
}
+
+
+Mutex* GDBJITInterface::mutex_ = OS::CreateMutex();
void GDBJITInterface::AddCode(const char* name,
@@ -1450,6 +1453,8 @@
GDBJITInterface::CodeTag tag,
Script* script) {
if (!FLAG_gdbjit) return;
+
+ ScopedLock lock(mutex_);
AssertNoAllocation no_gc;
HashMap::Entry* e = GetEntries()->Lookup(code, HashForCodeObject(code),
true);
@@ -1518,6 +1523,7 @@
void GDBJITInterface::RemoveCode(Code* code) {
if (!FLAG_gdbjit) return;
+ ScopedLock lock(mutex_);
HashMap::Entry* e = GetEntries()->Lookup(code,
HashForCodeObject(code),
false);
@@ -1537,6 +1543,7 @@
void GDBJITInterface::RegisterDetailedLineInfo(Code* code,
GDBJITLineInfo* line_info) {
+ ScopedLock lock(mutex_);
ASSERT(!IsLineInfoTagged(line_info));
HashMap::Entry* e = GetEntries()->Lookup(code, HashForCodeObject(code),
true);
ASSERT(e->value == NULL);
=======================================
--- /branches/bleeding_edge/src/gdb-jit.h Wed Feb 2 05:32:18 2011
+++ /branches/bleeding_edge/src/gdb-jit.h Fri Apr 8 04:25:19 2011
@@ -126,6 +126,9 @@
static void RemoveCode(Code* code);
static void RegisterDetailedLineInfo(Code* code, GDBJITLineInfo*
line_info);
+
+ private:
+ static Mutex* mutex_;
};
#define GDBJIT(action) GDBJITInterface::action
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev