In the VMDeath event, add:
No events will occur after the VMDeath event.
For structs returned by functions, array and string fields should have
the following text restored:
On return, the xyz* points to a newly allocated array.
The array should be freed with Deallocate.
These include:
jvmtiThreadInfo: name
jvmtiThreadGroupInfo: name
jvmtiLocalVariableEntry: name, signature, and generic_signature
jvmtiExtensionFunctionInfo: id, short_description, params and errors.
jvmtiExtensionEventInfo: id, short_description, and params.
In GetCurrentThreadCpuTimerInfo and GetThreadCpuTimerInfo, add:
Note that the implementations of GetCurrentThreadCpuTime
and GetThreadCpuTime may differ, and thus the values
returned by GetCurrentThreadCpuTimerInfo and GetThreadCpuTimerInfo
may differ -- see GetCurrentThreadCpuTime for more information.
In GetThreadCpuTimerInfo, change:
This information will not change during a particular invocation of the VM.
to:
This information is specific to the platform and the implementation of
GetThreadCpuTime and thus does not vary by thread nor does it vary
during a particular invocation of the VM.
In GetCurrentThreadCpuTimerInfo, change:
This information will not change during a particular invocation of the VM.
to:
This information is specific to the platform and the implementation of
GetCurrentThreadCpuTime and thus does not vary by thread nor does it vary
during a particular invocation of the VM.
In IterateOverReachableObjects and IterateOverObjectsReachableFromObject, add:
The callback for an object will always follow the callback for its referrer.
Capabilities section:
Remove the example that still uses EstimateCostOfCapabilities (which has
been removed).
In GetTime, replace:
Return the time since some arbitrary start time in the past.
with text corresponding to Java programming language level access:
Return the current value of the system timer, in nanoseconds. <p>
This function can only be used to measure elapsed time and is
not related to any notion of system, or wall-clock time. The
value returned represents nanoseconds since some fixed but
arbitrary time (perhaps in the future, so values may be
negative). This function provides nanosecond precision, but not
necessarily nanosecond accuracy. No guarantees are made about
how frequently values change.
In the following functions -- **
CreateRawMonitor()
DestroyRawMonitor()
RawMonitorEnter()
RawMonitorExit()
RawMonitorWait()
RawMonitorNotify()
RawMonitorNotifyAll()
Allocate()
Deallocate()
SetEnvironmentLocalStorage()
GetEnvironmentLocalStorage()
Add the text:
This function may be called from the callbacks to the
Heap iteration functions, or from the event handles for the
GarbageCollectionStart, GarbageCollectionFinish and ObjectFree events.
And in those callbacks, replace:
This callback should not use JNI functions or JVMTI functions
(except the raw monitor functions, Allocate or Deallocate).
with:
This callback must not use JNI functions.
This callback must not use JVMTI functions except those which
specifically allow such use (see the raw monitor, memory management,
and environment local storage functions).
In the "JVMTI Environments" section of the intro, change:
While the JVMTI state is separate, agents inspect and modify the shared state
of the VM, they also share the native environment in which they execute.
As such, an agent can perturb the results of other agents or cause them
to fail. Techniques to reduce the likely of these occurrences are beyond
the scope of this document.
to:
While the JVMTI state is separate, agents inspect and modify the shared state
of the VM, they also share the native environment in which they execute.
As such, an agent can perturb the results of other agents or cause them
to fail. It is the responsibility of the agent writer to specify the level
of compatibility with other agents. JVMTI implementations are not capable
of preventing destructive interactions between agents. Techniques to reduce
the likelyhood of these occurrences are beyond the scope of this document.
In IterateOverObjectsReachableFromObject, replace:
This function iterates over all objects that are reachable from the specified object.
with:
This function iterates over all objects that are directly
and indirectly reachable from the specified object.
In IterateOverReachableObjects, replace:
This function iterates over all objects that are reachable from the root objects.
with:
This function iterates over the root object and all objects that are directly
and indirectly reachable from the root objects.
In IterateOverReachableObjects, after:
For each object reference the object_ref_callback callback function is
called to describe the object reference.
add:
The callback is called exactly once for each pair of object and referrer;
this is true even if there are reference cycles or multiple paths to the referrer.
Change JVMTI_ERROR_NULL_POINTER description from:
Invalid pointer.
to:
Pointer is unexpectedly NULL.
In AddToBootstrapClassLoaderSearch, add missing error return:
JVMTI_ERROR_ILLEGAL_ARGUMENT -- segment is an invalid path
In DynamicCodeGenerated event, name parameter, add:
The name might not be unique.
In GenerateEvents, add missing error return:
JVMTI_ERROR_ILLEGAL_ARGUMENT -- event type other than
JVMTI_EVENT_COMPILED_METHOD_LOAD or
JVMTI_EVENT_DYNAMIC_CODE_GENERATED specified.
In the ClassFileLoadHook event, name parameter, replace:
Fully qualified name of class being loaded in UTF-8 format.
with:
Name of class being loaded as a VM internal qualified name (e.g. "java/util/List")
in UTF-8 format.
In GetPhase, update the phase lists -- remove references to removed functionality:
EstimateCostOfCapabilities and VerboseOutput.