re-organization of openjpeg directories hierarchy : step 1
[openjpeg.git] / JavaOpenJPEG / java-jni / include / jvmpi.h
diff --git a/JavaOpenJPEG/java-jni/include/jvmpi.h b/JavaOpenJPEG/java-jni/include/jvmpi.h
deleted file mode 100644 (file)
index 557b231..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-/*\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