1 // Copyright 2010 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_GDB_JIT_H_ 6 #define V8_GDB_JIT_H_ 7 8 #include "src/allocation.h" 9 10 // 11 // Basic implementation of GDB JIT Interface client. 12 // GBD JIT Interface is supported in GDB 7.0 and above. 13 // Currently on x64 and ia32 architectures and Linux OS are supported. 14 // 15 16 #ifdef ENABLE_GDB_JIT_INTERFACE 17 #include "src/v8.h" 18 19 #include "src/factory.h" 20 21 namespace v8 { 22 namespace internal { 23 24 class CompilationInfo; 25 26 class GDBJITInterface: public AllStatic { 27 public: 28 enum CodeTag { NON_FUNCTION, FUNCTION }; 29 30 // Main entry point into GDB JIT realized as a JitCodeEventHandler. 31 static void EventHandler(const v8::JitCodeEvent* event); 32 33 static void AddCode(Handle<Name> name, 34 Handle<Script> script, 35 Handle<Code> code, 36 CompilationInfo* info); 37 38 static void RemoveCodeRange(Address start, Address end); 39 40 private: 41 static void AddCode(const char* name, Code* code, CodeTag tag, Script* script, 42 CompilationInfo* info); 43 44 static void RemoveCode(Code* code); 45 }; 46 47 #define GDBJIT(action) GDBJITInterface::action 48 49 } } // namespace v8::internal 50 #else 51 #define GDBJIT(action) ((void) 0) 52 #endif 53 54 #endif 55