jdk/src/jdk.hprof.agent/share/native/libhprof/hprof_b_spec.h
changeset 32249 ba2c9c7773b6
parent 32248 13967da712ff
parent 32247 9f3dd33507b9
child 32253 637b00638ed6
--- a/jdk/src/jdk.hprof.agent/share/native/libhprof/hprof_b_spec.h	Thu Aug 20 11:38:20 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- *   - Neither the name of Oracle nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef HPROF_B_SPEC_H
-#define HPROF_B_SPEC_H
-
-/* Hprof binary format enums and spec. */
-
-/* Need to #define or typedef HprofId before including this file.
- *    hprof used ObjectIndex or 4 bytes, but it can be 4 or 8 byte type.
- */
-
-/* -------------------------------------------------------------------- */
-/* -------------------------------------------------------------------- */
-/* -------------------------------------------------------------------- */
-
-/*
- * hprof binary format: (result either written to a file or sent over
- * the network).
- *
- * WARNING: This format is still under development, and is subject to
- * change without notice.
- *
- *  header    "JAVA PROFILE 1.0.1" or "JAVA PROFILE 1.0.2" (0-terminated)
- *  u4        size of identifiers. Identifiers are used to represent
- *            UTF8 strings, objects, stack traces, etc. They usually
- *            have the same size as host pointers. For example, on
- *            Solaris and Win32, the size is 4.
- * u4         high word
- * u4         low word    number of milliseconds since 0:00 GMT, 1/1/70
- * [record]*  a sequence of records.
- */
-
-/*
- * Record format:
- *
- * u1         a TAG denoting the type of the record
- * u4         number of *microseconds* since the time stamp in the
- *            header. (wraps around in a little more than an hour)
- * u4         number of bytes *remaining* in the record. Note that
- *            this number excludes the tag and the length field itself.
- * [u1]*      BODY of the record (a sequence of bytes)
- */
-
-/*
- * The following TAGs are supported:
- *
- * TAG           BODY       notes
- *----------------------------------------------------------
- * HPROF_UTF8               a UTF8-encoded name
- *
- *               id         name ID
- *               [u1]*      UTF8 characters (no trailing zero)
- *
- * HPROF_LOAD_CLASS         a newly loaded class
- *
- *                u4        class serial number (> 0)
- *                id        class object ID
- *                u4        stack trace serial number
- *                id        class name ID
- *
- * HPROF_UNLOAD_CLASS       an unloading class
- *
- *                u4        class serial_number
- *
- * HPROF_FRAME              a Java stack frame
- *
- *                id        stack frame ID
- *                id        method name ID
- *                id        method signature ID
- *                id        source file name ID
- *                u4        class serial number
- *                i4        line number. >0: normal
- *                                       -1: unknown
- *                                       -2: compiled method
- *                                       -3: native method
- *
- * HPROF_TRACE              a Java stack trace
- *
- *               u4         stack trace serial number
- *               u4         thread serial number
- *               u4         number of frames
- *               [id]*      stack frame IDs
- *
- *
- * HPROF_ALLOC_SITES        a set of heap allocation sites, obtained after GC
- *
- *               u2         flags 0x0001: incremental vs. complete
- *                                0x0002: sorted by allocation vs. live
- *                                0x0004: whether to force a GC
- *               u4         cutoff ratio
- *               u4         total live bytes
- *               u4         total live instances
- *               u8         total bytes allocated
- *               u8         total instances allocated
- *               u4         number of sites that follow
- *               [u1        is_array: 0:  normal object
- *                                    2:  object array
- *                                    4:  boolean array
- *                                    5:  char array
- *                                    6:  float array
- *                                    7:  double array
- *                                    8:  byte array
- *                                    9:  short array
- *                                    10: int array
- *                                    11: long array
- *                u4        class serial number (may be zero during startup)
- *                u4        stack trace serial number
- *                u4        number of bytes alive
- *                u4        number of instances alive
- *                u4        number of bytes allocated
- *                u4]*      number of instance allocated
- *
- * HPROF_START_THREAD       a newly started thread.
- *
- *               u4         thread serial number (> 0)
- *               id         thread object ID
- *               u4         stack trace serial number
- *               id         thread name ID
- *               id         thread group name ID
- *               id         thread group parent name ID
- *
- * HPROF_END_THREAD         a terminating thread.
- *
- *               u4         thread serial number
- *
- * HPROF_HEAP_SUMMARY       heap summary
- *
- *               u4         total live bytes
- *               u4         total live instances
- *               u8         total bytes allocated
- *               u8         total instances allocated
- *
- * HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT          denote a heap dump
- *
- *               [heap dump sub-records]*
- *
- *                          There are four kinds of heap dump sub-records:
- *
- *               u1         sub-record type
- *
- *               HPROF_GC_ROOT_UNKNOWN         unknown root
- *
- *                          id         object ID
- *
- *               HPROF_GC_ROOT_THREAD_OBJ      thread object
- *
- *                          id         thread object ID  (may be 0 for a
- *                                     thread newly attached through JNI)
- *                          u4         thread sequence number
- *                          u4         stack trace sequence number
- *
- *               HPROF_GC_ROOT_JNI_GLOBAL      JNI global ref root
- *
- *                          id         object ID
- *                          id         JNI global ref ID
- *
- *               HPROF_GC_ROOT_JNI_LOCAL       JNI local ref
- *
- *                          id         object ID
- *                          u4         thread serial number
- *                          u4         frame # in stack trace (-1 for empty)
- *
- *               HPROF_GC_ROOT_JAVA_FRAME      Java stack frame
- *
- *                          id         object ID
- *                          u4         thread serial number
- *                          u4         frame # in stack trace (-1 for empty)
- *
- *               HPROF_GC_ROOT_NATIVE_STACK    Native stack
- *
- *                          id         object ID
- *                          u4         thread serial number
- *
- *               HPROF_GC_ROOT_STICKY_CLASS    System class
- *
- *                          id         object ID
- *
- *               HPROF_GC_ROOT_THREAD_BLOCK    Reference from thread block
- *
- *                          id         object ID
- *                          u4         thread serial number
- *
- *               HPROF_GC_ROOT_MONITOR_USED    Busy monitor
- *
- *                          id         object ID
- *
- *               HPROF_GC_CLASS_DUMP           dump of a class object
- *
- *                          id         class object ID
- *                          u4         stack trace serial number
- *                          id         super class object ID
- *                          id         class loader object ID
- *                          id         signers object ID
- *                          id         protection domain object ID
- *                          id         reserved
- *                          id         reserved
- *
- *                          u4         instance size (in bytes)
- *
- *                          u2         size of constant pool
- *                          [u2,       constant pool index,
- *                           ty,       type
- *                                     2:  object
- *                                     4:  boolean
- *                                     5:  char
- *                                     6:  float
- *                                     7:  double
- *                                     8:  byte
- *                                     9:  short
- *                                     10: int
- *                                     11: long
- *                           vl]*      and value
- *
- *                          u2         number of static fields
- *                          [id,       static field name,
- *                           ty,       type,
- *                           vl]*      and value
- *
- *                          u2         number of inst. fields (not inc. super)
- *                          [id,       instance field name,
- *                           ty]*      type
- *
- *               HPROF_GC_INSTANCE_DUMP        dump of a normal object
- *
- *                          id         object ID
- *                          u4         stack trace serial number
- *                          id         class object ID
- *                          u4         number of bytes that follow
- *                          [vl]*      instance field values (class, followed
- *                                     by super, super's super ...)
- *
- *               HPROF_GC_OBJ_ARRAY_DUMP       dump of an object array
- *
- *                          id         array object ID
- *                          u4         stack trace serial number
- *                          u4         number of elements
- *                          id         array class ID
- *                          [id]*      elements
- *
- *               HPROF_GC_PRIM_ARRAY_DUMP      dump of a primitive array
- *
- *                          id         array object ID
- *                          u4         stack trace serial number
- *                          u4         number of elements
- *                          u1         element type
- *                                     4:  boolean array
- *                                     5:  char array
- *                                     6:  float array
- *                                     7:  double array
- *                                     8:  byte array
- *                                     9:  short array
- *                                     10: int array
- *                                     11: long array
- *                          [u1]*      elements
- *
- * HPROF_HEAP_DUMP_END      terminates series of heap dump segments
- *
- * HPROF_CPU_SAMPLES        a set of sample traces of running threads
- *
- *                u4        total number of samples
- *                u4        # of traces
- *               [u4        # of samples
- *                u4]*      stack trace serial number
- *
- * HPROF_CONTROL_SETTINGS   the settings of on/off switches
- *
- *                u4        0x00000001: alloc traces on/off
- *                          0x00000002: cpu sampling on/off
- *                u2        stack trace depth
- *
- */
-
-typedef enum HprofTag {
-    HPROF_UTF8                    = 0x01,
-    HPROF_LOAD_CLASS              = 0x02,
-    HPROF_UNLOAD_CLASS            = 0x03,
-    HPROF_FRAME                   = 0x04,
-    HPROF_TRACE                   = 0x05,
-    HPROF_ALLOC_SITES             = 0x06,
-    HPROF_HEAP_SUMMARY            = 0x07,
-    HPROF_START_THREAD            = 0x0A,
-    HPROF_END_THREAD              = 0x0B,
-    HPROF_HEAP_DUMP               = 0x0C,
-    HPROF_HEAP_DUMP_SEGMENT       = 0x1C, /* 1.0.2 only */
-    HPROF_HEAP_DUMP_END           = 0x2C, /* 1.0.2 only */
-    HPROF_CPU_SAMPLES             = 0x0D,
-    HPROF_CONTROL_SETTINGS        = 0x0E
-} HprofTag;
-
-/*
- * Heap dump constants
- */
-
-typedef enum HprofGcTag {
-    HPROF_GC_ROOT_UNKNOWN       = 0xFF,
-    HPROF_GC_ROOT_JNI_GLOBAL    = 0x01,
-    HPROF_GC_ROOT_JNI_LOCAL     = 0x02,
-    HPROF_GC_ROOT_JAVA_FRAME    = 0x03,
-    HPROF_GC_ROOT_NATIVE_STACK  = 0x04,
-    HPROF_GC_ROOT_STICKY_CLASS  = 0x05,
-    HPROF_GC_ROOT_THREAD_BLOCK  = 0x06,
-    HPROF_GC_ROOT_MONITOR_USED  = 0x07,
-    HPROF_GC_ROOT_THREAD_OBJ    = 0x08,
-    HPROF_GC_CLASS_DUMP         = 0x20,
-    HPROF_GC_INSTANCE_DUMP      = 0x21,
-    HPROF_GC_OBJ_ARRAY_DUMP     = 0x22,
-    HPROF_GC_PRIM_ARRAY_DUMP    = 0x23
-} HprofGcTag;
-
-enum HprofType {
-        HPROF_ARRAY_OBJECT      = 1,
-        HPROF_NORMAL_OBJECT     = 2,
-        HPROF_BOOLEAN           = 4,
-        HPROF_CHAR              = 5,
-        HPROF_FLOAT             = 6,
-        HPROF_DOUBLE            = 7,
-        HPROF_BYTE              = 8,
-        HPROF_SHORT             = 9,
-        HPROF_INT               = 10,
-        HPROF_LONG              = 11
-};
-typedef unsigned char HprofType;
-
-#define HPROF_TYPE_SIZES                        \
-    {                                           \
-        /*Object?*/     sizeof(HprofId),        \
-        /*Object?*/     sizeof(HprofId),        \
-        /*Array*/       sizeof(HprofId),        \
-        /*Object?*/     sizeof(HprofId),        \
-        /*jboolean*/    1,                      \
-        /*jchar*/       2,                      \
-        /*jfloat*/      4,                      \
-        /*jdouble*/     8,                      \
-        /*jbyte*/       1,                      \
-        /*jshort*/      2,                      \
-        /*jint*/        4,                      \
-        /*jlong*/       8                       \
-    }
-
-#define HPROF_TYPE_IS_PRIMITIVE(ty)  ((ty)>=HPROF_BOOLEAN)
-
-#endif