--- a/hotspot/src/share/vm/code/nmethod.hpp Wed Apr 16 17:36:29 2008 -0400
+++ b/hotspot/src/share/vm/code/nmethod.hpp Thu Apr 17 22:18:15 2008 -0400
@@ -140,6 +140,9 @@
int _exception_offset;
// All deoptee's will resume execution at this location described by this offset
int _deoptimize_offset;
+#ifdef HAVE_DTRACE_H
+ int _trap_offset;
+#endif // def HAVE_DTRACE_H
int _stub_offset;
int _consts_offset;
int _scopes_data_offset;
@@ -211,6 +214,15 @@
ByteSize basic_lock_sp_offset, /* synchronized natives only */
OopMapSet* oop_maps);
+#ifdef HAVE_DTRACE_H
+ // For native wrappers
+ nmethod(methodOop method,
+ int nmethod_size,
+ CodeOffsets* offsets,
+ CodeBuffer *code_buffer,
+ int frame_size);
+#endif // def HAVE_DTRACE_H
+
// Creation support
nmethod(methodOop method,
int nmethod_size,
@@ -272,6 +284,22 @@
ByteSize basic_lock_sp_offset,
OopMapSet* oop_maps);
+#ifdef HAVE_DTRACE_H
+ // The method we generate for a dtrace probe has to look
+ // like an nmethod as far as the rest of the system is concerned
+ // which is somewhat unfortunate.
+ static nmethod* new_dtrace_nmethod(methodHandle method,
+ CodeBuffer *code_buffer,
+ int vep_offset,
+ int trap_offset,
+ int frame_complete,
+ int frame_size);
+
+ int trap_offset() const { return _trap_offset; }
+ address trap_address() const { return code_begin() + _trap_offset; }
+
+#endif // def HAVE_DTRACE_H
+
// accessors
methodOop method() const { return _method; }
AbstractCompiler* compiler() const { return _compiler; }