// Copyright 2010 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_GDB_JIT_H_ #define V8_GDB_JIT_H_ #include "src/allocation.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. // #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) #endif #endif