+++ /dev/null
-/*\r
- * @(#)jawt.h 1.10 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JAWT_H_\r
-#define _JAVASOFT_JAWT_H_\r
-\r
-#include "jni.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * AWT native interface (new in JDK 1.3)\r
- *\r
- * The AWT native interface allows a native C or C++ application a means\r
- * by which to access native structures in AWT. This is to facilitate moving\r
- * legacy C and C++ applications to Java and to target the needs of the\r
- * community who, at present, wish to do their own native rendering to canvases\r
- * for performance reasons. Standard extensions such as Java3D also require a\r
- * means to access the underlying native data structures of AWT.\r
- *\r
- * There may be future extensions to this API depending on demand.\r
- *\r
- * A VM does not have to implement this API in order to pass the JCK.\r
- * It is recommended, however, that this API is implemented on VMs that support\r
- * standard extensions, such as Java3D.\r
- *\r
- * Since this is a native API, any program which uses it cannot be considered\r
- * 100% pure java.\r
- */\r
-\r
-/*\r
- * AWT Native Drawing Surface (JAWT_DrawingSurface).\r
- *\r
- * For each platform, there is a native drawing surface structure. This\r
- * platform-specific structure can be found in jawt_md.h. It is recommended\r
- * that additional platforms follow the same model. It is also recommended\r
- * that VMs on Win32 and Solaris support the existing structures in jawt_md.h.\r
- *\r
- *******************\r
- * EXAMPLE OF USAGE:\r
- *******************\r
- *\r
- * In Win32, a programmer wishes to access the HWND of a canvas to perform\r
- * native rendering into it. The programmer has declared the paint() method\r
- * for their canvas subclass to be native:\r
- *\r
- *\r
- * MyCanvas.java:\r
- *\r
- * import java.awt.*;\r
- *\r
- * public class MyCanvas extends Canvas {\r
- *\r
- * static {\r
- * System.loadLibrary("mylib");\r
- * }\r
- *\r
- * public native void paint(Graphics g);\r
- * }\r
- *\r
- *\r
- * myfile.c:\r
- *\r
- * #include "jawt_md.h"\r
- * #include <assert.h>\r
- *\r
- * JNIEXPORT void JNICALL\r
- * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics)\r
- * {\r
- * JAWT awt;\r
- * JAWT_DrawingSurface* ds;\r
- * JAWT_DrawingSurfaceInfo* dsi;\r
- * JAWT_Win32DrawingSurfaceInfo* dsi_win;\r
- * jboolean result;\r
- * jint lock;\r
- *\r
- * // Get the AWT\r
- * awt.version = JAWT_VERSION_1_3;\r
- * result = JAWT_GetAWT(env, &awt);\r
- * assert(result != JNI_FALSE);\r
- *\r
- * // Get the drawing surface\r
- * ds = awt.GetDrawingSurface(env, canvas);\r
- * assert(ds != NULL);\r
- *\r
- * // Lock the drawing surface\r
- * lock = ds->Lock(ds);\r
- * assert((lock & JAWT_LOCK_ERROR) == 0);\r
- *\r
- * // Get the drawing surface info\r
- * dsi = ds->GetDrawingSurfaceInfo(ds);\r
- *\r
- * // Get the platform-specific drawing info\r
- * dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;\r
- *\r
- * //////////////////////////////\r
- * // !!! DO PAINTING HERE !!! //\r
- * //////////////////////////////\r
- *\r
- * // Free the drawing surface info\r
- * ds->FreeDrawingSurfaceInfo(dsi);\r
- *\r
- * // Unlock the drawing surface\r
- * ds->Unlock(ds);\r
- *\r
- * // Free the drawing surface\r
- * awt.FreeDrawingSurface(ds);\r
- * }\r
- *\r
- */\r
-\r
-/*\r
- * JAWT_Rectangle\r
- * Structure for a native rectangle.\r
- */\r
-typedef struct jawt_Rectangle {\r
- jint x;\r
- jint y;\r
- jint width;\r
- jint height;\r
-} JAWT_Rectangle;\r
-\r
-struct jawt_DrawingSurface;\r
-\r
-/*\r
- * JAWT_DrawingSurfaceInfo\r
- * Structure for containing the underlying drawing information of a component.\r
- */\r
-typedef struct jawt_DrawingSurfaceInfo {\r
- /*\r
- * Pointer to the platform-specific information. This can be safely\r
- * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a\r
- * JAWT_X11DrawingSurfaceInfo on Solaris. See jawt_md.h for details.\r
- */\r
- void* platformInfo;\r
- /* Cached pointer to the underlying drawing surface */\r
- struct jawt_DrawingSurface* ds;\r
- /* Bounding rectangle of the drawing surface */\r
- JAWT_Rectangle bounds;\r
- /* Number of rectangles in the clip */\r
- jint clipSize;\r
- /* Clip rectangle array */\r
- JAWT_Rectangle* clip;\r
-} JAWT_DrawingSurfaceInfo;\r
-\r
-#define JAWT_LOCK_ERROR 0x00000001\r
-#define JAWT_LOCK_CLIP_CHANGED 0x00000002\r
-#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004\r
-#define JAWT_LOCK_SURFACE_CHANGED 0x00000008\r
-\r
-/*\r
- * JAWT_DrawingSurface\r
- * Structure for containing the underlying drawing information of a component.\r
- * All operations on a JAWT_DrawingSurface MUST be performed from the same\r
- * thread as the call to GetDrawingSurface.\r
- */\r
-typedef struct jawt_DrawingSurface {\r
- /*\r
- * Cached reference to the Java environment of the calling thread.\r
- * If Lock(), Unlock(), GetDrawingSurfaceInfo() or\r
- * FreeDrawingSurfaceInfo() are called from a different thread,\r
- * this data member should be set before calling those functions.\r
- */\r
- JNIEnv* env;\r
- /* Cached reference to the target object */\r
- jobject target;\r
- /*\r
- * Lock the surface of the target component for native rendering.\r
- * When finished drawing, the surface must be unlocked with\r
- * Unlock(). This function returns a bitmask with one or more of the\r
- * following values:\r
- *\r
- * JAWT_LOCK_ERROR - When an error has occurred and the surface could not\r
- * be locked.\r
- *\r
- * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed.\r
- *\r
- * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed.\r
- *\r
- * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed\r
- */\r
- jint (JNICALL *Lock)\r
- (struct jawt_DrawingSurface* ds);\r
- /*\r
- * Get the drawing surface info.\r
- * The value returned may be cached, but the values may change if\r
- * additional calls to Lock() or Unlock() are made.\r
- * Lock() must be called before this can return a valid value.\r
- * Returns NULL if an error has occurred.\r
- * When finished with the returned value, FreeDrawingSurfaceInfo must be\r
- * called.\r
- */\r
- JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)\r
- (struct jawt_DrawingSurface* ds);\r
- /*\r
- * Free the drawing surface info.\r
- */\r
- void (JNICALL *FreeDrawingSurfaceInfo)\r
- (JAWT_DrawingSurfaceInfo* dsi);\r
- /* \r
- * Unlock the drawing surface of the target component for native rendering.\r
- */\r
- void (JNICALL *Unlock)\r
- (struct jawt_DrawingSurface* ds);\r
-} JAWT_DrawingSurface;\r
-\r
-/*\r
- * JAWT\r
- * Structure for containing native AWT functions.\r
- */\r
-typedef struct jawt {\r
- /*\r
- * Version of this structure. This must always be set before\r
- * calling JAWT_GetAWT()\r
- */\r
- jint version;\r
- /*\r
- * Return a drawing surface from a target jobject. This value\r
- * may be cached.\r
- * Returns NULL if an error has occurred.\r
- * Target must be a java.awt.Component (should be a Canvas\r
- * or Window for native rendering).\r
- * FreeDrawingSurface() must be called when finished with the\r
- * returned JAWT_DrawingSurface.\r
- */\r
- JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)\r
- (JNIEnv* env, jobject target);\r
- /*\r
- * Free the drawing surface allocated in GetDrawingSurface.\r
- */\r
- void (JNICALL *FreeDrawingSurface)\r
- (JAWT_DrawingSurface* ds);\r
- /*\r
- * Since 1.4\r
- * Locks the entire AWT for synchronization purposes\r
- */\r
- void (JNICALL *Lock)(JNIEnv* env);\r
- /*\r
- * Since 1.4\r
- * Unlocks the entire AWT for synchronization purposes\r
- */\r
- void (JNICALL *Unlock)(JNIEnv* env);\r
- /*\r
- * Since 1.4\r
- * Returns a reference to a java.awt.Component from a native\r
- * platform handle. On Windows, this corresponds to an HWND;\r
- * on Solaris and Linux, this is a Drawable. For other platforms,\r
- * see the appropriate machine-dependent header file for a description.\r
- * The reference returned by this function is a local\r
- * reference that is only valid in this environment.\r
- * This function returns a NULL reference if no component could be\r
- * found with matching platform information.\r
- */\r
- jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);\r
-\r
-} JAWT;\r
-\r
-/*\r
- * Get the AWT native structure. This function returns JNI_FALSE if\r
- * an error occurs.\r
- */\r
-_JNI_IMPORT_OR_EXPORT_\r
-jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);\r
-\r
-#define JAWT_VERSION_1_3 0x00010003\r
-#define JAWT_VERSION_1_4 0x00010004\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif\r
-\r
-#endif /* !_JAVASOFT_JAWT_H_ */\r
+++ /dev/null
-/*\r
- * @(#)jdwpTransport.h 1.7 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- * Java Debug Wire Protocol Transport Service Provider Interface.\r
- */\r
-\r
-#ifndef JDWPTRANSPORT_H\r
-#define JDWPTRANSPORT_H\r
-\r
-#include "jni.h"\r
-\r
-enum {\r
- JDWPTRANSPORT_VERSION_1_0 = 0x00010000\r
-};\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-struct jdwpTransportNativeInterface_;\r
-\r
-struct _jdwpTransportEnv;\r
-\r
-#ifdef __cplusplus\r
-typedef _jdwpTransportEnv jdwpTransportEnv;\r
-#else\r
-typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;\r
-#endif /* __cplusplus */\r
-\r
-/*\r
- * Errors. Universal errors with JVMTI/JVMDI equivalents keep the\r
- * values the same.\r
- */\r
-typedef enum {\r
- JDWPTRANSPORT_ERROR_NONE = 0,\r
- JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,\r
- JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,\r
- JDWPTRANSPORT_ERROR_INTERNAL = 113,\r
- JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,\r
- JDWPTRANSPORT_ERROR_IO_ERROR = 202,\r
- JDWPTRANSPORT_ERROR_TIMEOUT = 203,\r
- JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204\r
-} jdwpTransportError;\r
- \r
-\r
-/*\r
- * Structure to define capabilities\r
- */\r
-typedef struct {\r
- unsigned int can_timeout_attach :1;\r
- unsigned int can_timeout_accept :1;\r
- unsigned int can_timeout_handshake :1;\r
- unsigned int reserved3 :1;\r
- unsigned int reserved4 :1;\r
- unsigned int reserved5 :1;\r
- unsigned int reserved6 :1;\r
- unsigned int reserved7 :1;\r
- unsigned int reserved8 :1;\r
- unsigned int reserved9 :1;\r
- unsigned int reserved10 :1;\r
- unsigned int reserved11 :1;\r
- unsigned int reserved12 :1;\r
- unsigned int reserved13 :1;\r
- unsigned int reserved14 :1;\r
- unsigned int reserved15 :1;\r
-} JDWPTransportCapabilities;\r
-\r
-\r
-/*\r
- * Structures to define packet layout.\r
- * \r
- * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html\r
- */\r
-\r
-enum {\r
- JDWPTRANSPORT_FLAGS_NONE = 0x0,\r
- JDWPTRANSPORT_FLAGS_REPLY = 0x80\r
-};\r
-\r
-typedef struct {\r
- jint len; \r
- jint id;\r
- jbyte flags;\r
- jbyte cmdSet;\r
- jbyte cmd;\r
- jbyte *data;\r
-} jdwpCmdPacket;\r
-\r
-typedef struct {\r
- jint len;\r
- jint id;\r
- jbyte flags;\r
- jshort errorCode;\r
- jbyte *data;\r
-} jdwpReplyPacket;\r
-\r
-typedef struct {\r
- union {\r
- jdwpCmdPacket cmd;\r
- jdwpReplyPacket reply;\r
- } type;\r
-} jdwpPacket;\r
-\r
-/*\r
- * JDWP functions called by the transport.\r
- */\r
-typedef struct jdwpTransportCallback {\r
- void *(*alloc)(jint numBytes); /* Call this for all allocations */\r
- void (*free)(void *buffer); /* Call this for all deallocations */\r
-} jdwpTransportCallback;\r
-\r
-typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,\r
- jdwpTransportCallback *callback,\r
- jint version,\r
- jdwpTransportEnv** env);\r
-\r
-\r
-\r
-/* Function Interface */\r
-\r
-struct jdwpTransportNativeInterface_ {\r
- /* 1 : RESERVED */\r
- void *reserved1;\r
-\r
- /* 2 : Get Capabilities */\r
- jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,\r
- JDWPTransportCapabilities *capabilities_ptr);\r
-\r
- /* 3 : Attach */\r
- jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,\r
- const char* address,\r
- jlong attach_timeout,\r
- jlong handshake_timeout);\r
-\r
- /* 4: StartListening */\r
- jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,\r
- const char* address, \r
- char** actual_address);\r
-\r
- /* 5: StopListening */\r
- jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);\r
-\r
- /* 6: Accept */\r
- jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,\r
- jlong accept_timeout, \r
- jlong handshake_timeout);\r
-\r
- /* 7: IsOpen */\r
- jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);\r
-\r
- /* 8: Close */\r
- jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);\r
-\r
- /* 9: ReadPacket */\r
- jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,\r
- jdwpPacket *pkt);\r
-\r
- /* 10: Write Packet */\r
- jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,\r
- const jdwpPacket* pkt);\r
-\r
- /* 11: GetLastError */\r
- jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,\r
- char** error);\r
-\r
-};\r
-\r
-\r
-/*\r
- * Use inlined functions so that C++ code can use syntax such as\r
- * env->Attach("mymachine:5000", 10*1000, 0);\r
- *\r
- * rather than using C's :-\r
- *\r
- * (*env)->Attach(env, "mymachine:5000", 10*1000, 0);\r
- */\r
-struct _jdwpTransportEnv {\r
- const struct jdwpTransportNativeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
- jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {\r
- return functions->GetCapabilities(this, capabilities_ptr);\r
- }\r
-\r
- jdwpTransportError Attach(const char* address, jlong attach_timeout,\r
- jlong handshake_timeout) {\r
- return functions->Attach(this, address, attach_timeout, handshake_timeout);\r
- }\r
-\r
- jdwpTransportError StartListening(const char* address,\r
- char** actual_address) {\r
- return functions->StartListening(this, address, actual_address);\r
- }\r
-\r
- jdwpTransportError StopListening(void) {\r
- return functions->StopListening(this);\r
- }\r
-\r
- jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {\r
- return functions->Accept(this, accept_timeout, handshake_timeout);\r
- }\r
-\r
- jboolean IsOpen(void) {\r
- return functions->IsOpen(this);\r
- }\r
-\r
- jdwpTransportError Close(void) {\r
- return functions->Close(this);\r
- }\r
-\r
- jdwpTransportError ReadPacket(jdwpPacket *pkt) {\r
- return functions->ReadPacket(this, pkt);\r
- }\r
-\r
- jdwpTransportError WritePacket(const jdwpPacket* pkt) {\r
- return functions->WritePacket(this, pkt);\r
- }\r
-\r
- jdwpTransportError GetLastError(char** error) {\r
- return functions->GetLastError(this, error);\r
- }\r
-\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* JDWPTRANSPORT_H */\r
-\r
+++ /dev/null
-/*\r
- * @(#)jni.h 1.56 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- * We used part of Netscape's Java Runtime Interface (JRI) as the starting\r
- * point of our design and implementation.\r
- */\r
-\r
-/******************************************************************************\r
- * Java Runtime Interface\r
- * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.\r
- *****************************************************************************/\r
-\r
-#ifndef _JAVASOFT_JNI_H_\r
-#define _JAVASOFT_JNI_H_\r
-\r
-#include <stdio.h>\r
-#include <stdarg.h>\r
-\r
-/* jni_md.h contains the machine-dependent typedefs for jbyte, jint\r
- and jlong */\r
-\r
-#include "jni_md.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * JNI Types\r
- */\r
-\r
-#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H\r
-\r
-typedef unsigned char jboolean;\r
-typedef unsigned short jchar;\r
-typedef short jshort;\r
-typedef float jfloat;\r
-typedef double jdouble;\r
-\r
-typedef jint jsize;\r
-\r
-#ifdef __cplusplus\r
-\r
-class _jobject {};\r
-class _jclass : public _jobject {};\r
-class _jthrowable : public _jobject {};\r
-class _jstring : public _jobject {};\r
-class _jarray : public _jobject {};\r
-class _jbooleanArray : public _jarray {};\r
-class _jbyteArray : public _jarray {};\r
-class _jcharArray : public _jarray {};\r
-class _jshortArray : public _jarray {};\r
-class _jintArray : public _jarray {};\r
-class _jlongArray : public _jarray {};\r
-class _jfloatArray : public _jarray {};\r
-class _jdoubleArray : public _jarray {};\r
-class _jobjectArray : public _jarray {};\r
-\r
-typedef _jobject *jobject;\r
-typedef _jclass *jclass;\r
-typedef _jthrowable *jthrowable;\r
-typedef _jstring *jstring;\r
-typedef _jarray *jarray;\r
-typedef _jbooleanArray *jbooleanArray;\r
-typedef _jbyteArray *jbyteArray;\r
-typedef _jcharArray *jcharArray;\r
-typedef _jshortArray *jshortArray;\r
-typedef _jintArray *jintArray;\r
-typedef _jlongArray *jlongArray;\r
-typedef _jfloatArray *jfloatArray;\r
-typedef _jdoubleArray *jdoubleArray;\r
-typedef _jobjectArray *jobjectArray;\r
-\r
-#else\r
-\r
-struct _jobject;\r
-\r
-typedef struct _jobject *jobject;\r
-typedef jobject jclass;\r
-typedef jobject jthrowable;\r
-typedef jobject jstring;\r
-typedef jobject jarray;\r
-typedef jarray jbooleanArray;\r
-typedef jarray jbyteArray;\r
-typedef jarray jcharArray;\r
-typedef jarray jshortArray;\r
-typedef jarray jintArray;\r
-typedef jarray jlongArray;\r
-typedef jarray jfloatArray;\r
-typedef jarray jdoubleArray;\r
-typedef jarray jobjectArray;\r
-\r
-#endif\r
-\r
-typedef jobject jweak;\r
-\r
-typedef union jvalue {\r
- jboolean z;\r
- jbyte b;\r
- jchar c;\r
- jshort s;\r
- jint i;\r
- jlong j;\r
- jfloat f;\r
- jdouble d;\r
- jobject l;\r
-} jvalue;\r
-\r
-struct _jfieldID;\r
-typedef struct _jfieldID *jfieldID;\r
-\r
-struct _jmethodID;\r
-typedef struct _jmethodID *jmethodID;\r
-\r
-#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */\r
-\r
-/*\r
- * jboolean constants\r
- */\r
-\r
-#define JNI_FALSE 0\r
-#define JNI_TRUE 1\r
-\r
-/*\r
- * possible return values for JNI functions.\r
- */\r
-\r
-#define JNI_OK 0 /* success */\r
-#define JNI_ERR (-1) /* unknown error */\r
-#define JNI_EDETACHED (-2) /* thread detached from the VM */\r
-#define JNI_EVERSION (-3) /* JNI version error */\r
-#define JNI_ENOMEM (-4) /* not enough memory */\r
-#define JNI_EEXIST (-5) /* VM already created */\r
-#define JNI_EINVAL (-6) /* invalid arguments */\r
-\r
-/*\r
- * used in ReleaseScalarArrayElements\r
- */\r
-\r
-#define JNI_COMMIT 1\r
-#define JNI_ABORT 2\r
-\r
-/*\r
- * used in RegisterNatives to describe native method name, signature,\r
- * and function pointer.\r
- */\r
-\r
-typedef struct {\r
- char *name;\r
- char *signature;\r
- void *fnPtr;\r
-} JNINativeMethod;\r
-\r
-/*\r
- * JNI Native Method Interface.\r
- */\r
-\r
-struct JNINativeInterface_;\r
-\r
-struct JNIEnv_;\r
-\r
-#ifdef __cplusplus\r
-typedef JNIEnv_ JNIEnv;\r
-#else\r
-typedef const struct JNINativeInterface_ *JNIEnv;\r
-#endif\r
-\r
-/*\r
- * JNI Invocation Interface.\r
- */\r
-\r
-struct JNIInvokeInterface_;\r
-\r
-struct JavaVM_;\r
-\r
-#ifdef __cplusplus\r
-typedef JavaVM_ JavaVM;\r
-#else\r
-typedef const struct JNIInvokeInterface_ *JavaVM;\r
-#endif\r
-\r
-struct JNINativeInterface_ {\r
- void *reserved0;\r
- void *reserved1;\r
- void *reserved2;\r
-\r
- void *reserved3;\r
- jint (JNICALL *GetVersion)(JNIEnv *env);\r
-\r
- jclass (JNICALL *DefineClass)\r
- (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,\r
- jsize len);\r
- jclass (JNICALL *FindClass)\r
- (JNIEnv *env, const char *name);\r
-\r
- jmethodID (JNICALL *FromReflectedMethod)\r
- (JNIEnv *env, jobject method);\r
- jfieldID (JNICALL *FromReflectedField)\r
- (JNIEnv *env, jobject field);\r
-\r
- jobject (JNICALL *ToReflectedMethod)\r
- (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);\r
-\r
- jclass (JNICALL *GetSuperclass)\r
- (JNIEnv *env, jclass sub);\r
- jboolean (JNICALL *IsAssignableFrom)\r
- (JNIEnv *env, jclass sub, jclass sup);\r
-\r
- jobject (JNICALL *ToReflectedField)\r
- (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);\r
-\r
- jint (JNICALL *Throw)\r
- (JNIEnv *env, jthrowable obj);\r
- jint (JNICALL *ThrowNew)\r
- (JNIEnv *env, jclass clazz, const char *msg);\r
- jthrowable (JNICALL *ExceptionOccurred)\r
- (JNIEnv *env);\r
- void (JNICALL *ExceptionDescribe)\r
- (JNIEnv *env);\r
- void (JNICALL *ExceptionClear)\r
- (JNIEnv *env);\r
- void (JNICALL *FatalError)\r
- (JNIEnv *env, const char *msg);\r
-\r
- jint (JNICALL *PushLocalFrame)\r
- (JNIEnv *env, jint capacity);\r
- jobject (JNICALL *PopLocalFrame)\r
- (JNIEnv *env, jobject result);\r
-\r
- jobject (JNICALL *NewGlobalRef)\r
- (JNIEnv *env, jobject lobj);\r
- void (JNICALL *DeleteGlobalRef)\r
- (JNIEnv *env, jobject gref);\r
- void (JNICALL *DeleteLocalRef)\r
- (JNIEnv *env, jobject obj);\r
- jboolean (JNICALL *IsSameObject)\r
- (JNIEnv *env, jobject obj1, jobject obj2);\r
- jobject (JNICALL *NewLocalRef)\r
- (JNIEnv *env, jobject ref);\r
- jint (JNICALL *EnsureLocalCapacity)\r
- (JNIEnv *env, jint capacity);\r
-\r
- jobject (JNICALL *AllocObject)\r
- (JNIEnv *env, jclass clazz);\r
- jobject (JNICALL *NewObject)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jobject (JNICALL *NewObjectV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jobject (JNICALL *NewObjectA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jclass (JNICALL *GetObjectClass)\r
- (JNIEnv *env, jobject obj);\r
- jboolean (JNICALL *IsInstanceOf)\r
- (JNIEnv *env, jobject obj, jclass clazz);\r
-\r
- jmethodID (JNICALL *GetMethodID)\r
- (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
- jobject (JNICALL *CallObjectMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jobject (JNICALL *CallObjectMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jobject (JNICALL *CallObjectMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
- jboolean (JNICALL *CallBooleanMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jboolean (JNICALL *CallBooleanMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jboolean (JNICALL *CallBooleanMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
- jbyte (JNICALL *CallByteMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jbyte (JNICALL *CallByteMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jbyte (JNICALL *CallByteMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jchar (JNICALL *CallCharMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jchar (JNICALL *CallCharMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jchar (JNICALL *CallCharMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jshort (JNICALL *CallShortMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jshort (JNICALL *CallShortMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jshort (JNICALL *CallShortMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jint (JNICALL *CallIntMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jint (JNICALL *CallIntMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jint (JNICALL *CallIntMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jlong (JNICALL *CallLongMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jlong (JNICALL *CallLongMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jlong (JNICALL *CallLongMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jfloat (JNICALL *CallFloatMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jfloat (JNICALL *CallFloatMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jfloat (JNICALL *CallFloatMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- jdouble (JNICALL *CallDoubleMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- jdouble (JNICALL *CallDoubleMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- jdouble (JNICALL *CallDoubleMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
- void (JNICALL *CallVoidMethod)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
- void (JNICALL *CallVoidMethodV)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
- void (JNICALL *CallVoidMethodA)\r
- (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
- jobject (JNICALL *CallNonvirtualObjectMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jobject (JNICALL *CallNonvirtualObjectMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jobject (JNICALL *CallNonvirtualObjectMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue * args);\r
-\r
- jboolean (JNICALL *CallNonvirtualBooleanMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jboolean (JNICALL *CallNonvirtualBooleanMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jboolean (JNICALL *CallNonvirtualBooleanMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue * args);\r
-\r
- jbyte (JNICALL *CallNonvirtualByteMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jbyte (JNICALL *CallNonvirtualByteMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jbyte (JNICALL *CallNonvirtualByteMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jchar (JNICALL *CallNonvirtualCharMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jchar (JNICALL *CallNonvirtualCharMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jchar (JNICALL *CallNonvirtualCharMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jshort (JNICALL *CallNonvirtualShortMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jshort (JNICALL *CallNonvirtualShortMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jshort (JNICALL *CallNonvirtualShortMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jint (JNICALL *CallNonvirtualIntMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jint (JNICALL *CallNonvirtualIntMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jint (JNICALL *CallNonvirtualIntMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jlong (JNICALL *CallNonvirtualLongMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jlong (JNICALL *CallNonvirtualLongMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jlong (JNICALL *CallNonvirtualLongMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jfloat (JNICALL *CallNonvirtualFloatMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jfloat (JNICALL *CallNonvirtualFloatMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jfloat (JNICALL *CallNonvirtualFloatMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- jdouble (JNICALL *CallNonvirtualDoubleMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- jdouble (JNICALL *CallNonvirtualDoubleMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- jdouble (JNICALL *CallNonvirtualDoubleMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue *args);\r
-\r
- void (JNICALL *CallNonvirtualVoidMethod)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
- void (JNICALL *CallNonvirtualVoidMethodV)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- va_list args);\r
- void (JNICALL *CallNonvirtualVoidMethodA)\r
- (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
- const jvalue * args);\r
-\r
- jfieldID (JNICALL *GetFieldID)\r
- (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
- jobject (JNICALL *GetObjectField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jboolean (JNICALL *GetBooleanField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jbyte (JNICALL *GetByteField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jchar (JNICALL *GetCharField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jshort (JNICALL *GetShortField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jint (JNICALL *GetIntField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jlong (JNICALL *GetLongField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jfloat (JNICALL *GetFloatField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
- jdouble (JNICALL *GetDoubleField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-\r
- void (JNICALL *SetObjectField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);\r
- void (JNICALL *SetBooleanField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);\r
- void (JNICALL *SetByteField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);\r
- void (JNICALL *SetCharField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);\r
- void (JNICALL *SetShortField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);\r
- void (JNICALL *SetIntField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);\r
- void (JNICALL *SetLongField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);\r
- void (JNICALL *SetFloatField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);\r
- void (JNICALL *SetDoubleField)\r
- (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);\r
-\r
- jmethodID (JNICALL *GetStaticMethodID)\r
- (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
- jobject (JNICALL *CallStaticObjectMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jobject (JNICALL *CallStaticObjectMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jobject (JNICALL *CallStaticObjectMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jboolean (JNICALL *CallStaticBooleanMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jboolean (JNICALL *CallStaticBooleanMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jboolean (JNICALL *CallStaticBooleanMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jbyte (JNICALL *CallStaticByteMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jbyte (JNICALL *CallStaticByteMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jbyte (JNICALL *CallStaticByteMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jchar (JNICALL *CallStaticCharMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jchar (JNICALL *CallStaticCharMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jchar (JNICALL *CallStaticCharMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jshort (JNICALL *CallStaticShortMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jshort (JNICALL *CallStaticShortMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jshort (JNICALL *CallStaticShortMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jint (JNICALL *CallStaticIntMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jint (JNICALL *CallStaticIntMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jint (JNICALL *CallStaticIntMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jlong (JNICALL *CallStaticLongMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jlong (JNICALL *CallStaticLongMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jlong (JNICALL *CallStaticLongMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jfloat (JNICALL *CallStaticFloatMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jfloat (JNICALL *CallStaticFloatMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jfloat (JNICALL *CallStaticFloatMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- jdouble (JNICALL *CallStaticDoubleMethod)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
- jdouble (JNICALL *CallStaticDoubleMethodV)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
- jdouble (JNICALL *CallStaticDoubleMethodA)\r
- (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
- void (JNICALL *CallStaticVoidMethod)\r
- (JNIEnv *env, jclass cls, jmethodID methodID, ...);\r
- void (JNICALL *CallStaticVoidMethodV)\r
- (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);\r
- void (JNICALL *CallStaticVoidMethodA)\r
- (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);\r
-\r
- jfieldID (JNICALL *GetStaticFieldID)\r
- (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
- jobject (JNICALL *GetStaticObjectField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jboolean (JNICALL *GetStaticBooleanField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jbyte (JNICALL *GetStaticByteField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jchar (JNICALL *GetStaticCharField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jshort (JNICALL *GetStaticShortField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jint (JNICALL *GetStaticIntField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jlong (JNICALL *GetStaticLongField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jfloat (JNICALL *GetStaticFloatField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
- jdouble (JNICALL *GetStaticDoubleField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-\r
- void (JNICALL *SetStaticObjectField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);\r
- void (JNICALL *SetStaticBooleanField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);\r
- void (JNICALL *SetStaticByteField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);\r
- void (JNICALL *SetStaticCharField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);\r
- void (JNICALL *SetStaticShortField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);\r
- void (JNICALL *SetStaticIntField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);\r
- void (JNICALL *SetStaticLongField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);\r
- void (JNICALL *SetStaticFloatField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);\r
- void (JNICALL *SetStaticDoubleField)\r
- (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);\r
-\r
- jstring (JNICALL *NewString)\r
- (JNIEnv *env, const jchar *unicode, jsize len);\r
- jsize (JNICALL *GetStringLength)\r
- (JNIEnv *env, jstring str);\r
- const jchar *(JNICALL *GetStringChars)\r
- (JNIEnv *env, jstring str, jboolean *isCopy);\r
- void (JNICALL *ReleaseStringChars)\r
- (JNIEnv *env, jstring str, const jchar *chars);\r
-\r
- jstring (JNICALL *NewStringUTF)\r
- (JNIEnv *env, const char *utf);\r
- jsize (JNICALL *GetStringUTFLength)\r
- (JNIEnv *env, jstring str);\r
- const char* (JNICALL *GetStringUTFChars)\r
- (JNIEnv *env, jstring str, jboolean *isCopy);\r
- void (JNICALL *ReleaseStringUTFChars)\r
- (JNIEnv *env, jstring str, const char* chars);\r
-\r
-\r
- jsize (JNICALL *GetArrayLength)\r
- (JNIEnv *env, jarray array);\r
-\r
- jobjectArray (JNICALL *NewObjectArray)\r
- (JNIEnv *env, jsize len, jclass clazz, jobject init);\r
- jobject (JNICALL *GetObjectArrayElement)\r
- (JNIEnv *env, jobjectArray array, jsize index);\r
- void (JNICALL *SetObjectArrayElement)\r
- (JNIEnv *env, jobjectArray array, jsize index, jobject val);\r
-\r
- jbooleanArray (JNICALL *NewBooleanArray)\r
- (JNIEnv *env, jsize len);\r
- jbyteArray (JNICALL *NewByteArray)\r
- (JNIEnv *env, jsize len);\r
- jcharArray (JNICALL *NewCharArray)\r
- (JNIEnv *env, jsize len);\r
- jshortArray (JNICALL *NewShortArray)\r
- (JNIEnv *env, jsize len);\r
- jintArray (JNICALL *NewIntArray)\r
- (JNIEnv *env, jsize len);\r
- jlongArray (JNICALL *NewLongArray)\r
- (JNIEnv *env, jsize len);\r
- jfloatArray (JNICALL *NewFloatArray)\r
- (JNIEnv *env, jsize len);\r
- jdoubleArray (JNICALL *NewDoubleArray)\r
- (JNIEnv *env, jsize len);\r
-\r
- jboolean * (JNICALL *GetBooleanArrayElements)\r
- (JNIEnv *env, jbooleanArray array, jboolean *isCopy);\r
- jbyte * (JNICALL *GetByteArrayElements)\r
- (JNIEnv *env, jbyteArray array, jboolean *isCopy);\r
- jchar * (JNICALL *GetCharArrayElements)\r
- (JNIEnv *env, jcharArray array, jboolean *isCopy);\r
- jshort * (JNICALL *GetShortArrayElements)\r
- (JNIEnv *env, jshortArray array, jboolean *isCopy);\r
- jint * (JNICALL *GetIntArrayElements)\r
- (JNIEnv *env, jintArray array, jboolean *isCopy);\r
- jlong * (JNICALL *GetLongArrayElements)\r
- (JNIEnv *env, jlongArray array, jboolean *isCopy);\r
- jfloat * (JNICALL *GetFloatArrayElements)\r
- (JNIEnv *env, jfloatArray array, jboolean *isCopy);\r
- jdouble * (JNICALL *GetDoubleArrayElements)\r
- (JNIEnv *env, jdoubleArray array, jboolean *isCopy);\r
-\r
- void (JNICALL *ReleaseBooleanArrayElements)\r
- (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);\r
- void (JNICALL *ReleaseByteArrayElements)\r
- (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);\r
- void (JNICALL *ReleaseCharArrayElements)\r
- (JNIEnv *env, jcharArray array, jchar *elems, jint mode);\r
- void (JNICALL *ReleaseShortArrayElements)\r
- (JNIEnv *env, jshortArray array, jshort *elems, jint mode);\r
- void (JNICALL *ReleaseIntArrayElements)\r
- (JNIEnv *env, jintArray array, jint *elems, jint mode);\r
- void (JNICALL *ReleaseLongArrayElements)\r
- (JNIEnv *env, jlongArray array, jlong *elems, jint mode);\r
- void (JNICALL *ReleaseFloatArrayElements)\r
- (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);\r
- void (JNICALL *ReleaseDoubleArrayElements)\r
- (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);\r
-\r
- void (JNICALL *GetBooleanArrayRegion)\r
- (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);\r
- void (JNICALL *GetByteArrayRegion)\r
- (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);\r
- void (JNICALL *GetCharArrayRegion)\r
- (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);\r
- void (JNICALL *GetShortArrayRegion)\r
- (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);\r
- void (JNICALL *GetIntArrayRegion)\r
- (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);\r
- void (JNICALL *GetLongArrayRegion)\r
- (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);\r
- void (JNICALL *GetFloatArrayRegion)\r
- (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);\r
- void (JNICALL *GetDoubleArrayRegion)\r
- (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);\r
-\r
- void (JNICALL *SetBooleanArrayRegion)\r
- (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);\r
- void (JNICALL *SetByteArrayRegion)\r
- (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);\r
- void (JNICALL *SetCharArrayRegion)\r
- (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);\r
- void (JNICALL *SetShortArrayRegion)\r
- (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);\r
- void (JNICALL *SetIntArrayRegion)\r
- (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);\r
- void (JNICALL *SetLongArrayRegion)\r
- (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);\r
- void (JNICALL *SetFloatArrayRegion)\r
- (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);\r
- void (JNICALL *SetDoubleArrayRegion)\r
- (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);\r
-\r
- jint (JNICALL *RegisterNatives)\r
- (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,\r
- jint nMethods);\r
- jint (JNICALL *UnregisterNatives)\r
- (JNIEnv *env, jclass clazz);\r
-\r
- jint (JNICALL *MonitorEnter)\r
- (JNIEnv *env, jobject obj);\r
- jint (JNICALL *MonitorExit)\r
- (JNIEnv *env, jobject obj);\r
-\r
- jint (JNICALL *GetJavaVM)\r
- (JNIEnv *env, JavaVM **vm);\r
-\r
- void (JNICALL *GetStringRegion)\r
- (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);\r
- void (JNICALL *GetStringUTFRegion)\r
- (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);\r
-\r
- void * (JNICALL *GetPrimitiveArrayCritical)\r
- (JNIEnv *env, jarray array, jboolean *isCopy);\r
- void (JNICALL *ReleasePrimitiveArrayCritical)\r
- (JNIEnv *env, jarray array, void *carray, jint mode);\r
-\r
- const jchar * (JNICALL *GetStringCritical)\r
- (JNIEnv *env, jstring string, jboolean *isCopy);\r
- void (JNICALL *ReleaseStringCritical)\r
- (JNIEnv *env, jstring string, const jchar *cstring);\r
-\r
- jweak (JNICALL *NewWeakGlobalRef)\r
- (JNIEnv *env, jobject obj);\r
- void (JNICALL *DeleteWeakGlobalRef)\r
- (JNIEnv *env, jweak ref);\r
-\r
- jboolean (JNICALL *ExceptionCheck)\r
- (JNIEnv *env);\r
-\r
- jobject (JNICALL *NewDirectByteBuffer)\r
- (JNIEnv* env, void* address, jlong capacity);\r
- void* (JNICALL *GetDirectBufferAddress)\r
- (JNIEnv* env, jobject buf);\r
- jlong (JNICALL *GetDirectBufferCapacity)\r
- (JNIEnv* env, jobject buf);\r
-};\r
-\r
-/*\r
- * We use inlined functions for C++ so that programmers can write:\r
- *\r
- * env->FindClass("java/lang/String")\r
- *\r
- * in C++ rather than:\r
- *\r
- * (*env)->FindClass(env, "java/lang/String")\r
- *\r
- * in C.\r
- */\r
-\r
-struct JNIEnv_ {\r
- const struct JNINativeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
- jint GetVersion() {\r
- return functions->GetVersion(this);\r
- }\r
- jclass DefineClass(const char *name, jobject loader, const jbyte *buf,\r
- jsize len) {\r
- return functions->DefineClass(this, name, loader, buf, len);\r
- }\r
- jclass FindClass(const char *name) {\r
- return functions->FindClass(this, name);\r
- }\r
- jmethodID FromReflectedMethod(jobject method) {\r
- return functions->FromReflectedMethod(this,method);\r
- }\r
- jfieldID FromReflectedField(jobject field) {\r
- return functions->FromReflectedField(this,field);\r
- }\r
-\r
- jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {\r
- return functions->ToReflectedMethod(this, cls, methodID, isStatic);\r
- }\r
-\r
- jclass GetSuperclass(jclass sub) {\r
- return functions->GetSuperclass(this, sub);\r
- }\r
- jboolean IsAssignableFrom(jclass sub, jclass sup) {\r
- return functions->IsAssignableFrom(this, sub, sup);\r
- }\r
-\r
- jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {\r
- return functions->ToReflectedField(this,cls,fieldID,isStatic);\r
- }\r
-\r
- jint Throw(jthrowable obj) {\r
- return functions->Throw(this, obj);\r
- }\r
- jint ThrowNew(jclass clazz, const char *msg) {\r
- return functions->ThrowNew(this, clazz, msg);\r
- }\r
- jthrowable ExceptionOccurred() {\r
- return functions->ExceptionOccurred(this);\r
- }\r
- void ExceptionDescribe() {\r
- functions->ExceptionDescribe(this);\r
- }\r
- void ExceptionClear() {\r
- functions->ExceptionClear(this);\r
- }\r
- void FatalError(const char *msg) {\r
- functions->FatalError(this, msg);\r
- }\r
-\r
- jint PushLocalFrame(jint capacity) {\r
- return functions->PushLocalFrame(this,capacity);\r
- }\r
- jobject PopLocalFrame(jobject result) {\r
- return functions->PopLocalFrame(this,result);\r
- }\r
-\r
- jobject NewGlobalRef(jobject lobj) {\r
- return functions->NewGlobalRef(this,lobj);\r
- }\r
- void DeleteGlobalRef(jobject gref) {\r
- functions->DeleteGlobalRef(this,gref);\r
- }\r
- void DeleteLocalRef(jobject obj) {\r
- functions->DeleteLocalRef(this, obj);\r
- }\r
-\r
- jboolean IsSameObject(jobject obj1, jobject obj2) {\r
- return functions->IsSameObject(this,obj1,obj2);\r
- }\r
-\r
- jobject NewLocalRef(jobject ref) {\r
- return functions->NewLocalRef(this,ref);\r
- }\r
- jint EnsureLocalCapacity(jint capacity) {\r
- return functions->EnsureLocalCapacity(this,capacity);\r
- }\r
-\r
- jobject AllocObject(jclass clazz) {\r
- return functions->AllocObject(this,clazz);\r
- }\r
- jobject NewObject(jclass clazz, jmethodID methodID, ...) {\r
- va_list args;\r
- jobject result;\r
- va_start(args, methodID);\r
- result = functions->NewObjectV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jobject NewObjectV(jclass clazz, jmethodID methodID,\r
- va_list args) {\r
- return functions->NewObjectV(this,clazz,methodID,args);\r
- }\r
- jobject NewObjectA(jclass clazz, jmethodID methodID,\r
- const jvalue *args) {\r
- return functions->NewObjectA(this,clazz,methodID,args);\r
- }\r
-\r
- jclass GetObjectClass(jobject obj) {\r
- return functions->GetObjectClass(this,obj);\r
- }\r
- jboolean IsInstanceOf(jobject obj, jclass clazz) {\r
- return functions->IsInstanceOf(this,obj,clazz);\r
- }\r
-\r
- jmethodID GetMethodID(jclass clazz, const char *name,\r
- const char *sig) {\r
- return functions->GetMethodID(this,clazz,name,sig);\r
- }\r
-\r
- jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jobject result;\r
- va_start(args,methodID);\r
- result = functions->CallObjectMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jobject CallObjectMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallObjectMethodV(this,obj,methodID,args);\r
- }\r
- jobject CallObjectMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallObjectMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jboolean CallBooleanMethod(jobject obj,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jboolean result;\r
- va_start(args,methodID);\r
- result = functions->CallBooleanMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallBooleanMethodV(this,obj,methodID,args);\r
- }\r
- jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallBooleanMethodA(this,obj,methodID, args);\r
- }\r
-\r
- jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jbyte result;\r
- va_start(args,methodID);\r
- result = functions->CallByteMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jbyte CallByteMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallByteMethodV(this,obj,methodID,args);\r
- }\r
- jbyte CallByteMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallByteMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jchar result;\r
- va_start(args,methodID);\r
- result = functions->CallCharMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jchar CallCharMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallCharMethodV(this,obj,methodID,args);\r
- }\r
- jchar CallCharMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallCharMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jshort result;\r
- va_start(args,methodID);\r
- result = functions->CallShortMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jshort CallShortMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallShortMethodV(this,obj,methodID,args);\r
- }\r
- jshort CallShortMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallShortMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jint CallIntMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jint result;\r
- va_start(args,methodID);\r
- result = functions->CallIntMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jint CallIntMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallIntMethodV(this,obj,methodID,args);\r
- }\r
- jint CallIntMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallIntMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jlong result;\r
- va_start(args,methodID);\r
- result = functions->CallLongMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jlong CallLongMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallLongMethodV(this,obj,methodID,args);\r
- }\r
- jlong CallLongMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallLongMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jfloat result;\r
- va_start(args,methodID);\r
- result = functions->CallFloatMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jfloat CallFloatMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallFloatMethodV(this,obj,methodID,args);\r
- }\r
- jfloat CallFloatMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallFloatMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- jdouble result;\r
- va_start(args,methodID);\r
- result = functions->CallDoubleMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallDoubleMethodV(this,obj,methodID,args);\r
- }\r
- jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallDoubleMethodA(this,obj,methodID,args);\r
- }\r
-\r
- void CallVoidMethod(jobject obj, jmethodID methodID, ...) {\r
- va_list args;\r
- va_start(args,methodID);\r
- functions->CallVoidMethodV(this,obj,methodID,args);\r
- va_end(args);\r
- }\r
- void CallVoidMethodV(jobject obj, jmethodID methodID,\r
- va_list args) {\r
- functions->CallVoidMethodV(this,obj,methodID,args);\r
- }\r
- void CallVoidMethodA(jobject obj, jmethodID methodID,\r
- const jvalue * args) {\r
- functions->CallVoidMethodA(this,obj,methodID,args);\r
- }\r
-\r
- jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jobject result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualObjectMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualObjectMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jboolean result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,\r
- methodID, args);\r
- }\r
-\r
- jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jbyte result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualByteMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualByteMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualByteMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jchar result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualCharMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualCharMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualCharMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jshort result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualShortMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualShortMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualShortMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jint CallNonvirtualIntMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jint result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualIntMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualIntMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualIntMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jlong result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualLongMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallNonvirtualLongMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID, const jvalue * args) {\r
- return functions->CallNonvirtualLongMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jfloat result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- va_list args) {\r
- return functions->CallNonvirtualFloatMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallNonvirtualFloatMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jdouble result;\r
- va_start(args,methodID);\r
- result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,\r
- methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- va_list args) {\r
- return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,\r
- methodID,args);\r
- }\r
- jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- const jvalue * args) {\r
- return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,\r
- methodID,args);\r
- }\r
-\r
- void CallNonvirtualVoidMethod(jobject obj, jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- va_start(args,methodID);\r
- functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);\r
- va_end(args);\r
- }\r
- void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- va_list args) {\r
- functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);\r
- }\r
- void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,\r
- jmethodID methodID,\r
- const jvalue * args) {\r
- functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);\r
- }\r
-\r
- jfieldID GetFieldID(jclass clazz, const char *name,\r
- const char *sig) {\r
- return functions->GetFieldID(this,clazz,name,sig);\r
- }\r
-\r
- jobject GetObjectField(jobject obj, jfieldID fieldID) {\r
- return functions->GetObjectField(this,obj,fieldID);\r
- }\r
- jboolean GetBooleanField(jobject obj, jfieldID fieldID) {\r
- return functions->GetBooleanField(this,obj,fieldID);\r
- }\r
- jbyte GetByteField(jobject obj, jfieldID fieldID) {\r
- return functions->GetByteField(this,obj,fieldID);\r
- }\r
- jchar GetCharField(jobject obj, jfieldID fieldID) {\r
- return functions->GetCharField(this,obj,fieldID);\r
- }\r
- jshort GetShortField(jobject obj, jfieldID fieldID) {\r
- return functions->GetShortField(this,obj,fieldID);\r
- }\r
- jint GetIntField(jobject obj, jfieldID fieldID) {\r
- return functions->GetIntField(this,obj,fieldID);\r
- }\r
- jlong GetLongField(jobject obj, jfieldID fieldID) {\r
- return functions->GetLongField(this,obj,fieldID);\r
- }\r
- jfloat GetFloatField(jobject obj, jfieldID fieldID) {\r
- return functions->GetFloatField(this,obj,fieldID);\r
- }\r
- jdouble GetDoubleField(jobject obj, jfieldID fieldID) {\r
- return functions->GetDoubleField(this,obj,fieldID);\r
- }\r
-\r
- void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {\r
- functions->SetObjectField(this,obj,fieldID,val);\r
- }\r
- void SetBooleanField(jobject obj, jfieldID fieldID,\r
- jboolean val) {\r
- functions->SetBooleanField(this,obj,fieldID,val);\r
- }\r
- void SetByteField(jobject obj, jfieldID fieldID,\r
- jbyte val) {\r
- functions->SetByteField(this,obj,fieldID,val);\r
- }\r
- void SetCharField(jobject obj, jfieldID fieldID,\r
- jchar val) {\r
- functions->SetCharField(this,obj,fieldID,val);\r
- }\r
- void SetShortField(jobject obj, jfieldID fieldID,\r
- jshort val) {\r
- functions->SetShortField(this,obj,fieldID,val);\r
- }\r
- void SetIntField(jobject obj, jfieldID fieldID,\r
- jint val) {\r
- functions->SetIntField(this,obj,fieldID,val);\r
- }\r
- void SetLongField(jobject obj, jfieldID fieldID,\r
- jlong val) {\r
- functions->SetLongField(this,obj,fieldID,val);\r
- }\r
- void SetFloatField(jobject obj, jfieldID fieldID,\r
- jfloat val) {\r
- functions->SetFloatField(this,obj,fieldID,val);\r
- }\r
- void SetDoubleField(jobject obj, jfieldID fieldID,\r
- jdouble val) {\r
- functions->SetDoubleField(this,obj,fieldID,val);\r
- }\r
-\r
- jmethodID GetStaticMethodID(jclass clazz, const char *name,\r
- const char *sig) {\r
- return functions->GetStaticMethodID(this,clazz,name,sig);\r
- }\r
-\r
- jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,\r
- ...) {\r
- va_list args;\r
- jobject result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,\r
- va_list args) {\r
- return functions->CallStaticObjectMethodV(this,clazz,methodID,args);\r
- }\r
- jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,\r
- const jvalue *args) {\r
- return functions->CallStaticObjectMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jboolean CallStaticBooleanMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jboolean result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jboolean CallStaticBooleanMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);\r
- }\r
- jboolean CallStaticBooleanMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jbyte CallStaticByteMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jbyte result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticByteMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jbyte CallStaticByteMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticByteMethodV(this,clazz,methodID,args);\r
- }\r
- jbyte CallStaticByteMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticByteMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jchar CallStaticCharMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jchar result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticCharMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jchar CallStaticCharMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticCharMethodV(this,clazz,methodID,args);\r
- }\r
- jchar CallStaticCharMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticCharMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jshort CallStaticShortMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jshort result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticShortMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jshort CallStaticShortMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticShortMethodV(this,clazz,methodID,args);\r
- }\r
- jshort CallStaticShortMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticShortMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jint CallStaticIntMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jint result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticIntMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jint CallStaticIntMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticIntMethodV(this,clazz,methodID,args);\r
- }\r
- jint CallStaticIntMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticIntMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jlong CallStaticLongMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jlong result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticLongMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jlong CallStaticLongMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticLongMethodV(this,clazz,methodID,args);\r
- }\r
- jlong CallStaticLongMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticLongMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jfloat CallStaticFloatMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jfloat result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jfloat CallStaticFloatMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticFloatMethodV(this,clazz,methodID,args);\r
- }\r
- jfloat CallStaticFloatMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticFloatMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- jdouble CallStaticDoubleMethod(jclass clazz,\r
- jmethodID methodID, ...) {\r
- va_list args;\r
- jdouble result;\r
- va_start(args,methodID);\r
- result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);\r
- va_end(args);\r
- return result;\r
- }\r
- jdouble CallStaticDoubleMethodV(jclass clazz,\r
- jmethodID methodID, va_list args) {\r
- return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);\r
- }\r
- jdouble CallStaticDoubleMethodA(jclass clazz,\r
- jmethodID methodID, const jvalue *args) {\r
- return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);\r
- }\r
-\r
- void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {\r
- va_list args;\r
- va_start(args,methodID);\r
- functions->CallStaticVoidMethodV(this,cls,methodID,args);\r
- va_end(args);\r
- }\r
- void CallStaticVoidMethodV(jclass cls, jmethodID methodID,\r
- va_list args) {\r
- functions->CallStaticVoidMethodV(this,cls,methodID,args);\r
- }\r
- void CallStaticVoidMethodA(jclass cls, jmethodID methodID,\r
- const jvalue * args) {\r
- functions->CallStaticVoidMethodA(this,cls,methodID,args);\r
- }\r
-\r
- jfieldID GetStaticFieldID(jclass clazz, const char *name,\r
- const char *sig) {\r
- return functions->GetStaticFieldID(this,clazz,name,sig);\r
- }\r
- jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticObjectField(this,clazz,fieldID);\r
- }\r
- jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticBooleanField(this,clazz,fieldID);\r
- }\r
- jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticByteField(this,clazz,fieldID);\r
- }\r
- jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticCharField(this,clazz,fieldID);\r
- }\r
- jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticShortField(this,clazz,fieldID);\r
- }\r
- jint GetStaticIntField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticIntField(this,clazz,fieldID);\r
- }\r
- jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticLongField(this,clazz,fieldID);\r
- }\r
- jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticFloatField(this,clazz,fieldID);\r
- }\r
- jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {\r
- return functions->GetStaticDoubleField(this,clazz,fieldID);\r
- }\r
-\r
- void SetStaticObjectField(jclass clazz, jfieldID fieldID,\r
- jobject value) {\r
- functions->SetStaticObjectField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticBooleanField(jclass clazz, jfieldID fieldID,\r
- jboolean value) {\r
- functions->SetStaticBooleanField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticByteField(jclass clazz, jfieldID fieldID,\r
- jbyte value) {\r
- functions->SetStaticByteField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticCharField(jclass clazz, jfieldID fieldID,\r
- jchar value) {\r
- functions->SetStaticCharField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticShortField(jclass clazz, jfieldID fieldID,\r
- jshort value) {\r
- functions->SetStaticShortField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticIntField(jclass clazz, jfieldID fieldID,\r
- jint value) {\r
- functions->SetStaticIntField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticLongField(jclass clazz, jfieldID fieldID,\r
- jlong value) {\r
- functions->SetStaticLongField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticFloatField(jclass clazz, jfieldID fieldID,\r
- jfloat value) {\r
- functions->SetStaticFloatField(this,clazz,fieldID,value);\r
- }\r
- void SetStaticDoubleField(jclass clazz, jfieldID fieldID,\r
- jdouble value) {\r
- functions->SetStaticDoubleField(this,clazz,fieldID,value);\r
- }\r
-\r
- jstring NewString(const jchar *unicode, jsize len) {\r
- return functions->NewString(this,unicode,len);\r
- }\r
- jsize GetStringLength(jstring str) {\r
- return functions->GetStringLength(this,str);\r
- }\r
- const jchar *GetStringChars(jstring str, jboolean *isCopy) {\r
- return functions->GetStringChars(this,str,isCopy);\r
- }\r
- void ReleaseStringChars(jstring str, const jchar *chars) {\r
- functions->ReleaseStringChars(this,str,chars);\r
- }\r
-\r
- jstring NewStringUTF(const char *utf) {\r
- return functions->NewStringUTF(this,utf);\r
- }\r
- jsize GetStringUTFLength(jstring str) {\r
- return functions->GetStringUTFLength(this,str);\r
- }\r
- const char* GetStringUTFChars(jstring str, jboolean *isCopy) {\r
- return functions->GetStringUTFChars(this,str,isCopy);\r
- }\r
- void ReleaseStringUTFChars(jstring str, const char* chars) {\r
- functions->ReleaseStringUTFChars(this,str,chars);\r
- }\r
-\r
- jsize GetArrayLength(jarray array) {\r
- return functions->GetArrayLength(this,array);\r
- }\r
-\r
- jobjectArray NewObjectArray(jsize len, jclass clazz,\r
- jobject init) {\r
- return functions->NewObjectArray(this,len,clazz,init);\r
- }\r
- jobject GetObjectArrayElement(jobjectArray array, jsize index) {\r
- return functions->GetObjectArrayElement(this,array,index);\r
- }\r
- void SetObjectArrayElement(jobjectArray array, jsize index,\r
- jobject val) {\r
- functions->SetObjectArrayElement(this,array,index,val);\r
- }\r
-\r
- jbooleanArray NewBooleanArray(jsize len) {\r
- return functions->NewBooleanArray(this,len);\r
- }\r
- jbyteArray NewByteArray(jsize len) {\r
- return functions->NewByteArray(this,len);\r
- }\r
- jcharArray NewCharArray(jsize len) {\r
- return functions->NewCharArray(this,len);\r
- }\r
- jshortArray NewShortArray(jsize len) {\r
- return functions->NewShortArray(this,len);\r
- }\r
- jintArray NewIntArray(jsize len) {\r
- return functions->NewIntArray(this,len);\r
- }\r
- jlongArray NewLongArray(jsize len) {\r
- return functions->NewLongArray(this,len);\r
- }\r
- jfloatArray NewFloatArray(jsize len) {\r
- return functions->NewFloatArray(this,len);\r
- }\r
- jdoubleArray NewDoubleArray(jsize len) {\r
- return functions->NewDoubleArray(this,len);\r
- }\r
-\r
- jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {\r
- return functions->GetBooleanArrayElements(this,array,isCopy);\r
- }\r
- jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {\r
- return functions->GetByteArrayElements(this,array,isCopy);\r
- }\r
- jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {\r
- return functions->GetCharArrayElements(this,array,isCopy);\r
- }\r
- jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {\r
- return functions->GetShortArrayElements(this,array,isCopy);\r
- }\r
- jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {\r
- return functions->GetIntArrayElements(this,array,isCopy);\r
- }\r
- jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {\r
- return functions->GetLongArrayElements(this,array,isCopy);\r
- }\r
- jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {\r
- return functions->GetFloatArrayElements(this,array,isCopy);\r
- }\r
- jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {\r
- return functions->GetDoubleArrayElements(this,array,isCopy);\r
- }\r
-\r
- void ReleaseBooleanArrayElements(jbooleanArray array,\r
- jboolean *elems,\r
- jint mode) {\r
- functions->ReleaseBooleanArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseByteArrayElements(jbyteArray array,\r
- jbyte *elems,\r
- jint mode) {\r
- functions->ReleaseByteArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseCharArrayElements(jcharArray array,\r
- jchar *elems,\r
- jint mode) {\r
- functions->ReleaseCharArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseShortArrayElements(jshortArray array,\r
- jshort *elems,\r
- jint mode) {\r
- functions->ReleaseShortArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseIntArrayElements(jintArray array,\r
- jint *elems,\r
- jint mode) {\r
- functions->ReleaseIntArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseLongArrayElements(jlongArray array,\r
- jlong *elems,\r
- jint mode) {\r
- functions->ReleaseLongArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseFloatArrayElements(jfloatArray array,\r
- jfloat *elems,\r
- jint mode) {\r
- functions->ReleaseFloatArrayElements(this,array,elems,mode);\r
- }\r
- void ReleaseDoubleArrayElements(jdoubleArray array,\r
- jdouble *elems,\r
- jint mode) {\r
- functions->ReleaseDoubleArrayElements(this,array,elems,mode);\r
- }\r
-\r
- void GetBooleanArrayRegion(jbooleanArray array,\r
- jsize start, jsize len, jboolean *buf) {\r
- functions->GetBooleanArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetByteArrayRegion(jbyteArray array,\r
- jsize start, jsize len, jbyte *buf) {\r
- functions->GetByteArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetCharArrayRegion(jcharArray array,\r
- jsize start, jsize len, jchar *buf) {\r
- functions->GetCharArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetShortArrayRegion(jshortArray array,\r
- jsize start, jsize len, jshort *buf) {\r
- functions->GetShortArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetIntArrayRegion(jintArray array,\r
- jsize start, jsize len, jint *buf) {\r
- functions->GetIntArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetLongArrayRegion(jlongArray array,\r
- jsize start, jsize len, jlong *buf) {\r
- functions->GetLongArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetFloatArrayRegion(jfloatArray array,\r
- jsize start, jsize len, jfloat *buf) {\r
- functions->GetFloatArrayRegion(this,array,start,len,buf);\r
- }\r
- void GetDoubleArrayRegion(jdoubleArray array,\r
- jsize start, jsize len, jdouble *buf) {\r
- functions->GetDoubleArrayRegion(this,array,start,len,buf);\r
- }\r
-\r
- void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,\r
- const jboolean *buf) {\r
- functions->SetBooleanArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,\r
- const jbyte *buf) {\r
- functions->SetByteArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetCharArrayRegion(jcharArray array, jsize start, jsize len,\r
- const jchar *buf) {\r
- functions->SetCharArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetShortArrayRegion(jshortArray array, jsize start, jsize len,\r
- const jshort *buf) {\r
- functions->SetShortArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetIntArrayRegion(jintArray array, jsize start, jsize len,\r
- const jint *buf) {\r
- functions->SetIntArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetLongArrayRegion(jlongArray array, jsize start, jsize len,\r
- const jlong *buf) {\r
- functions->SetLongArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,\r
- const jfloat *buf) {\r
- functions->SetFloatArrayRegion(this,array,start,len,buf);\r
- }\r
- void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,\r
- const jdouble *buf) {\r
- functions->SetDoubleArrayRegion(this,array,start,len,buf);\r
- }\r
-\r
- jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,\r
- jint nMethods) {\r
- return functions->RegisterNatives(this,clazz,methods,nMethods);\r
- }\r
- jint UnregisterNatives(jclass clazz) {\r
- return functions->UnregisterNatives(this,clazz);\r
- }\r
-\r
- jint MonitorEnter(jobject obj) {\r
- return functions->MonitorEnter(this,obj);\r
- }\r
- jint MonitorExit(jobject obj) {\r
- return functions->MonitorExit(this,obj);\r
- }\r
-\r
- jint GetJavaVM(JavaVM **vm) {\r
- return functions->GetJavaVM(this,vm);\r
- }\r
-\r
- void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {\r
- functions->GetStringRegion(this,str,start,len,buf);\r
- }\r
- void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {\r
- functions->GetStringUTFRegion(this,str,start,len,buf);\r
- }\r
-\r
- void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {\r
- return functions->GetPrimitiveArrayCritical(this,array,isCopy);\r
- }\r
- void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {\r
- functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);\r
- }\r
-\r
- const jchar * GetStringCritical(jstring string, jboolean *isCopy) {\r
- return functions->GetStringCritical(this,string,isCopy);\r
- }\r
- void ReleaseStringCritical(jstring string, const jchar *cstring) {\r
- functions->ReleaseStringCritical(this,string,cstring);\r
- }\r
-\r
- jweak NewWeakGlobalRef(jobject obj) {\r
- return functions->NewWeakGlobalRef(this,obj);\r
- }\r
- void DeleteWeakGlobalRef(jweak ref) {\r
- functions->DeleteWeakGlobalRef(this,ref);\r
- }\r
-\r
- jboolean ExceptionCheck() {\r
- return functions->ExceptionCheck(this);\r
- }\r
-\r
- jobject NewDirectByteBuffer(void* address, jlong capacity) {\r
- return functions->NewDirectByteBuffer(this, address, capacity);\r
- }\r
- void* GetDirectBufferAddress(jobject buf) {\r
- return functions->GetDirectBufferAddress(this, buf);\r
- }\r
- jlong GetDirectBufferCapacity(jobject buf) {\r
- return functions->GetDirectBufferCapacity(this, buf);\r
- }\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-typedef struct JavaVMOption {\r
- char *optionString;\r
- void *extraInfo;\r
-} JavaVMOption;\r
-\r
-typedef struct JavaVMInitArgs {\r
- jint version;\r
-\r
- jint nOptions;\r
- JavaVMOption *options;\r
- jboolean ignoreUnrecognized;\r
-} JavaVMInitArgs;\r
-\r
-typedef struct JavaVMAttachArgs {\r
- jint version;\r
-\r
- char *name;\r
- jobject group;\r
-} JavaVMAttachArgs;\r
-\r
-/* These structures will be VM-specific. */\r
-\r
-typedef struct JDK1_1InitArgs {\r
- jint version;\r
-\r
- char **properties;\r
- jint checkSource;\r
- jint nativeStackSize;\r
- jint javaStackSize;\r
- jint minHeapSize;\r
- jint maxHeapSize;\r
- jint verifyMode;\r
- char *classpath;\r
-\r
- jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);\r
- void (JNICALL *exit)(jint code);\r
- void (JNICALL *abort)(void);\r
-\r
- jint enableClassGC;\r
- jint enableVerboseGC;\r
- jint disableAsyncGC;\r
- jint verbose;\r
- jboolean debugging;\r
- jint debugPort;\r
-} JDK1_1InitArgs;\r
-\r
-typedef struct JDK1_1AttachArgs {\r
- void * __padding; /* C compilers don't allow empty structures. */\r
-} JDK1_1AttachArgs;\r
-\r
-#define JDK1_2\r
-#define JDK1_4\r
-\r
-/* End VM-specific. */\r
-\r
-struct JNIInvokeInterface_ {\r
- void *reserved0;\r
- void *reserved1;\r
- void *reserved2;\r
-\r
- jint (JNICALL *DestroyJavaVM)(JavaVM *vm);\r
-\r
- jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);\r
-\r
- jint (JNICALL *DetachCurrentThread)(JavaVM *vm);\r
-\r
- jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);\r
-\r
- jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);\r
-};\r
-\r
-struct JavaVM_ {\r
- const struct JNIInvokeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
- jint DestroyJavaVM() {\r
- return functions->DestroyJavaVM(this);\r
- }\r
- jint AttachCurrentThread(void **penv, void *args) {\r
- return functions->AttachCurrentThread(this, penv, args);\r
- }\r
- jint DetachCurrentThread() {\r
- return functions->DetachCurrentThread(this);\r
- }\r
-\r
- jint GetEnv(void **penv, jint version) {\r
- return functions->GetEnv(this, penv, version);\r
- }\r
- jint AttachCurrentThreadAsDaemon(void **penv, void *args) {\r
- return functions->AttachCurrentThreadAsDaemon(this, penv, args);\r
- }\r
-#endif\r
-};\r
-\r
-#ifdef _JNI_IMPLEMENTATION_\r
-#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT\r
-#else\r
-#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT\r
-#endif\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_GetDefaultJavaVMInitArgs(void *args);\r
-\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);\r
-\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);\r
-\r
-/* Defined by native libraries. */\r
-JNIEXPORT jint JNICALL\r
-JNI_OnLoad(JavaVM *vm, void *reserved);\r
-\r
-JNIEXPORT void JNICALL\r
-JNI_OnUnload(JavaVM *vm, void *reserved);\r
-\r
-#define JNI_VERSION_1_1 0x00010001\r
-#define JNI_VERSION_1_2 0x00010002\r
-#define JNI_VERSION_1_4 0x00010004\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVASOFT_JNI_H_ */\r
+++ /dev/null
-/*\r
- * @(#)jvmdi.h 1.48 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- * Java Virtual Machine Debug Interface\r
- *\r
- * Defines debugging functionality that a VM should provide. \r
- *\r
- * Should not overlap functionality in jni.h\r
- */\r
-\r
-#ifndef _JAVASOFT_JVMDI_H_\r
-#define _JAVASOFT_JVMDI_H_\r
-\r
-#include "jni.h"\r
-\r
-#define JVMDI_VERSION_1 0x20010000\r
-#define JVMDI_VERSION_1_1 0x20010001\r
-#define JVMDI_VERSION_1_2 0x20010002\r
-#define JVMDI_VERSION_1_3 0x20010003\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-typedef jobject jthread;\r
-\r
-typedef jobject jthreadGroup;\r
-\r
-struct _jframeID;\r
-typedef struct _jframeID *jframeID;\r
-\r
- /* specifies program location "pc" - often byte code index */\r
-typedef jlong jlocation;\r
-\r
- /* The jmethodID for methods that have been replaced */\r
- /* via RedefineClasses - used when the implementation */\r
- /* does not wish to retain replaced jmethodIDs */\r
-#define OBSOLETE_METHOD_ID ((jmethodID)(NULL))\r
-\r
- /*\r
- * Errors\r
- */\r
-\r
-typedef jint jvmdiError;\r
-\r
- /* no error */\r
-#define JVMDI_ERROR_NONE ((jvmdiError)0)\r
-\r
- /*\r
- * Errors on thread operations\r
- */\r
-\r
- /* invalid thread */\r
-#define JVMDI_ERROR_INVALID_THREAD ((jvmdiError)10)\r
- /* invalid thread group */\r
-#define JVMDI_ERROR_INVALID_THREAD_GROUP ((jvmdiError)11)\r
- /* invalid thread priority */\r
-#define JVMDI_ERROR_INVALID_PRIORITY ((jvmdiError)12)\r
- /* thread not suspended */\r
-#define JVMDI_ERROR_THREAD_NOT_SUSPENDED ((jvmdiError)13)\r
- /* thread already suspended */\r
-#define JVMDI_ERROR_THREAD_SUSPENDED ((jvmdiError)14)\r
-\r
- /* \r
- * Errors on object and class operations\r
- */\r
-\r
- /* invalid object (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_OBJECT ((jvmdiError)20)\r
- /* invalid class (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_CLASS ((jvmdiError)21)\r
- /* class not prepared */\r
-#define JVMDI_ERROR_CLASS_NOT_PREPARED ((jvmdiError)22)\r
- /* invalid methodID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_METHODID ((jvmdiError)23)\r
- /* invalid location */\r
-#define JVMDI_ERROR_INVALID_LOCATION ((jvmdiError)24)\r
- /* invalid fieldID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_FIELDID ((jvmdiError)25)\r
-\r
- /*\r
- * Errors on frame operations\r
- */\r
-\r
- /* invalid frameID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_FRAMEID ((jvmdiError)30)\r
- /* there are no more frames on the stack */\r
-#define JVMDI_ERROR_NO_MORE_FRAMES ((jvmdiError)31)\r
- /* operation cannot be performed on this frame */\r
-#define JVMDI_ERROR_OPAQUE_FRAME ((jvmdiError)32)\r
- /* operation can only be performed on current frame */\r
-#define JVMDI_ERROR_NOT_CURRENT_FRAME ((jvmdiError)33)\r
- /* type mismatch (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_TYPE_MISMATCH ((jvmdiError)34)\r
- /* invalid slot */\r
-#define JVMDI_ERROR_INVALID_SLOT ((jvmdiError)35)\r
-\r
- /*\r
- * Errors on set/clear/find operations\r
- */\r
-\r
- /* item already present */\r
-#define JVMDI_ERROR_DUPLICATE ((jvmdiError)40)\r
- /* item not found */\r
-#define JVMDI_ERROR_NOT_FOUND ((jvmdiError)41)\r
-\r
- /*\r
- * Errors on monitor operations\r
- */\r
-\r
- /* invalid monitor */\r
-#define JVMDI_ERROR_INVALID_MONITOR ((jvmdiError)50)\r
- /* wait, notify, notify all tried without entering monitor */\r
-#define JVMDI_ERROR_NOT_MONITOR_OWNER ((jvmdiError)51)\r
- /* waiting thread interrupted */\r
-#define JVMDI_ERROR_INTERRUPT ((jvmdiError)52)\r
- \r
- /*\r
- * Class redefinition / operand stack errors\r
- */\r
-\r
- /* The equivalent of ClassFormatError */\r
-#define JVMDI_ERROR_INVALID_CLASS_FORMAT ((jvmdiError)60)\r
- /* The equivalent of ClassCircularityError */\r
-#define JVMDI_ERROR_CIRCULAR_CLASS_DEFINITION ((jvmdiError)61)\r
- /* The class bytes fail verification */\r
-#define JVMDI_ERROR_FAILS_VERIFICATION ((jvmdiError)62)\r
- /* The new class version adds new methods */\r
- /* and can_add_method is false */\r
-#define JVMDI_ERROR_ADD_METHOD_NOT_IMPLEMENTED ((jvmdiError)63)\r
- /* The new class version changes fields */ \r
- /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_SCHEMA_CHANGE_NOT_IMPLEMENTED ((jvmdiError)64)\r
- /* bci/operand stack/local var combination is not verifiably */\r
- /* type safe */\r
-#define JVMDI_ERROR_INVALID_TYPESTATE ((jvmdiError)65)\r
- /* A direct superclass is different for the new class */\r
- /* version, or the set of directly implemented */\r
- /* interfaces is different */\r
- /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_HIERARCHY_CHANGE_NOT_IMPLEMENTED ((jvmdiError)66)\r
- /* The new class version does not declare a method */\r
- /* declared in the old class version */\r
- /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_DELETE_METHOD_NOT_IMPLEMENTED ((jvmdiError)67)\r
- /* A class file has a version number not supported */\r
- /* by this VM. */\r
-#define JVMDI_ERROR_UNSUPPORTED_VERSION ((jvmdiError)68)\r
- /* The class name defined in the new class file is */\r
- /* different from the name in the old class object */\r
-#define JVMDI_ERROR_NAMES_DONT_MATCH ((jvmdiError)69)\r
- /* The new class version has different modifiers and */\r
- /* can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED ((jvmdiError)70)\r
- /* A method in the new class version has different modifiers */\r
- /* than its counterpart in the old class version */\r
- /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED ((jvmdiError)71)\r
-\r
- /*\r
- * Miscellaneous errors\r
- */\r
-\r
- /* Not yet implemented */\r
-#define JVMDI_ERROR_NOT_IMPLEMENTED ((jvmdiError)99)\r
- /* null pointer */\r
-#define JVMDI_ERROR_NULL_POINTER ((jvmdiError)100)\r
- /* information is absent */\r
-#define JVMDI_ERROR_ABSENT_INFORMATION ((jvmdiError)101)\r
- /* invalid event type */\r
-#define JVMDI_ERROR_INVALID_EVENT_TYPE ((jvmdiError)102)\r
- /* invalid argument */\r
-#define JVMDI_ERROR_ILLEGAL_ARGUMENT ((jvmdiError)103)\r
-\r
- /*\r
- * Universal errors. These errors may be returned by\r
- * any JVMDI function, not just the ones for which they are listed\r
- * below.\r
- */\r
-\r
- /* no more memory available for allocation */\r
-#define JVMDI_ERROR_OUT_OF_MEMORY ((jvmdiError)110)\r
- /* debugging has not been enabled in this VM */\r
-#define JVMDI_ERROR_ACCESS_DENIED ((jvmdiError)111)\r
- /* VM is dead (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_VM_DEAD ((jvmdiError)112)\r
- /* internal error */\r
-#define JVMDI_ERROR_INTERNAL ((jvmdiError)113)\r
- /* Thread calling JVMDI function not attached to VM */\r
-#define JVMDI_ERROR_UNATTACHED_THREAD ((jvmdiError)115)\r
-\r
-\r
- /*\r
- * Threads\r
- */\r
-\r
- /* Thread status is unknown */\r
-#define JVMDI_THREAD_STATUS_UNKNOWN ((jint)-1)\r
- /* Thread is waiting to die */\r
-#define JVMDI_THREAD_STATUS_ZOMBIE ((jint)0)\r
- /* Thread is runnable */\r
-#define JVMDI_THREAD_STATUS_RUNNING ((jint)1)\r
- /* Thread is sleeping - Thread.sleep() or JVM_Sleep() was called */\r
-#define JVMDI_THREAD_STATUS_SLEEPING ((jint)2)\r
- /* Thread is waiting on a java monitor */\r
-#define JVMDI_THREAD_STATUS_MONITOR ((jint)3)\r
- /* Thread is waiting - Thread.wait() or JVM_MonitorWait() was called */\r
-#define JVMDI_THREAD_STATUS_WAIT ((jint)4)\r
-\r
- /* Thread is suspended - Thread.suspend(), JVM_Suspend() or\r
- * JVMDI_Suspend was called */\r
-#define JVMDI_SUSPEND_STATUS_SUSPENDED ((jint)0x1)\r
- /* Thread is at a breakpoint */\r
-#define JVMDI_SUSPEND_STATUS_BREAK ((jint)0x2)\r
-\r
-\r
- /* Thread priority constants */\r
-#define JVMDI_THREAD_MIN_PRIORITY ((jint)1)\r
-#define JVMDI_THREAD_NORM_PRIORITY ((jint)5)\r
-#define JVMDI_THREAD_MAX_PRIORITY ((jint)10)\r
-\r
-typedef struct {\r
- char *name;\r
- jint priority;\r
- jboolean is_daemon;\r
- jthreadGroup thread_group;\r
- jobject context_class_loader;\r
-} JVMDI_thread_info;\r
-\r
-typedef struct {\r
- jthreadGroup parent;\r
- char *name;\r
- jint max_priority;\r
- jboolean is_daemon;\r
-} JVMDI_thread_group_info;\r
-\r
-#define JVMDI_DISABLE ((jint) 0)\r
-#define JVMDI_ENABLE ((jint) 1)\r
-\r
-/*\r
- * Initial function for debug threads created through JVMDI\r
- */\r
-typedef void (*JVMDI_StartFunction)(void *);\r
-\r
-/*\r
- * Type for debug monitors created through JVMDI\r
- */\r
-typedef void *JVMDI_RawMonitor;\r
-\r
-#define JVMDI_MONITOR_WAIT_FOREVER ((jlong)(-1))\r
-\r
-/*\r
- * Monitor information\r
- */\r
-typedef struct {\r
- jthread owner;\r
- jint entry_count;\r
- jint waiter_count;\r
- jthread *waiters;\r
-} JVMDI_monitor_info;\r
-\r
-typedef struct {\r
- jint owned_monitor_count;\r
- jobject *owned_monitors;\r
-} JVMDI_owned_monitor_info;\r
-\r
- /*\r
- * Events\r
- */\r
-\r
- /* kind = JVMDI_EVENT_SINGLE_STEP */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- } JVMDI_single_step_event_data;\r
- \r
- /* kind = JVMDI_EVENT_BREAKPOINT */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- } JVMDI_breakpoint_event_data;\r
- \r
- /* kind = JVMDI_EVENT_FIELD_ACCESS */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- jclass field_clazz;\r
- jobject object;\r
- jfieldID field;\r
- } JVMDI_field_access_event_data;\r
- \r
- /* kind = JVMDI_EVENT_FIELD_MODIFICATION */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- jclass field_clazz;\r
- jobject object;\r
- jfieldID field;\r
- char signature_type;\r
- jvalue new_value;\r
- } JVMDI_field_modification_event_data;\r
- \r
- /* kind = JVMDI_EVENT_FRAME_POP */\r
- /* kind = JVMDI_EVENT_METHOD_ENTRY */\r
- /* kind = JVMDI_EVENT_METHOD_EXIT */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jframeID frame;\r
- } JVMDI_frame_event_data;\r
- \r
- /* kind = JVMDI_EVENT_EXCEPTION */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- jobject exception;\r
- jclass catch_clazz;\r
- jmethodID catch_method;\r
- jlocation catch_location;\r
- } JVMDI_exception_event_data;\r
- \r
- /* kind = JVMDI_EVENT_EXCEPTION_CATCH */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- jmethodID method;\r
- jlocation location;\r
- jobject exception;\r
- } JVMDI_exception_catch_event_data;\r
- \r
- /* kind = JVMDI_EVENT_USER_DEFINED */\r
- typedef struct { \r
- jobject object;\r
- jint key;\r
- } JVMDI_user_event_data;\r
- \r
- /* kind = JVMDI_EVENT_THREAD_END or */\r
- /* JVMDI_EVENT_THREAD_START */\r
- typedef struct { \r
- jthread thread;\r
- } JVMDI_thread_change_event_data;\r
- \r
- /* kind = JVMDI_EVENT_CLASS_LOAD, */\r
- /* JVMDI_EVENT_CLASS_UNLOAD, or */\r
- /* JVMDI_EVENT_CLASS_PREPARE */\r
- typedef struct { \r
- jthread thread;\r
- jclass clazz;\r
- } JVMDI_class_event_data;\r
- \r
-/* This stucture passes information about the event.\r
- * location is the index of the last instruction executed. \r
- */\r
-typedef struct {\r
- jint kind; /* the discriminant */\r
-\r
- union {\r
- /* kind = JVMDI_EVENT_SINGLE_STEP */\r
- JVMDI_single_step_event_data single_step;\r
- \r
- /* kind = JVMDI_EVENT_BREAKPOINT */\r
- JVMDI_breakpoint_event_data breakpoint;\r
-\r
- /* kind = JVMDI_EVENT_FRAME_POP */\r
- /* kind = JVMDI_EVENT_METHOD_ENTRY */\r
- /* kind = JVMDI_EVENT_METHOD_EXIT */\r
- JVMDI_frame_event_data frame;\r
-\r
- /* kind = JVMDI_EVENT_FIELD_ACCESS */\r
- JVMDI_field_access_event_data field_access;\r
-\r
- /* kind = JVMDI_EVENT_FIELD_MODIFICATION */\r
- JVMDI_field_modification_event_data field_modification;\r
-\r
- /* kind = JVMDI_EVENT_EXCEPTION */\r
- JVMDI_exception_event_data exception;\r
-\r
- /* kind = JVMDI_EVENT_EXCEPTION_CATCH */\r
- JVMDI_exception_catch_event_data exception_catch;\r
-\r
- /* kind = JVMDI_EVENT_USER_DEFINED */\r
- JVMDI_user_event_data user;\r
- \r
- /* kind = JVMDI_EVENT_THREAD_END or */\r
- /* JVMDI_EVENT_THREAD_START */\r
- JVMDI_thread_change_event_data thread_change;\r
- \r
- /* kind = JVMDI_EVENT_CLASS_LOAD, */\r
- /* JVMDI_EVENT_CLASS_UNLOAD, or */\r
- /* JVMDI_EVENT_CLASS_PREPARE */\r
- JVMDI_class_event_data class_event;\r
- \r
- /* kind = JVMDI_EVENT_VM_DEATH, JVMDI_EVENT_VM_INIT */\r
- /* no additional fields */ \r
- } u;\r
-} JVMDI_Event;\r
-\r
- /*** event kinds ***/\r
-#define JVMDI_EVENT_SINGLE_STEP ((jint)1)\r
-#define JVMDI_EVENT_BREAKPOINT ((jint)2)\r
-#define JVMDI_EVENT_FRAME_POP ((jint)3)\r
-#define JVMDI_EVENT_EXCEPTION ((jint)4)\r
-#define JVMDI_EVENT_USER_DEFINED ((jint)5)\r
-#define JVMDI_EVENT_THREAD_START ((jint)6)\r
-#define JVMDI_EVENT_THREAD_END ((jint)7)\r
-#define JVMDI_EVENT_CLASS_PREPARE ((jint)8)\r
-#define JVMDI_EVENT_CLASS_UNLOAD ((jint)9)\r
-#define JVMDI_EVENT_CLASS_LOAD ((jint)10)\r
-#define JVMDI_EVENT_FIELD_ACCESS ((jint)20)\r
-#define JVMDI_EVENT_FIELD_MODIFICATION ((jint)21)\r
-#define JVMDI_EVENT_EXCEPTION_CATCH ((jint)30)\r
-#define JVMDI_EVENT_METHOD_ENTRY ((jint)40)\r
-#define JVMDI_EVENT_METHOD_EXIT ((jint)41)\r
-#define JVMDI_EVENT_VM_INIT ((jint)90)\r
-#define JVMDI_EVENT_VM_DEATH ((jint)99)\r
-\r
-#define JVMDI_MAX_EVENT_TYPE_VAL ((jint)99)\r
-\r
-\r
-\r
-/* event handler hook */\r
-typedef void (*JVMDI_EventHook)(JNIEnv *env, JVMDI_Event *event);\r
-\r
-typedef jvmdiError (*JVMDI_AllocHook) (jlong size, jbyte** memPtr);\r
-typedef jvmdiError (*JVMDI_DeallocHook) (jbyte* buffer);\r
-\r
-/*\r
- * Class states used in JVMDI_GetClassStatus\r
- */\r
-#define JVMDI_CLASS_STATUS_VERIFIED ((jint)0x01)\r
-#define JVMDI_CLASS_STATUS_PREPARED ((jint)0x02)\r
-#define JVMDI_CLASS_STATUS_INITIALIZED ((jint)0x04)\r
- /* Error prevents initialization */\r
-#define JVMDI_CLASS_STATUS_ERROR ((jint)0x08) \r
-\r
-/* structure for returning line number information \r
- */\r
-typedef struct {\r
- jlocation start_location;\r
- jint line_number;\r
-} JVMDI_line_number_entry;\r
-\r
-\r
-/* structure for returning local variable information \r
- */\r
-typedef struct {\r
- jlocation start_location; /* variable valid start_location */\r
- jint length; /* upto start_location+length */ \r
- char *name; /* name in UTF8 */\r
- char *signature; /* type signature in UTF8 */\r
- jint slot; /* variable slot, see JVMDI_GetLocal*() */\r
-} JVMDI_local_variable_entry;\r
-\r
-/* structure for returning exception handler information \r
- */\r
-typedef struct {\r
- jlocation start_location;\r
- jlocation end_location;\r
- jlocation handler_location;\r
- jclass exception; /* if null, all exceptions */\r
-} JVMDI_exception_handler_entry;\r
-\r
-#define JVMDI_OPERAND_TYPE_REFERENCE ((jint)1)\r
-#define JVMDI_OPERAND_TYPE_INT ((jint)2)\r
-#define JVMDI_OPERAND_TYPE_FLOAT ((jint)3)\r
-#define JVMDI_OPERAND_TYPE_LONG0 ((jint)4) /* least sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_LONG1 ((jint)5) /* most sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_DOUBLE0 ((jint)6) /* least sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_DOUBLE1 ((jint)7) /* most sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_RETURN_ADDRESS ((jint)8)\r
-\r
-typedef struct {\r
- jint word; /* 32 bit operand stack quantities */\r
- jint type; /* type encoding of the operand word */\r
- /* one of JVMDI_OPERAND_TYPE_* */\r
-} JVMDI_operand_stack_element;\r
-\r
-typedef struct { \r
- jint instance_field_count; /* number of instance fields referencing obj */\r
- struct JVMDI_instance_field {\r
- jobject instance; /* instance referencing obj */\r
- jfieldID field; /* field holding reference */\r
- } *instance_fields; /* instanceField_count of them */\r
- \r
- jint static_field_count; /* number of static fields referencing obj */\r
- struct JVMDI_static_field {\r
- jclass clazz; /* class referencing obj */\r
- jfieldID static_field; /* field holding reference */\r
- } *static_fields; /* static_field_count of them */\r
- \r
- jint array_element_count; /* number of array elements referencing obj */\r
- struct JVMDI_array_element {\r
- jobjectArray array; /* array referencing obj */\r
- jint index; /* index holding reference */\r
- } *array_elements; /* array_element_count of them */\r
- \r
- jint frame_slot_count; /* number of frame slots referencing obj */\r
- struct JVMDI_frame_slot {\r
- jthread thread; /* thread of the frame */\r
- jframeID frame; /* frame referencing obj */\r
- jint slot; /* slot holding reference */\r
- } *frame_slots; /* frame_slot_count of them */\r
-} JVMDI_object_reference_info;\r
-\r
-/* structure for defining a class\r
-*/\r
-typedef struct {\r
- jclass clazz; /* Class object for this class */\r
- jint class_byte_count; /* number of bytes defining class (below) */\r
- jbyte *class_bytes; /* bytes defining class (in JVM spec */\r
- /* Class File Format) */\r
-} JVMDI_class_definition;\r
-\r
- /* For backwards compatibility */\r
-#define can_change_schema can_unrestrictedly_redefine_classes\r
-\r
-typedef struct {\r
- unsigned int can_watch_field_modification : 1;\r
- unsigned int can_watch_field_access : 1;\r
- unsigned int can_get_bytecodes : 1;\r
- unsigned int can_get_synthetic_attribute : 1;\r
- unsigned int can_get_owned_monitor_info : 1;\r
- unsigned int can_get_current_contended_monitor : 1;\r
- unsigned int can_get_monitor_info : 1;\r
- unsigned int can_get_heap_info : 1;\r
- unsigned int can_get_operand_stack : 1;\r
- unsigned int can_set_operand_stack : 1;\r
- unsigned int can_pop_frame : 1;\r
- unsigned int can_get_class_definition : 1;\r
- unsigned int can_redefine_classes : 1; \r
- unsigned int can_add_method : 1;\r
- unsigned int can_unrestrictedly_redefine_classes : 1;\r
- unsigned int can_suspend_resume_thread_lists : 1;\r
-} JVMDI_capabilities;\r
-\r
-typedef struct JVMDI_Interface_1_ {\r
- jvmdiError (JNICALL *SetEventHook)\r
- (JVMDI_EventHook hook);\r
- jvmdiError (JNICALL *SetEventNotificationMode)\r
- (jint mode, jint eventType, jthread thread, ...);\r
-\r
- jvmdiError (JNICALL *GetThreadStatus)\r
- (jthread thread,\r
- jint *threadStatusPtr, jint *suspendStatusPtr);\r
- jvmdiError (JNICALL *GetAllThreads)\r
- (jint *threadsCountPtr, jthread **threadsPtr);\r
- jvmdiError (JNICALL *SuspendThread)\r
- (jthread thread); \r
- jvmdiError (JNICALL *ResumeThread)\r
- (jthread thread);\r
- jvmdiError (JNICALL *StopThread)\r
- (jthread thread, jobject exception);\r
- jvmdiError (JNICALL *InterruptThread)\r
- (jthread thread);\r
- jvmdiError (JNICALL *GetThreadInfo)\r
- (jthread thread, JVMDI_thread_info *infoPtr);\r
- jvmdiError (JNICALL *GetOwnedMonitorInfo)\r
- (jthread thread, JVMDI_owned_monitor_info *infoPtr);\r
- jvmdiError (JNICALL *GetCurrentContendedMonitor)\r
- (jthread thread, jobject *monitor);\r
- jvmdiError (JNICALL *RunDebugThread)\r
- (jthread thread, JVMDI_StartFunction proc, void *arg,\r
- int priority);\r
-\r
- jvmdiError (JNICALL *GetTopThreadGroups)\r
- (jint *groupCountPtr, jthreadGroup **groupsPtr);\r
- jvmdiError (JNICALL *GetThreadGroupInfo)\r
- (jthreadGroup group, JVMDI_thread_group_info *infoPtr);\r
- jvmdiError (JNICALL *GetThreadGroupChildren)\r
- (jthreadGroup group, \r
- jint *threadCountPtr, jthread **threadsPtr,\r
- jint *groupCountPtr, jthreadGroup **groupsPtr);\r
-\r
- jvmdiError (JNICALL *GetFrameCount)\r
- (jthread thread, jint *countPtr);\r
- jvmdiError (JNICALL *GetCurrentFrame)\r
- (jthread thread, jframeID *framePtr);\r
- jvmdiError (JNICALL *GetCallerFrame)\r
- (jframeID called, jframeID *framePtr);\r
- jvmdiError (JNICALL *GetFrameLocation)\r
- (jframeID frame, jclass *classPtr, jmethodID *methodPtr,\r
- jlocation *locationPtr);\r
- jvmdiError (JNICALL *NotifyFramePop)\r
- (jframeID frame); \r
- jvmdiError (JNICALL *GetLocalObject)\r
- (jframeID frame, jint slot, jobject *valuePtr);\r
- jvmdiError (JNICALL *GetLocalInt)\r
- (jframeID frame, jint slot, jint *valuePtr);\r
- jvmdiError (JNICALL *GetLocalLong)\r
- (jframeID frame, jint slot, jlong *valuePtr);\r
- jvmdiError (JNICALL *GetLocalFloat)\r
- (jframeID frame, jint slot, jfloat *valuePtr);\r
- jvmdiError (JNICALL *GetLocalDouble)\r
- (jframeID frame, jint slot, jdouble *valuePtr);\r
- jvmdiError (JNICALL *SetLocalObject)\r
- (jframeID frame, jint slot, jobject value);\r
- jvmdiError (JNICALL *SetLocalInt)\r
- (jframeID frame, jint slot, jint value);\r
- jvmdiError (JNICALL *SetLocalLong)\r
- (jframeID frame, jint slot, jlong value);\r
- jvmdiError (JNICALL *SetLocalFloat)\r
- (jframeID frame, jint slot, jfloat value);\r
- jvmdiError (JNICALL *SetLocalDouble)\r
- (jframeID frame, jint slot, jdouble value);\r
-\r
- jvmdiError (JNICALL *CreateRawMonitor)\r
- (char *name, JVMDI_RawMonitor *monitorPtr);\r
- jvmdiError (JNICALL *DestroyRawMonitor)\r
- (JVMDI_RawMonitor monitor);\r
- jvmdiError (JNICALL *RawMonitorEnter)\r
- (JVMDI_RawMonitor monitor);\r
- jvmdiError (JNICALL *RawMonitorExit)\r
- (JVMDI_RawMonitor monitor);\r
- jvmdiError (JNICALL *RawMonitorWait)\r
- (JVMDI_RawMonitor monitor, jlong millis);\r
- jvmdiError (JNICALL *RawMonitorNotify)\r
- (JVMDI_RawMonitor monitor);\r
- jvmdiError (JNICALL *RawMonitorNotifyAll)\r
- (JVMDI_RawMonitor monitor);\r
-\r
- jvmdiError (JNICALL *SetBreakpoint)\r
- (jclass clazz, jmethodID method, jlocation location);\r
- jvmdiError (JNICALL *ClearBreakpoint)\r
- (jclass clazz, jmethodID method, jlocation location);\r
- jvmdiError (JNICALL *ClearAllBreakpoints)\r
- ();\r
-\r
- jvmdiError (JNICALL *SetFieldAccessWatch)\r
- (jclass clazz, jfieldID field);\r
- jvmdiError (JNICALL *ClearFieldAccessWatch)\r
- (jclass clazz, jfieldID field);\r
- jvmdiError (JNICALL *SetFieldModificationWatch)\r
- (jclass clazz, jfieldID field);\r
- jvmdiError (JNICALL *ClearFieldModificationWatch)\r
- (jclass clazz, jfieldID field);\r
-\r
- jvmdiError (JNICALL *SetAllocationHooks)\r
- (JVMDI_AllocHook ahook, JVMDI_DeallocHook dhook);\r
- jvmdiError (JNICALL *Allocate)\r
- (jlong size, jbyte** memPtr);\r
- jvmdiError (JNICALL *Deallocate)\r
- (jbyte* mem);\r
-\r
- jvmdiError (JNICALL *GetClassSignature)\r
- (jclass clazz, char **sigPtr);\r
- jvmdiError (JNICALL *GetClassStatus)\r
- (jclass clazz, jint *statusPtr);\r
- jvmdiError (JNICALL *GetSourceFileName)\r
- (jclass clazz, char **sourceNamePtr);\r
- jvmdiError (JNICALL *GetClassModifiers)\r
- (jclass clazz, jint *modifiersPtr);\r
- jvmdiError (JNICALL *GetClassMethods)\r
- (jclass clazz, jint *methodCountPtr, jmethodID **methodsPtr);\r
- jvmdiError (JNICALL *GetClassFields)\r
- (jclass clazz, jint *fieldCountPtr, jfieldID **fieldsPtr);\r
- jvmdiError (JNICALL *GetImplementedInterfaces)\r
- (jclass clazz, jint *interfaceCountPtr, jclass **interfacesPtr);\r
- jvmdiError (JNICALL *IsInterface)\r
- (jclass clazz, jboolean *isInterfacePtr);\r
- jvmdiError (JNICALL *IsArrayClass)\r
- (jclass clazz, jboolean *isArrayClassPtr);\r
- jvmdiError (JNICALL *GetClassLoader)\r
- (jclass clazz, jobject *classloaderPtr);\r
-\r
- jvmdiError (JNICALL *GetObjectHashCode)\r
- (jobject object, jint *hashCodePtr);\r
- jvmdiError (JNICALL *GetMonitorInfo)\r
- (jobject object, JVMDI_monitor_info *infoPtr);\r
-\r
- jvmdiError (JNICALL *GetFieldName)\r
- (jclass clazz, jfieldID field, char **namePtr, char **signaturePtr);\r
- jvmdiError (JNICALL *GetFieldDeclaringClass)\r
- (jclass clazz, jfieldID field, jclass *declaringClassPtr);\r
- jvmdiError (JNICALL *GetFieldModifiers)\r
- (jclass clazz, jfieldID field, jint *modifiersPtr);\r
- jvmdiError (JNICALL *IsFieldSynthetic)\r
- (jclass clazz, jfieldID field, jboolean *isSyntheticPtr);\r
-\r
- jvmdiError (JNICALL *GetMethodName)\r
- (jclass clazz, jmethodID method, \r
- char **namePtr, char **signaturePtr);\r
- jvmdiError (JNICALL *GetMethodDeclaringClass)\r
- (jclass clazz, jmethodID method, jclass *declaringClassPtr);\r
- jvmdiError (JNICALL *GetMethodModifiers)\r
- (jclass clazz, jmethodID method, jint *modifiersPtr);\r
- jvmdiError (JNICALL *GetMaxStack)\r
- (jclass clazz, jmethodID method, jint *maxPtr);\r
- jvmdiError (JNICALL *GetMaxLocals)\r
- (jclass clazz, jmethodID method, jint *maxPtr);\r
- jvmdiError (JNICALL *GetArgumentsSize)\r
- (jclass clazz, jmethodID method, jint *sizePtr);\r
- jvmdiError (JNICALL *GetLineNumberTable)\r
- (jclass clazz, jmethodID method,\r
- jint *entryCountPtr, JVMDI_line_number_entry **tablePtr);\r
- jvmdiError (JNICALL *GetMethodLocation)\r
- (jclass clazz, jmethodID method,\r
- jlocation *startLocationPtr, jlocation *endLocationPtr);\r
- jvmdiError (JNICALL *GetLocalVariableTable)\r
- (jclass clazz, jmethodID method,\r
- jint *entryCountPtr, JVMDI_local_variable_entry **tablePtr);\r
- jvmdiError (JNICALL *GetExceptionHandlerTable)\r
- (jclass clazz, jmethodID method,\r
- jint *entryCountPtr, JVMDI_exception_handler_entry **tablePtr);\r
- jvmdiError (JNICALL *GetThrownExceptions)\r
- (jclass clazz, jmethodID method,\r
- jint *exceptionCountPtr, jclass **exceptionsPtr);\r
- jvmdiError (JNICALL *GetBytecodes)\r
- (jclass clazz, jmethodID method,\r
- jint *bytecodeCountPtr, jbyte **bytecodesPtr);\r
- jvmdiError (JNICALL *IsMethodNative)\r
- (jclass clazz, jmethodID method, jboolean *isNativePtr);\r
- jvmdiError (JNICALL *IsMethodSynthetic)\r
- (jclass clazz, jmethodID method, jboolean *isSyntheticPtr);\r
-\r
- jvmdiError (JNICALL *GetLoadedClasses)\r
- (jint *classCountPtr, jclass **classesPtr);\r
- jvmdiError (JNICALL *GetClassLoaderClasses)\r
- (jobject initiatingLoader, jint *classesCountPtr, \r
- jclass **classesPtr);\r
-\r
- jvmdiError (JNICALL *PopFrame)\r
- (jthread thread);\r
- jvmdiError (JNICALL *SetFrameLocation)\r
- (jframeID frame, jlocation location);\r
- jvmdiError (JNICALL *GetOperandStack)\r
- (jframeID frame, jint *operandStackSizePtr, \r
- JVMDI_operand_stack_element **operandStackPtr);\r
- jvmdiError (JNICALL *SetOperandStack)\r
- (jframeID frame, jint operandStackSize, \r
- JVMDI_operand_stack_element *operandStack);\r
- jvmdiError (JNICALL *AllInstances)\r
- (jclass clazz, jint *instanceCountPtr, jobject **instancesPtr);\r
- jvmdiError (JNICALL *References)\r
- (jobject obj, JVMDI_object_reference_info *refs);\r
- jvmdiError (JNICALL *GetClassDefinition)\r
- (jclass clazz, JVMDI_class_definition *classDefPtr);\r
- jvmdiError (JNICALL *RedefineClasses)\r
- (jint classCount, JVMDI_class_definition *classDefs);\r
-\r
- jvmdiError (JNICALL *GetVersionNumber)\r
- (jint *versionPtr);\r
- jvmdiError (JNICALL *GetCapabilities)\r
- (JVMDI_capabilities *capabilitiesPtr);\r
-\r
- jvmdiError (JNICALL *GetSourceDebugExtension)\r
- (jclass clazz, char **sourceDebugExtension);\r
- jvmdiError (JNICALL *IsMethodObsolete)\r
- (jclass clazz, jmethodID method, jboolean *isObsoletePtr);\r
-\r
- jvmdiError (JNICALL *SuspendThreadList)\r
- (jint reqCount, jthread *reqList, jvmdiError *results); \r
- jvmdiError (JNICALL *ResumeThreadList)\r
- (jint reqCount, jthread *reqList, jvmdiError *results); \r
-} JVMDI_Interface_1;\r
- \r
-#ifndef NO_JVMDI_MACROS\r
-\r
-#define JVMDI_ERROR_DUPLICATE_BREAKPOINT JVMDI_ERROR_DUPLICATE\r
-#define JVMDI_ERROR_NO_SUCH_BREAKPOINT JVMDI_ERROR_NOT_FOUND\r
-#define JVMDI_ERROR_DUPLICATE_FRAME_POP JVMDI_ERROR_DUPLICATE\r
-\r
-\r
-static JVMDI_Interface_1 *jvmdi_interface = NULL;\r
-static JavaVM *j_vm;\r
-\r
-#ifdef __cplusplus\r
-#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)? \\r
- ((a_env)->GetJavaVM(&j_vm), \\r
- (j_vm)->GetEnv((void **)&jvmdi_interface, \\r
- JVMDI_VERSION_1)):0)\r
-#else\r
-#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)? \\r
- ((*a_env)->GetJavaVM(a_env, &j_vm), \\r
- (*j_vm)->GetEnv(j_vm, (void **)&jvmdi_interface, \\r
- JVMDI_VERSION_1)):0)\r
-#endif\r
-\r
-#define JVMDI_SetEventHook(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetEventHook(a1) )\r
-#define JVMDI_GetThreadStatus(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetThreadStatus(a1, a2, a3) )\r
-#define JVMDI_GetAllThreads(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetAllThreads(a1, a2) )\r
-#define JVMDI_SuspendThread(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SuspendThread(a1) )\r
-#define JVMDI_ResumeThread(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->ResumeThread(a1) )\r
-#define JVMDI_StopThread(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->StopThread(a1, a2) )\r
-#define JVMDI_InterruptThread(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->InterruptThread(a1) )\r
-#define JVMDI_SetSingleStep(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetEventNotificationMode( \\r
- (a2) ? JVMDI_ENABLE : JVMDI_DISABLE, \\r
- JVMDI_EVENT_SINGLE_STEP, a1) )\r
-#define JVMDI_GetThreadInfo(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetThreadInfo(a1, a2) )\r
-#define JVMDI_RunDebugThread(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RunDebugThread(a1, a2, a3, a4) )\r
-#define JVMDI_GetTopThreadGroups(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetTopThreadGroups(a1, a2) )\r
-#define JVMDI_GetThreadGroupInfo(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetThreadGroupInfo(a1, a2) )\r
-#define JVMDI_GetThreadGroupChildren(a_env, a1, a2, a3, a4, a5) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetThreadGroupChildren(a1, a2, a3, a4, a5) )\r
-#define JVMDI_GetCurrentFrame(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetCurrentFrame(a1, a2) )\r
-#define JVMDI_GetCallerFrame(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetCallerFrame(a1, a2) )\r
-#define JVMDI_GetFrameLocation(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetFrameLocation(a1, a2, a3, a4) )\r
-#define JVMDI_NotifyFramePop(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->NotifyFramePop(a1) )\r
-#define JVMDI_GetLocalObject(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalObject(a1, a2, a3) )\r
-#define JVMDI_GetLocalInt(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalInt(a1, a2, a3) )\r
-#define JVMDI_GetLocalLong(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalLong(a1, a2, a3) )\r
-#define JVMDI_GetLocalFloat(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalFloat(a1, a2, a3) )\r
-#define JVMDI_GetLocalDouble(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalDouble(a1, a2, a3) )\r
-#define JVMDI_SetLocalObject(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetLocalObject(a1, a2, a3) )\r
-#define JVMDI_SetLocalInt(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetLocalInt(a1, a2, a3) )\r
-#define JVMDI_SetLocalLong(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetLocalLong(a1, a2, a3) )\r
-#define JVMDI_SetLocalFloat(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetLocalFloat(a1, a2, a3) )\r
-#define JVMDI_SetLocalDouble(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetLocalDouble(a1, a2, a3) )\r
-#define JVMDI_CreateRawMonitor(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->CreateRawMonitor(a1, a2) )\r
-#define JVMDI_DestroyRawMonitor(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->DestroyRawMonitor(a1) )\r
-#define JVMDI_RawMonitorEnter(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RawMonitorEnter(a1) )\r
-#define JVMDI_RawMonitorExit(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RawMonitorExit(a1) )\r
-#define JVMDI_RawMonitorWait(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RawMonitorWait(a1, a2) )\r
-#define JVMDI_RawMonitorNotify(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RawMonitorNotify(a1) )\r
-#define JVMDI_RawMonitorNotifyAll(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->RawMonitorNotifyAll(a1) )\r
-#define JVMDI_SetBreakpoint(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetBreakpoint(a1, a2, a3) )\r
-#define JVMDI_ClearBreakpoint(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->ClearBreakpoint(a1, a2, a3) )\r
-#define JVMDI_ClearAllBreakpoints(a_env) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->ClearAllBreakpoints() )\r
-#define JVMDI_SetAllocationHooks(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->SetAllocationHooks(a1, a2) )\r
-#define JVMDI_Allocate(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->Allocate(a1, a2) )\r
-#define JVMDI_Deallocate(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->Deallocate(a1) )\r
-#define JVMDI_GetClassSignature(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassSignature(a1, a2) )\r
-#define JVMDI_GetClassStatus(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassStatus(a1, a2) )\r
-#define JVMDI_GetSourceFileName(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetSourceFileName(a1, a2) )\r
-#define JVMDI_GetClassModifiers(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassModifiers(a1, a2) )\r
-#define JVMDI_GetClassMethods(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassMethods(a1, a2, a3) )\r
-#define JVMDI_GetClassFields(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassFields(a1, a2, a3) )\r
-#define JVMDI_GetImplementedInterfaces(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetImplementedInterfaces(a1, a2, a3) )\r
-#define JVMDI_IsInterface(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->IsInterface(a1, a2) )\r
-#define JVMDI_IsArrayClass(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->IsArrayClass(a1, a2) )\r
-#define JVMDI_ClassLoader(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassLoader(a1, a2) )\r
-#define JVMDI_GetFieldName(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetFieldName(a1, a2, a3, a4) )\r
-#define JVMDI_GetFieldDeclaringClass(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetFieldDeclaringClass(a1, a2, a3) )\r
-#define JVMDI_GetFieldModifiers(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetFieldModifiers(a1, a2, a3) )\r
-#define JVMDI_GetMethodName(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMethodName(a1, a2, a3, a4) )\r
-#define JVMDI_GetMethodDeclaringClass(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMethodDeclaringClass(a1, a2, a3) )\r
-#define JVMDI_GetMethodModifiers(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMethodModifiers(a1, a2, a3) )\r
-#define JVMDI_GetMaxStack(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMaxStack(a1, a2, a3) )\r
-#define JVMDI_GetMaxLocals(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMaxLocals(a1, a2, a3) )\r
-#define JVMDI_GetArgumentsSize(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetArgumentsSize(a1, a2, a3) )\r
-#define JVMDI_GetLineNumberTable(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLineNumberTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetMethodLocation(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetMethodLocation(a1, a2, a3, a4) )\r
-#define JVMDI_GetLocalVariableTable(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLocalVariableTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetExceptionHandlerTable(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetExceptionHandlerTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetThrownExceptions(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetThrownExceptions(a1, a2, a3, a4) )\r
-#define JVMDI_GetBytecodes(a_env, a1, a2, a3, a4) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetBytecodes(a1, a2, a3, a4) )\r
-#define JVMDI_IsMethodNative(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->IsMethodNative(a1, a2, a3) )\r
-#define JVMDI_GetLoadedClasses(a_env, a1, a2) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetLoadedClasses(a1, a2) )\r
-#define JVMDI_GetClassLoaderClasses(a_env, a1, a2, a3) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetClassLoaderClasses(a1, a2, a3) )\r
-#define JVMDI_GetVersionNumber(a_env, a1) ( \\r
- SetJVMDIfromJNIEnv(a_env), \\r
- jvmdi_interface->GetVersionNumber(a1) )\r
-\r
-#endif /* !NO_JVMDI_MACROS */\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVASOFT_JVMDI_H_ */\r
-\r
-\r
+++ /dev/null
-/*\r
- * @(#)jvmpi.h 1.28 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JVMPI_H_\r
-#define _JAVASOFT_JVMPI_H_\r
-\r
-#include "jni.h"\r
-\r
-#define JVMPI_VERSION_1 ((jint)0x10000001) /* implied 0 for minor version */\r
-#define JVMPI_VERSION_1_1 ((jint)0x10000002)\r
-#define JVMPI_VERSION_1_2 ((jint)0x10000003)\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
- typedef void (*jvmpi_void_function_of_void)(void *);\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-/****************************************************************\r
- * Profiler interface data structures.\r
- ****************************************************************/\r
-/* identifier types. */\r
-struct _jobjectID;\r
-typedef struct _jobjectID * jobjectID; /* type of object ids */ \r
-\r
-/* raw monitors */\r
-struct _JVMPI_RawMonitor;\r
-typedef struct _JVMPI_RawMonitor * JVMPI_RawMonitor;\r
-\r
-/* call frame */\r
-typedef struct {\r
- jint lineno; /* line number in the source file */\r
- jmethodID method_id; /* method executed in this frame */\r
-} JVMPI_CallFrame;\r
-\r
-/* call trace */\r
-typedef struct {\r
- JNIEnv *env_id; /* Env where trace was recorded */\r
- jint num_frames; /* number of frames in this trace */\r
- JVMPI_CallFrame *frames; /* frames */\r
-} JVMPI_CallTrace;\r
-\r
-/* method */\r
-typedef struct {\r
- char *method_name; /* name of method */\r
- char *method_signature; /* signature of method */\r
- jint start_lineno; /* -1 if native, abstract .. */\r
- jint end_lineno; /* -1 if native, abstract .. */\r
- jmethodID method_id; /* id assigned to this method */\r
-} JVMPI_Method;\r
-\r
-/* Field */\r
-typedef struct {\r
- char *field_name; /* name of field */\r
- char *field_signature; /* signature of field */\r
-} JVMPI_Field;\r
-\r
-/* line number info for a compiled method */\r
-typedef struct {\r
- jint offset; /* offset from beginning of method */\r
- jint lineno; /* lineno from beginning of src file */\r
-} JVMPI_Lineno;\r
-\r
-/* event */\r
-typedef struct {\r
- jint event_type; /* event_type */\r
- JNIEnv *env_id; /* env where this event occured */\r
- \r
- union {\r
- struct {\r
- const char *class_name; /* class name */\r
- char *source_name; /* name of source file */\r
- jint num_interfaces; /* number of interfaces implemented */\r
- jint num_methods; /* number of methods in the class */\r
- JVMPI_Method *methods; /* methods */\r
- jint num_static_fields; /* number of static fields */\r
- JVMPI_Field *statics; /* static fields */\r
- jint num_instance_fields; /* number of instance fields */\r
- JVMPI_Field *instances; /* instance fields */\r
- jobjectID class_id; /* id of the class object */\r
- } class_load;\r
-\r
- struct {\r
- jobjectID class_id; /* id of the class object */\r
- } class_unload;\r
-\r
- struct {\r
- unsigned char *class_data; /* content of class file */\r
- jint class_data_len; /* class file length */\r
- unsigned char *new_class_data; /* instrumented class file */\r
- jint new_class_data_len; /* new class file length */\r
- void * (*malloc_f)(unsigned int); /* memory allocation function */\r
- } class_load_hook;\r
-\r
- struct {\r
- jint arena_id;\r
- jobjectID class_id; /* id of object class */\r
- jint is_array; /* JVMPI_NORMAL_OBJECT, ... */\r
- jint size; /* size in number of bytes */\r
- jobjectID obj_id; /* id assigned to this object */\r
- } obj_alloc;\r
-\r
- struct {\r
- jobjectID obj_id; /* id of the object */\r
- } obj_free;\r
-\r
- struct {\r
- jint arena_id; /* cur arena id */\r
- jobjectID obj_id; /* cur object id */\r
- jint new_arena_id; /* new arena id */\r
- jobjectID new_obj_id; /* new object id */ \r
- } obj_move;\r
-\r
- struct {\r
- jint arena_id; /* id of arena */\r
- const char *arena_name; /* name of arena */\r
- } new_arena;\r
-\r
- struct {\r
- jint arena_id; /* id of arena */\r
- } delete_arena;\r
-\r
- struct {\r
- char *thread_name; /* name of thread */\r
- char *group_name; /* name of group */\r
- char *parent_name; /* name of parent */\r
- jobjectID thread_id; /* id of the thread object */\r
- JNIEnv *thread_env_id;\r
- } thread_start;\r
-\r
- struct {\r
- int dump_level; /* level of the heap dump info */\r
- char *begin; /* where all the root records begin,\r
- please see the heap dump buffer \r
- format described below */\r
- char *end; /* where the object records end. */\r
- jint num_traces; /* number of thread traces, \r
- 0 if dump level = JVMPI_DUMP_LEVEL_0 */\r
- JVMPI_CallTrace *traces; /* thread traces collected during \r
- heap dump */ \r
- } heap_dump;\r
-\r
- struct {\r
- jobjectID obj_id; /* object id */\r
- jobject ref_id; /* id assigned to the globalref */\r
- } jni_globalref_alloc;\r
- \r
- struct {\r
- jobject ref_id; /* id of the global ref */\r
- } jni_globalref_free;\r
-\r
- struct {\r
- jmethodID method_id; /* method */\r
- } method;\r
-\r
- struct {\r
- jmethodID method_id; /* id of method */\r
- jobjectID obj_id; /* id of target object */\r
- } method_entry2;\r
-\r
- struct {\r
- jmethodID method_id; /* id of compiled method */\r
- void *code_addr; /* code start addr. in memory */\r
- jint code_size; /* code size */\r
- jint lineno_table_size; /* size of lineno table */\r
- JVMPI_Lineno *lineno_table; /* lineno info */\r
- } compiled_method_load;\r
- \r
- struct {\r
- jmethodID method_id; /* id of unloaded compiled method */\r
- } compiled_method_unload;\r
-\r
- struct {\r
- jmethodID method_id; /* id of the method the instruction belongs to */\r
- jint offset; /* instruction offset in the method's bytecode */\r
- union {\r
- struct {\r
- jboolean is_true; /* whether true or false branch is taken */\r
- } if_info;\r
- struct {\r
- jint key; /* top stack value used as an index */\r
- jint low; /* min value of the index */\r
- jint hi; /* max value of the index */\r
- } tableswitch_info;\r
- struct {\r
- jint chosen_pair_index; /* actually chosen pair index (0-based)\r
- * if chosen_pair_index == pairs_total then\r
- * the 'default' branch is taken\r
- */\r
- jint pairs_total; /* total number of lookupswitch pairs */\r
- } lookupswitch_info;\r
- } u;\r
- } instruction;\r
- \r
- struct {\r
- char *begin; /* beginning of dump buffer, \r
- see below for format */\r
- char *end; /* end of dump buffer */\r
- jint num_traces; /* number of traces */\r
- JVMPI_CallTrace *traces; /* traces of all threads */\r
- jint *threads_status; /* status of all threads */\r
- } monitor_dump;\r
-\r
- struct {\r
- const char *name; /* name of raw monitor */\r
- JVMPI_RawMonitor id; /* id */\r
- } raw_monitor;\r
-\r
- struct {\r
- jobjectID object; /* Java object */\r
- } monitor;\r
-\r
- struct {\r
- jobjectID object; /* Java object */\r
- jlong timeout; /* timeout period */\r
- } monitor_wait;\r
-\r
- struct {\r
- jlong used_objects;\r
- jlong used_object_space;\r
- jlong total_object_space;\r
- } gc_info;\r
-\r
- struct {\r
- jint data_len;\r
- char *data;\r
- } object_dump;\r
- } u;\r
-} JVMPI_Event;\r
-\r
-/* interface functions */\r
-typedef struct {\r
- jint version; /* JVMPI version */\r
- \r
- /* ------interface implemented by the profiler------ */\r
-\r
- /**\r
- * Function called by the JVM to notify an event. \r
- */\r
- void (*NotifyEvent)(JVMPI_Event *event);\r
- \r
- /* ------interface implemented by the JVM------ */\r
- \r
- /**\r
- * Function called by the profiler to enable/disable/send notification \r
- * for a particular event type. \r
- * \r
- * event_type - event_type\r
- * arg - event specific arg\r
- *\r
- * return JVMPI_NOT_AVAILABLE, JVMPI_SUCCESS or JVMPI_FAIL\r
- */\r
- jint (*EnableEvent)(jint event_type, void *arg);\r
- jint (*DisableEvent)(jint event_type, void *arg);\r
- jint (*RequestEvent)(jint event_type, void *arg);\r
- \r
- /**\r
- * Function called by the profiler to get a stack\r
- * trace from the JVM.\r
- *\r
- * trace - trace data structure to be filled\r
- * depth - maximum depth of the trace.\r
- */\r
- void (*GetCallTrace)(JVMPI_CallTrace *trace, jint depth);\r
-\r
- /**\r
- * Function called by profiler when it wants to exit/stop.\r
- */\r
- void (*ProfilerExit)(jint);\r
-\r
- /**\r
- * Utility functions provided by the JVM.\r
- */\r
- JVMPI_RawMonitor (*RawMonitorCreate)(char *lock_name);\r
- void (*RawMonitorEnter)(JVMPI_RawMonitor lock_id);\r
- void (*RawMonitorExit)(JVMPI_RawMonitor lock_id);\r
- void (*RawMonitorWait)(JVMPI_RawMonitor lock_id, jlong ms);\r
- void (*RawMonitorNotifyAll)(JVMPI_RawMonitor lock_id);\r
- void (*RawMonitorDestroy)(JVMPI_RawMonitor lock_id);\r
-\r
- /**\r
- * Function called by the profiler to get the current thread's CPU time.\r
- *\r
- * return time in nanoseconds;\r
- */\r
- jlong (*GetCurrentThreadCpuTime)(void);\r
-\r
- void (*SuspendThread)(JNIEnv *env);\r
- void (*ResumeThread)(JNIEnv *env);\r
- jint (*GetThreadStatus)(JNIEnv *env);\r
- jboolean (*ThreadHasRun)(JNIEnv *env);\r
-\r
- /* This function can be called safely only after JVMPI_EVENT_VM_INIT_DONE\r
- notification by the JVM. */\r
- jint (*CreateSystemThread)(char *name, jint priority, void (*f)(void *));\r
-\r
- /* thread local storage access functions to avoid locking in time \r
- critical functions */\r
- void (*SetThreadLocalStorage)(JNIEnv *env_id, void *ptr);\r
- void * (*GetThreadLocalStorage)(JNIEnv *env_id);\r
-\r
- /* control GC */\r
- void (*DisableGC)(void);\r
- void (*EnableGC)(void);\r
- void (*RunGC)(void);\r
-\r
- jobjectID (*GetThreadObject)(JNIEnv *env);\r
- jobjectID (*GetMethodClass)(jmethodID mid);\r
-\r
- /* JNI <-> jobject conversions */\r
- jobject (*jobjectID2jobject)(jobjectID jid);\r
- jobjectID (*jobject2jobjectID)(jobject jobj);\r
-\r
- void (*SuspendThreadList)\r
- (jint reqCount, JNIEnv **reqList, jint *results);\r
- void (*ResumeThreadList)\r
- (jint reqCount, JNIEnv **reqList, jint *results);\r
-} JVMPI_Interface;\r
-\r
-/* type of argument passed to RequestEvent for heap dumps */\r
-typedef struct {\r
- jint heap_dump_level;\r
-} JVMPI_HeapDumpArg;\r
-\r
-/**********************************************************************\r
- * Constants and formats used in JVM Profiler Interface.\r
- **********************************************************************/\r
-/*\r
- * Event type constants.\r
- */\r
-#define JVMPI_EVENT_METHOD_ENTRY ((jint)1) \r
-#define JVMPI_EVENT_METHOD_ENTRY2 ((jint)2) \r
-#define JVMPI_EVENT_METHOD_EXIT ((jint)3) \r
-\r
-#define JVMPI_EVENT_OBJECT_ALLOC ((jint)4) \r
-#define JVMPI_EVENT_OBJECT_FREE ((jint)5) \r
-#define JVMPI_EVENT_OBJECT_MOVE ((jint)6) \r
-\r
-#define JVMPI_EVENT_COMPILED_METHOD_LOAD ((jint)7) \r
-#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD ((jint)8) \r
-\r
-#define JVMPI_EVENT_INSTRUCTION_START ((jint)9) \r
-\r
-#define JVMPI_EVENT_THREAD_START ((jint)33) \r
-#define JVMPI_EVENT_THREAD_END ((jint)34) \r
-\r
-#define JVMPI_EVENT_CLASS_LOAD_HOOK ((jint)35) \r
-\r
-#define JVMPI_EVENT_HEAP_DUMP ((jint)37) \r
-#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC ((jint)38) \r
-#define JVMPI_EVENT_JNI_GLOBALREF_FREE ((jint)39) \r
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC ((jint)40) \r
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE ((jint)41) \r
-#define JVMPI_EVENT_CLASS_LOAD ((jint)42) \r
-#define JVMPI_EVENT_CLASS_UNLOAD ((jint)43) \r
-#define JVMPI_EVENT_DATA_DUMP_REQUEST ((jint)44) \r
-#define JVMPI_EVENT_DATA_RESET_REQUEST ((jint)45) \r
-\r
-#define JVMPI_EVENT_JVM_INIT_DONE ((jint)46) \r
-#define JVMPI_EVENT_JVM_SHUT_DOWN ((jint)47) \r
-\r
-#define JVMPI_EVENT_ARENA_NEW ((jint)48)\r
-#define JVMPI_EVENT_ARENA_DELETE ((jint)49)\r
-\r
-#define JVMPI_EVENT_OBJECT_DUMP ((jint)50)\r
-\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER ((jint)51)\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED ((jint)52)\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT ((jint)53)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER ((jint)54)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED ((jint)55)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT ((jint)56)\r
-#define JVMPI_EVENT_MONITOR_WAIT ((jint)57)\r
-#define JVMPI_EVENT_MONITOR_WAITED ((jint)58)\r
-#define JVMPI_EVENT_MONITOR_DUMP ((jint)59)\r
-\r
-#define JVMPI_EVENT_GC_START ((jint)60)\r
-#define JVMPI_EVENT_GC_FINISH ((jint)61)\r
-\r
-#define JVMPI_MAX_EVENT_TYPE_VAL ((jint)61)\r
-\r
-/* old definitions, to be removed */\r
-#define JVMPI_EVENT_LOAD_COMPILED_METHOD ((jint)7) \r
-#define JVMPI_EVENT_UNLOAD_COMPILED_METHOD ((jint)8) \r
-#define JVMPI_EVENT_NEW_ARENA ((jint)48)\r
-#define JVMPI_EVENT_DELETE_ARENA ((jint)49)\r
-#define JVMPI_EVENT_DUMP_DATA_REQUEST ((jint)44) \r
-#define JVMPI_EVENT_RESET_DATA_REQUEST ((jint)45) \r
-#define JVMPI_EVENT_OBJ_ALLOC ((jint)4) \r
-#define JVMPI_EVENT_OBJ_FREE ((jint)5) \r
-#define JVMPI_EVENT_OBJ_MOVE ((jint)6) \r
-\r
-#define JVMPI_REQUESTED_EVENT ((jint)0x10000000)\r
-\r
-\r
- \r
-/* \r
- * enabling/disabling event notification.\r
- */\r
-/* results */\r
-#define JVMPI_SUCCESS ((jint)0)\r
-#define JVMPI_NOT_AVAILABLE ((jint)1)\r
-#define JVMPI_FAIL ((jint)-1)\r
-\r
-/*\r
- * Thread status\r
- */\r
-enum {\r
- JVMPI_THREAD_RUNNABLE = 1,\r
- JVMPI_THREAD_MONITOR_WAIT,\r
- JVMPI_THREAD_CONDVAR_WAIT\r
-};\r
-\r
-#define JVMPI_THREAD_SUSPENDED 0x8000\r
-#define JVMPI_THREAD_INTERRUPTED 0x4000\r
-\r
-/*\r
- * Thread priority\r
- */\r
-#define JVMPI_MINIMUM_PRIORITY 1\r
-#define JVMPI_MAXIMUM_PRIORITY 10\r
-#define JVMPI_NORMAL_PRIORITY 5\r
-\r
-/*\r
- * Object type constants.\r
- */\r
-#define JVMPI_NORMAL_OBJECT ((jint)0)\r
-#define JVMPI_CLASS ((jint)2)\r
-#define JVMPI_BOOLEAN ((jint)4)\r
-#define JVMPI_CHAR ((jint)5)\r
-#define JVMPI_FLOAT ((jint)6)\r
-#define JVMPI_DOUBLE ((jint)7)\r
-#define JVMPI_BYTE ((jint)8)\r
-#define JVMPI_SHORT ((jint)9)\r
-#define JVMPI_INT ((jint)10)\r
-#define JVMPI_LONG ((jint)11) \r
-\r
-/*\r
- * Monitor dump constants.\r
- */\r
-\r
-#define JVMPI_MONITOR_JAVA 0x01\r
-#define JVMPI_MONITOR_RAW 0x02\r
-\r
-/*\r
- * Heap dump constants.\r
- */\r
-#define JVMPI_GC_ROOT_UNKNOWN 0xff\r
-#define JVMPI_GC_ROOT_JNI_GLOBAL 0x01\r
-#define JVMPI_GC_ROOT_JNI_LOCAL 0x02\r
-#define JVMPI_GC_ROOT_JAVA_FRAME 0x03\r
-#define JVMPI_GC_ROOT_NATIVE_STACK 0x04\r
-#define JVMPI_GC_ROOT_STICKY_CLASS 0x05\r
-#define JVMPI_GC_ROOT_THREAD_BLOCK 0x06\r
-#define JVMPI_GC_ROOT_MONITOR_USED 0x07\r
-#define JVMPI_GC_ROOT_THREAD_OBJ 0x08\r
-\r
-#define JVMPI_GC_CLASS_DUMP 0x20\r
-#define JVMPI_GC_INSTANCE_DUMP 0x21 \r
-#define JVMPI_GC_OBJ_ARRAY_DUMP 0x22\r
-#define JVMPI_GC_PRIM_ARRAY_DUMP 0x23\r
-\r
-/*\r
- * Dump levels\r
- */\r
-#define JVMPI_DUMP_LEVEL_0 ((jint)0)\r
-#define JVMPI_DUMP_LEVEL_1 ((jint)1)\r
-#define JVMPI_DUMP_LEVEL_2 ((jint)2)\r
-\r
-/* Types used in dumps -\r
- *\r
- * u1: 1 byte\r
- * u2: 2 bytes\r
- * u4: 4 bytes\r
- * u8: 8 bytes\r
- *\r
- * ty: u1 where:\r
- * JVMPI_CLASS: object\r
- * JVMPI_BOOLEAN: boolean\r
- * JVMPI_CHAR: char\r
- * JVMPI_FLOAT: float\r
- * JVMPI_DOUBLE: double\r
- * JVMPI_BYTE: byte\r
- * JVMPI_SHORT: short\r
- * JVMPI_INT: int\r
- * JVMPI_LONG: long\r
- *\r
- * vl: values, exact type depends on the type of the value:\r
- * JVMPI_BOOLEAN & JVMPI_BYTE: u1\r
- * JVMPI_SHORT & JVMPI_CHAR: u2\r
- * JVMPI_INT & JVMPI_FLOAT: u4\r
- * JVMPI_LONG & JVMPI_DOUBLE: u8\r
- * JVMPI_CLASS: jobjectID\r
- */\r
-\r
-/* Format of the monitor dump buffer:\r
- *\r
- * u1 monitor type\r
- *\r
- * JVMPI_MONITOR_JAVA Java monitor\r
- *\r
- * jobjectID object\r
- * JNIEnv * owner thread\r
- * u4 entry count\r
- * u4 # of threads waiting to enter\r
- * [JNIEnv *]* threads waiting to enter\r
- * u4 # of threads waiting to be notified\r
- * [JNIEnv *]* threads waiting to be notified\r
- *\r
- * JVMPI_MONITOR_RAW raw monitor\r
- *\r
- * char * name\r
- * JVMPI_RawMonitor raw monitor\r
- * JNIEnv * owner thread\r
- * u4 entry count\r
- * u4 # of threads waiting to enter\r
- * [JNIEnv *]* threads waiting to enter\r
- * u4 # of threads waiting to be notified\r
- * [JNIEnv *]* threads waiting to be notified\r
- */\r
-\r
-/* Format of the heap dump buffer depends on the dump level \r
- * specified in the JVMPI_HeapDumpArg passed to RequestEvent as arg. \r
- * The default is JVMPI_DUMP_LEVEL_2.\r
- *\r
- * JVMPI_DUMP_LEVEL_0:\r
- * \r
- * u1 object type (JVMPI_CLASS ...)\r
- * jobjectID object\r
- *\r
- * JVMPI_DUMP_LEVEL_1 and JVMPI_DUMP_LEVEL_2 use the following format: \r
- * In the case of JVMPI_DUMP_LEVEL_1 the values of primitive fields in object \r
- * instance dumps , the values of primitive statics in class dumps and the \r
- * values of primitive arrays are excluded. JVMPI_DUMP_LEVEL_2 includes the\r
- * primitive values.\r
- *\r
- * u1 record type\r
- *\r
- * JVMPI_GC_ROOT_UNKNOWN unknown root\r
- *\r
- * jobjectID object\r
- *\r
- * JVMPI_GC_ROOT_JNI_GLOBAL JNI global ref root\r
- *\r
- * jobjectID object\r
- * jobject JNI global reference\r
- *\r
- * JVMPI_GC_ROOT_JNI_LOCAL JNI local ref\r
- *\r
- * jobjectID object\r
- * JNIEnv * thread\r
- * u4 frame # in stack trace (-1 for empty)\r
- *\r
- * JVMPI_GC_ROOT_JAVA_FRAME Java stack frame\r
- *\r
- * jobjectID object\r
- * JNIEnv * thread\r
- * u4 frame # in stack trace (-1 for empty)\r
- *\r
- * JVMPI_GC_ROOT_NATIVE_STACK Native stack\r
- *\r
- * jobjectID object\r
- * JNIEnv * thread\r
- *\r
- * JVMPI_GC_ROOT_STICKY_CLASS System class\r
- *\r
- * jobjectID class object\r
- *\r
- * JVMPI_GC_ROOT_THREAD_BLOCK Reference from thread block\r
- *\r
- * jobjectID thread object\r
- * JNIEnv * thread\r
- *\r
- * JVMPI_GC_ROOT_MONITOR_USED Busy monitor\r
- *\r
- * jobjectID object\r
- *\r
- * JVMPI_GC_CLASS_DUMP dump of a class object\r
- *\r
- * jobjectID class\r
- * jobjectID super\r
- * jobjectID class loader\r
- * jobjectID signers\r
- * jobjectID protection domain\r
- * jobjectID class name\r
- * void * reserved\r
- *\r
- * u4 instance size (in bytes)\r
- *\r
- * [jobjectID]* interfaces\r
- *\r
- * u2 size of constant pool\r
- * [u2, constant pool index,\r
- * ty, type, \r
- * vl]* value\r
- *\r
- * [vl]* static field values\r
- *\r
- * JVMPI_GC_INSTANCE_DUMP dump of a normal object\r
- *\r
- * jobjectID object\r
- * jobjectID class\r
- * u4 number of bytes that follow\r
- * [vl]* instance field values (class, followed\r
- * by super, super's super ...)\r
- *\r
- * JVMPI_GC_OBJ_ARRAY_DUMP dump of an object array\r
- *\r
- * jobjectID array object\r
- * u4 number of elements\r
- * jobjectID element class\r
- * [jobjectID]* elements\r
- *\r
- * JVMPI_GC_PRIM_ARRAY_DUMP dump of a primitive array\r
- *\r
- * jobjectID array object\r
- * u4 number of elements\r
- * ty element type\r
- * [vl]* elements\r
- *\r
- */\r
-\r
-/* Format of the dump received in JVMPI_EVENT_OBJECT_DUMP:\r
- * All the records have JVMPI_DUMP_LEVEL_2 information.\r
- *\r
- * u1 record type\r
- *\r
- * followed by a:\r
- *\r
- * JVMPI_GC_CLASS_DUMP,\r
- * JVMPI_GC_INSTANCE_DUMP,\r
- * JVMPI_GC_OBJ_ARRAY_DUMP, or\r
- * JVMPI_GC_PRIM_ARRAY_DUMP record.\r
- */\r
-\r
-#endif /* !_JAVASOFT_JVMPI_H_ */\r
+++ /dev/null
-#ifdef USE_PRAGMA_IDENT_HDR\r
-#pragma ident "@(#)jvmtiLib.xsl 1.32 04/06/01 20:19:53 JVM"\r
-#endif\r
-/*\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
- /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */\r
-\r
-\r
- /* Include file for the Java(tm) Virtual Machine Tool Interface */\r
-\r
-#ifndef _JAVA_JVMTI_H_\r
-#define _JAVA_JVMTI_H_\r
-\r
-#include "jni.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-enum {\r
- JVMTI_VERSION_1 = 0x30010000,\r
- JVMTI_VERSION_1_0 = 0x30010000,\r
-\r
- JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (0 * 0x100) + 33 /* version: 1.0.33 */\r
-};\r
-\r
-JNIEXPORT jint JNICALL \r
-Agent_OnLoad(JavaVM *vm, char *options, void *reserved);\r
-\r
-JNIEXPORT void JNICALL \r
-Agent_OnUnload(JavaVM *vm);\r
-\r
- /* Forward declaration of the environment */\r
- \r
-struct _jvmtiEnv;\r
-\r
-struct jvmtiInterface_1_;\r
- \r
-#ifdef __cplusplus\r
-typedef _jvmtiEnv jvmtiEnv;\r
-#else\r
-typedef const struct jvmtiInterface_1_ *jvmtiEnv;\r
-#endif /* __cplusplus */\r
-\r
-/* Derived Base Types */\r
-\r
-typedef jobject jthread;\r
-typedef jobject jthreadGroup;\r
-typedef jlong jlocation;\r
-struct _jrawMonitorID;\r
-typedef struct _jrawMonitorID *jrawMonitorID;\r
-typedef struct JNINativeInterface_ jniNativeInterface;\r
-\r
- /* Constants */\r
-\r
-\r
- /* Thread State Flags */ \r
-\r
-enum {\r
- JVMTI_THREAD_STATE_ALIVE = 0x0001,\r
- JVMTI_THREAD_STATE_TERMINATED = 0x0002,\r
- JVMTI_THREAD_STATE_RUNNABLE = 0x0004,\r
- JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,\r
- JVMTI_THREAD_STATE_WAITING = 0x0080,\r
- JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,\r
- JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,\r
- JVMTI_THREAD_STATE_SLEEPING = 0x0040,\r
- JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,\r
- JVMTI_THREAD_STATE_PARKED = 0x0200,\r
- JVMTI_THREAD_STATE_SUSPENDED = 0x100000,\r
- JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,\r
- JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,\r
- JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,\r
- JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,\r
- JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000\r
-};\r
-\r
- /* java.lang.Thread.State Conversion Masks */ \r
-\r
-enum {\r
- JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,\r
- JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,\r
- JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,\r
- JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,\r
- JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,\r
- JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,\r
- JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT\r
-};\r
-\r
- /* Thread Priority Constants */ \r
-\r
-enum {\r
- JVMTI_THREAD_MIN_PRIORITY = 1,\r
- JVMTI_THREAD_NORM_PRIORITY = 5,\r
- JVMTI_THREAD_MAX_PRIORITY = 10\r
-};\r
-\r
- /* Heap Object Filter Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_HEAP_OBJECT_TAGGED = 1,\r
- JVMTI_HEAP_OBJECT_UNTAGGED = 2,\r
- JVMTI_HEAP_OBJECT_EITHER = 3\r
-} jvmtiHeapObjectFilter;\r
-\r
- /* Heap Root Kind Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,\r
- JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,\r
- JVMTI_HEAP_ROOT_MONITOR = 3,\r
- JVMTI_HEAP_ROOT_STACK_LOCAL = 4,\r
- JVMTI_HEAP_ROOT_JNI_LOCAL = 5,\r
- JVMTI_HEAP_ROOT_THREAD = 6,\r
- JVMTI_HEAP_ROOT_OTHER = 7\r
-} jvmtiHeapRootKind;\r
-\r
- /* Object Reference Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_REFERENCE_CLASS = 1,\r
- JVMTI_REFERENCE_FIELD = 2,\r
- JVMTI_REFERENCE_ARRAY_ELEMENT = 3,\r
- JVMTI_REFERENCE_CLASS_LOADER = 4,\r
- JVMTI_REFERENCE_SIGNERS = 5,\r
- JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,\r
- JVMTI_REFERENCE_INTERFACE = 7,\r
- JVMTI_REFERENCE_STATIC_FIELD = 8,\r
- JVMTI_REFERENCE_CONSTANT_POOL = 9\r
-} jvmtiObjectReferenceKind;\r
-\r
- /* Iteration Control Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_ITERATION_CONTINUE = 1,\r
- JVMTI_ITERATION_IGNORE = 2,\r
- JVMTI_ITERATION_ABORT = 0\r
-} jvmtiIterationControl;\r
-\r
- /* Class Status Flags */ \r
-\r
-enum {\r
- JVMTI_CLASS_STATUS_VERIFIED = 1,\r
- JVMTI_CLASS_STATUS_PREPARED = 2,\r
- JVMTI_CLASS_STATUS_INITIALIZED = 4,\r
- JVMTI_CLASS_STATUS_ERROR = 8,\r
- JVMTI_CLASS_STATUS_ARRAY = 16,\r
- JVMTI_CLASS_STATUS_PRIMITIVE = 32\r
-};\r
-\r
- /* Event Enable/Disable */ \r
-\r
-typedef enum {\r
- JVMTI_ENABLE = 1,\r
- JVMTI_DISABLE = 0\r
-} jvmtiEventMode;\r
-\r
- /* Extension Function/Event Parameter Types */ \r
-\r
-typedef enum {\r
- JVMTI_TYPE_JBYTE = 101,\r
- JVMTI_TYPE_JCHAR = 102,\r
- JVMTI_TYPE_JSHORT = 103,\r
- JVMTI_TYPE_JINT = 104,\r
- JVMTI_TYPE_JLONG = 105,\r
- JVMTI_TYPE_JFLOAT = 106,\r
- JVMTI_TYPE_JDOUBLE = 107,\r
- JVMTI_TYPE_JBOOLEAN = 108,\r
- JVMTI_TYPE_JOBJECT = 109,\r
- JVMTI_TYPE_JTHREAD = 110,\r
- JVMTI_TYPE_JCLASS = 111,\r
- JVMTI_TYPE_JVALUE = 112,\r
- JVMTI_TYPE_JFIELDID = 113,\r
- JVMTI_TYPE_JMETHODID = 114,\r
- JVMTI_TYPE_CCHAR = 115,\r
- JVMTI_TYPE_CVOID = 116,\r
- JVMTI_TYPE_JNIENV = 117\r
-} jvmtiParamTypes;\r
-\r
- /* Extension Function/Event Parameter Kinds */ \r
-\r
-typedef enum {\r
- JVMTI_KIND_IN = 91,\r
- JVMTI_KIND_IN_PTR = 92,\r
- JVMTI_KIND_IN_BUF = 93,\r
- JVMTI_KIND_ALLOC_BUF = 94,\r
- JVMTI_KIND_ALLOC_ALLOC_BUF = 95,\r
- JVMTI_KIND_OUT = 96,\r
- JVMTI_KIND_OUT_BUF = 97\r
-} jvmtiParamKind;\r
-\r
- /* Timer Kinds */ \r
-\r
-typedef enum {\r
- JVMTI_TIMER_USER_CPU = 30,\r
- JVMTI_TIMER_TOTAL_CPU = 31,\r
- JVMTI_TIMER_ELAPSED = 32\r
-} jvmtiTimerKind;\r
-\r
- /* Phases of execution */ \r
-\r
-typedef enum {\r
- JVMTI_PHASE_ONLOAD = 1,\r
- JVMTI_PHASE_PRIMORDIAL = 2,\r
- JVMTI_PHASE_START = 6,\r
- JVMTI_PHASE_LIVE = 4,\r
- JVMTI_PHASE_DEAD = 8\r
-} jvmtiPhase;\r
-\r
- /* Version Interface Types */ \r
-\r
-enum {\r
- JVMTI_VERSION_INTERFACE_JNI = 0x00000000,\r
- JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000\r
-};\r
-\r
- /* Version Masks */ \r
-\r
-enum {\r
- JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,\r
- JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,\r
- JVMTI_VERSION_MASK_MINOR = 0x0000FF00,\r
- JVMTI_VERSION_MASK_MICRO = 0x000000FF\r
-};\r
-\r
- /* Version Shifts */ \r
-\r
-enum {\r
- JVMTI_VERSION_SHIFT_MAJOR = 16,\r
- JVMTI_VERSION_SHIFT_MINOR = 8,\r
- JVMTI_VERSION_SHIFT_MICRO = 0\r
-};\r
-\r
- /* Verbose Flag Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_VERBOSE_OTHER = 0,\r
- JVMTI_VERBOSE_GC = 1,\r
- JVMTI_VERBOSE_CLASS = 2,\r
- JVMTI_VERBOSE_JNI = 4\r
-} jvmtiVerboseFlag;\r
-\r
- /* JLocation Format Enumeration */ \r
-\r
-typedef enum {\r
- JVMTI_JLOCATION_JVMBCI = 1,\r
- JVMTI_JLOCATION_MACHINEPC = 2,\r
- JVMTI_JLOCATION_OTHER = 0\r
-} jvmtiJlocationFormat;\r
-\r
- /* Errors */\r
-\r
-typedef enum {\r
- JVMTI_ERROR_NONE = 0,\r
- JVMTI_ERROR_INVALID_THREAD = 10,\r
- JVMTI_ERROR_INVALID_THREAD_GROUP = 11,\r
- JVMTI_ERROR_INVALID_PRIORITY = 12,\r
- JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,\r
- JVMTI_ERROR_THREAD_SUSPENDED = 14,\r
- JVMTI_ERROR_THREAD_NOT_ALIVE = 15,\r
- JVMTI_ERROR_INVALID_OBJECT = 20,\r
- JVMTI_ERROR_INVALID_CLASS = 21,\r
- JVMTI_ERROR_CLASS_NOT_PREPARED = 22,\r
- JVMTI_ERROR_INVALID_METHODID = 23,\r
- JVMTI_ERROR_INVALID_LOCATION = 24,\r
- JVMTI_ERROR_INVALID_FIELDID = 25,\r
- JVMTI_ERROR_NO_MORE_FRAMES = 31,\r
- JVMTI_ERROR_OPAQUE_FRAME = 32,\r
- JVMTI_ERROR_TYPE_MISMATCH = 34,\r
- JVMTI_ERROR_INVALID_SLOT = 35,\r
- JVMTI_ERROR_DUPLICATE = 40,\r
- JVMTI_ERROR_NOT_FOUND = 41,\r
- JVMTI_ERROR_INVALID_MONITOR = 50,\r
- JVMTI_ERROR_NOT_MONITOR_OWNER = 51,\r
- JVMTI_ERROR_INTERRUPT = 52,\r
- JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,\r
- JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,\r
- JVMTI_ERROR_FAILS_VERIFICATION = 62,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,\r
- JVMTI_ERROR_INVALID_TYPESTATE = 65,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,\r
- JVMTI_ERROR_UNSUPPORTED_VERSION = 68,\r
- JVMTI_ERROR_NAMES_DONT_MATCH = 69,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,\r
- JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,\r
- JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,\r
- JVMTI_ERROR_NOT_AVAILABLE = 98,\r
- JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,\r
- JVMTI_ERROR_NULL_POINTER = 100,\r
- JVMTI_ERROR_ABSENT_INFORMATION = 101,\r
- JVMTI_ERROR_INVALID_EVENT_TYPE = 102,\r
- JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,\r
- JVMTI_ERROR_NATIVE_METHOD = 104,\r
- JVMTI_ERROR_OUT_OF_MEMORY = 110,\r
- JVMTI_ERROR_ACCESS_DENIED = 111,\r
- JVMTI_ERROR_WRONG_PHASE = 112,\r
- JVMTI_ERROR_INTERNAL = 113,\r
- JVMTI_ERROR_UNATTACHED_THREAD = 115,\r
- JVMTI_ERROR_INVALID_ENVIRONMENT = 116,\r
- JVMTI_ERROR_MAX = 116\r
-} jvmtiError;\r
-\r
- /* Event IDs */\r
-\r
-typedef enum {\r
- JVMTI_MIN_EVENT_TYPE_VAL = 50,\r
- JVMTI_EVENT_VM_INIT = 50,\r
- JVMTI_EVENT_VM_DEATH = 51,\r
- JVMTI_EVENT_THREAD_START = 52,\r
- JVMTI_EVENT_THREAD_END = 53,\r
- JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,\r
- JVMTI_EVENT_CLASS_LOAD = 55,\r
- JVMTI_EVENT_CLASS_PREPARE = 56,\r
- JVMTI_EVENT_VM_START = 57,\r
- JVMTI_EVENT_EXCEPTION = 58,\r
- JVMTI_EVENT_EXCEPTION_CATCH = 59,\r
- JVMTI_EVENT_SINGLE_STEP = 60,\r
- JVMTI_EVENT_FRAME_POP = 61,\r
- JVMTI_EVENT_BREAKPOINT = 62,\r
- JVMTI_EVENT_FIELD_ACCESS = 63,\r
- JVMTI_EVENT_FIELD_MODIFICATION = 64,\r
- JVMTI_EVENT_METHOD_ENTRY = 65,\r
- JVMTI_EVENT_METHOD_EXIT = 66,\r
- JVMTI_EVENT_NATIVE_METHOD_BIND = 67,\r
- JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,\r
- JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,\r
- JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,\r
- JVMTI_EVENT_DATA_DUMP_REQUEST = 71,\r
- JVMTI_EVENT_MONITOR_WAIT = 73,\r
- JVMTI_EVENT_MONITOR_WAITED = 74,\r
- JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,\r
- JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,\r
- JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,\r
- JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,\r
- JVMTI_EVENT_OBJECT_FREE = 83,\r
- JVMTI_EVENT_VM_OBJECT_ALLOC = 84,\r
- JVMTI_MAX_EVENT_TYPE_VAL = 84\r
-} jvmtiEvent;\r
-\r
-\r
- /* Function Types */\r
-\r
-typedef void (JNICALL *jvmtiStartFunction)\r
- (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)\r
- (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)\r
- (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)\r
- (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)\r
- (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);\r
-\r
-typedef jvmtiError (JNICALL *jvmtiExtensionFunction)\r
- (jvmtiEnv* jvmti_env, ...);\r
-\r
-typedef void (JNICALL *jvmtiExtensionEvent)\r
- (jvmtiEnv* jvmti_env, ...);\r
-\r
-\r
- /* Structure Types */\r
-\r
-typedef struct {\r
- char* name;\r
- jint priority;\r
- jboolean is_daemon;\r
- jthreadGroup thread_group;\r
- jobject context_class_loader;\r
-} jvmtiThreadInfo;\r
-\r
-typedef struct {\r
- jthreadGroup parent;\r
- char* name;\r
- jint max_priority;\r
- jboolean is_daemon;\r
-} jvmtiThreadGroupInfo;\r
-\r
-typedef struct {\r
- jmethodID method;\r
- jlocation location;\r
-} jvmtiFrameInfo;\r
-\r
-typedef struct {\r
- jthread thread;\r
- jint state;\r
- jvmtiFrameInfo* frame_buffer;\r
- jint frame_count;\r
-} jvmtiStackInfo;\r
-\r
-typedef struct {\r
- jclass klass;\r
- jint class_byte_count;\r
- const unsigned char* class_bytes;\r
-} jvmtiClassDefinition;\r
-\r
-typedef struct {\r
- jthread owner;\r
- jint entry_count;\r
- jint waiter_count;\r
- jthread* waiters;\r
- jint notify_waiter_count;\r
- jthread* notify_waiters;\r
-} jvmtiMonitorUsage;\r
-\r
-typedef struct {\r
- jlocation start_location;\r
- jint line_number;\r
-} jvmtiLineNumberEntry;\r
-\r
-typedef struct {\r
- jlocation start_location;\r
- jint length;\r
- char* name;\r
- char* signature;\r
- char* generic_signature;\r
- jint slot;\r
-} jvmtiLocalVariableEntry;\r
-\r
-typedef struct {\r
- char* name;\r
- jvmtiParamKind kind;\r
- jvmtiParamTypes base_type;\r
- jboolean null_ok;\r
-} jvmtiParamInfo;\r
-\r
-typedef struct {\r
- jvmtiExtensionFunction func;\r
- char* id;\r
- char* short_description;\r
- jint param_count;\r
- jvmtiParamInfo* params;\r
- jint error_count;\r
- jvmtiError* errors;\r
-} jvmtiExtensionFunctionInfo;\r
-\r
-typedef struct {\r
- jint extension_event_index;\r
- char* id;\r
- char* short_description;\r
- jint param_count;\r
- jvmtiParamInfo* params;\r
-} jvmtiExtensionEventInfo;\r
-\r
-typedef struct {\r
- jlong max_value;\r
- jboolean may_skip_forward;\r
- jboolean may_skip_backward;\r
- jvmtiTimerKind kind;\r
- jlong reserved1;\r
- jlong reserved2;\r
-} jvmtiTimerInfo;\r
-\r
-typedef struct {\r
- const void* start_address;\r
- jlocation location;\r
-} jvmtiAddrLocationMap;\r
-\r
-typedef struct {\r
- unsigned int can_tag_objects : 1;\r
- unsigned int can_generate_field_modification_events : 1;\r
- unsigned int can_generate_field_access_events : 1;\r
- unsigned int can_get_bytecodes : 1;\r
- unsigned int can_get_synthetic_attribute : 1;\r
- unsigned int can_get_owned_monitor_info : 1;\r
- unsigned int can_get_current_contended_monitor : 1;\r
- unsigned int can_get_monitor_info : 1;\r
- unsigned int can_pop_frame : 1;\r
- unsigned int can_redefine_classes : 1;\r
- unsigned int can_signal_thread : 1;\r
- unsigned int can_get_source_file_name : 1;\r
- unsigned int can_get_line_numbers : 1;\r
- unsigned int can_get_source_debug_extension : 1;\r
- unsigned int can_access_local_variables : 1;\r
- unsigned int can_maintain_original_method_order : 1;\r
- unsigned int can_generate_single_step_events : 1;\r
- unsigned int can_generate_exception_events : 1;\r
- unsigned int can_generate_frame_pop_events : 1;\r
- unsigned int can_generate_breakpoint_events : 1;\r
- unsigned int can_suspend : 1;\r
- unsigned int can_redefine_any_class : 1;\r
- unsigned int can_get_current_thread_cpu_time : 1;\r
- unsigned int can_get_thread_cpu_time : 1;\r
- unsigned int can_generate_method_entry_events : 1;\r
- unsigned int can_generate_method_exit_events : 1;\r
- unsigned int can_generate_all_class_hook_events : 1;\r
- unsigned int can_generate_compiled_method_load_events : 1;\r
- unsigned int can_generate_monitor_events : 1;\r
- unsigned int can_generate_vm_object_alloc_events : 1;\r
- unsigned int can_generate_native_method_bind_events : 1;\r
- unsigned int can_generate_garbage_collection_events : 1;\r
- unsigned int can_generate_object_free_events : 1;\r
- unsigned int : 15;\r
- unsigned int : 16;\r
- unsigned int : 16;\r
- unsigned int : 16;\r
- unsigned int : 16;\r
- unsigned int : 16;\r
-} jvmtiCapabilities;\r
-\r
-\r
- /* Event Definitions */\r
-\r
-typedef void (JNICALL *jvmtiEventReserved)(void);\r
-\r
-\r
-typedef void (JNICALL *jvmtiEventBreakpoint)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location);\r
-\r
-typedef void (JNICALL *jvmtiEventClassFileLoadHook)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jclass class_being_redefined, \r
- jobject loader, \r
- const char* name, \r
- jobject protection_domain, \r
- jint class_data_len, \r
- const unsigned char* class_data, \r
- jint* new_class_data_len, \r
- unsigned char** new_class_data);\r
-\r
-typedef void (JNICALL *jvmtiEventClassLoad)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jclass klass);\r
-\r
-typedef void (JNICALL *jvmtiEventClassPrepare)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jclass klass);\r
-\r
-typedef void (JNICALL *jvmtiEventCompiledMethodLoad)\r
- (jvmtiEnv *jvmti_env, \r
- jmethodID method, \r
- jint code_size, \r
- const void* code_addr, \r
- jint map_length, \r
- const jvmtiAddrLocationMap* map, \r
- const void* compile_info);\r
-\r
-typedef void (JNICALL *jvmtiEventCompiledMethodUnload)\r
- (jvmtiEnv *jvmti_env, \r
- jmethodID method, \r
- const void* code_addr);\r
-\r
-typedef void (JNICALL *jvmtiEventDataDumpRequest)\r
- (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)\r
- (jvmtiEnv *jvmti_env, \r
- const char* name, \r
- const void* address, \r
- jint length);\r
-\r
-typedef void (JNICALL *jvmtiEventException)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location, \r
- jobject exception, \r
- jmethodID catch_method, \r
- jlocation catch_location);\r
-\r
-typedef void (JNICALL *jvmtiEventExceptionCatch)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location, \r
- jobject exception);\r
-\r
-typedef void (JNICALL *jvmtiEventFieldAccess)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location, \r
- jclass field_klass, \r
- jobject object, \r
- jfieldID field);\r
-\r
-typedef void (JNICALL *jvmtiEventFieldModification)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location, \r
- jclass field_klass, \r
- jobject object, \r
- jfieldID field, \r
- char signature_type, \r
- jvalue new_value);\r
-\r
-typedef void (JNICALL *jvmtiEventFramePop)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jboolean was_popped_by_exception);\r
-\r
-typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)\r
- (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventGarbageCollectionStart)\r
- (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventMethodEntry)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method);\r
-\r
-typedef void (JNICALL *jvmtiEventMethodExit)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jboolean was_popped_by_exception, \r
- jvalue return_value);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorContendedEnter)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jobject object);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorContendedEntered)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jobject object);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorWait)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jobject object, \r
- jlong timeout);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorWaited)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jobject object, \r
- jboolean timed_out);\r
-\r
-typedef void (JNICALL *jvmtiEventNativeMethodBind)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- void* address, \r
- void** new_address_ptr);\r
-\r
-typedef void (JNICALL *jvmtiEventObjectFree)\r
- (jvmtiEnv *jvmti_env, \r
- jlong tag);\r
-\r
-typedef void (JNICALL *jvmtiEventSingleStep)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jmethodID method, \r
- jlocation location);\r
-\r
-typedef void (JNICALL *jvmtiEventThreadEnd)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventThreadStart)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventVMDeath)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env);\r
-\r
-typedef void (JNICALL *jvmtiEventVMInit)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventVMObjectAlloc)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env, \r
- jthread thread, \r
- jobject object, \r
- jclass object_klass, \r
- jlong size);\r
-\r
-typedef void (JNICALL *jvmtiEventVMStart)\r
- (jvmtiEnv *jvmti_env, \r
- JNIEnv* jni_env);\r
-\r
- /* Event Callback Structure */\r
-\r
-typedef struct {\r
- /* 50 : VM Initialization Event */\r
- jvmtiEventVMInit VMInit;\r
- /* 51 : VM Death Event */\r
- jvmtiEventVMDeath VMDeath;\r
- /* 52 : Thread Start */\r
- jvmtiEventThreadStart ThreadStart;\r
- /* 53 : Thread End */\r
- jvmtiEventThreadEnd ThreadEnd;\r
- /* 54 : Class File Load Hook */\r
- jvmtiEventClassFileLoadHook ClassFileLoadHook;\r
- /* 55 : Class Load */\r
- jvmtiEventClassLoad ClassLoad;\r
- /* 56 : Class Prepare */\r
- jvmtiEventClassPrepare ClassPrepare;\r
- /* 57 : VM Start Event */\r
- jvmtiEventVMStart VMStart;\r
- /* 58 : Exception */\r
- jvmtiEventException Exception;\r
- /* 59 : Exception Catch */\r
- jvmtiEventExceptionCatch ExceptionCatch;\r
- /* 60 : Single Step */\r
- jvmtiEventSingleStep SingleStep;\r
- /* 61 : Frame Pop */\r
- jvmtiEventFramePop FramePop;\r
- /* 62 : Breakpoint */\r
- jvmtiEventBreakpoint Breakpoint;\r
- /* 63 : Field Access */\r
- jvmtiEventFieldAccess FieldAccess;\r
- /* 64 : Field Modification */\r
- jvmtiEventFieldModification FieldModification;\r
- /* 65 : Method Entry */\r
- jvmtiEventMethodEntry MethodEntry;\r
- /* 66 : Method Exit */\r
- jvmtiEventMethodExit MethodExit;\r
- /* 67 : Native Method Bind */\r
- jvmtiEventNativeMethodBind NativeMethodBind;\r
- /* 68 : Compiled Method Load */\r
- jvmtiEventCompiledMethodLoad CompiledMethodLoad;\r
- /* 69 : Compiled Method Unload */\r
- jvmtiEventCompiledMethodUnload CompiledMethodUnload;\r
- /* 70 : Dynamic Code Generated */\r
- jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;\r
- /* 71 : Data Dump Request */\r
- jvmtiEventDataDumpRequest DataDumpRequest;\r
- /* 72 */\r
- jvmtiEventReserved reserved72;\r
- /* 73 : Monitor Wait */\r
- jvmtiEventMonitorWait MonitorWait;\r
- /* 74 : Monitor Waited */\r
- jvmtiEventMonitorWaited MonitorWaited;\r
- /* 75 : Monitor Contended Enter */\r
- jvmtiEventMonitorContendedEnter MonitorContendedEnter;\r
- /* 76 : Monitor Contended Entered */\r
- jvmtiEventMonitorContendedEntered MonitorContendedEntered;\r
- /* 77 */\r
- jvmtiEventReserved reserved77;\r
- /* 78 */\r
- jvmtiEventReserved reserved78;\r
- /* 79 */\r
- jvmtiEventReserved reserved79;\r
- /* 80 */\r
- jvmtiEventReserved reserved80;\r
- /* 81 : Garbage Collection Start */\r
- jvmtiEventGarbageCollectionStart GarbageCollectionStart;\r
- /* 82 : Garbage Collection Finish */\r
- jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;\r
- /* 83 : Object Free */\r
- jvmtiEventObjectFree ObjectFree;\r
- /* 84 : VM Object Allocation */\r
- jvmtiEventVMObjectAlloc VMObjectAlloc;\r
-} jvmtiEventCallbacks;\r
-\r
-\r
- /* Function Interface */\r
- \r
-typedef struct jvmtiInterface_1_ {\r
-\r
- /* 1 : RESERVED */\r
- void *reserved1;\r
-\r
- /* 2 : Set Event Notification Mode */\r
- jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, \r
- jvmtiEventMode mode, \r
- jvmtiEvent event_type, \r
- jthread event_thread, \r
- ...);\r
-\r
- /* 3 : RESERVED */\r
- void *reserved3;\r
-\r
- /* 4 : Get All Threads */\r
- jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, \r
- jint* threads_count_ptr, \r
- jthread** threads_ptr);\r
-\r
- /* 5 : Suspend Thread */\r
- jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, \r
- jthread thread);\r
-\r
- /* 6 : Resume Thread */\r
- jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, \r
- jthread thread);\r
-\r
- /* 7 : Stop Thread */\r
- jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, \r
- jthread thread, \r
- jobject exception);\r
-\r
- /* 8 : Interrupt Thread */\r
- jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, \r
- jthread thread);\r
-\r
- /* 9 : Get Thread Info */\r
- jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, \r
- jthread thread, \r
- jvmtiThreadInfo* info_ptr);\r
-\r
- /* 10 : Get Owned Monitor Info */\r
- jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, \r
- jthread thread, \r
- jint* owned_monitor_count_ptr, \r
- jobject** owned_monitors_ptr);\r
-\r
- /* 11 : Get Current Contended Monitor */\r
- jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, \r
- jthread thread, \r
- jobject* monitor_ptr);\r
-\r
- /* 12 : Run Agent Thread */\r
- jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, \r
- jthread thread, \r
- jvmtiStartFunction proc, \r
- const void* arg, \r
- jint priority);\r
-\r
- /* 13 : Get Top Thread Groups */\r
- jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, \r
- jint* group_count_ptr, \r
- jthreadGroup** groups_ptr);\r
-\r
- /* 14 : Get Thread Group Info */\r
- jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, \r
- jthreadGroup group, \r
- jvmtiThreadGroupInfo* info_ptr);\r
-\r
- /* 15 : Get Thread Group Children */\r
- jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, \r
- jthreadGroup group, \r
- jint* thread_count_ptr, \r
- jthread** threads_ptr, \r
- jint* group_count_ptr, \r
- jthreadGroup** groups_ptr);\r
-\r
- /* 16 : Get Frame Count */\r
- jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, \r
- jthread thread, \r
- jint* count_ptr);\r
-\r
- /* 17 : Get Thread State */\r
- jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, \r
- jthread thread, \r
- jint* thread_state_ptr);\r
-\r
- /* 18 : RESERVED */\r
- void *reserved18;\r
-\r
- /* 19 : Get Frame Location */\r
- jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jmethodID* method_ptr, \r
- jlocation* location_ptr);\r
-\r
- /* 20 : Notify Frame Pop */\r
- jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth);\r
-\r
- /* 21 : Get Local Variable - Object */\r
- jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jobject* value_ptr);\r
-\r
- /* 22 : Get Local Variable - Int */\r
- jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jint* value_ptr);\r
-\r
- /* 23 : Get Local Variable - Long */\r
- jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jlong* value_ptr);\r
-\r
- /* 24 : Get Local Variable - Float */\r
- jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jfloat* value_ptr);\r
-\r
- /* 25 : Get Local Variable - Double */\r
- jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jdouble* value_ptr);\r
-\r
- /* 26 : Set Local Variable - Object */\r
- jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jobject value);\r
-\r
- /* 27 : Set Local Variable - Int */\r
- jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jint value);\r
-\r
- /* 28 : Set Local Variable - Long */\r
- jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jlong value);\r
-\r
- /* 29 : Set Local Variable - Float */\r
- jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jfloat value);\r
-\r
- /* 30 : Set Local Variable - Double */\r
- jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, \r
- jthread thread, \r
- jint depth, \r
- jint slot, \r
- jdouble value);\r
-\r
- /* 31 : Create Raw Monitor */\r
- jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, \r
- const char* name, \r
- jrawMonitorID* monitor_ptr);\r
-\r
- /* 32 : Destroy Raw Monitor */\r
- jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, \r
- jrawMonitorID monitor);\r
-\r
- /* 33 : Raw Monitor Enter */\r
- jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, \r
- jrawMonitorID monitor);\r
-\r
- /* 34 : Raw Monitor Exit */\r
- jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, \r
- jrawMonitorID monitor);\r
-\r
- /* 35 : Raw Monitor Wait */\r
- jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, \r
- jrawMonitorID monitor, \r
- jlong millis);\r
-\r
- /* 36 : Raw Monitor Notify */\r
- jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, \r
- jrawMonitorID monitor);\r
-\r
- /* 37 : Raw Monitor Notify All */\r
- jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, \r
- jrawMonitorID monitor);\r
-\r
- /* 38 : Set Breakpoint */\r
- jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, \r
- jmethodID method, \r
- jlocation location);\r
-\r
- /* 39 : Clear Breakpoint */\r
- jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, \r
- jmethodID method, \r
- jlocation location);\r
-\r
- /* 40 : RESERVED */\r
- void *reserved40;\r
-\r
- /* 41 : Set Field Access Watch */\r
- jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field);\r
-\r
- /* 42 : Clear Field Access Watch */\r
- jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field);\r
-\r
- /* 43 : Set Field Modification Watch */\r
- jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field);\r
-\r
- /* 44 : Clear Field Modification Watch */\r
- jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field);\r
-\r
- /* 45 : RESERVED */\r
- void *reserved45;\r
-\r
- /* 46 : Allocate */\r
- jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, \r
- jlong size, \r
- unsigned char** mem_ptr);\r
-\r
- /* 47 : Deallocate */\r
- jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, \r
- unsigned char* mem);\r
-\r
- /* 48 : Get Class Signature */\r
- jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, \r
- jclass klass, \r
- char** signature_ptr, \r
- char** generic_ptr);\r
-\r
- /* 49 : Get Class Status */\r
- jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, \r
- jclass klass, \r
- jint* status_ptr);\r
-\r
- /* 50 : Get Source File Name */\r
- jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, \r
- jclass klass, \r
- char** source_name_ptr);\r
-\r
- /* 51 : Get Class Modifiers */\r
- jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, \r
- jclass klass, \r
- jint* modifiers_ptr);\r
-\r
- /* 52 : Get Class Methods */\r
- jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, \r
- jclass klass, \r
- jint* method_count_ptr, \r
- jmethodID** methods_ptr);\r
-\r
- /* 53 : Get Class Fields */\r
- jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, \r
- jclass klass, \r
- jint* field_count_ptr, \r
- jfieldID** fields_ptr);\r
-\r
- /* 54 : Get Implemented Interfaces */\r
- jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, \r
- jclass klass, \r
- jint* interface_count_ptr, \r
- jclass** interfaces_ptr);\r
-\r
- /* 55 : Is Interface */\r
- jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, \r
- jclass klass, \r
- jboolean* is_interface_ptr);\r
-\r
- /* 56 : Is Array Class */\r
- jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, \r
- jclass klass, \r
- jboolean* is_array_class_ptr);\r
-\r
- /* 57 : Get Class Loader */\r
- jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, \r
- jclass klass, \r
- jobject* classloader_ptr);\r
-\r
- /* 58 : Get Object Hash Code */\r
- jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, \r
- jobject object, \r
- jint* hash_code_ptr);\r
-\r
- /* 59 : Get Object Monitor Usage */\r
- jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, \r
- jobject object, \r
- jvmtiMonitorUsage* info_ptr);\r
-\r
- /* 60 : Get Field Name (and Signature) */\r
- jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field, \r
- char** name_ptr, \r
- char** signature_ptr, \r
- char** generic_ptr);\r
-\r
- /* 61 : Get Field Declaring Class */\r
- jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field, \r
- jclass* declaring_class_ptr);\r
-\r
- /* 62 : Get Field Modifiers */\r
- jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field, \r
- jint* modifiers_ptr);\r
-\r
- /* 63 : Is Field Synthetic */\r
- jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, \r
- jclass klass, \r
- jfieldID field, \r
- jboolean* is_synthetic_ptr);\r
-\r
- /* 64 : Get Method Name (and Signature) */\r
- jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, \r
- jmethodID method, \r
- char** name_ptr, \r
- char** signature_ptr, \r
- char** generic_ptr);\r
-\r
- /* 65 : Get Method Declaring Class */\r
- jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, \r
- jmethodID method, \r
- jclass* declaring_class_ptr);\r
-\r
- /* 66 : Get Method Modifiers */\r
- jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* modifiers_ptr);\r
-\r
- /* 67 : RESERVED */\r
- void *reserved67;\r
-\r
- /* 68 : Get Max Locals */\r
- jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* max_ptr);\r
-\r
- /* 69 : Get Arguments Size */\r
- jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* size_ptr);\r
-\r
- /* 70 : Get Line Number Table */\r
- jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* entry_count_ptr, \r
- jvmtiLineNumberEntry** table_ptr);\r
-\r
- /* 71 : Get Method Location */\r
- jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, \r
- jmethodID method, \r
- jlocation* start_location_ptr, \r
- jlocation* end_location_ptr);\r
-\r
- /* 72 : Get Local Variable Table */\r
- jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* entry_count_ptr, \r
- jvmtiLocalVariableEntry** table_ptr);\r
-\r
- /* 73 : RESERVED */\r
- void *reserved73;\r
-\r
- /* 74 : RESERVED */\r
- void *reserved74;\r
-\r
- /* 75 : Get Bytecodes */\r
- jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, \r
- jmethodID method, \r
- jint* bytecode_count_ptr, \r
- unsigned char** bytecodes_ptr);\r
-\r
- /* 76 : Is Method Native */\r
- jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, \r
- jmethodID method, \r
- jboolean* is_native_ptr);\r
-\r
- /* 77 : Is Method Synthetic */\r
- jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, \r
- jmethodID method, \r
- jboolean* is_synthetic_ptr);\r
-\r
- /* 78 : Get Loaded Classes */\r
- jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, \r
- jint* class_count_ptr, \r
- jclass** classes_ptr);\r
-\r
- /* 79 : Get Classloader Classes */\r
- jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, \r
- jobject initiating_loader, \r
- jint* class_count_ptr, \r
- jclass** classes_ptr);\r
-\r
- /* 80 : Pop Frame */\r
- jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, \r
- jthread thread);\r
-\r
- /* 81 : RESERVED */\r
- void *reserved81;\r
-\r
- /* 82 : RESERVED */\r
- void *reserved82;\r
-\r
- /* 83 : RESERVED */\r
- void *reserved83;\r
-\r
- /* 84 : RESERVED */\r
- void *reserved84;\r
-\r
- /* 85 : RESERVED */\r
- void *reserved85;\r
-\r
- /* 86 : RESERVED */\r
- void *reserved86;\r
-\r
- /* 87 : Redefine Classes */\r
- jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, \r
- jint class_count, \r
- const jvmtiClassDefinition* class_definitions);\r
-\r
- /* 88 : Get Version Number */\r
- jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, \r
- jint* version_ptr);\r
-\r
- /* 89 : Get Capabilities */\r
- jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, \r
- jvmtiCapabilities* capabilities_ptr);\r
-\r
- /* 90 : Get Source Debug Extension */\r
- jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, \r
- jclass klass, \r
- char** source_debug_extension_ptr);\r
-\r
- /* 91 : Is Method Obsolete */\r
- jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, \r
- jmethodID method, \r
- jboolean* is_obsolete_ptr);\r
-\r
- /* 92 : Suspend Thread List */\r
- jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, \r
- jint request_count, \r
- const jthread* request_list, \r
- jvmtiError* results);\r
-\r
- /* 93 : Resume Thread List */\r
- jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, \r
- jint request_count, \r
- const jthread* request_list, \r
- jvmtiError* results);\r
-\r
- /* 94 : RESERVED */\r
- void *reserved94;\r
-\r
- /* 95 : RESERVED */\r
- void *reserved95;\r
-\r
- /* 96 : RESERVED */\r
- void *reserved96;\r
-\r
- /* 97 : RESERVED */\r
- void *reserved97;\r
-\r
- /* 98 : RESERVED */\r
- void *reserved98;\r
-\r
- /* 99 : RESERVED */\r
- void *reserved99;\r
-\r
- /* 100 : Get All Stack Traces */\r
- jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, \r
- jint max_frame_count, \r
- jvmtiStackInfo** stack_info_ptr, \r
- jint* thread_count_ptr);\r
-\r
- /* 101 : Get Thread List Stack Traces */\r
- jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, \r
- jint thread_count, \r
- const jthread* thread_list, \r
- jint max_frame_count, \r
- jvmtiStackInfo** stack_info_ptr);\r
-\r
- /* 102 : Get Thread Local Storage */\r
- jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, \r
- jthread thread, \r
- void** data_ptr);\r
-\r
- /* 103 : Set Thread Local Storage */\r
- jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, \r
- jthread thread, \r
- const void* data);\r
-\r
- /* 104 : Get Stack Trace */\r
- jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, \r
- jthread thread, \r
- jint start_depth, \r
- jint max_frame_count, \r
- jvmtiFrameInfo* frame_buffer, \r
- jint* count_ptr);\r
-\r
- /* 105 : RESERVED */\r
- void *reserved105;\r
-\r
- /* 106 : Get Tag */\r
- jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, \r
- jobject object, \r
- jlong* tag_ptr);\r
-\r
- /* 107 : Set Tag */\r
- jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, \r
- jobject object, \r
- jlong tag);\r
-\r
- /* 108 : Force Garbage Collection */\r
- jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);\r
-\r
- /* 109 : Iterate Over Objects Reachable From Object */\r
- jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, \r
- jobject object, \r
- jvmtiObjectReferenceCallback object_reference_callback, \r
- void* user_data);\r
-\r
- /* 110 : Iterate Over Reachable Objects */\r
- jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, \r
- jvmtiHeapRootCallback heap_root_callback, \r
- jvmtiStackReferenceCallback stack_ref_callback, \r
- jvmtiObjectReferenceCallback object_ref_callback, \r
- void* user_data);\r
-\r
- /* 111 : Iterate Over Heap */\r
- jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, \r
- jvmtiHeapObjectFilter object_filter, \r
- jvmtiHeapObjectCallback heap_object_callback, \r
- void* user_data);\r
-\r
- /* 112 : Iterate Over Instances Of Class */\r
- jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, \r
- jclass klass, \r
- jvmtiHeapObjectFilter object_filter, \r
- jvmtiHeapObjectCallback heap_object_callback, \r
- void* user_data);\r
-\r
- /* 113 : RESERVED */\r
- void *reserved113;\r
-\r
- /* 114 : Get Objects With Tags */\r
- jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, \r
- jint tag_count, \r
- const jlong* tags, \r
- jint* count_ptr, \r
- jobject** object_result_ptr, \r
- jlong** tag_result_ptr);\r
-\r
- /* 115 : RESERVED */\r
- void *reserved115;\r
-\r
- /* 116 : RESERVED */\r
- void *reserved116;\r
-\r
- /* 117 : RESERVED */\r
- void *reserved117;\r
-\r
- /* 118 : RESERVED */\r
- void *reserved118;\r
-\r
- /* 119 : RESERVED */\r
- void *reserved119;\r
-\r
- /* 120 : Set JNI Function Table */\r
- jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, \r
- const jniNativeInterface* function_table);\r
-\r
- /* 121 : Get JNI Function Table */\r
- jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, \r
- jniNativeInterface** function_table);\r
-\r
- /* 122 : Set Event Callbacks */\r
- jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, \r
- const jvmtiEventCallbacks* callbacks, \r
- jint size_of_callbacks);\r
-\r
- /* 123 : Generate Events */\r
- jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, \r
- jvmtiEvent event_type);\r
-\r
- /* 124 : Get Extension Functions */\r
- jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, \r
- jint* extension_count_ptr, \r
- jvmtiExtensionFunctionInfo** extensions);\r
-\r
- /* 125 : Get Extension Events */\r
- jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, \r
- jint* extension_count_ptr, \r
- jvmtiExtensionEventInfo** extensions);\r
-\r
- /* 126 : Set Extension Event Callback */\r
- jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, \r
- jint extension_event_index, \r
- jvmtiExtensionEvent callback);\r
-\r
- /* 127 : Dispose Environment */\r
- jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);\r
-\r
- /* 128 : Get Error Name */\r
- jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, \r
- jvmtiError error, \r
- char** name_ptr);\r
-\r
- /* 129 : Get JLocation Format */\r
- jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, \r
- jvmtiJlocationFormat* format_ptr);\r
-\r
- /* 130 : Get System Properties */\r
- jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, \r
- jint* count_ptr, \r
- char*** property_ptr);\r
-\r
- /* 131 : Get System Property */\r
- jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, \r
- const char* property, \r
- char** value_ptr);\r
-\r
- /* 132 : Set System Property */\r
- jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, \r
- const char* property, \r
- const char* value);\r
-\r
- /* 133 : Get Phase */\r
- jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, \r
- jvmtiPhase* phase_ptr);\r
-\r
- /* 134 : Get Current Thread CPU Timer Information */\r
- jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, \r
- jvmtiTimerInfo* info_ptr);\r
-\r
- /* 135 : Get Current Thread CPU Time */\r
- jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, \r
- jlong* nanos_ptr);\r
-\r
- /* 136 : Get Thread CPU Timer Information */\r
- jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, \r
- jvmtiTimerInfo* info_ptr);\r
-\r
- /* 137 : Get Thread CPU Time */\r
- jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, \r
- jthread thread, \r
- jlong* nanos_ptr);\r
-\r
- /* 138 : Get Timer Information */\r
- jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, \r
- jvmtiTimerInfo* info_ptr);\r
-\r
- /* 139 : Get Time */\r
- jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, \r
- jlong* nanos_ptr);\r
-\r
- /* 140 : Get Potential Capabilities */\r
- jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, \r
- jvmtiCapabilities* capabilities_ptr);\r
-\r
- /* 141 : RESERVED */\r
- void *reserved141;\r
-\r
- /* 142 : Add Capabilities */\r
- jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, \r
- const jvmtiCapabilities* capabilities_ptr);\r
-\r
- /* 143 : Relinquish Capabilities */\r
- jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, \r
- const jvmtiCapabilities* capabilities_ptr);\r
-\r
- /* 144 : Get Available Processors */\r
- jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, \r
- jint* processor_count_ptr);\r
-\r
- /* 145 : RESERVED */\r
- void *reserved145;\r
-\r
- /* 146 : RESERVED */\r
- void *reserved146;\r
-\r
- /* 147 : Get Environment Local Storage */\r
- jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, \r
- void** data_ptr);\r
-\r
- /* 148 : Set Environment Local Storage */\r
- jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, \r
- const void* data);\r
-\r
- /* 149 : Add To Bootstrap Class Loader Search */\r
- jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, \r
- const char* segment);\r
-\r
- /* 150 : Set Verbose Flag */\r
- jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, \r
- jvmtiVerboseFlag flag, \r
- jboolean value);\r
-\r
- /* 151 : RESERVED */\r
- void *reserved151;\r
-\r
- /* 152 : RESERVED */\r
- void *reserved152;\r
-\r
- /* 153 : RESERVED */\r
- void *reserved153;\r
-\r
- /* 154 : Get Object Size */\r
- jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, \r
- jobject object, \r
- jlong* size_ptr);\r
-\r
-} jvmtiInterface_1;\r
-\r
-struct _jvmtiEnv {\r
- const struct jvmtiInterface_1_ *functions;\r
-#ifdef __cplusplus\r
-\r
-\r
- jvmtiError Allocate(jlong size,\r
- unsigned char** mem_ptr) {\r
- return functions->Allocate(this, size, mem_ptr);\r
- }\r
-\r
- jvmtiError Deallocate(unsigned char* mem) {\r
- return functions->Deallocate(this, mem);\r
- }\r
-\r
- jvmtiError GetThreadState(jthread thread,\r
- jint* thread_state_ptr) {\r
- return functions->GetThreadState(this, thread, thread_state_ptr);\r
- }\r
-\r
- jvmtiError GetAllThreads(jint* threads_count_ptr,\r
- jthread** threads_ptr) {\r
- return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);\r
- }\r
-\r
- jvmtiError SuspendThread(jthread thread) {\r
- return functions->SuspendThread(this, thread);\r
- }\r
-\r
- jvmtiError SuspendThreadList(jint request_count,\r
- const jthread* request_list,\r
- jvmtiError* results) {\r
- return functions->SuspendThreadList(this, request_count, request_list, results);\r
- }\r
-\r
- jvmtiError ResumeThread(jthread thread) {\r
- return functions->ResumeThread(this, thread);\r
- }\r
-\r
- jvmtiError ResumeThreadList(jint request_count,\r
- const jthread* request_list,\r
- jvmtiError* results) {\r
- return functions->ResumeThreadList(this, request_count, request_list, results);\r
- }\r
-\r
- jvmtiError StopThread(jthread thread,\r
- jobject exception) {\r
- return functions->StopThread(this, thread, exception);\r
- }\r
-\r
- jvmtiError InterruptThread(jthread thread) {\r
- return functions->InterruptThread(this, thread);\r
- }\r
-\r
- jvmtiError GetThreadInfo(jthread thread,\r
- jvmtiThreadInfo* info_ptr) {\r
- return functions->GetThreadInfo(this, thread, info_ptr);\r
- }\r
-\r
- jvmtiError GetOwnedMonitorInfo(jthread thread,\r
- jint* owned_monitor_count_ptr,\r
- jobject** owned_monitors_ptr) {\r
- return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);\r
- }\r
-\r
- jvmtiError GetCurrentContendedMonitor(jthread thread,\r
- jobject* monitor_ptr) {\r
- return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);\r
- }\r
-\r
- jvmtiError RunAgentThread(jthread thread,\r
- jvmtiStartFunction proc,\r
- const void* arg,\r
- jint priority) {\r
- return functions->RunAgentThread(this, thread, proc, arg, priority);\r
- }\r
-\r
- jvmtiError SetThreadLocalStorage(jthread thread,\r
- const void* data) {\r
- return functions->SetThreadLocalStorage(this, thread, data);\r
- }\r
-\r
- jvmtiError GetThreadLocalStorage(jthread thread,\r
- void** data_ptr) {\r
- return functions->GetThreadLocalStorage(this, thread, data_ptr);\r
- }\r
-\r
- jvmtiError GetTopThreadGroups(jint* group_count_ptr,\r
- jthreadGroup** groups_ptr) {\r
- return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);\r
- }\r
-\r
- jvmtiError GetThreadGroupInfo(jthreadGroup group,\r
- jvmtiThreadGroupInfo* info_ptr) {\r
- return functions->GetThreadGroupInfo(this, group, info_ptr);\r
- }\r
-\r
- jvmtiError GetThreadGroupChildren(jthreadGroup group,\r
- jint* thread_count_ptr,\r
- jthread** threads_ptr,\r
- jint* group_count_ptr,\r
- jthreadGroup** groups_ptr) {\r
- return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);\r
- }\r
-\r
- jvmtiError GetStackTrace(jthread thread,\r
- jint start_depth,\r
- jint max_frame_count,\r
- jvmtiFrameInfo* frame_buffer,\r
- jint* count_ptr) {\r
- return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);\r
- }\r
-\r
- jvmtiError GetAllStackTraces(jint max_frame_count,\r
- jvmtiStackInfo** stack_info_ptr,\r
- jint* thread_count_ptr) {\r
- return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);\r
- }\r
-\r
- jvmtiError GetThreadListStackTraces(jint thread_count,\r
- const jthread* thread_list,\r
- jint max_frame_count,\r
- jvmtiStackInfo** stack_info_ptr) {\r
- return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);\r
- }\r
-\r
- jvmtiError GetFrameCount(jthread thread,\r
- jint* count_ptr) {\r
- return functions->GetFrameCount(this, thread, count_ptr);\r
- }\r
-\r
- jvmtiError PopFrame(jthread thread) {\r
- return functions->PopFrame(this, thread);\r
- }\r
-\r
- jvmtiError GetFrameLocation(jthread thread,\r
- jint depth,\r
- jmethodID* method_ptr,\r
- jlocation* location_ptr) {\r
- return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);\r
- }\r
-\r
- jvmtiError NotifyFramePop(jthread thread,\r
- jint depth) {\r
- return functions->NotifyFramePop(this, thread, depth);\r
- }\r
-\r
- jvmtiError GetTag(jobject object,\r
- jlong* tag_ptr) {\r
- return functions->GetTag(this, object, tag_ptr);\r
- }\r
-\r
- jvmtiError SetTag(jobject object,\r
- jlong tag) {\r
- return functions->SetTag(this, object, tag);\r
- }\r
-\r
- jvmtiError ForceGarbageCollection() {\r
- return functions->ForceGarbageCollection(this);\r
- }\r
-\r
- jvmtiError IterateOverObjectsReachableFromObject(jobject object,\r
- jvmtiObjectReferenceCallback object_reference_callback,\r
- void* user_data) {\r
- return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);\r
- }\r
-\r
- jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,\r
- jvmtiStackReferenceCallback stack_ref_callback,\r
- jvmtiObjectReferenceCallback object_ref_callback,\r
- void* user_data) {\r
- return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);\r
- }\r
-\r
- jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,\r
- jvmtiHeapObjectCallback heap_object_callback,\r
- void* user_data) {\r
- return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);\r
- }\r
-\r
- jvmtiError IterateOverInstancesOfClass(jclass klass,\r
- jvmtiHeapObjectFilter object_filter,\r
- jvmtiHeapObjectCallback heap_object_callback,\r
- void* user_data) {\r
- return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);\r
- }\r
-\r
- jvmtiError GetObjectsWithTags(jint tag_count,\r
- const jlong* tags,\r
- jint* count_ptr,\r
- jobject** object_result_ptr,\r
- jlong** tag_result_ptr) {\r
- return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);\r
- }\r
-\r
- jvmtiError GetLocalObject(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jobject* value_ptr) {\r
- return functions->GetLocalObject(this, thread, depth, slot, value_ptr);\r
- }\r
-\r
- jvmtiError GetLocalInt(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jint* value_ptr) {\r
- return functions->GetLocalInt(this, thread, depth, slot, value_ptr);\r
- }\r
-\r
- jvmtiError GetLocalLong(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jlong* value_ptr) {\r
- return functions->GetLocalLong(this, thread, depth, slot, value_ptr);\r
- }\r
-\r
- jvmtiError GetLocalFloat(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jfloat* value_ptr) {\r
- return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);\r
- }\r
-\r
- jvmtiError GetLocalDouble(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jdouble* value_ptr) {\r
- return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);\r
- }\r
-\r
- jvmtiError SetLocalObject(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jobject value) {\r
- return functions->SetLocalObject(this, thread, depth, slot, value);\r
- }\r
-\r
- jvmtiError SetLocalInt(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jint value) {\r
- return functions->SetLocalInt(this, thread, depth, slot, value);\r
- }\r
-\r
- jvmtiError SetLocalLong(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jlong value) {\r
- return functions->SetLocalLong(this, thread, depth, slot, value);\r
- }\r
-\r
- jvmtiError SetLocalFloat(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jfloat value) {\r
- return functions->SetLocalFloat(this, thread, depth, slot, value);\r
- }\r
-\r
- jvmtiError SetLocalDouble(jthread thread,\r
- jint depth,\r
- jint slot,\r
- jdouble value) {\r
- return functions->SetLocalDouble(this, thread, depth, slot, value);\r
- }\r
-\r
- jvmtiError SetBreakpoint(jmethodID method,\r
- jlocation location) {\r
- return functions->SetBreakpoint(this, method, location);\r
- }\r
-\r
- jvmtiError ClearBreakpoint(jmethodID method,\r
- jlocation location) {\r
- return functions->ClearBreakpoint(this, method, location);\r
- }\r
-\r
- jvmtiError SetFieldAccessWatch(jclass klass,\r
- jfieldID field) {\r
- return functions->SetFieldAccessWatch(this, klass, field);\r
- }\r
-\r
- jvmtiError ClearFieldAccessWatch(jclass klass,\r
- jfieldID field) {\r
- return functions->ClearFieldAccessWatch(this, klass, field);\r
- }\r
-\r
- jvmtiError SetFieldModificationWatch(jclass klass,\r
- jfieldID field) {\r
- return functions->SetFieldModificationWatch(this, klass, field);\r
- }\r
-\r
- jvmtiError ClearFieldModificationWatch(jclass klass,\r
- jfieldID field) {\r
- return functions->ClearFieldModificationWatch(this, klass, field);\r
- }\r
-\r
- jvmtiError GetLoadedClasses(jint* class_count_ptr,\r
- jclass** classes_ptr) {\r
- return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);\r
- }\r
-\r
- jvmtiError GetClassLoaderClasses(jobject initiating_loader,\r
- jint* class_count_ptr,\r
- jclass** classes_ptr) {\r
- return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);\r
- }\r
-\r
- jvmtiError GetClassSignature(jclass klass,\r
- char** signature_ptr,\r
- char** generic_ptr) {\r
- return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);\r
- }\r
-\r
- jvmtiError GetClassStatus(jclass klass,\r
- jint* status_ptr) {\r
- return functions->GetClassStatus(this, klass, status_ptr);\r
- }\r
-\r
- jvmtiError GetSourceFileName(jclass klass,\r
- char** source_name_ptr) {\r
- return functions->GetSourceFileName(this, klass, source_name_ptr);\r
- }\r
-\r
- jvmtiError GetClassModifiers(jclass klass,\r
- jint* modifiers_ptr) {\r
- return functions->GetClassModifiers(this, klass, modifiers_ptr);\r
- }\r
-\r
- jvmtiError GetClassMethods(jclass klass,\r
- jint* method_count_ptr,\r
- jmethodID** methods_ptr) {\r
- return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);\r
- }\r
-\r
- jvmtiError GetClassFields(jclass klass,\r
- jint* field_count_ptr,\r
- jfieldID** fields_ptr) {\r
- return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);\r
- }\r
-\r
- jvmtiError GetImplementedInterfaces(jclass klass,\r
- jint* interface_count_ptr,\r
- jclass** interfaces_ptr) {\r
- return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);\r
- }\r
-\r
- jvmtiError IsInterface(jclass klass,\r
- jboolean* is_interface_ptr) {\r
- return functions->IsInterface(this, klass, is_interface_ptr);\r
- }\r
-\r
- jvmtiError IsArrayClass(jclass klass,\r
- jboolean* is_array_class_ptr) {\r
- return functions->IsArrayClass(this, klass, is_array_class_ptr);\r
- }\r
-\r
- jvmtiError GetClassLoader(jclass klass,\r
- jobject* classloader_ptr) {\r
- return functions->GetClassLoader(this, klass, classloader_ptr);\r
- }\r
-\r
- jvmtiError GetSourceDebugExtension(jclass klass,\r
- char** source_debug_extension_ptr) {\r
- return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);\r
- }\r
-\r
- jvmtiError RedefineClasses(jint class_count,\r
- const jvmtiClassDefinition* class_definitions) {\r
- return functions->RedefineClasses(this, class_count, class_definitions);\r
- }\r
-\r
- jvmtiError GetObjectSize(jobject object,\r
- jlong* size_ptr) {\r
- return functions->GetObjectSize(this, object, size_ptr);\r
- }\r
-\r
- jvmtiError GetObjectHashCode(jobject object,\r
- jint* hash_code_ptr) {\r
- return functions->GetObjectHashCode(this, object, hash_code_ptr);\r
- }\r
-\r
- jvmtiError GetObjectMonitorUsage(jobject object,\r
- jvmtiMonitorUsage* info_ptr) {\r
- return functions->GetObjectMonitorUsage(this, object, info_ptr);\r
- }\r
-\r
- jvmtiError GetFieldName(jclass klass,\r
- jfieldID field,\r
- char** name_ptr,\r
- char** signature_ptr,\r
- char** generic_ptr) {\r
- return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);\r
- }\r
-\r
- jvmtiError GetFieldDeclaringClass(jclass klass,\r
- jfieldID field,\r
- jclass* declaring_class_ptr) {\r
- return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);\r
- }\r
-\r
- jvmtiError GetFieldModifiers(jclass klass,\r
- jfieldID field,\r
- jint* modifiers_ptr) {\r
- return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);\r
- }\r
-\r
- jvmtiError IsFieldSynthetic(jclass klass,\r
- jfieldID field,\r
- jboolean* is_synthetic_ptr) {\r
- return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);\r
- }\r
-\r
- jvmtiError GetMethodName(jmethodID method,\r
- char** name_ptr,\r
- char** signature_ptr,\r
- char** generic_ptr) {\r
- return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);\r
- }\r
-\r
- jvmtiError GetMethodDeclaringClass(jmethodID method,\r
- jclass* declaring_class_ptr) {\r
- return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);\r
- }\r
-\r
- jvmtiError GetMethodModifiers(jmethodID method,\r
- jint* modifiers_ptr) {\r
- return functions->GetMethodModifiers(this, method, modifiers_ptr);\r
- }\r
-\r
- jvmtiError GetMaxLocals(jmethodID method,\r
- jint* max_ptr) {\r
- return functions->GetMaxLocals(this, method, max_ptr);\r
- }\r
-\r
- jvmtiError GetArgumentsSize(jmethodID method,\r
- jint* size_ptr) {\r
- return functions->GetArgumentsSize(this, method, size_ptr);\r
- }\r
-\r
- jvmtiError GetLineNumberTable(jmethodID method,\r
- jint* entry_count_ptr,\r
- jvmtiLineNumberEntry** table_ptr) {\r
- return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);\r
- }\r
-\r
- jvmtiError GetMethodLocation(jmethodID method,\r
- jlocation* start_location_ptr,\r
- jlocation* end_location_ptr) {\r
- return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);\r
- }\r
-\r
- jvmtiError GetLocalVariableTable(jmethodID method,\r
- jint* entry_count_ptr,\r
- jvmtiLocalVariableEntry** table_ptr) {\r
- return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);\r
- }\r
-\r
- jvmtiError GetBytecodes(jmethodID method,\r
- jint* bytecode_count_ptr,\r
- unsigned char** bytecodes_ptr) {\r
- return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);\r
- }\r
-\r
- jvmtiError IsMethodNative(jmethodID method,\r
- jboolean* is_native_ptr) {\r
- return functions->IsMethodNative(this, method, is_native_ptr);\r
- }\r
-\r
- jvmtiError IsMethodSynthetic(jmethodID method,\r
- jboolean* is_synthetic_ptr) {\r
- return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);\r
- }\r
-\r
- jvmtiError IsMethodObsolete(jmethodID method,\r
- jboolean* is_obsolete_ptr) {\r
- return functions->IsMethodObsolete(this, method, is_obsolete_ptr);\r
- }\r
-\r
- jvmtiError CreateRawMonitor(const char* name,\r
- jrawMonitorID* monitor_ptr) {\r
- return functions->CreateRawMonitor(this, name, monitor_ptr);\r
- }\r
-\r
- jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {\r
- return functions->DestroyRawMonitor(this, monitor);\r
- }\r
-\r
- jvmtiError RawMonitorEnter(jrawMonitorID monitor) {\r
- return functions->RawMonitorEnter(this, monitor);\r
- }\r
-\r
- jvmtiError RawMonitorExit(jrawMonitorID monitor) {\r
- return functions->RawMonitorExit(this, monitor);\r
- }\r
-\r
- jvmtiError RawMonitorWait(jrawMonitorID monitor,\r
- jlong millis) {\r
- return functions->RawMonitorWait(this, monitor, millis);\r
- }\r
-\r
- jvmtiError RawMonitorNotify(jrawMonitorID monitor) {\r
- return functions->RawMonitorNotify(this, monitor);\r
- }\r
-\r
- jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {\r
- return functions->RawMonitorNotifyAll(this, monitor);\r
- }\r
-\r
- jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {\r
- return functions->SetJNIFunctionTable(this, function_table);\r
- }\r
-\r
- jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {\r
- return functions->GetJNIFunctionTable(this, function_table);\r
- }\r
-\r
- jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,\r
- jint size_of_callbacks) {\r
- return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);\r
- }\r
-\r
- jvmtiError SetEventNotificationMode(jvmtiEventMode mode,\r
- jvmtiEvent event_type,\r
- jthread event_thread,\r
- ...) {\r
- return functions->SetEventNotificationMode(this, mode, event_type, event_thread);\r
- }\r
-\r
- jvmtiError GenerateEvents(jvmtiEvent event_type) {\r
- return functions->GenerateEvents(this, event_type);\r
- }\r
-\r
- jvmtiError GetExtensionFunctions(jint* extension_count_ptr,\r
- jvmtiExtensionFunctionInfo** extensions) {\r
- return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);\r
- }\r
-\r
- jvmtiError GetExtensionEvents(jint* extension_count_ptr,\r
- jvmtiExtensionEventInfo** extensions) {\r
- return functions->GetExtensionEvents(this, extension_count_ptr, extensions);\r
- }\r
-\r
- jvmtiError SetExtensionEventCallback(jint extension_event_index,\r
- jvmtiExtensionEvent callback) {\r
- return functions->SetExtensionEventCallback(this, extension_event_index, callback);\r
- }\r
-\r
- jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {\r
- return functions->GetPotentialCapabilities(this, capabilities_ptr);\r
- }\r
-\r
- jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {\r
- return functions->AddCapabilities(this, capabilities_ptr);\r
- }\r
-\r
- jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {\r
- return functions->RelinquishCapabilities(this, capabilities_ptr);\r
- }\r
-\r
- jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {\r
- return functions->GetCapabilities(this, capabilities_ptr);\r
- }\r
-\r
- jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {\r
- return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);\r
- }\r
-\r
- jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {\r
- return functions->GetCurrentThreadCpuTime(this, nanos_ptr);\r
- }\r
-\r
- jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {\r
- return functions->GetThreadCpuTimerInfo(this, info_ptr);\r
- }\r
-\r
- jvmtiError GetThreadCpuTime(jthread thread,\r
- jlong* nanos_ptr) {\r
- return functions->GetThreadCpuTime(this, thread, nanos_ptr);\r
- }\r
-\r
- jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {\r
- return functions->GetTimerInfo(this, info_ptr);\r
- }\r
-\r
- jvmtiError GetTime(jlong* nanos_ptr) {\r
- return functions->GetTime(this, nanos_ptr);\r
- }\r
-\r
- jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {\r
- return functions->GetAvailableProcessors(this, processor_count_ptr);\r
- }\r
-\r
- jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {\r
- return functions->AddToBootstrapClassLoaderSearch(this, segment);\r
- }\r
-\r
- jvmtiError GetSystemProperties(jint* count_ptr,\r
- char*** property_ptr) {\r
- return functions->GetSystemProperties(this, count_ptr, property_ptr);\r
- }\r
-\r
- jvmtiError GetSystemProperty(const char* property,\r
- char** value_ptr) {\r
- return functions->GetSystemProperty(this, property, value_ptr);\r
- }\r
-\r
- jvmtiError SetSystemProperty(const char* property,\r
- const char* value) {\r
- return functions->SetSystemProperty(this, property, value);\r
- }\r
-\r
- jvmtiError GetPhase(jvmtiPhase* phase_ptr) {\r
- return functions->GetPhase(this, phase_ptr);\r
- }\r
-\r
- jvmtiError DisposeEnvironment() {\r
- return functions->DisposeEnvironment(this);\r
- }\r
-\r
- jvmtiError SetEnvironmentLocalStorage(const void* data) {\r
- return functions->SetEnvironmentLocalStorage(this, data);\r
- }\r
-\r
- jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {\r
- return functions->GetEnvironmentLocalStorage(this, data_ptr);\r
- }\r
-\r
- jvmtiError GetVersionNumber(jint* version_ptr) {\r
- return functions->GetVersionNumber(this, version_ptr);\r
- }\r
-\r
- jvmtiError GetErrorName(jvmtiError error,\r
- char** name_ptr) {\r
- return functions->GetErrorName(this, error, name_ptr);\r
- }\r
-\r
- jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,\r
- jboolean value) {\r
- return functions->SetVerboseFlag(this, flag, value);\r
- }\r
-\r
- jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {\r
- return functions->GetJLocationFormat(this, format_ptr);\r
- }\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVA_JVMTI_H_ */\r
-\r
+++ /dev/null
-/*\r
- * @(#)jawt_md.h 1.7 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JAWT_MD_H_\r
-#define _JAVASOFT_JAWT_MD_H_\r
-\r
-#include <windows.h>\r
-#include "jawt.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * Win32-specific declarations for AWT native interface.\r
- * See notes in jawt.h for an example of use.\r
- */\r
-typedef struct jawt_Win32DrawingSurfaceInfo {\r
- /* Native window, DDB, or DIB handle */\r
- union {\r
- HWND hwnd;\r
- HBITMAP hbitmap;\r
- void* pbits;\r
- };\r
- /*\r
- * This HDC should always be used instead of the HDC returned from\r
- * BeginPaint() or any calls to GetDC().\r
- */\r
- HDC hdc;\r
- HPALETTE hpalette;\r
-} JAWT_Win32DrawingSurfaceInfo;\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* !_JAVASOFT_JAWT_MD_H_ */\r
+++ /dev/null
-/*\r
- * @(#)jni_md.h 1.14 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JNI_MD_H_\r
-#define _JAVASOFT_JNI_MD_H_\r
-\r
-#define JNIEXPORT __declspec(dllexport)\r
-#define JNIIMPORT __declspec(dllimport)\r
-#define JNICALL __stdcall\r
-\r
-typedef long jint;\r
-typedef __int64 jlong;\r
-typedef signed char jbyte;\r
-\r
-#endif /* !_JAVASOFT_JNI_MD_H_ */\r