Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

jvmpi.h

Go to the documentation of this file.
00001 /*
00002  * @(#)jvmpi.h  1.22 00/02/02
00003  *
00004  * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
00005  * 
00006  * This software is the proprietary information of Sun Microsystems, Inc.  
00007  * Use is subject to license terms.
00008  * 
00009  */
00010 
00011 #ifndef _JAVASOFT_JVMPI_H_
00012 #define _JAVASOFT_JVMPI_H_
00013 
00014 #include "jni.h"
00015 
00016 #define JVMPI_VERSION_1 ((jint)0x10000001)  /* current version */
00017 
00018 /****************************************************************
00019  * Profiler interface data structures.
00020  ****************************************************************/
00021 /* identifier types. */
00022 struct _jobjectID;
00023 typedef struct _jobjectID * jobjectID;       /* type of object ids */ 
00024 
00025 /* raw monitors */
00026 struct _JVMPI_RawMonitor;
00027 typedef struct _JVMPI_RawMonitor * JVMPI_RawMonitor;
00028 
00029 /* call frame */
00030 typedef struct {
00031     jint lineno;                      /* line number in the source file */
00032     jmethodID method_id;              /* method executed in this frame */
00033 } JVMPI_CallFrame;
00034 
00035 /* call trace */
00036 typedef struct {
00037     JNIEnv *env_id;                   /* Env where trace was recorded */
00038     jint num_frames;                  /* number of frames in this trace */
00039     JVMPI_CallFrame *frames;          /* frames */
00040 } JVMPI_CallTrace;
00041 
00042 /* method */
00043 typedef struct {
00044     char *method_name;                /* name of method */
00045     char *method_signature;           /* signature of method */
00046     jint start_lineno;                /* -1 if native, abstract .. */
00047     jint end_lineno;                  /* -1 if native, abstract .. */
00048     jmethodID method_id;              /* id assigned to this method */
00049 } JVMPI_Method;
00050 
00051 /* Field */
00052 typedef struct {
00053     char *field_name;                 /* name of field */
00054     char *field_signature;            /* signature of field */
00055 } JVMPI_Field;
00056 
00057 /* line number info for a compiled method */
00058 typedef struct {
00059     jint offset;                      /* offset from beginning of method */
00060     jint lineno;                      /* lineno from beginning of src file */
00061 } JVMPI_Lineno;
00062 
00063 /* event */
00064 typedef struct {
00065     jint event_type;                  /* event_type */
00066     JNIEnv *env_id;                   /* env where this event occured */
00067   
00068     union {
00069         struct {
00070         char *class_name;         /* class name */
00071         char *source_name;        /* name of source file */
00072         jint num_interfaces;      /* number of interfaces implemented */
00073         jint num_methods;         /* number of methods in the class */
00074         JVMPI_Method *methods;    /* methods */
00075         jint num_static_fields;   /* number of static fields */
00076         JVMPI_Field *statics;     /* static fields */
00077         jint num_instance_fields; /* number of instance fields */
00078         JVMPI_Field *instances;   /* instance fields */
00079         jobjectID class_id;       /* id of the class object */
00080     } class_load;
00081 
00082         struct {
00083         jobjectID class_id;       /* id of the class object */
00084     } class_unload;
00085 
00086         struct {
00087         unsigned char *class_data;        /* content of class file */
00088         jint class_data_len;              /* class file length */
00089         unsigned char *new_class_data;    /* instrumented class file */
00090         jint new_class_data_len;          /* new class file length */
00091         void * (*malloc_f)(unsigned int); /* memory allocation function */
00092     } class_load_hook;
00093 
00094         struct {
00095             jint arena_id;
00096         jobjectID class_id;       /* id of object class */
00097         jint is_array;            /* JVMPI_NORMAL_OBJECT, ... */
00098         jint size;                /* size in number of bytes */
00099         jobjectID obj_id;         /* id assigned to this object */
00100         } obj_alloc;
00101 
00102         struct {
00103         jobjectID obj_id;         /* id of the object */
00104     } obj_free;
00105 
00106         struct {
00107         jint arena_id;            /* cur arena id */
00108         jobjectID obj_id;         /* cur object id */
00109         jint new_arena_id;        /* new arena id */
00110         jobjectID new_obj_id;     /* new object id */     
00111     } obj_move;
00112 
00113         struct {
00114         jint arena_id;            /* id of arena */
00115         char *arena_name;         /* name of arena */
00116     } new_arena;
00117 
00118         struct {
00119         jint arena_id;            /* id of arena */
00120     } delete_arena;
00121 
00122         struct {
00123         char *thread_name;        /* name of thread */
00124         char *group_name;         /* name of group */
00125         char *parent_name;        /* name of parent */
00126         jobjectID thread_id;      /* id of the thread object */
00127         JNIEnv *thread_env_id;
00128         } thread_start;
00129 
00130         struct {
00131         int dump_level;           /* level of the heap dump info */
00132         char *begin;              /* where all the root records begin,
00133                      please see the heap dump buffer 
00134                          format described below */
00135         char *end;                /* where the object records end. */
00136         jint num_traces;          /* number of thread traces, 
00137                          0 if dump level = JVMPI_DUMP_LEVEL_0 */
00138         JVMPI_CallTrace *traces;  /* thread traces collected during 
00139                      heap dump */ 
00140     } heap_dump;
00141 
00142         struct {
00143         jobjectID obj_id;         /* object id */
00144         jobject ref_id;           /* id assigned to the globalref */
00145     } jni_globalref_alloc;
00146       
00147         struct {
00148         jobject ref_id;           /* id of the global ref */
00149     } jni_globalref_free;
00150 
00151         struct {
00152         jmethodID method_id;      /* method */
00153     } method;
00154 
00155         struct {
00156         jmethodID method_id;      /* id of method */
00157         jobjectID obj_id;         /* id of target object */
00158     } method_entry2;
00159 
00160         struct {
00161         jmethodID method_id;        /* id of compiled method */
00162         void *code_addr;            /* code start addr. in memory */
00163         jint code_size;             /* code size */
00164         jint lineno_table_size;     /* size of lineno table */
00165         JVMPI_Lineno *lineno_table; /* lineno info */
00166     } compiled_method_load;
00167         
00168         struct {
00169         jmethodID method_id;        /* id of unloaded compiled method */
00170     } compiled_method_unload;
00171 
00172     struct {
00173         jmethodID method_id; /* id of the method the instruction belongs to */
00174         jint offset;         /* instruction offset in the method's bytecode */
00175         union {
00176         struct {
00177             jboolean is_true; /* whether true or false branch is taken  */
00178         } if_info;
00179         struct {
00180             jint key; /* top stack value used as an index */
00181             jint low; /* min value of the index           */
00182             jint hi;  /* max value of the index           */
00183         } tableswitch_info;
00184         struct {
00185             jint chosen_pair_index; /* actually chosen pair index (0-based)
00186                                              * if chosen_pair_index == pairs_total then
00187                                              * the 'default' branch is taken
00188                                              */
00189             jint pairs_total;       /* total number of lookupswitch pairs */
00190         } lookupswitch_info;
00191         } u;
00192     } instruction;
00193     
00194         struct {
00195         char *begin;                /* beginning of dump buffer, 
00196                        see below for format */
00197         char *end;                  /* end of dump buffer */
00198         jint num_traces;            /* number of traces */
00199         JVMPI_CallTrace *traces;    /* traces of all threads */
00200         jint *threads_status;       /* status of all threads */
00201     } monitor_dump;
00202 
00203         struct {
00204         char *name;                 /* name of raw monitor */
00205         JVMPI_RawMonitor id;        /* id */
00206     } raw_monitor;
00207 
00208         struct {
00209         jobjectID object;           /* Java object */
00210     } monitor;
00211 
00212         struct {
00213         jobjectID object;           /* Java object */
00214         jlong timeout;              /* timeout period */
00215     } monitor_wait;
00216 
00217         struct {
00218         jlong used_objects;
00219         jlong used_object_space;
00220         jlong total_object_space;
00221     } gc_info;
00222 
00223         struct {
00224         jint data_len;
00225         char *data;
00226     } object_dump;
00227     } u;
00228 } JVMPI_Event;
00229 
00230 /* interface functions */
00231 typedef struct {
00232     jint version;   /* JVMPI version */
00233     
00234     /* ------interface implemented by the profiler------ */
00235 
00239     void (*NotifyEvent)(JVMPI_Event *event);
00240   
00241     /* ------interface implemented by the JVM------ */
00242     
00252     jint (*EnableEvent)(jint event_type, void *arg);
00253     jint (*DisableEvent)(jint event_type, void *arg);
00254     jint (*RequestEvent)(jint event_type, void *arg);
00255   
00263     void (*GetCallTrace)(JVMPI_CallTrace *trace, jint depth);
00264 
00268     void (*ProfilerExit)(jint);
00269 
00273     JVMPI_RawMonitor (*RawMonitorCreate)(char *lock_name);
00274     void (*RawMonitorEnter)(JVMPI_RawMonitor lock_id);
00275     void (*RawMonitorExit)(JVMPI_RawMonitor lock_id);
00276     void (*RawMonitorWait)(JVMPI_RawMonitor lock_id, jlong ms);
00277     void (*RawMonitorNotifyAll)(JVMPI_RawMonitor lock_id);
00278     void (*RawMonitorDestroy)(JVMPI_RawMonitor lock_id);
00279 
00285     jlong (*GetCurrentThreadCpuTime)(void);
00286 
00287     void (*SuspendThread)(JNIEnv *env);
00288     void (*ResumeThread)(JNIEnv *env);
00289     jint (*GetThreadStatus)(JNIEnv *env);
00290     jboolean (*ThreadHasRun)(JNIEnv *env);
00291 
00292     /* This function can be called safely only after JVMPI_EVENT_VM_INIT_DONE
00293        notification by the JVM. */
00294     jint (*CreateSystemThread)(char *name, jint priority, void (*f)(void *));
00295 
00296     /* thread local storage access functions to avoid locking in time 
00297        critical functions */
00298     void (*SetThreadLocalStorage)(JNIEnv *env_id, void *ptr);
00299     void * (*GetThreadLocalStorage)(JNIEnv *env_id);
00300 
00301     /* control GC */
00302     void (*DisableGC)(void);
00303     void (*EnableGC)(void);
00304     void (*RunGC)(void);
00305 
00306     jobjectID (*GetThreadObject)(JNIEnv *env);
00307     jobjectID (*GetMethodClass)(jmethodID mid);
00308 } JVMPI_Interface;
00309 
00310 /* type of argument passed to RequestEvent for heap dumps */
00311 typedef struct {
00312     jint heap_dump_level;
00313 } JVMPI_HeapDumpArg;
00314 
00315 /**********************************************************************
00316  * Constants and formats used in JVM Profiler Interface.
00317  **********************************************************************/
00318 /*
00319  * Event type constants.
00320  */
00321 #define JVMPI_EVENT_METHOD_ENTRY            ((jint)1) 
00322 #define JVMPI_EVENT_METHOD_ENTRY2           ((jint)2) 
00323 #define JVMPI_EVENT_METHOD_EXIT             ((jint)3) 
00324 
00325 #define JVMPI_EVENT_OBJECT_ALLOC            ((jint)4) 
00326 #define JVMPI_EVENT_OBJECT_FREE             ((jint)5) 
00327 #define JVMPI_EVENT_OBJECT_MOVE             ((jint)6) 
00328 
00329 #define JVMPI_EVENT_COMPILED_METHOD_LOAD    ((jint)7) 
00330 #define JVMPI_EVENT_COMPILED_METHOD_UNLOAD  ((jint)8) 
00331 
00332 #define JVMPI_EVENT_INSTRUCTION_START       ((jint)9) 
00333 
00334 #define JVMPI_EVENT_THREAD_START           ((jint)33) 
00335 #define JVMPI_EVENT_THREAD_END             ((jint)34) 
00336 
00337 #define JVMPI_EVENT_CLASS_LOAD_HOOK        ((jint)35) 
00338 
00339 #define JVMPI_EVENT_HEAP_DUMP                     ((jint)37) 
00340 #define JVMPI_EVENT_JNI_GLOBALREF_ALLOC           ((jint)38) 
00341 #define JVMPI_EVENT_JNI_GLOBALREF_FREE            ((jint)39) 
00342 #define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC      ((jint)40) 
00343 #define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE       ((jint)41) 
00344 #define JVMPI_EVENT_CLASS_LOAD                    ((jint)42) 
00345 #define JVMPI_EVENT_CLASS_UNLOAD                  ((jint)43) 
00346 #define JVMPI_EVENT_DATA_DUMP_REQUEST             ((jint)44) 
00347 #define JVMPI_EVENT_DATA_RESET_REQUEST            ((jint)45) 
00348 
00349 #define JVMPI_EVENT_JVM_INIT_DONE          ((jint)46) 
00350 #define JVMPI_EVENT_JVM_SHUT_DOWN          ((jint)47) 
00351 
00352 #define JVMPI_EVENT_ARENA_NEW              ((jint)48)
00353 #define JVMPI_EVENT_ARENA_DELETE           ((jint)49)
00354 
00355 #define JVMPI_EVENT_OBJECT_DUMP            ((jint)50)
00356 
00357 #define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER   ((jint)51)
00358 #define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED ((jint)52)
00359 #define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT    ((jint)53)
00360 #define JVMPI_EVENT_MONITOR_CONTENDED_ENTER       ((jint)54)
00361 #define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED     ((jint)55)
00362 #define JVMPI_EVENT_MONITOR_CONTENDED_EXIT        ((jint)56)
00363 #define JVMPI_EVENT_MONITOR_WAIT                  ((jint)57)
00364 #define JVMPI_EVENT_MONITOR_WAITED                ((jint)58)
00365 #define JVMPI_EVENT_MONITOR_DUMP                  ((jint)59)
00366 
00367 #define JVMPI_EVENT_GC_START                      ((jint)60)
00368 #define JVMPI_EVENT_GC_FINISH                     ((jint)61)
00369 
00370 #define JVMPI_MAX_EVENT_TYPE_VAL                  ((jint)61)
00371 
00372 /* old definitions, to be removed */
00373 #define JVMPI_EVENT_LOAD_COMPILED_METHOD          ((jint)7) 
00374 #define JVMPI_EVENT_UNLOAD_COMPILED_METHOD        ((jint)8) 
00375 #define JVMPI_EVENT_NEW_ARENA                     ((jint)48)
00376 #define JVMPI_EVENT_DELETE_ARENA                  ((jint)49)
00377 #define JVMPI_EVENT_DUMP_DATA_REQUEST             ((jint)44) 
00378 #define JVMPI_EVENT_RESET_DATA_REQUEST            ((jint)45) 
00379 #define JVMPI_EVENT_OBJ_ALLOC                     ((jint)4) 
00380 #define JVMPI_EVENT_OBJ_FREE                      ((jint)5) 
00381 #define JVMPI_EVENT_OBJ_MOVE                      ((jint)6) 
00382 
00383 #define JVMPI_REQUESTED_EVENT                     ((jint)0x10000000)
00384 
00385 
00386  
00387 /* 
00388  * enabling/disabling event notification.
00389  */
00390 /* results */
00391 #define JVMPI_SUCCESS                    ((jint)0)
00392 #define JVMPI_NOT_AVAILABLE              ((jint)1)
00393 #define JVMPI_FAIL                       ((jint)-1)
00394 
00395 /*
00396  * Thread status
00397  */
00398 enum {
00399     JVMPI_THREAD_RUNNABLE = 1,
00400     JVMPI_THREAD_MONITOR_WAIT,
00401     JVMPI_THREAD_CONDVAR_WAIT
00402 };
00403 
00404 #define JVMPI_THREAD_SUSPENDED        0x8000
00405 #define JVMPI_THREAD_INTERRUPTED      0x4000
00406 
00407 /*
00408  * Thread priority
00409  */
00410 #define JVMPI_MINIMUM_PRIORITY      1
00411 #define JVMPI_MAXIMUM_PRIORITY      10
00412 #define JVMPI_NORMAL_PRIORITY       5
00413 
00414 /*
00415  * Object type constants.
00416  */
00417 #define JVMPI_NORMAL_OBJECT          ((jint)0)
00418 #define JVMPI_CLASS              ((jint)2)
00419 #define JVMPI_BOOLEAN                    ((jint)4)
00420 #define JVMPI_CHAR                       ((jint)5)
00421 #define JVMPI_FLOAT                      ((jint)6)
00422 #define JVMPI_DOUBLE                     ((jint)7)
00423 #define JVMPI_BYTE                       ((jint)8)
00424 #define JVMPI_SHORT                      ((jint)9)
00425 #define JVMPI_INT                        ((jint)10)
00426 #define JVMPI_LONG                       ((jint)11)    
00427 
00428 /*
00429  * Monitor dump constants.
00430  */
00431 
00432 #define JVMPI_MONITOR_JAVA          0x01
00433 #define JVMPI_MONITOR_RAW           0x02
00434 
00435 /*
00436  * Heap dump constants.
00437  */
00438 #define JVMPI_GC_ROOT_UNKNOWN       0xff
00439 #define JVMPI_GC_ROOT_JNI_GLOBAL    0x01
00440 #define JVMPI_GC_ROOT_JNI_LOCAL     0x02
00441 #define JVMPI_GC_ROOT_JAVA_FRAME    0x03
00442 #define JVMPI_GC_ROOT_NATIVE_STACK  0x04
00443 #define JVMPI_GC_ROOT_STICKY_CLASS  0x05
00444 #define JVMPI_GC_ROOT_THREAD_BLOCK  0x06
00445 #define JVMPI_GC_ROOT_MONITOR_USED  0x07
00446 #define JVMPI_GC_ROOT_THREAD_OBJ    0x08
00447 
00448 #define JVMPI_GC_CLASS_DUMP         0x20
00449 #define JVMPI_GC_INSTANCE_DUMP      0x21 
00450 #define JVMPI_GC_OBJ_ARRAY_DUMP     0x22
00451 #define JVMPI_GC_PRIM_ARRAY_DUMP    0x23
00452 
00453 /*
00454  * Dump levels
00455  */
00456 #define JVMPI_DUMP_LEVEL_0    ((jint)0)
00457 #define JVMPI_DUMP_LEVEL_1    ((jint)1)
00458 #define JVMPI_DUMP_LEVEL_2    ((jint)2)
00459 
00460 /* Types used in dumps -
00461  *
00462  * u1: 1 byte
00463  * u2: 2 bytes
00464  * u4: 4 bytes
00465  * u8: 8 bytes
00466  *
00467  * ty: u1 where:
00468  *     JVMPI_CLASS:   object
00469  *     JVMPI_BOOLEAN: boolean
00470  *     JVMPI_CHAR:    char
00471  *     JVMPI_FLOAT:   float
00472  *     JVMPI_DOUBLE:  double
00473  *     JVMPI_BYTE:    byte
00474  *     JVMPI_SHORT:   short
00475  *     JVMPI_INT:     int
00476  *     JVMPI_LONG:    long
00477  *
00478  * vl: values, exact type depends on the type of the value:
00479  *     JVMPI_BOOLEAN & JVMPI_BYTE:   u1
00480  *     JVMPI_SHORT & JVMPI_CHAR:     u2
00481  *     JVMPI_INT & JVMPI_FLOAT:      u4
00482  *     JVMPI_LONG & JVMPI_DOUBLE:    u8
00483  *     JVMPI_CLASS:                  jobjectID
00484  */
00485 
00486 /* Format of the monitor dump buffer:
00487  *
00488  *               u1                          monitor type
00489  *
00490  *               JVMPI_MONITOR_JAVA          Java monitor
00491  *
00492  *                          jobjectID        object
00493  *                          JNIEnv *         owner thread
00494  *                          u4               entry count
00495  *                          u4               # of threads waiting to enter
00496  *                          [JNIEnv *]*      threads waiting to enter
00497  *                          u4               # of threads waiting to be notified
00498  *                          [JNIEnv *]*      threads waiting to be notified
00499  *
00500  *               JVMPI_MONITOR_RAW           raw monitor
00501  *
00502  *                          char *           name
00503  *                          JVMPI_RawMonitor raw monitor
00504  *                          JNIEnv *         owner thread
00505  *                          u4               entry count
00506  *                          u4               # of threads waiting to enter
00507  *                          [JNIEnv *]*      threads waiting to enter
00508  *                          u4               # of threads waiting to be notified
00509  *                          [JNIEnv *]*      threads waiting to be notified
00510  */
00511 
00512 /* Format of the heap dump buffer depends on the dump level 
00513  * specified in the JVMPI_HeapDumpArg passed to RequestEvent as arg. 
00514  * The default is JVMPI_DUMP_LEVEL_2.
00515  *
00516  * JVMPI_DUMP_LEVEL_0:
00517  * 
00518  *               u1                          object type (JVMPI_CLASS ...)
00519  *               jobjectID                   object
00520  *
00521  * JVMPI_DUMP_LEVEL_1 and JVMPI_DUMP_LEVEL_2 use the following format:  
00522  * In the case of JVMPI_DUMP_LEVEL_1 the values of primitive fields in object 
00523  * instance dumps , the values of primitive statics in class dumps and the 
00524  * values of primitive arrays are excluded.  JVMPI_DUMP_LEVEL_2 includes the
00525  * primitive values.
00526  *
00527  *               u1                          record type
00528  *
00529  *               JVMPI_GC_ROOT_UNKNOWN       unknown root
00530  *
00531  *                          jobjectID        object
00532  *
00533  *               JVMPI_GC_ROOT_JNI_GLOBAL    JNI global ref root
00534  *
00535  *                          jobjectID        object
00536  *                          jobject          JNI global reference
00537  *
00538  *               JVMPI_GC_ROOT_JNI_LOCAL     JNI local ref
00539  *
00540  *                          jobjectID        object
00541  *                          JNIEnv *         thread
00542  *                          u4               frame # in stack trace (-1 for empty)
00543  *
00544  *               JVMPI_GC_ROOT_JAVA_FRAME    Java stack frame
00545  *
00546  *                          jobjectID        object
00547  *                          JNIEnv *         thread
00548  *                          u4               frame # in stack trace (-1 for empty)
00549  *
00550  *               JVMPI_GC_ROOT_NATIVE_STACK  Native stack
00551  *
00552  *                          jobjectID        object
00553  *                          JNIEnv *         thread
00554  *
00555  *               JVMPI_GC_ROOT_STICKY_CLASS  System class
00556  *
00557  *                          jobjectID        class object
00558  *
00559  *               JVMPI_GC_ROOT_THREAD_BLOCK  Reference from thread block
00560  *
00561  *                          jobjectID        thread object
00562  *                          JNIEnv *         thread
00563  *
00564  *               JVMPI_GC_ROOT_MONITOR_USED  Busy monitor
00565  *
00566  *                          jobjectID        object
00567  *
00568  *               JVMPI_GC_CLASS_DUMP         dump of a class object
00569  *
00570  *                          jobjectID        class
00571  *                          jobjectID        super
00572  *                          jobjectID        class loader
00573  *                          jobjectID        signers
00574  *                          jobjectID        protection domain
00575  *                          jobjectID        class name
00576  *                          void *           reserved
00577  *
00578  *                          u4               instance size (in bytes)
00579  *
00580  *                          [jobjectID]*     interfaces
00581  *
00582  *                          u2               size of constant pool
00583  *                          [u2,             constant pool index,
00584  *                           ty,             type, 
00585  *                           vl]*            value
00586  *
00587  *                          [vl]*            static field values
00588  *
00589  *               JVMPI_GC_INSTANCE_DUMP      dump of a normal object
00590  *
00591  *                          jobjectID        object
00592  *                          jobjectID        class
00593  *                          u4               number of bytes that follow
00594  *                          [vl]*            instance field values (class, followed
00595  *                                           by super, super's super ...)
00596  *
00597  *               JVMPI_GC_OBJ_ARRAY_DUMP     dump of an object array
00598  *
00599  *                          jobjectID        array object
00600  *                          u4               number of elements
00601  *                          jobjectID        element class
00602  *                          [jobjectID]*     elements
00603  *
00604  *               JVMPI_GC_PRIM_ARRAY_DUMP    dump of a primitive array
00605  *
00606  *                          jobjectID        array object
00607  *                          u4               number of elements
00608  *                          ty               element type
00609  *                          [vl]*            elements
00610  *
00611  */
00612 
00613 /* Format of the dump received in JVMPI_EVENT_OBJECT_DUMP:
00614  * All the records have JVMPI_DUMP_LEVEL_2 information.
00615  *
00616  *               u1                          record type
00617  *
00618  *                     followed by a:
00619  *
00620  *                          JVMPI_GC_CLASS_DUMP,
00621  *                          JVMPI_GC_INSTANCE_DUMP,
00622  *                          JVMPI_GC_OBJ_ARRAY_DUMP, or
00623  *                          JVMPI_GC_PRIM_ARRAY_DUMP record.
00624  */
00625 
00626 #endif /* !_JAVASOFT_JVMPI_H_ */

Generated at Sun Jun 24 20:57:15 2001 for xdprof by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001