summaryrefslogtreecommitdiffstats
path: root/make/stub_includes/jni/macosx/jvmpi.h
diff options
context:
space:
mode:
Diffstat (limited to 'make/stub_includes/jni/macosx/jvmpi.h')
-rw-r--r--make/stub_includes/jni/macosx/jvmpi.h642
1 files changed, 0 insertions, 642 deletions
diff --git a/make/stub_includes/jni/macosx/jvmpi.h b/make/stub_includes/jni/macosx/jvmpi.h
deleted file mode 100644
index 2dbaae5e7..000000000
--- a/make/stub_includes/jni/macosx/jvmpi.h
+++ /dev/null
@@ -1,642 +0,0 @@
-/*
- * @(#)jvmpi.h 1.28 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
-#ifndef _JAVASOFT_JVMPI_H_
-#define _JAVASOFT_JVMPI_H_
-
-#include "jni.h"
-
-#define JVMPI_VERSION_1 ((jint)0x10000001) /* implied 0 for minor version */
-#define JVMPI_VERSION_1_1 ((jint)0x10000002)
-#define JVMPI_VERSION_1_2 ((jint)0x10000003)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- typedef void (*jvmpi_void_function_of_void)(void *);
-#ifdef __cplusplus
-}
-#endif
-
-/****************************************************************
- * Profiler interface data structures.
- ****************************************************************/
-/* identifier types. */
-struct _jobjectID;
-typedef struct _jobjectID * jobjectID; /* type of object ids */
-
-/* raw monitors */
-struct _JVMPI_RawMonitor;
-typedef struct _JVMPI_RawMonitor * JVMPI_RawMonitor;
-
-/* call frame */
-typedef struct {
- jint lineno; /* line number in the source file */
- jmethodID method_id; /* method executed in this frame */
-} JVMPI_CallFrame;
-
-/* call trace */
-typedef struct {
- JNIEnv *env_id; /* Env where trace was recorded */
- jint num_frames; /* number of frames in this trace */
- JVMPI_CallFrame *frames; /* frames */
-} JVMPI_CallTrace;
-
-/* method */
-typedef struct {
- char *method_name; /* name of method */
- char *method_signature; /* signature of method */
- jint start_lineno; /* -1 if native, abstract .. */
- jint end_lineno; /* -1 if native, abstract .. */
- jmethodID method_id; /* id assigned to this method */
-} JVMPI_Method;
-
-/* Field */
-typedef struct {
- char *field_name; /* name of field */
- char *field_signature; /* signature of field */
-} JVMPI_Field;
-
-/* line number info for a compiled method */
-typedef struct {
- jint offset; /* offset from beginning of method */
- jint lineno; /* lineno from beginning of src file */
-} JVMPI_Lineno;
-
-/* event */
-typedef struct {
- jint event_type; /* event_type */
- JNIEnv *env_id; /* env where this event occured */
-
- union {
- struct {
- const char *class_name; /* class name */
- char *source_name; /* name of source file */
- jint num_interfaces; /* number of interfaces implemented */
- jint num_methods; /* number of methods in the class */
- JVMPI_Method *methods; /* methods */
- jint num_static_fields; /* number of static fields */
- JVMPI_Field *statics; /* static fields */
- jint num_instance_fields; /* number of instance fields */
- JVMPI_Field *instances; /* instance fields */
- jobjectID class_id; /* id of the class object */
- } class_load;
-
- struct {
- jobjectID class_id; /* id of the class object */
- } class_unload;
-
- struct {
- unsigned char *class_data; /* content of class file */
- jint class_data_len; /* class file length */
- unsigned char *new_class_data; /* instrumented class file */
- jint new_class_data_len; /* new class file length */
- void * (*malloc_f)(unsigned int); /* memory allocation function */
- } class_load_hook;
-
- struct {
- jint arena_id;
- jobjectID class_id; /* id of object class */
- jint is_array; /* JVMPI_NORMAL_OBJECT, ... */
- jint size; /* size in number of bytes */
- jobjectID obj_id; /* id assigned to this object */
- } obj_alloc;
-
- struct {
- jobjectID obj_id; /* id of the object */
- } obj_free;
-
- struct {
- jint arena_id; /* cur arena id */
- jobjectID obj_id; /* cur object id */
- jint new_arena_id; /* new arena id */
- jobjectID new_obj_id; /* new object id */
- } obj_move;
-
- struct {
- jint arena_id; /* id of arena */
- const char *arena_name; /* name of arena */
- } new_arena;
-
- struct {
- jint arena_id; /* id of arena */
- } delete_arena;
-
- struct {
- char *thread_name; /* name of thread */
- char *group_name; /* name of group */
- char *parent_name; /* name of parent */
- jobjectID thread_id; /* id of the thread object */
- JNIEnv *thread_env_id;
- } thread_start;
-
- struct {
- int dump_level; /* level of the heap dump info */
- char *begin; /* where all the root records begin,
- please see the heap dump buffer
- format described below */
- char *end; /* where the object records end. */
- jint num_traces; /* number of thread traces,
- 0 if dump level = JVMPI_DUMP_LEVEL_0 */
- JVMPI_CallTrace *traces; /* thread traces collected during
- heap dump */
- } heap_dump;
-
- struct {
- jobjectID obj_id; /* object id */
- jobject ref_id; /* id assigned to the globalref */
- } jni_globalref_alloc;
-
- struct {
- jobject ref_id; /* id of the global ref */
- } jni_globalref_free;
-
- struct {
- jmethodID method_id; /* method */
- } method;
-
- struct {
- jmethodID method_id; /* id of method */
- jobjectID obj_id; /* id of target object */
- } method_entry2;
-
- struct {
- jmethodID method_id; /* id of compiled method */
- void *code_addr; /* code start addr. in memory */
- jint code_size; /* code size */
- jint lineno_table_size; /* size of lineno table */
- JVMPI_Lineno *lineno_table; /* lineno info */
- } compiled_method_load;
-
- struct {
- jmethodID method_id; /* id of unloaded compiled method */
- } compiled_method_unload;
-
- struct {
- jmethodID method_id; /* id of the method the instruction belongs to */
- jint offset; /* instruction offset in the method's bytecode */
- union {
- struct {
- jboolean is_true; /* whether true or false branch is taken */
- } if_info;
- struct {
- jint key; /* top stack value used as an index */
- jint low; /* min value of the index */
- jint hi; /* max value of the index */
- } tableswitch_info;
- struct {
- jint chosen_pair_index; /* actually chosen pair index (0-based)
- * if chosen_pair_index == pairs_total then
- * the 'default' branch is taken
- */
- jint pairs_total; /* total number of lookupswitch pairs */
- } lookupswitch_info;
- } u;
- } instruction;
-
- struct {
- char *begin; /* beginning of dump buffer,
- see below for format */
- char *end; /* end of dump buffer */
- jint num_traces; /* number of traces */
- JVMPI_CallTrace *traces; /* traces of all threads */
- jint *threads_status; /* status of all threads */
- } monitor_dump;
-
- struct {
- const char *name; /* name of raw monitor */
- JVMPI_RawMonitor id; /* id */
- } raw_monitor;
-
- struct {
- jobjectID object; /* Java object */
- } monitor;
-
- struct {
- jobjectID object; /* Java object */
- jlong timeout; /* timeout period */
- } monitor_wait;
-
- struct {
- jlong used_objects;
- jlong used_object_space;
- jlong total_object_space;
- } gc_info;
-
- struct {
- jint data_len;
- char *data;
- } object_dump;
- } u;
-} JVMPI_Event;
-
-/* interface functions */
-typedef struct {
- jint version; /* JVMPI version */
-
- /* ------interface implemented by the profiler------ */
-
- /**
- * Function called by the JVM to notify an event.
- */
- void (*NotifyEvent)(JVMPI_Event *event);
-
- /* ------interface implemented by the JVM------ */
-
- /**
- * Function called by the profiler to enable/disable/send notification
- * for a particular event type.
- *
- * event_type - event_type
- * arg - event specific arg
- *
- * return JVMPI_NOT_AVAILABLE, JVMPI_SUCCESS or JVMPI_FAIL
- */
- jint (*EnableEvent)(jint event_type, void *arg);
- jint (*DisableEvent)(jint event_type, void *arg);
- jint (*RequestEvent)(jint event_type, void *arg);
-
- /**
- * Function called by the profiler to get a stack
- * trace from the JVM.
- *
- * trace - trace data structure to be filled
- * depth - maximum depth of the trace.
- */
- void (*GetCallTrace)(JVMPI_CallTrace *trace, jint depth);
-
- /**
- * Function called by profiler when it wants to exit/stop.
- */
- void (*ProfilerExit)(jint);
-
- /**
- * Utility functions provided by the JVM.
- */
- JVMPI_RawMonitor (*RawMonitorCreate)(char *lock_name);
- void (*RawMonitorEnter)(JVMPI_RawMonitor lock_id);
- void (*RawMonitorExit)(JVMPI_RawMonitor lock_id);
- void (*RawMonitorWait)(JVMPI_RawMonitor lock_id, jlong ms);
- void (*RawMonitorNotifyAll)(JVMPI_RawMonitor lock_id);
- void (*RawMonitorDestroy)(JVMPI_RawMonitor lock_id);
-
- /**
- * Function called by the profiler to get the current thread's CPU time.
- *
- * return time in nanoseconds;
- */
- jlong (*GetCurrentThreadCpuTime)(void);
-
- void (*SuspendThread)(JNIEnv *env);
- void (*ResumeThread)(JNIEnv *env);
- jint (*GetThreadStatus)(JNIEnv *env);
- jboolean (*ThreadHasRun)(JNIEnv *env);
-
- /* This function can be called safely only after JVMPI_EVENT_VM_INIT_DONE
- notification by the JVM. */
- jint (*CreateSystemThread)(char *name, jint priority, void (*f)(void *));
-
- /* thread local storage access functions to avoid locking in time
- critical functions */
- void (*SetThreadLocalStorage)(JNIEnv *env_id, void *ptr);
- void * (*GetThreadLocalStorage)(JNIEnv *env_id);
-
- /* control GC */
- void (*DisableGC)(void);
- void (*EnableGC)(void);
- void (*RunGC)(void);
-
- jobjectID (*GetThreadObject)(JNIEnv *env);
- jobjectID (*GetMethodClass)(jmethodID mid);
-
- /* JNI <-> jobject conversions */
- jobject (*jobjectID2jobject)(jobjectID jid);
- jobjectID (*jobject2jobjectID)(jobject jobj);
-
- void (*SuspendThreadList)
- (jint reqCount, JNIEnv **reqList, jint *results);
- void (*ResumeThreadList)
- (jint reqCount, JNIEnv **reqList, jint *results);
-} JVMPI_Interface;
-
-/* type of argument passed to RequestEvent for heap dumps */
-typedef struct {
- jint heap_dump_level;
-} JVMPI_HeapDumpArg;
-
-/**********************************************************************
- * Constants and formats used in JVM Profiler Interface.
- **********************************************************************/
-/*
- * Event type constants.
- */
-#define JVMPI_EVENT_METHOD_ENTRY ((jint)1)
-#define JVMPI_EVENT_METHOD_ENTRY2 ((jint)2)
-#define JVMPI_EVENT_METHOD_EXIT ((jint)3)
-
-#define JVMPI_EVENT_OBJECT_ALLOC ((jint)4)
-#define JVMPI_EVENT_OBJECT_FREE ((jint)5)
-#define JVMPI_EVENT_OBJECT_MOVE ((jint)6)
-
-#define JVMPI_EVENT_COMPILED_METHOD_LOAD ((jint)7)
-#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD ((jint)8)
-
-#define JVMPI_EVENT_INSTRUCTION_START ((jint)9)
-
-#define JVMPI_EVENT_THREAD_START ((jint)33)
-#define JVMPI_EVENT_THREAD_END ((jint)34)
-
-#define JVMPI_EVENT_CLASS_LOAD_HOOK ((jint)35)
-
-#define JVMPI_EVENT_HEAP_DUMP ((jint)37)
-#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC ((jint)38)
-#define JVMPI_EVENT_JNI_GLOBALREF_FREE ((jint)39)
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC ((jint)40)
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE ((jint)41)
-#define JVMPI_EVENT_CLASS_LOAD ((jint)42)
-#define JVMPI_EVENT_CLASS_UNLOAD ((jint)43)
-#define JVMPI_EVENT_DATA_DUMP_REQUEST ((jint)44)
-#define JVMPI_EVENT_DATA_RESET_REQUEST ((jint)45)
-
-#define JVMPI_EVENT_JVM_INIT_DONE ((jint)46)
-#define JVMPI_EVENT_JVM_SHUT_DOWN ((jint)47)
-
-#define JVMPI_EVENT_ARENA_NEW ((jint)48)
-#define JVMPI_EVENT_ARENA_DELETE ((jint)49)
-
-#define JVMPI_EVENT_OBJECT_DUMP ((jint)50)
-
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER ((jint)51)
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED ((jint)52)
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT ((jint)53)
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER ((jint)54)
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED ((jint)55)
-#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT ((jint)56)
-#define JVMPI_EVENT_MONITOR_WAIT ((jint)57)
-#define JVMPI_EVENT_MONITOR_WAITED ((jint)58)
-#define JVMPI_EVENT_MONITOR_DUMP ((jint)59)
-
-#define JVMPI_EVENT_GC_START ((jint)60)
-#define JVMPI_EVENT_GC_FINISH ((jint)61)
-
-#define JVMPI_MAX_EVENT_TYPE_VAL ((jint)61)
-
-/* old definitions, to be removed */
-#define JVMPI_EVENT_LOAD_COMPILED_METHOD ((jint)7)
-#define JVMPI_EVENT_UNLOAD_COMPILED_METHOD ((jint)8)
-#define JVMPI_EVENT_NEW_ARENA ((jint)48)
-#define JVMPI_EVENT_DELETE_ARENA ((jint)49)
-#define JVMPI_EVENT_DUMP_DATA_REQUEST ((jint)44)
-#define JVMPI_EVENT_RESET_DATA_REQUEST ((jint)45)
-#define JVMPI_EVENT_OBJ_ALLOC ((jint)4)
-#define JVMPI_EVENT_OBJ_FREE ((jint)5)
-#define JVMPI_EVENT_OBJ_MOVE ((jint)6)
-
-#define JVMPI_REQUESTED_EVENT ((jint)0x10000000)
-
-
-
-/*
- * enabling/disabling event notification.
- */
-/* results */
-#define JVMPI_SUCCESS ((jint)0)
-#define JVMPI_NOT_AVAILABLE ((jint)1)
-#define JVMPI_FAIL ((jint)-1)
-
-/*
- * Thread status
- */
-enum {
- JVMPI_THREAD_RUNNABLE = 1,
- JVMPI_THREAD_MONITOR_WAIT,
- JVMPI_THREAD_CONDVAR_WAIT
-};
-
-#define JVMPI_THREAD_SUSPENDED 0x8000
-#define JVMPI_THREAD_INTERRUPTED 0x4000
-
-/*
- * Thread priority
- */
-#define JVMPI_MINIMUM_PRIORITY 1
-#define JVMPI_MAXIMUM_PRIORITY 10
-#define JVMPI_NORMAL_PRIORITY 5
-
-/*
- * Object type constants.
- */
-#define JVMPI_NORMAL_OBJECT ((jint)0)
-#define JVMPI_CLASS ((jint)2)
-#define JVMPI_BOOLEAN ((jint)4)
-#define JVMPI_CHAR ((jint)5)
-#define JVMPI_FLOAT ((jint)6)
-#define JVMPI_DOUBLE ((jint)7)
-#define JVMPI_BYTE ((jint)8)
-#define JVMPI_SHORT ((jint)9)
-#define JVMPI_INT ((jint)10)
-#define JVMPI_LONG ((jint)11)
-
-/*
- * Monitor dump constants.
- */
-
-#define JVMPI_MONITOR_JAVA 0x01
-#define JVMPI_MONITOR_RAW 0x02
-
-/*
- * Heap dump constants.
- */
-#define JVMPI_GC_ROOT_UNKNOWN 0xff
-#define JVMPI_GC_ROOT_JNI_GLOBAL 0x01
-#define JVMPI_GC_ROOT_JNI_LOCAL 0x02
-#define JVMPI_GC_ROOT_JAVA_FRAME 0x03
-#define JVMPI_GC_ROOT_NATIVE_STACK 0x04
-#define JVMPI_GC_ROOT_STICKY_CLASS 0x05
-#define JVMPI_GC_ROOT_THREAD_BLOCK 0x06
-#define JVMPI_GC_ROOT_MONITOR_USED 0x07
-#define JVMPI_GC_ROOT_THREAD_OBJ 0x08
-
-#define JVMPI_GC_CLASS_DUMP 0x20
-#define JVMPI_GC_INSTANCE_DUMP 0x21
-#define JVMPI_GC_OBJ_ARRAY_DUMP 0x22
-#define JVMPI_GC_PRIM_ARRAY_DUMP 0x23
-
-/*
- * Dump levels
- */
-#define JVMPI_DUMP_LEVEL_0 ((jint)0)
-#define JVMPI_DUMP_LEVEL_1 ((jint)1)
-#define JVMPI_DUMP_LEVEL_2 ((jint)2)
-
-/* Types used in dumps -
- *
- * u1: 1 byte
- * u2: 2 bytes
- * u4: 4 bytes
- * u8: 8 bytes
- *
- * ty: u1 where:
- * JVMPI_CLASS: object
- * JVMPI_BOOLEAN: boolean
- * JVMPI_CHAR: char
- * JVMPI_FLOAT: float
- * JVMPI_DOUBLE: double
- * JVMPI_BYTE: byte
- * JVMPI_SHORT: short
- * JVMPI_INT: int
- * JVMPI_LONG: long
- *
- * vl: values, exact type depends on the type of the value:
- * JVMPI_BOOLEAN & JVMPI_BYTE: u1
- * JVMPI_SHORT & JVMPI_CHAR: u2
- * JVMPI_INT & JVMPI_FLOAT: u4
- * JVMPI_LONG & JVMPI_DOUBLE: u8
- * JVMPI_CLASS: jobjectID
- */
-
-/* Format of the monitor dump buffer:
- *
- * u1 monitor type
- *
- * JVMPI_MONITOR_JAVA Java monitor
- *
- * jobjectID object
- * JNIEnv * owner thread
- * u4 entry count
- * u4 # of threads waiting to enter
- * [JNIEnv *]* threads waiting to enter
- * u4 # of threads waiting to be notified
- * [JNIEnv *]* threads waiting to be notified
- *
- * JVMPI_MONITOR_RAW raw monitor
- *
- * char * name
- * JVMPI_RawMonitor raw monitor
- * JNIEnv * owner thread
- * u4 entry count
- * u4 # of threads waiting to enter
- * [JNIEnv *]* threads waiting to enter
- * u4 # of threads waiting to be notified
- * [JNIEnv *]* threads waiting to be notified
- */
-
-/* Format of the heap dump buffer depends on the dump level
- * specified in the JVMPI_HeapDumpArg passed to RequestEvent as arg.
- * The default is JVMPI_DUMP_LEVEL_2.
- *
- * JVMPI_DUMP_LEVEL_0:
- *
- * u1 object type (JVMPI_CLASS ...)
- * jobjectID object
- *
- * JVMPI_DUMP_LEVEL_1 and JVMPI_DUMP_LEVEL_2 use the following format:
- * In the case of JVMPI_DUMP_LEVEL_1 the values of primitive fields in object
- * instance dumps , the values of primitive statics in class dumps and the
- * values of primitive arrays are excluded. JVMPI_DUMP_LEVEL_2 includes the
- * primitive values.
- *
- * u1 record type
- *
- * JVMPI_GC_ROOT_UNKNOWN unknown root
- *
- * jobjectID object
- *
- * JVMPI_GC_ROOT_JNI_GLOBAL JNI global ref root
- *
- * jobjectID object
- * jobject JNI global reference
- *
- * JVMPI_GC_ROOT_JNI_LOCAL JNI local ref
- *
- * jobjectID object
- * JNIEnv * thread
- * u4 frame # in stack trace (-1 for empty)
- *
- * JVMPI_GC_ROOT_JAVA_FRAME Java stack frame
- *
- * jobjectID object
- * JNIEnv * thread
- * u4 frame # in stack trace (-1 for empty)
- *
- * JVMPI_GC_ROOT_NATIVE_STACK Native stack
- *
- * jobjectID object
- * JNIEnv * thread
- *
- * JVMPI_GC_ROOT_STICKY_CLASS System class
- *
- * jobjectID class object
- *
- * JVMPI_GC_ROOT_THREAD_BLOCK Reference from thread block
- *
- * jobjectID thread object
- * JNIEnv * thread
- *
- * JVMPI_GC_ROOT_MONITOR_USED Busy monitor
- *
- * jobjectID object
- *
- * JVMPI_GC_CLASS_DUMP dump of a class object
- *
- * jobjectID class
- * jobjectID super
- * jobjectID class loader
- * jobjectID signers
- * jobjectID protection domain
- * jobjectID class name
- * void * reserved
- *
- * u4 instance size (in bytes)
- *
- * [jobjectID]* interfaces
- *
- * u2 size of constant pool
- * [u2, constant pool index,
- * ty, type,
- * vl]* value
- *
- * [vl]* static field values
- *
- * JVMPI_GC_INSTANCE_DUMP dump of a normal object
- *
- * jobjectID object
- * jobjectID class
- * u4 number of bytes that follow
- * [vl]* instance field values (class, followed
- * by super, super's super ...)
- *
- * JVMPI_GC_OBJ_ARRAY_DUMP dump of an object array
- *
- * jobjectID array object
- * u4 number of elements
- * jobjectID element class
- * [jobjectID]* elements
- *
- * JVMPI_GC_PRIM_ARRAY_DUMP dump of a primitive array
- *
- * jobjectID array object
- * u4 number of elements
- * ty element type
- * [vl]* elements
- *
- */
-
-/* Format of the dump received in JVMPI_EVENT_OBJECT_DUMP:
- * All the records have JVMPI_DUMP_LEVEL_2 information.
- *
- * u1 record type
- *
- * followed by a:
- *
- * JVMPI_GC_CLASS_DUMP,
- * JVMPI_GC_INSTANCE_DUMP,
- * JVMPI_GC_OBJ_ARRAY_DUMP, or
- * JVMPI_GC_PRIM_ARRAY_DUMP record.
- */
-
-#endif /* !_JAVASOFT_JVMPI_H_ */