summaryrefslogtreecommitdiff
path: root/deps/v8/src/gdb-jit.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/gdb-jit.h')
-rw-r--r--deps/v8/src/gdb-jit.h61
1 files changed, 23 insertions, 38 deletions
diff --git a/deps/v8/src/gdb-jit.h b/deps/v8/src/gdb-jit.h
index 14536cf0b3..45382702da 100644
--- a/deps/v8/src/gdb-jit.h
+++ b/deps/v8/src/gdb-jit.h
@@ -5,50 +5,35 @@
#ifndef V8_GDB_JIT_H_
#define V8_GDB_JIT_H_
-#include "src/allocation.h"
+#include "src/v8.h"
//
-// Basic implementation of GDB JIT Interface client.
-// GBD JIT Interface is supported in GDB 7.0 and above.
-// Currently on x64 and ia32 architectures and Linux OS are supported.
+// GDB has two ways of interacting with JIT code. With the "JIT compilation
+// interface", V8 can tell GDB when it emits JIT code. Unfortunately to do so,
+// it has to create platform-native object files, possibly with platform-native
+// debugging information. Currently only ELF and Mach-O are supported, which
+// limits this interface to Linux and Mac OS. This JIT compilation interface
+// was introduced in GDB 7.0. V8 support can be enabled with the --gdbjit flag.
+//
+// The other way that GDB can know about V8 code is via the "custom JIT reader"
+// interface, in which a GDB extension parses V8's private data to determine the
+// function, file, and line of a JIT frame, and how to unwind those frames.
+// This interface was introduced in GDB 7.6. This interface still relies on V8
+// to register its code via the JIT compilation interface, but doesn't require
+// that V8 create ELF images. Support will be added for this interface in the
+// future.
//
-
-#ifdef ENABLE_GDB_JIT_INTERFACE
-#include "src/v8.h"
-
-#include "src/factory.h"
namespace v8 {
namespace internal {
-
-class CompilationInfo;
-
-class GDBJITInterface: public AllStatic {
- public:
- enum CodeTag { NON_FUNCTION, FUNCTION };
-
- // Main entry point into GDB JIT realized as a JitCodeEventHandler.
- static void EventHandler(const v8::JitCodeEvent* event);
-
- static void AddCode(Handle<Name> name,
- Handle<Script> script,
- Handle<Code> code,
- CompilationInfo* info);
-
- static void RemoveCodeRange(Address start, Address end);
-
- private:
- static void AddCode(const char* name, Code* code, CodeTag tag, Script* script,
- CompilationInfo* info);
-
- static void RemoveCode(Code* code);
-};
-
-#define GDBJIT(action) GDBJITInterface::action
-
-} } // namespace v8::internal
-#else
-#define GDBJIT(action) ((void) 0)
+namespace GDBJITInterface {
+#ifdef ENABLE_GDB_JIT_INTERFACE
+// JitCodeEventHandler that creates ELF/Mach-O objects and registers them with
+// GDB.
+void EventHandler(const v8::JitCodeEvent* event);
#endif
+} // namespace GDBJITInterface
+} // namespace internal
+} // namespace v8
#endif