jawt.h   jawt.h 
/* /*
* @(#)jawt.h 1.10 03/12/19 * %W% %E%
* *
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
#ifndef _JAVASOFT_JAWT_H_ #ifndef _JAVASOFT_JAWT_H_
#define _JAVASOFT_JAWT_H_ #define _JAVASOFT_JAWT_H_
#include "jni.h" #include "jni.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added


 jawt_md.h   jawt_md.h 
/* /*
* @(#)jawt_md.h 1.11 03/12/19 * %W% %E%
* *
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
#ifndef _JAVASOFT_JAWT_MD_H_ #ifndef _JAVASOFT_JAWT_MD_H_
#define _JAVASOFT_JAWT_MD_H_ #define _JAVASOFT_JAWT_MD_H_
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include <X11/Intrinsic.h> #include <X11/Intrinsic.h>
#include "jawt.h" #include "jawt.h"
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added


 jdwpTransport.h   jdwpTransport.h 
/* /*
* @(#)jdwpTransport.h 1.7 03/12/19 * %W% %E%
* *
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
/* /*
* Java Debug Wire Protocol Transport Service Provider Interface. * Java Debug Wire Protocol Transport Service Provider Interface.
*/ */
#ifndef JDWPTRANSPORT_H #ifndef JDWPTRANSPORT_H
#define JDWPTRANSPORT_H #define JDWPTRANSPORT_H
#include "jni.h" #include "jni.h"
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added


 jni.h   jni.h 
/* /*
* @(#)jni.h 1.56 03/12/19 * %W% %E%
* *
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
/* /*
* We used part of Netscape's Java Runtime Interface (JRI) as the starting * We used part of Netscape's Java Runtime Interface (JRI) as the starting
* point of our design and implementation. * point of our design and implementation.
*/ */
/************************************************************************** **** /************************************************************************** ****
* Java Runtime Interface * Java Runtime Interface
* Copyright (c) 1996 Netscape Communications Corporation. All rights reser ved. * Copyright (c) 1996 Netscape Communications Corporation. All rights reser ved.
skipping to change at line 120 skipping to change at line 120
jdouble d; jdouble d;
jobject l; jobject l;
} jvalue; } jvalue;
struct _jfieldID; struct _jfieldID;
typedef struct _jfieldID *jfieldID; typedef struct _jfieldID *jfieldID;
struct _jmethodID; struct _jmethodID;
typedef struct _jmethodID *jmethodID; typedef struct _jmethodID *jmethodID;
/* Return values from jobjectRefType */
typedef enum _jobjectType {
JNIInvalidRefType = 0,
JNILocalRefType = 1,
JNIGlobalRefType = 2,
JNIWeakGlobalRefType = 3
} jobjectRefType;
#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ #endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */
/* /*
* jboolean constants * jboolean constants
*/ */
#define JNI_FALSE 0 #define JNI_FALSE 0
#define JNI_TRUE 1 #define JNI_TRUE 1
/* /*
skipping to change at line 735 skipping to change at line 743
jboolean (JNICALL *ExceptionCheck) jboolean (JNICALL *ExceptionCheck)
(JNIEnv *env); (JNIEnv *env);
jobject (JNICALL *NewDirectByteBuffer) jobject (JNICALL *NewDirectByteBuffer)
(JNIEnv* env, void* address, jlong capacity); (JNIEnv* env, void* address, jlong capacity);
void* (JNICALL *GetDirectBufferAddress) void* (JNICALL *GetDirectBufferAddress)
(JNIEnv* env, jobject buf); (JNIEnv* env, jobject buf);
jlong (JNICALL *GetDirectBufferCapacity) jlong (JNICALL *GetDirectBufferCapacity)
(JNIEnv* env, jobject buf); (JNIEnv* env, jobject buf);
/* New JNI 1.6 Features */
jobjectRefType (JNICALL *GetObjectRefType)
(JNIEnv* env, jobject obj);
}; };
/* /*
* We use inlined functions for C++ so that programmers can write: * We use inlined functions for C++ so that programmers can write:
* *
* env->FindClass("java/lang/String") * env->FindClass("java/lang/String")
* *
* in C++ rather than: * in C++ rather than:
* *
* (*env)->FindClass(env, "java/lang/String") * (*env)->FindClass(env, "java/lang/String")
skipping to change at line 1823 skipping to change at line 1836
jobject NewDirectByteBuffer(void* address, jlong capacity) { jobject NewDirectByteBuffer(void* address, jlong capacity) {
return functions->NewDirectByteBuffer(this, address, capacity); return functions->NewDirectByteBuffer(this, address, capacity);
} }
void* GetDirectBufferAddress(jobject buf) { void* GetDirectBufferAddress(jobject buf) {
return functions->GetDirectBufferAddress(this, buf); return functions->GetDirectBufferAddress(this, buf);
} }
jlong GetDirectBufferCapacity(jobject buf) { jlong GetDirectBufferCapacity(jobject buf) {
return functions->GetDirectBufferCapacity(this, buf); return functions->GetDirectBufferCapacity(this, buf);
} }
jobjectRefType GetObjectRefType(jobject obj) {
return functions->GetObjectRefType(this, obj);
}
#endif /* __cplusplus */ #endif /* __cplusplus */
}; };
typedef struct JavaVMOption { typedef struct JavaVMOption {
char *optionString; char *optionString;
void *extraInfo; void *extraInfo;
} JavaVMOption; } JavaVMOption;
typedef struct JavaVMInitArgs { typedef struct JavaVMInitArgs {
skipping to change at line 1847 skipping to change at line 1863
jboolean ignoreUnrecognized; jboolean ignoreUnrecognized;
} JavaVMInitArgs; } JavaVMInitArgs;
typedef struct JavaVMAttachArgs { typedef struct JavaVMAttachArgs {
jint version; jint version;
char *name; char *name;
jobject group; jobject group;
} JavaVMAttachArgs; } JavaVMAttachArgs;
/* These structures will be VM-specific. */ /* These will be VM-specific. */
typedef struct JDK1_1InitArgs {
jint version;
char **properties;
jint checkSource;
jint nativeStackSize;
jint javaStackSize;
jint minHeapSize;
jint maxHeapSize;
jint verifyMode;
char *classpath;
jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);
void (JNICALL *exit)(jint code);
void (JNICALL *abort)(void);
jint enableClassGC;
jint enableVerboseGC;
jint disableAsyncGC;
jint verbose;
jboolean debugging;
jint debugPort;
} JDK1_1InitArgs;
typedef struct JDK1_1AttachArgs {
void * __padding; /* C compilers don't allow empty structures. */
} JDK1_1AttachArgs;
#define JDK1_2 #define JDK1_2
#define JDK1_4 #define JDK1_4
/* End VM-specific. */ /* End VM-specific. */
struct JNIInvokeInterface_ { struct JNIInvokeInterface_ {
void *reserved0; void *reserved0;
void *reserved1; void *reserved1;
void *reserved2; void *reserved2;
skipping to change at line 1945 skipping to change at line 1933
/* Defined by native libraries. */ /* Defined by native libraries. */
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved); JNI_OnLoad(JavaVM *vm, void *reserved);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
JNI_OnUnload(JavaVM *vm, void *reserved); JNI_OnUnload(JavaVM *vm, void *reserved);
#define JNI_VERSION_1_1 0x00010001 #define JNI_VERSION_1_1 0x00010001
#define JNI_VERSION_1_2 0x00010002 #define JNI_VERSION_1_2 0x00010002
#define JNI_VERSION_1_4 0x00010004 #define JNI_VERSION_1_4 0x00010004
#define JNI_VERSION_1_6 0x00010006
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* !_JAVASOFT_JNI_H_ */ #endif /* !_JAVASOFT_JNI_H_ */
 End of changes. 7 change blocks. 
32 lines changed or deleted 21 lines changed or added


 jni_md.h   jni_md.h 
/* /*
* @(#)jni_md.h 1.18 03/12/19 * %W% %E%
* *
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
#ifndef _JAVASOFT_JNI_MD_H_ #ifndef _JAVASOFT_JNI_MD_H_
#define _JAVASOFT_JNI_MD_H_ #define _JAVASOFT_JNI_MD_H_
#define JNIEXPORT #define JNIEXPORT
#define JNIIMPORT #define JNIIMPORT
#define JNICALL #define JNICALL
typedef int jint; typedef int jint;
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added


 jvmti.h   jvmti.h 
#ifdef USE_PRAGMA_IDENT_HDR #ifdef USE_PRAGMA_IDENT_HDR
#pragma ident "@(#)jvmtiLib.xsl 1.32 04/06/01 20:19:53 JVM" #pragma ident "@(#)jvmtiLib.xsl 1.38 06/08/02 23:22:31 JVM"
#endif #endif
/* /*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/ */
/* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */ /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */
/* Include file for the Java(tm) Virtual Machine Tool Interface */ /* Include file for the Java(tm) Virtual Machine Tool Interface */
#ifndef _JAVA_JVMTI_H_ #ifndef _JAVA_JVMTI_H_
#define _JAVA_JVMTI_H_ #define _JAVA_JVMTI_H_
#include "jni.h" #include "jni.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
enum { enum {
JVMTI_VERSION_1 = 0x30010000, JVMTI_VERSION_1 = 0x30010000,
JVMTI_VERSION_1_0 = 0x30010000, JVMTI_VERSION_1_0 = 0x30010000,
JVMTI_VERSION_1_1 = 0x30010100,
JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (0 * 0x100) + 33 /* versi on: 1.0.33 */ JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (1 * 0x100) + 102 /* vers ion: 1.1.102 */
}; };
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Agent_OnLoad(JavaVM *vm, char *options, void *reserved); Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
JNIEXPORT jint JNICALL
Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Agent_OnUnload(JavaVM *vm); Agent_OnUnload(JavaVM *vm);
/* Forward declaration of the environment */ /* Forward declaration of the environment */
struct _jvmtiEnv; struct _jvmtiEnv;
struct jvmtiInterface_1_; struct jvmtiInterface_1_;
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 99 skipping to change at line 103
}; };
/* Thread Priority Constants */ /* Thread Priority Constants */
enum { enum {
JVMTI_THREAD_MIN_PRIORITY = 1, JVMTI_THREAD_MIN_PRIORITY = 1,
JVMTI_THREAD_NORM_PRIORITY = 5, JVMTI_THREAD_NORM_PRIORITY = 5,
JVMTI_THREAD_MAX_PRIORITY = 10 JVMTI_THREAD_MAX_PRIORITY = 10
}; };
/* Heap Filter Flags */
enum {
JVMTI_HEAP_FILTER_TAGGED = 0x4,
JVMTI_HEAP_FILTER_UNTAGGED = 0x8,
JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10,
JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20
};
/* Heap Visit Control Flags */
enum {
JVMTI_VISIT_OBJECTS = 0x100,
JVMTI_VISIT_ABORT = 0x8000
};
/* Heap Reference Enumeration */
typedef enum {
JVMTI_HEAP_REFERENCE_CLASS = 1,
JVMTI_HEAP_REFERENCE_FIELD = 2,
JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,
JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,
JVMTI_HEAP_REFERENCE_SIGNERS = 5,
JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,
JVMTI_HEAP_REFERENCE_INTERFACE = 7,
JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,
JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,
JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,
JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,
JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,
JVMTI_HEAP_REFERENCE_MONITOR = 23,
JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,
JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,
JVMTI_HEAP_REFERENCE_THREAD = 26,
JVMTI_HEAP_REFERENCE_OTHER = 27
} jvmtiHeapReferenceKind;
/* Primitive Type Enumeration */
typedef enum {
JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,
JVMTI_PRIMITIVE_TYPE_BYTE = 66,
JVMTI_PRIMITIVE_TYPE_CHAR = 67,
JVMTI_PRIMITIVE_TYPE_SHORT = 83,
JVMTI_PRIMITIVE_TYPE_INT = 73,
JVMTI_PRIMITIVE_TYPE_LONG = 74,
JVMTI_PRIMITIVE_TYPE_FLOAT = 70,
JVMTI_PRIMITIVE_TYPE_DOUBLE = 68
} jvmtiPrimitiveType;
/* Heap Object Filter Enumeration */ /* Heap Object Filter Enumeration */
typedef enum { typedef enum {
JVMTI_HEAP_OBJECT_TAGGED = 1, JVMTI_HEAP_OBJECT_TAGGED = 1,
JVMTI_HEAP_OBJECT_UNTAGGED = 2, JVMTI_HEAP_OBJECT_UNTAGGED = 2,
JVMTI_HEAP_OBJECT_EITHER = 3 JVMTI_HEAP_OBJECT_EITHER = 3
} jvmtiHeapObjectFilter; } jvmtiHeapObjectFilter;
/* Heap Root Kind Enumeration */ /* Heap Root Kind Enumeration */
skipping to change at line 252 skipping to change at line 307
} jvmtiVerboseFlag; } jvmtiVerboseFlag;
/* JLocation Format Enumeration */ /* JLocation Format Enumeration */
typedef enum { typedef enum {
JVMTI_JLOCATION_JVMBCI = 1, JVMTI_JLOCATION_JVMBCI = 1,
JVMTI_JLOCATION_MACHINEPC = 2, JVMTI_JLOCATION_MACHINEPC = 2,
JVMTI_JLOCATION_OTHER = 0 JVMTI_JLOCATION_OTHER = 0
} jvmtiJlocationFormat; } jvmtiJlocationFormat;
/* Resource Exhaustion Flags */
enum {
JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001,
JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002,
JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004
};
/* Errors */ /* Errors */
typedef enum { typedef enum {
JVMTI_ERROR_NONE = 0, JVMTI_ERROR_NONE = 0,
JVMTI_ERROR_INVALID_THREAD = 10, JVMTI_ERROR_INVALID_THREAD = 10,
JVMTI_ERROR_INVALID_THREAD_GROUP = 11, JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
JVMTI_ERROR_INVALID_PRIORITY = 12, JVMTI_ERROR_INVALID_PRIORITY = 12,
JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13, JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
JVMTI_ERROR_THREAD_SUSPENDED = 14, JVMTI_ERROR_THREAD_SUSPENDED = 14,
JVMTI_ERROR_THREAD_NOT_ALIVE = 15, JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
skipping to change at line 297 skipping to change at line 360
JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
JVMTI_ERROR_UNMODIFIABLE_CLASS = 79, JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
JVMTI_ERROR_NOT_AVAILABLE = 98, JVMTI_ERROR_NOT_AVAILABLE = 98,
JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99, JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
JVMTI_ERROR_NULL_POINTER = 100, JVMTI_ERROR_NULL_POINTER = 100,
JVMTI_ERROR_ABSENT_INFORMATION = 101, JVMTI_ERROR_ABSENT_INFORMATION = 101,
JVMTI_ERROR_INVALID_EVENT_TYPE = 102, JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
JVMTI_ERROR_ILLEGAL_ARGUMENT = 103, JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
JVMTI_ERROR_NATIVE_METHOD = 104, JVMTI_ERROR_NATIVE_METHOD = 104,
JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,
JVMTI_ERROR_OUT_OF_MEMORY = 110, JVMTI_ERROR_OUT_OF_MEMORY = 110,
JVMTI_ERROR_ACCESS_DENIED = 111, JVMTI_ERROR_ACCESS_DENIED = 111,
JVMTI_ERROR_WRONG_PHASE = 112, JVMTI_ERROR_WRONG_PHASE = 112,
JVMTI_ERROR_INTERNAL = 113, JVMTI_ERROR_INTERNAL = 113,
JVMTI_ERROR_UNATTACHED_THREAD = 115, JVMTI_ERROR_UNATTACHED_THREAD = 115,
JVMTI_ERROR_INVALID_ENVIRONMENT = 116, JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
JVMTI_ERROR_MAX = 116 JVMTI_ERROR_MAX = 116
} jvmtiError; } jvmtiError;
/* Event IDs */ /* Event IDs */
skipping to change at line 336 skipping to change at line 400
JVMTI_EVENT_METHOD_EXIT = 66, JVMTI_EVENT_METHOD_EXIT = 66,
JVMTI_EVENT_NATIVE_METHOD_BIND = 67, JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
JVMTI_EVENT_COMPILED_METHOD_LOAD = 68, JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69, JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70, JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
JVMTI_EVENT_DATA_DUMP_REQUEST = 71, JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
JVMTI_EVENT_MONITOR_WAIT = 73, JVMTI_EVENT_MONITOR_WAIT = 73,
JVMTI_EVENT_MONITOR_WAITED = 74, JVMTI_EVENT_MONITOR_WAITED = 74,
JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75, JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76, JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,
JVMTI_EVENT_GARBAGE_COLLECTION_START = 81, JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82, JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
JVMTI_EVENT_OBJECT_FREE = 83, JVMTI_EVENT_OBJECT_FREE = 83,
JVMTI_EVENT_VM_OBJECT_ALLOC = 84, JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
JVMTI_MAX_EVENT_TYPE_VAL = 84 JVMTI_MAX_EVENT_TYPE_VAL = 84
} jvmtiEvent; } jvmtiEvent;
/* Pre-Declarations */
struct _jvmtiThreadInfo;
typedef struct _jvmtiThreadInfo jvmtiThreadInfo;
struct _jvmtiMonitorStackDepthInfo;
typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo;
struct _jvmtiThreadGroupInfo;
typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo;
struct _jvmtiFrameInfo;
typedef struct _jvmtiFrameInfo jvmtiFrameInfo;
struct _jvmtiStackInfo;
typedef struct _jvmtiStackInfo jvmtiStackInfo;
struct _jvmtiHeapReferenceInfoField;
typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField;
struct _jvmtiHeapReferenceInfoArray;
typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray;
struct _jvmtiHeapReferenceInfoConstantPool;
typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoCo
nstantPool;
struct _jvmtiHeapReferenceInfoStackLocal;
typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStac
kLocal;
struct _jvmtiHeapReferenceInfoJniLocal;
typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLoc
al;
struct _jvmtiHeapReferenceInfoReserved;
typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserv
ed;
union _jvmtiHeapReferenceInfo;
typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo;
struct _jvmtiHeapCallbacks;
typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks;
struct _jvmtiClassDefinition;
typedef struct _jvmtiClassDefinition jvmtiClassDefinition;
struct _jvmtiMonitorUsage;
typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage;
struct _jvmtiLineNumberEntry;
typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry;
struct _jvmtiLocalVariableEntry;
typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry;
struct _jvmtiParamInfo;
typedef struct _jvmtiParamInfo jvmtiParamInfo;
struct _jvmtiExtensionFunctionInfo;
typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo;
struct _jvmtiExtensionEventInfo;
typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo;
struct _jvmtiTimerInfo;
typedef struct _jvmtiTimerInfo jvmtiTimerInfo;
struct _jvmtiAddrLocationMap;
typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;
/* Function Types */ /* Function Types */
typedef void (JNICALL *jvmtiStartFunction) typedef void (JNICALL *jvmtiStartFunction)
(jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg); (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);
typedef jint (JNICALL *jvmtiHeapIterationCallback)
(jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_d
ata);
typedef jint (JNICALL *jvmtiHeapReferenceCallback)
(jvmtiHeapReferenceKind reference_kind, const jvmtiHeapReferenceInfo* r
eference_info, jlong class_tag, jlong referrer_class_tag, jlong size, jlong
* tag_ptr, jlong* referrer_tag_ptr, jint length, void* user_data);
typedef jint (JNICALL *jvmtiPrimitiveFieldCallback)
(jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong
object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType
value_type, void* user_data);
typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback)
(jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmti
PrimitiveType element_type, const void* elements, void* user_data);
typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback)
(jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint
value_length, void* user_data);
typedef jint (JNICALL *jvmtiReservedCallback)
();
typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback) typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
(jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback) typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_p tr, void* user_data); (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_p tr, void* user_data);
typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback) typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_p tr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_d ata); (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_p tr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_d ata);
typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback) typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
(jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data); (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);
typedef jvmtiError (JNICALL *jvmtiExtensionFunction) typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
(jvmtiEnv* jvmti_env, ...); (jvmtiEnv* jvmti_env, ...);
typedef void (JNICALL *jvmtiExtensionEvent) typedef void (JNICALL *jvmtiExtensionEvent)
(jvmtiEnv* jvmti_env, ...); (jvmtiEnv* jvmti_env, ...);
/* Structure Types */ /* Structure Types */
struct _jvmtiThreadInfo {
typedef struct {
char* name; char* name;
jint priority; jint priority;
jboolean is_daemon; jboolean is_daemon;
jthreadGroup thread_group; jthreadGroup thread_group;
jobject context_class_loader; jobject context_class_loader;
} jvmtiThreadInfo; };
struct _jvmtiMonitorStackDepthInfo {
typedef struct { jobject monitor;
jint stack_depth;
};
struct _jvmtiThreadGroupInfo {
jthreadGroup parent; jthreadGroup parent;
char* name; char* name;
jint max_priority; jint max_priority;
jboolean is_daemon; jboolean is_daemon;
} jvmtiThreadGroupInfo; };
struct _jvmtiFrameInfo {
typedef struct {
jmethodID method; jmethodID method;
jlocation location; jlocation location;
} jvmtiFrameInfo; };
struct _jvmtiStackInfo {
typedef struct {
jthread thread; jthread thread;
jint state; jint state;
jvmtiFrameInfo* frame_buffer; jvmtiFrameInfo* frame_buffer;
jint frame_count; jint frame_count;
} jvmtiStackInfo; };
struct _jvmtiHeapReferenceInfoField {
typedef struct { jint index;
};
struct _jvmtiHeapReferenceInfoArray {
jint index;
};
struct _jvmtiHeapReferenceInfoConstantPool {
jint index;
};
struct _jvmtiHeapReferenceInfoStackLocal {
jlong thread_tag;
jlong thread_id;
jint depth;
jmethodID method;
jlocation location;
jint slot;
};
struct _jvmtiHeapReferenceInfoJniLocal {
jlong thread_tag;
jlong thread_id;
jint depth;
jmethodID method;
};
struct _jvmtiHeapReferenceInfoReserved {
jlong reserved1;
jlong reserved2;
jlong reserved3;
jlong reserved4;
jlong reserved5;
jlong reserved6;
jlong reserved7;
jlong reserved8;
};
union _jvmtiHeapReferenceInfo {
jvmtiHeapReferenceInfoField field;
jvmtiHeapReferenceInfoArray array;
jvmtiHeapReferenceInfoConstantPool constant_pool;
jvmtiHeapReferenceInfoStackLocal stack_local;
jvmtiHeapReferenceInfoJniLocal jni_local;
jvmtiHeapReferenceInfoReserved other;
};
struct _jvmtiHeapCallbacks {
jvmtiHeapIterationCallback heap_iteration_callback;
jvmtiHeapReferenceCallback heap_reference_callback;
jvmtiPrimitiveFieldCallback primitive_field_callback;
jvmtiArrayPrimitiveValueCallback array_primitive_value_callback;
jvmtiStringPrimitiveValueCallback string_primitive_value_callback;
jvmtiReservedCallback reserved5;
jvmtiReservedCallback reserved6;
jvmtiReservedCallback reserved7;
jvmtiReservedCallback reserved8;
jvmtiReservedCallback reserved9;
jvmtiReservedCallback reserved10;
jvmtiReservedCallback reserved11;
jvmtiReservedCallback reserved12;
jvmtiReservedCallback reserved13;
jvmtiReservedCallback reserved14;
jvmtiReservedCallback reserved15;
};
struct _jvmtiClassDefinition {
jclass klass; jclass klass;
jint class_byte_count; jint class_byte_count;
const unsigned char* class_bytes; const unsigned char* class_bytes;
} jvmtiClassDefinition; };
struct _jvmtiMonitorUsage {
typedef struct {
jthread owner; jthread owner;
jint entry_count; jint entry_count;
jint waiter_count; jint waiter_count;
jthread* waiters; jthread* waiters;
jint notify_waiter_count; jint notify_waiter_count;
jthread* notify_waiters; jthread* notify_waiters;
} jvmtiMonitorUsage; };
struct _jvmtiLineNumberEntry {
typedef struct {
jlocation start_location; jlocation start_location;
jint line_number; jint line_number;
} jvmtiLineNumberEntry; };
struct _jvmtiLocalVariableEntry {
typedef struct {
jlocation start_location; jlocation start_location;
jint length; jint length;
char* name; char* name;
char* signature; char* signature;
char* generic_signature; char* generic_signature;
jint slot; jint slot;
} jvmtiLocalVariableEntry; };
struct _jvmtiParamInfo {
typedef struct {
char* name; char* name;
jvmtiParamKind kind; jvmtiParamKind kind;
jvmtiParamTypes base_type; jvmtiParamTypes base_type;
jboolean null_ok; jboolean null_ok;
} jvmtiParamInfo; };
struct _jvmtiExtensionFunctionInfo {
typedef struct {
jvmtiExtensionFunction func; jvmtiExtensionFunction func;
char* id; char* id;
char* short_description; char* short_description;
jint param_count; jint param_count;
jvmtiParamInfo* params; jvmtiParamInfo* params;
jint error_count; jint error_count;
jvmtiError* errors; jvmtiError* errors;
} jvmtiExtensionFunctionInfo; };
struct _jvmtiExtensionEventInfo {
typedef struct {
jint extension_event_index; jint extension_event_index;
char* id; char* id;
char* short_description; char* short_description;
jint param_count; jint param_count;
jvmtiParamInfo* params; jvmtiParamInfo* params;
} jvmtiExtensionEventInfo; };
struct _jvmtiTimerInfo {
typedef struct {
jlong max_value; jlong max_value;
jboolean may_skip_forward; jboolean may_skip_forward;
jboolean may_skip_backward; jboolean may_skip_backward;
jvmtiTimerKind kind; jvmtiTimerKind kind;
jlong reserved1; jlong reserved1;
jlong reserved2; jlong reserved2;
} jvmtiTimerInfo; };
struct _jvmtiAddrLocationMap {
typedef struct {
const void* start_address; const void* start_address;
jlocation location; jlocation location;
} jvmtiAddrLocationMap; };
typedef struct { typedef struct {
unsigned int can_tag_objects : 1; unsigned int can_tag_objects : 1;
unsigned int can_generate_field_modification_events : 1; unsigned int can_generate_field_modification_events : 1;
unsigned int can_generate_field_access_events : 1; unsigned int can_generate_field_access_events : 1;
unsigned int can_get_bytecodes : 1; unsigned int can_get_bytecodes : 1;
unsigned int can_get_synthetic_attribute : 1; unsigned int can_get_synthetic_attribute : 1;
unsigned int can_get_owned_monitor_info : 1; unsigned int can_get_owned_monitor_info : 1;
unsigned int can_get_current_contended_monitor : 1; unsigned int can_get_current_contended_monitor : 1;
unsigned int can_get_monitor_info : 1; unsigned int can_get_monitor_info : 1;
skipping to change at line 497 skipping to change at line 676
unsigned int can_get_thread_cpu_time : 1; unsigned int can_get_thread_cpu_time : 1;
unsigned int can_generate_method_entry_events : 1; unsigned int can_generate_method_entry_events : 1;
unsigned int can_generate_method_exit_events : 1; unsigned int can_generate_method_exit_events : 1;
unsigned int can_generate_all_class_hook_events : 1; unsigned int can_generate_all_class_hook_events : 1;
unsigned int can_generate_compiled_method_load_events : 1; unsigned int can_generate_compiled_method_load_events : 1;
unsigned int can_generate_monitor_events : 1; unsigned int can_generate_monitor_events : 1;
unsigned int can_generate_vm_object_alloc_events : 1; unsigned int can_generate_vm_object_alloc_events : 1;
unsigned int can_generate_native_method_bind_events : 1; unsigned int can_generate_native_method_bind_events : 1;
unsigned int can_generate_garbage_collection_events : 1; unsigned int can_generate_garbage_collection_events : 1;
unsigned int can_generate_object_free_events : 1; unsigned int can_generate_object_free_events : 1;
unsigned int : 15; unsigned int can_force_early_return : 1;
unsigned int can_get_owned_monitor_stack_depth_info : 1;
unsigned int can_get_constant_pool : 1;
unsigned int can_set_native_method_prefix : 1;
unsigned int can_retransform_classes : 1;
unsigned int can_retransform_any_class : 1;
unsigned int can_generate_resource_exhaustion_heap_events : 1;
unsigned int can_generate_resource_exhaustion_threads_events : 1;
unsigned int : 7;
unsigned int : 16; unsigned int : 16;
unsigned int : 16; unsigned int : 16;
unsigned int : 16; unsigned int : 16;
unsigned int : 16; unsigned int : 16;
unsigned int : 16; unsigned int : 16;
} jvmtiCapabilities; } jvmtiCapabilities;
/* Event Definitions */ /* Event Definitions */
typedef void (JNICALL *jvmtiEventReserved)(void); typedef void (JNICALL *jvmtiEventReserved)(void);
skipping to change at line 668 skipping to change at line 855
JNIEnv* jni_env, JNIEnv* jni_env,
jthread thread, jthread thread,
jmethodID method, jmethodID method,
void* address, void* address,
void** new_address_ptr); void** new_address_ptr);
typedef void (JNICALL *jvmtiEventObjectFree) typedef void (JNICALL *jvmtiEventObjectFree)
(jvmtiEnv *jvmti_env, (jvmtiEnv *jvmti_env,
jlong tag); jlong tag);
typedef void (JNICALL *jvmtiEventResourceExhausted)
(jvmtiEnv *jvmti_env,
JNIEnv* jni_env,
jint flags,
const void* reserved,
const char* description);
typedef void (JNICALL *jvmtiEventSingleStep) typedef void (JNICALL *jvmtiEventSingleStep)
(jvmtiEnv *jvmti_env, (jvmtiEnv *jvmti_env,
JNIEnv* jni_env, JNIEnv* jni_env,
jthread thread, jthread thread,
jmethodID method, jmethodID method,
jlocation location); jlocation location);
typedef void (JNICALL *jvmtiEventThreadEnd) typedef void (JNICALL *jvmtiEventThreadEnd)
(jvmtiEnv *jvmti_env, (jvmtiEnv *jvmti_env,
JNIEnv* jni_env, JNIEnv* jni_env,
skipping to change at line 769 skipping to change at line 963
/* 75 : Monitor Contended Enter */ /* 75 : Monitor Contended Enter */
jvmtiEventMonitorContendedEnter MonitorContendedEnter; jvmtiEventMonitorContendedEnter MonitorContendedEnter;
/* 76 : Monitor Contended Entered */ /* 76 : Monitor Contended Entered */
jvmtiEventMonitorContendedEntered MonitorContendedEntered; jvmtiEventMonitorContendedEntered MonitorContendedEntered;
/* 77 */ /* 77 */
jvmtiEventReserved reserved77; jvmtiEventReserved reserved77;
/* 78 */ /* 78 */
jvmtiEventReserved reserved78; jvmtiEventReserved reserved78;
/* 79 */ /* 79 */
jvmtiEventReserved reserved79; jvmtiEventReserved reserved79;
/* 80 */ /* 80 : Resource Exhausted */
jvmtiEventReserved reserved80; jvmtiEventResourceExhausted ResourceExhausted;
/* 81 : Garbage Collection Start */ /* 81 : Garbage Collection Start */
jvmtiEventGarbageCollectionStart GarbageCollectionStart; jvmtiEventGarbageCollectionStart GarbageCollectionStart;
/* 82 : Garbage Collection Finish */ /* 82 : Garbage Collection Finish */
jvmtiEventGarbageCollectionFinish GarbageCollectionFinish; jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
/* 83 : Object Free */ /* 83 : Object Free */
jvmtiEventObjectFree ObjectFree; jvmtiEventObjectFree ObjectFree;
/* 84 : VM Object Allocation */ /* 84 : VM Object Allocation */
jvmtiEventVMObjectAlloc VMObjectAlloc; jvmtiEventVMObjectAlloc VMObjectAlloc;
} jvmtiEventCallbacks; } jvmtiEventCallbacks;
skipping to change at line 871 skipping to change at line 1065
/* 16 : Get Frame Count */ /* 16 : Get Frame Count */
jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env,
jthread thread, jthread thread,
jint* count_ptr); jint* count_ptr);
/* 17 : Get Thread State */ /* 17 : Get Thread State */
jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env,
jthread thread, jthread thread,
jint* thread_state_ptr); jint* thread_state_ptr);
/* 18 : RESERVED */ /* 18 : Get Current Thread */
void *reserved18; jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env,
jthread* thread_ptr);
/* 19 : Get Frame Location */ /* 19 : Get Frame Location */
jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env,
jthread thread, jthread thread,
jint depth, jint depth,
jmethodID* method_ptr, jmethodID* method_ptr,
jlocation* location_ptr); jlocation* location_ptr);
/* 20 : Notify Frame Pop */ /* 20 : Notify Frame Pop */
jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env,
skipping to change at line 1019 skipping to change at line 1214
/* 43 : Set Field Modification Watch */ /* 43 : Set Field Modification Watch */
jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env,
jclass klass, jclass klass,
jfieldID field); jfieldID field);
/* 44 : Clear Field Modification Watch */ /* 44 : Clear Field Modification Watch */
jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env,
jclass klass, jclass klass,
jfieldID field); jfieldID field);
/* 45 : RESERVED */ /* 45 : Is Modifiable Class */
void *reserved45; jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env,
jclass klass,
jboolean* is_modifiable_class_ptr);
/* 46 : Allocate */ /* 46 : Allocate */
jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, jvmtiError (JNICALL *Allocate) (jvmtiEnv* env,
jlong size, jlong size,
unsigned char** mem_ptr); unsigned char** mem_ptr);
/* 47 : Deallocate */ /* 47 : Deallocate */
jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env,
unsigned char* mem); unsigned char* mem);
skipping to change at line 1169 skipping to change at line 1366
jmethodID method, jmethodID method,
jlocation* start_location_ptr, jlocation* start_location_ptr,
jlocation* end_location_ptr); jlocation* end_location_ptr);
/* 72 : Get Local Variable Table */ /* 72 : Get Local Variable Table */
jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env,
jmethodID method, jmethodID method,
jint* entry_count_ptr, jint* entry_count_ptr,
jvmtiLocalVariableEntry** table_ptr); jvmtiLocalVariableEntry** table_ptr);
/* 73 : RESERVED */ /* 73 : Set Native Method Prefix */
void *reserved73; jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env,
const char* prefix);
/* 74 : RESERVED */ /* 74 : Set Native Method Prefixes */
void *reserved74; jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env,
jint prefix_count,
char** prefixes);
/* 75 : Get Bytecodes */ /* 75 : Get Bytecodes */
jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env,
jmethodID method, jmethodID method,
jint* bytecode_count_ptr, jint* bytecode_count_ptr,
unsigned char** bytecodes_ptr); unsigned char** bytecodes_ptr);
/* 76 : Is Method Native */ /* 76 : Is Method Native */
jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env,
jmethodID method, jmethodID method,
skipping to change at line 1206 skipping to change at line 1406
/* 79 : Get Classloader Classes */ /* 79 : Get Classloader Classes */
jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env,
jobject initiating_loader, jobject initiating_loader,
jint* class_count_ptr, jint* class_count_ptr,
jclass** classes_ptr); jclass** classes_ptr);
/* 80 : Pop Frame */ /* 80 : Pop Frame */
jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env,
jthread thread); jthread thread);
/* 81 : RESERVED */ /* 81 : Force Early Return - Object */
void *reserved81; jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env,
jthread thread,
jobject value);
/* 82 : RESERVED */ /* 82 : Force Early Return - Int */
void *reserved82; jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env,
jthread thread,
jint value);
/* 83 : RESERVED */ /* 83 : Force Early Return - Long */
void *reserved83; jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env,
jthread thread,
jlong value);
/* 84 : RESERVED */ /* 84 : Force Early Return - Float */
void *reserved84; jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env,
jthread thread,
jfloat value);
/* 85 : RESERVED */ /* 85 : Force Early Return - Double */
void *reserved85; jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env,
jthread thread,
jdouble value);
/* 86 : RESERVED */ /* 86 : Force Early Return - Void */
void *reserved86; jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env,
jthread thread);
/* 87 : Redefine Classes */ /* 87 : Redefine Classes */
jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env,
jint class_count, jint class_count,
const jvmtiClassDefinition* class_definitions); const jvmtiClassDefinition* class_definitions);
/* 88 : Get Version Number */ /* 88 : Get Version Number */
jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env,
jint* version_ptr); jint* version_ptr);
skipping to change at line 1328 skipping to change at line 1539
jobject object, jobject object,
jlong tag); jlong tag);
/* 108 : Force Garbage Collection */ /* 108 : Force Garbage Collection */
jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env); jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);
/* 109 : Iterate Over Objects Reachable From Object */ /* 109 : Iterate Over Objects Reachable From Object */
jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* en v, jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* en v,
jobject object, jobject object,
jvmtiObjectReferenceCallback object_reference_callback, jvmtiObjectReferenceCallback object_reference_callback,
void* user_data); const void* user_data);
/* 110 : Iterate Over Reachable Objects */ /* 110 : Iterate Over Reachable Objects */
jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env,
jvmtiHeapRootCallback heap_root_callback, jvmtiHeapRootCallback heap_root_callback,
jvmtiStackReferenceCallback stack_ref_callback, jvmtiStackReferenceCallback stack_ref_callback,
jvmtiObjectReferenceCallback object_ref_callback, jvmtiObjectReferenceCallback object_ref_callback,
void* user_data); const void* user_data);
/* 111 : Iterate Over Heap */ /* 111 : Iterate Over Heap */
jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env,
jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectFilter object_filter,
jvmtiHeapObjectCallback heap_object_callback, jvmtiHeapObjectCallback heap_object_callback,
void* user_data); const void* user_data);
/* 112 : Iterate Over Instances Of Class */ /* 112 : Iterate Over Instances Of Class */
jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env,
jclass klass, jclass klass,
jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectFilter object_filter,
jvmtiHeapObjectCallback heap_object_callback, jvmtiHeapObjectCallback heap_object_callback,
void* user_data); const void* user_data);
/* 113 : RESERVED */ /* 113 : RESERVED */
void *reserved113; void *reserved113;
/* 114 : Get Objects With Tags */ /* 114 : Get Objects With Tags */
jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env,
jint tag_count, jint tag_count,
const jlong* tags, const jlong* tags,
jint* count_ptr, jint* count_ptr,
jobject** object_result_ptr, jobject** object_result_ptr,
jlong** tag_result_ptr); jlong** tag_result_ptr);
/* 115 : RESERVED */ /* 115 : Follow References */
void *reserved115; jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env,
jint heap_filter,
jclass klass,
jobject initial_object,
const jvmtiHeapCallbacks* callbacks,
const void* user_data);
/* 116 : RESERVED */ /* 116 : Iterate Through Heap */
void *reserved116; jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env,
jint heap_filter,
jclass klass,
const jvmtiHeapCallbacks* callbacks,
const void* user_data);
/* 117 : RESERVED */ /* 117 : RESERVED */
void *reserved117; void *reserved117;
/* 118 : RESERVED */ /* 118 : RESERVED */
void *reserved118; void *reserved118;
/* 119 : RESERVED */ /* 119 : RESERVED */
void *reserved119; void *reserved119;
skipping to change at line 1483 skipping to change at line 1703
const jvmtiCapabilities* capabilities_ptr); const jvmtiCapabilities* capabilities_ptr);
/* 143 : Relinquish Capabilities */ /* 143 : Relinquish Capabilities */
jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env,
const jvmtiCapabilities* capabilities_ptr); const jvmtiCapabilities* capabilities_ptr);
/* 144 : Get Available Processors */ /* 144 : Get Available Processors */
jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env,
jint* processor_count_ptr); jint* processor_count_ptr);
/* 145 : RESERVED */ /* 145 : Get Class Version Numbers */
void *reserved145; jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env,
jclass klass,
jint* minor_version_ptr,
jint* major_version_ptr);
/* 146 : RESERVED */ /* 146 : Get Constant Pool */
void *reserved146; jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env,
jclass klass,
jint* constant_pool_count_ptr,
jint* constant_pool_byte_count_ptr,
unsigned char** constant_pool_bytes_ptr);
/* 147 : Get Environment Local Storage */ /* 147 : Get Environment Local Storage */
jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env,
void** data_ptr); void** data_ptr);
/* 148 : Set Environment Local Storage */ /* 148 : Set Environment Local Storage */
jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env,
const void* data); const void* data);
/* 149 : Add To Bootstrap Class Loader Search */ /* 149 : Add To Bootstrap Class Loader Search */
jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env,
const char* segment); const char* segment);
/* 150 : Set Verbose Flag */ /* 150 : Set Verbose Flag */
jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env,
jvmtiVerboseFlag flag, jvmtiVerboseFlag flag,
jboolean value); jboolean value);
/* 151 : RESERVED */ /* 151 : Add To System Class Loader Search */
void *reserved151; jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env,
const char* segment);
/* 152 : RESERVED */ /* 152 : Retransform Classes */
void *reserved152; jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env,
jint class_count,
const jclass* classes);
/* 153 : RESERVED */ /* 153 : Get Owned Monitor Stack Depth Info */
void *reserved153; jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env,
jthread thread,
jint* monitor_info_count_ptr,
jvmtiMonitorStackDepthInfo** monitor_info_ptr);
/* 154 : Get Object Size */ /* 154 : Get Object Size */
jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env,
jobject object, jobject object,
jlong* size_ptr); jlong* size_ptr);
} jvmtiInterface_1; } jvmtiInterface_1;
struct _jvmtiEnv { struct _jvmtiEnv {
const struct jvmtiInterface_1_ *functions; const struct jvmtiInterface_1_ *functions;
skipping to change at line 1540 skipping to change at line 1773
jvmtiError Deallocate(unsigned char* mem) { jvmtiError Deallocate(unsigned char* mem) {
return functions->Deallocate(this, mem); return functions->Deallocate(this, mem);
} }
jvmtiError GetThreadState(jthread thread, jvmtiError GetThreadState(jthread thread,
jint* thread_state_ptr) { jint* thread_state_ptr) {
return functions->GetThreadState(this, thread, thread_state_ptr); return functions->GetThreadState(this, thread, thread_state_ptr);
} }
jvmtiError GetCurrentThread(jthread* thread_ptr) {
return functions->GetCurrentThread(this, thread_ptr);
}
jvmtiError GetAllThreads(jint* threads_count_ptr, jvmtiError GetAllThreads(jint* threads_count_ptr,
jthread** threads_ptr) { jthread** threads_ptr) {
return functions->GetAllThreads(this, threads_count_ptr, threads_ptr); return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);
} }
jvmtiError SuspendThread(jthread thread) { jvmtiError SuspendThread(jthread thread) {
return functions->SuspendThread(this, thread); return functions->SuspendThread(this, thread);
} }
jvmtiError SuspendThreadList(jint request_count, jvmtiError SuspendThreadList(jint request_count,
skipping to change at line 1585 skipping to change at line 1822
jvmtiThreadInfo* info_ptr) { jvmtiThreadInfo* info_ptr) {
return functions->GetThreadInfo(this, thread, info_ptr); return functions->GetThreadInfo(this, thread, info_ptr);
} }
jvmtiError GetOwnedMonitorInfo(jthread thread, jvmtiError GetOwnedMonitorInfo(jthread thread,
jint* owned_monitor_count_ptr, jint* owned_monitor_count_ptr,
jobject** owned_monitors_ptr) { jobject** owned_monitors_ptr) {
return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count _ptr, owned_monitors_ptr); return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count _ptr, owned_monitors_ptr);
} }
jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread,
jint* monitor_info_count_ptr,
jvmtiMonitorStackDepthInfo** monitor_info_ptr) {
return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_i
nfo_count_ptr, monitor_info_ptr);
}
jvmtiError GetCurrentContendedMonitor(jthread thread, jvmtiError GetCurrentContendedMonitor(jthread thread,
jobject* monitor_ptr) { jobject* monitor_ptr) {
return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr) ; return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr) ;
} }
jvmtiError RunAgentThread(jthread thread, jvmtiError RunAgentThread(jthread thread,
jvmtiStartFunction proc, jvmtiStartFunction proc,
const void* arg, const void* arg,
jint priority) { jint priority) {
return functions->RunAgentThread(this, thread, proc, arg, priority); return functions->RunAgentThread(this, thread, proc, arg, priority);
skipping to change at line 1667 skipping to change at line 1910
jmethodID* method_ptr, jmethodID* method_ptr,
jlocation* location_ptr) { jlocation* location_ptr) {
return functions->GetFrameLocation(this, thread, depth, method_ptr, loc ation_ptr); return functions->GetFrameLocation(this, thread, depth, method_ptr, loc ation_ptr);
} }
jvmtiError NotifyFramePop(jthread thread, jvmtiError NotifyFramePop(jthread thread,
jint depth) { jint depth) {
return functions->NotifyFramePop(this, thread, depth); return functions->NotifyFramePop(this, thread, depth);
} }
jvmtiError ForceEarlyReturnObject(jthread thread,
jobject value) {
return functions->ForceEarlyReturnObject(this, thread, value);
}
jvmtiError ForceEarlyReturnInt(jthread thread,
jint value) {
return functions->ForceEarlyReturnInt(this, thread, value);
}
jvmtiError ForceEarlyReturnLong(jthread thread,
jlong value) {
return functions->ForceEarlyReturnLong(this, thread, value);
}
jvmtiError ForceEarlyReturnFloat(jthread thread,
jfloat value) {
return functions->ForceEarlyReturnFloat(this, thread, value);
}
jvmtiError ForceEarlyReturnDouble(jthread thread,
jdouble value) {
return functions->ForceEarlyReturnDouble(this, thread, value);
}
jvmtiError ForceEarlyReturnVoid(jthread thread) {
return functions->ForceEarlyReturnVoid(this, thread);
}
jvmtiError FollowReferences(jint heap_filter,
jclass klass,
jobject initial_object,
const jvmtiHeapCallbacks* callbacks,
const void* user_data) {
return functions->FollowReferences(this, heap_filter, klass, initial_ob
ject, callbacks, user_data);
}
jvmtiError IterateThroughHeap(jint heap_filter,
jclass klass,
const jvmtiHeapCallbacks* callbacks,
const void* user_data) {
return functions->IterateThroughHeap(this, heap_filter, klass, callback
s, user_data);
}
jvmtiError GetTag(jobject object, jvmtiError GetTag(jobject object,
jlong* tag_ptr) { jlong* tag_ptr) {
return functions->GetTag(this, object, tag_ptr); return functions->GetTag(this, object, tag_ptr);
} }
jvmtiError SetTag(jobject object, jvmtiError SetTag(jobject object,
jlong tag) { jlong tag) {
return functions->SetTag(this, object, tag); return functions->SetTag(this, object, tag);
} }
jvmtiError GetObjectsWithTags(jint tag_count,
const jlong* tags,
jint* count_ptr,
jobject** object_result_ptr,
jlong** tag_result_ptr) {
return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr,
object_result_ptr, tag_result_ptr);
}
jvmtiError ForceGarbageCollection() { jvmtiError ForceGarbageCollection() {
return functions->ForceGarbageCollection(this); return functions->ForceGarbageCollection(this);
} }
jvmtiError IterateOverObjectsReachableFromObject(jobject object, jvmtiError IterateOverObjectsReachableFromObject(jobject object,
jvmtiObjectReferenceCallback object_reference_callback, jvmtiObjectReferenceCallback object_reference_callback,
void* user_data) { const void* user_data) {
return functions->IterateOverObjectsReachableFromObject(this, object, o bject_reference_callback, user_data); return functions->IterateOverObjectsReachableFromObject(this, object, o bject_reference_callback, user_data);
} }
jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_ca llback, jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_ca llback,
jvmtiStackReferenceCallback stack_ref_callback, jvmtiStackReferenceCallback stack_ref_callback,
jvmtiObjectReferenceCallback object_ref_callback, jvmtiObjectReferenceCallback object_ref_callback,
void* user_data) { const void* user_data) {
return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data); return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
} }
jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter, jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,
jvmtiHeapObjectCallback heap_object_callback, jvmtiHeapObjectCallback heap_object_callback,
void* user_data) { const void* user_data) {
return functions->IterateOverHeap(this, object_filter, heap_object_call back, user_data); return functions->IterateOverHeap(this, object_filter, heap_object_call back, user_data);
} }
jvmtiError IterateOverInstancesOfClass(jclass klass, jvmtiError IterateOverInstancesOfClass(jclass klass,
jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectFilter object_filter,
jvmtiHeapObjectCallback heap_object_callback, jvmtiHeapObjectCallback heap_object_callback,
void* user_data) { const void* user_data) {
return functions->IterateOverInstancesOfClass(this, klass, object_filte r, heap_object_callback, user_data); return functions->IterateOverInstancesOfClass(this, klass, object_filte r, heap_object_callback, user_data);
} }
jvmtiError GetObjectsWithTags(jint tag_count,
const jlong* tags,
jint* count_ptr,
jobject** object_result_ptr,
jlong** tag_result_ptr) {
return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr,
object_result_ptr, tag_result_ptr);
}
jvmtiError GetLocalObject(jthread thread, jvmtiError GetLocalObject(jthread thread,
jint depth, jint depth,
jint slot, jint slot,
jobject* value_ptr) { jobject* value_ptr) {
return functions->GetLocalObject(this, thread, depth, slot, value_ptr); return functions->GetLocalObject(this, thread, depth, slot, value_ptr);
} }
jvmtiError GetLocalInt(jthread thread, jvmtiError GetLocalInt(jthread thread,
jint depth, jint depth,
jint slot, jint slot,
skipping to change at line 1865 skipping to change at line 2152
jfieldID** fields_ptr) { jfieldID** fields_ptr) {
return functions->GetClassFields(this, klass, field_count_ptr, fields_p tr); return functions->GetClassFields(this, klass, field_count_ptr, fields_p tr);
} }
jvmtiError GetImplementedInterfaces(jclass klass, jvmtiError GetImplementedInterfaces(jclass klass,
jint* interface_count_ptr, jint* interface_count_ptr,
jclass** interfaces_ptr) { jclass** interfaces_ptr) {
return functions->GetImplementedInterfaces(this, klass, interface_count _ptr, interfaces_ptr); return functions->GetImplementedInterfaces(this, klass, interface_count _ptr, interfaces_ptr);
} }
jvmtiError GetClassVersionNumbers(jclass klass,
jint* minor_version_ptr,
jint* major_version_ptr) {
return functions->GetClassVersionNumbers(this, klass, minor_version_ptr
, major_version_ptr);
}
jvmtiError GetConstantPool(jclass klass,
jint* constant_pool_count_ptr,
jint* constant_pool_byte_count_ptr,
unsigned char** constant_pool_bytes_ptr) {
return functions->GetConstantPool(this, klass, constant_pool_count_ptr,
constant_pool_byte_count_ptr, constant_pool_bytes_ptr);
}
jvmtiError IsInterface(jclass klass, jvmtiError IsInterface(jclass klass,
jboolean* is_interface_ptr) { jboolean* is_interface_ptr) {
return functions->IsInterface(this, klass, is_interface_ptr); return functions->IsInterface(this, klass, is_interface_ptr);
} }
jvmtiError IsArrayClass(jclass klass, jvmtiError IsArrayClass(jclass klass,
jboolean* is_array_class_ptr) { jboolean* is_array_class_ptr) {
return functions->IsArrayClass(this, klass, is_array_class_ptr); return functions->IsArrayClass(this, klass, is_array_class_ptr);
} }
jvmtiError IsModifiableClass(jclass klass,
jboolean* is_modifiable_class_ptr) {
return functions->IsModifiableClass(this, klass, is_modifiable_class_pt
r);
}
jvmtiError GetClassLoader(jclass klass, jvmtiError GetClassLoader(jclass klass,
jobject* classloader_ptr) { jobject* classloader_ptr) {
return functions->GetClassLoader(this, klass, classloader_ptr); return functions->GetClassLoader(this, klass, classloader_ptr);
} }
jvmtiError GetSourceDebugExtension(jclass klass, jvmtiError GetSourceDebugExtension(jclass klass,
char** source_debug_extension_ptr) { char** source_debug_extension_ptr) {
return functions->GetSourceDebugExtension(this, klass, source_debug_ext ension_ptr); return functions->GetSourceDebugExtension(this, klass, source_debug_ext ension_ptr);
} }
jvmtiError RetransformClasses(jint class_count,
const jclass* classes) {
return functions->RetransformClasses(this, class_count, classes);
}
jvmtiError RedefineClasses(jint class_count, jvmtiError RedefineClasses(jint class_count,
const jvmtiClassDefinition* class_definitions) { const jvmtiClassDefinition* class_definitions) {
return functions->RedefineClasses(this, class_count, class_definitions) ; return functions->RedefineClasses(this, class_count, class_definitions) ;
} }
jvmtiError GetObjectSize(jobject object, jvmtiError GetObjectSize(jobject object,
jlong* size_ptr) { jlong* size_ptr) {
return functions->GetObjectSize(this, object, size_ptr); return functions->GetObjectSize(this, object, size_ptr);
} }
skipping to change at line 1997 skipping to change at line 2307
jvmtiError IsMethodSynthetic(jmethodID method, jvmtiError IsMethodSynthetic(jmethodID method,
jboolean* is_synthetic_ptr) { jboolean* is_synthetic_ptr) {
return functions->IsMethodSynthetic(this, method, is_synthetic_ptr); return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);
} }
jvmtiError IsMethodObsolete(jmethodID method, jvmtiError IsMethodObsolete(jmethodID method,
jboolean* is_obsolete_ptr) { jboolean* is_obsolete_ptr) {
return functions->IsMethodObsolete(this, method, is_obsolete_ptr); return functions->IsMethodObsolete(this, method, is_obsolete_ptr);
} }
jvmtiError SetNativeMethodPrefix(const char* prefix) {
return functions->SetNativeMethodPrefix(this, prefix);
}
jvmtiError SetNativeMethodPrefixes(jint prefix_count,
char** prefixes) {
return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes)
;
}
jvmtiError CreateRawMonitor(const char* name, jvmtiError CreateRawMonitor(const char* name,
jrawMonitorID* monitor_ptr) { jrawMonitorID* monitor_ptr) {
return functions->CreateRawMonitor(this, name, monitor_ptr); return functions->CreateRawMonitor(this, name, monitor_ptr);
} }
jvmtiError DestroyRawMonitor(jrawMonitorID monitor) { jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {
return functions->DestroyRawMonitor(this, monitor); return functions->DestroyRawMonitor(this, monitor);
} }
jvmtiError RawMonitorEnter(jrawMonitorID monitor) { jvmtiError RawMonitorEnter(jrawMonitorID monitor) {
skipping to change at line 2115 skipping to change at line 2434
} }
jvmtiError GetAvailableProcessors(jint* processor_count_ptr) { jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {
return functions->GetAvailableProcessors(this, processor_count_ptr); return functions->GetAvailableProcessors(this, processor_count_ptr);
} }
jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) { jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {
return functions->AddToBootstrapClassLoaderSearch(this, segment); return functions->AddToBootstrapClassLoaderSearch(this, segment);
} }
jvmtiError AddToSystemClassLoaderSearch(const char* segment) {
return functions->AddToSystemClassLoaderSearch(this, segment);
}
jvmtiError GetSystemProperties(jint* count_ptr, jvmtiError GetSystemProperties(jint* count_ptr,
char*** property_ptr) { char*** property_ptr) {
return functions->GetSystemProperties(this, count_ptr, property_ptr); return functions->GetSystemProperties(this, count_ptr, property_ptr);
} }
jvmtiError GetSystemProperty(const char* property, jvmtiError GetSystemProperty(const char* property,
char** value_ptr) { char** value_ptr) {
return functions->GetSystemProperty(this, property, value_ptr); return functions->GetSystemProperty(this, property, value_ptr);
} }
 End of changes. 63 change blocks. 
97 lines changed or deleted 438 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/