diff options
Diffstat (limited to 'deps/v8/src/gdb-jit.h')
-rw-r--r-- | deps/v8/src/gdb-jit.h | 61 |
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 |