1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
3 <!--
4 Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved.
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
7 This code is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License version 2 only, as
9 published by the Free Software Foundation.
10
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
16
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24 -->
3359 <errors>
3360 <error id="JVMTI_ERROR_OPAQUE_FRAME">
3361 The implementation is unable to force the current frame to return
3362 (e.g. current frame is executing a native method).
3363 </error>
3364 <error id="JVMTI_ERROR_TYPE_MISMATCH">
3365 The result type of the called method is not <code>double</code>.
3366 </error>
3367 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
3368 Thread was not suspended and was not the current thread.
3369 </error>
3370 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
3371 There are no frames on the call stack.
3372 </error>
3373 </errors>
3374 </function>
3375
3376 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
3377 <synopsis>Force Early Return - Void</synopsis>
3378 <description>
3379 This function can be used to return from a method with no result type.
3380 That is, the called method must be declared <code>void</code>.
3381 </description>
3382 <origin>new</origin>
3383 <capabilities>
3384 <required id="can_force_early_return"></required>
3385 </capabilities>
3386 <parameters>
3387 <param id="thread">
3388 <jthread null="current" impl="noconvert"/>
3389 <description>
3390 The thread whose current frame is to return early.
3391 </description>
3392 </param>
3393 </parameters>
3394 <errors>
3395 <error id="JVMTI_ERROR_OPAQUE_FRAME">
3396 The implementation is unable to force the current frame to return
3397 (e.g. current frame is executing a native method).
3398 </error>
3399 <error id="JVMTI_ERROR_TYPE_MISMATCH">
3400 The called method has a result type.
3401 </error>
3402 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
3403 Thread was not suspended and was not the current thread.
3404 </error>
3405 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
3406 There are no frames on the call stack.
3407 </error>
3408 </errors>
3409 </function>
3410
3411 </category>
3412
3413 <category id="Heap" label="Heap">
3414 <intro>
3415 These functions are used to analyze the heap.
3416 Functionality includes the ability to view the objects in the
3417 heap and to tag these objects.
3418 </intro>
3419
3420 <intro id="objectTags" label="Object Tags">
3421 A <i>tag</i> is a value associated with an object.
3422 Tags are explicitly set by the agent using the
3423 <functionlink id="SetTag"></functionlink> function or by
3424 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
3425 <p/>
3426 Tags are local to the environment; that is, the tags of one
3427 environment are not visible in another.
3428 <p/>
3429 Tags are <code>jlong</code> values which can be used
3430 simply to mark an object or to store a pointer to more detailed
3431 information. Objects which have not been tagged have a
3432 tag of zero.
3433 Setting a tag to zero makes the object untagged.
3434 </intro>
3435
3436 <intro id="heapCallbacks" label="Heap Callback Functions">
3437 Heap functions which iterate through the heap and recursively
3438 follow object references use agent supplied callback functions
3439 to deliver the information.
3440 <p/>
3441 These heap callback functions must adhere to the following restrictions --
3442 These callbacks must not use JNI functions.
3443 These callbacks must not use <jvmti/> functions except
3444 <i>callback safe</i> functions which
3445 specifically allow such use (see the raw monitor, memory management,
3446 and environment local storage functions).
3447 <p/>
3448 An implementation may invoke a callback on an internal thread or
3449 the thread which called the iteration function.
3450 Heap callbacks are single threaded -- no more than one callback will
3451 be invoked at a time.
3452 <p/>
3453 The Heap Filter Flags can be used to prevent reporting
5842 These functions are used to retrieve or set the value of a local variable.
5843 The variable is identified by the depth of the frame containing its
5844 value and the variable's slot number within that frame.
5845 The mapping of variables to
5846 slot numbers can be obtained with the function
5847 <functionlink id="GetLocalVariableTable"></functionlink>.
5848 <p/>
5849 The <code>GetLocalXXX</code> functions may be used to retrieve the value of
5850 a local variable contained in the frame of a virtual thread.
5851 The <code>SetLocalXXX</code> functions may be used to set the value of a
5852 local variable in the topmost frame of a virtual thread suspended at an event.
5853 An implementation may support setting locals in other cases.
5854 </intro>
5855
5856 <function id="GetLocalObject" num="21">
5857 <synopsis>Get Local Variable - Object</synopsis>
5858 <description>
5859 This function can be used to retrieve the value of a local
5860 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
5861 <p/>
5862 The specified thread must be suspended or must be the current thread.
5863 </description>
5864 <origin>jvmdi</origin>
5865 <capabilities>
5866 <required id="can_access_local_variables"></required>
5867 </capabilities>
5868 <parameters>
5869 <param id="thread">
5870 <jthread null="current" frame="frame" impl="noconvert"/>
5871 <description>
5872 The thread of the frame containing the variable's value.
5873 </description>
5874 </param>
5875 <param id="depth">
5876 <jframeID thread="thread"/>
5877 <description>
5878 The depth of the frame containing the variable's value.
5879 </description>
5880 </param>
5881 <param id="slot">
5882 <jint/>
5883 <description>
5884 The variable's slot number.
5885 </description>
5886 </param>
5887 <param id="value_ptr">
5888 <outptr><jobject/></outptr>
5889 <description>
5890 On return, points to the variable's value.
5891 </description>
5892 </param>
5893 </parameters>
5894 <errors>
5895 <error id="JVMTI_ERROR_INVALID_SLOT">
5896 Invalid <code>slot</code>.
5897 </error>
5898 <error id="JVMTI_ERROR_TYPE_MISMATCH">
5899 The variable type is not
5900 <code>Object</code> or a subclass of <code>Object</code>.
5901 </error>
5902 <error id="JVMTI_ERROR_OPAQUE_FRAME">
5903 The implementation is unable to get the frame locals
5904 (e.g. the frame at <code>depth</code> is executing a native method).
5905 </error>
5906 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5907 Thread was not suspended and was not the current thread.
5908 </error>
5909 </errors>
5910 </function>
5911
5912 <function id="GetLocalInstance" num="155" since="1.2">
5913 <synopsis>Get Local Instance</synopsis>
5914 <description>
5915 This function can be used to retrieve the value of the local object
5916 variable at slot 0 (the "<code>this</code>" object) from non-static
5917 frames. This function can retrieve the "<code>this</code>" object from
5918 native method frames, whereas <code>GetLocalObject()</code> would
5919 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
5920 <p/>
5921 The specified thread must be suspended or must be the current thread.
5922 </description>
5923 <origin>new</origin>
5924 <capabilities>
5925 <required id="can_access_local_variables"></required>
5926 </capabilities>
5927 <parameters>
5928 <param id="thread">
5929 <jthread null="current" frame="frame" impl="noconvert"/>
5930 <description>
5931 The thread of the frame containing the variable's value.
5932 </description>
5933 </param>
5934 <param id="depth">
5935 <jframeID thread="thread"/>
5936 <description>
5937 The depth of the frame containing the variable's value.
5938 </description>
5939 </param>
5940 <param id="value_ptr">
5941 <outptr><jobject/></outptr>
5942 <description>
5943 On return, points to the variable's value.
5944 </description>
5945 </param>
5946 </parameters>
5947 <errors>
5948 <error id="JVMTI_ERROR_INVALID_SLOT">
5949 If the specified frame is a static method frame.
5950 </error>
5951 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5952 Thread was not suspended and was not the current thread.
5953 </error>
5954 </errors>
5955 </function>
5956 <function id="GetLocalInt" num="22">
5957 <synopsis>Get Local Variable - Int</synopsis>
5958 <description>
5959 This function can be used to retrieve the value of a local
5960 variable whose type is <code>int</code>,
5961 <code>short</code>, <code>char</code>, <code>byte</code>, or
5962 <code>boolean</code>.
5963 <p/>
7335 </param>
7336 <param id="source_name_ptr">
7337 <allocbuf><char/></allocbuf>
7338 <description>
7339 On return, points to the class's source file name, encoded as a
7340 <internallink id="mUTF">modified UTF-8</internallink> string.
7341 </description>
7342 </param>
7343 </parameters>
7344 <errors>
7345 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
7346 Class information does not include a source file name. This includes
7347 cases where the class is an array class or primitive class.
7348 </error>
7349 </errors>
7350 </function>
7351
7352 <function id="GetClassModifiers" phase="start" num="51">
7353 <synopsis>Get Class Modifiers</synopsis>
7354 <description>
7355 For the class indicated by <code>klass</code>, return the access
7356 flags
7357 via <code>modifiers_ptr</code>.
7358 Access flags are defined in <vmspec chapter="4"/>.
7359 <p/>
7360 If the class is an array class, then its public, private, and protected
7361 modifiers are the same as those of its component type. For arrays of
7362 primitives, this component type is represented by one of the primitive
7363 classes (for example, <code>java.lang.Integer.TYPE</code>).
7364 <p/>
7365 If the class is a primitive class, its public modifier is always true,
7366 and its protected and private modifiers are always false.
7367 <p/>
7368 If the class is an array class or a primitive class then its final
7369 modifier is always true and its interface modifier is always false.
7370 The values of its other modifiers are not determined by this specification.
7371
7372 </description>
7373 <origin>jvmdi</origin>
7374 <capabilities>
7375 </capabilities>
7376 <parameters>
7377 <param id="klass">
7378 <jclass/>
7379 <description>
7380 The class to query.
7381 </description>
7382 </param>
7383 <param id="modifiers_ptr">
7384 <outptr><jint/></outptr>
7385 <description>
7386 On return, points to the current access flags of this class.
7387
7388 </description>
7389 </param>
7390 </parameters>
7391 <errors>
7392 </errors>
7393 </function>
7394
7395 <function id="GetClassMethods" phase="start" num="52">
7396 <synopsis>Get Class Methods</synopsis>
7397 <description>
7398 For the class indicated by <code>klass</code>, return a count of
7399 methods via <code>method_count_ptr</code> and a list of
7400 method IDs via <code>methods_ptr</code>. The method list contains
7401 constructors and static initializers as well as true methods.
7402 Only directly declared methods are returned (not inherited methods).
7403 An empty method list is returned for array classes and primitive classes
7404 (for example, <code>java.lang.Integer.TYPE</code>).
7405 </description>
7406 <origin>jvmdi</origin>
8269 <field id="notify_waiter_count">
8270 <jint/>
8271 <description>
8272 The number of platform threads waiting to own this monitor, or <code>0</code>
8273 if only virtual threads are waiting to be notified or no threads are waiting
8274 to be notified
8275 </description>
8276 </field>
8277 <field id="notify_waiters">
8278 <allocfieldbuf><jthread/></allocfieldbuf>
8279 <description>
8280 The <code>notify_waiter_count</code> platform threads waiting to be notified
8281 </description>
8282 </field>
8283 </typedef>
8284 <description>
8285 Get information about the object's monitor.
8286 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
8287 are filled in with information about usage of the monitor.
8288 <p/>
8289 <b> This function does not support getting information about an object's monitor
8290 when it is owned by a virtual thread. It also does not support returning a
8291 reference to virtual threads that are waiting to own a monitor or waiting to
8292 be notified.
8293 </b>
8294 <todo>
8295 Decide and then clarify suspend requirements.
8296 </todo>
8297 </description>
8298 <origin>jvmdi</origin>
8299 <capabilities>
8300 <required id="can_get_monitor_info"></required>
8301 </capabilities>
8302 <parameters>
8303 <param id="object">
8304 <jobject/>
8305 <description>
8306 The object to query.
8307 </description>
8308 </param>
10668 </capabilityfield>
10669 <capabilityfield id="can_generate_sampled_object_alloc_events" since="11">
10670 <description>
10671 Can generate sampled allocation events.
10672 If this capability is enabled then the heap sampling method
10673 <functionlink id="SetHeapSamplingInterval"></functionlink> can be
10674 called and <eventlink id="SampledObjectAlloc"></eventlink> events can be generated.
10675 </description>
10676 </capabilityfield>
10677 <capabilityfield id="can_support_virtual_threads" since="21">
10678 <description>
10679 Can support virtual threads.
10680 If this capability is enabled then the following functions can be called:
10681 <functionlink id="SuspendAllVirtualThreads"></functionlink>,
10682 <functionlink id="ResumeAllVirtualThreads"></functionlink>,
10683 and the following events can be enabled:
10684 <eventlink id="VirtualThreadStart"></eventlink>,
10685 <eventlink id="VirtualThreadEnd"></eventlink>.
10686 </description>
10687 </capabilityfield>
10688 </capabilitiestypedef>
10689
10690 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
10691 <synopsis>Get Potential Capabilities</synopsis>
10692 <description>
10693 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
10694 features that can potentially be possessed by this environment
10695 at this time.
10696 The returned capabilities differ from the complete set of capabilities
10697 implemented by the VM in two cases: another environment possesses
10698 capabilities that can only be possessed by one environment, or the
10699 current <functionlink id="GetPhase">phase</functionlink> is live,
10700 and certain capabilities can only be added during the <code>OnLoad</code> phase.
10701 The <functionlink id="AddCapabilities"></functionlink> function
10702 may be used to set any or all or these capabilities.
10703 Currently possessed capabilities are included.
10704 <p/>
10705 Typically this function is used in the <code>OnLoad</code> function.
10706 Some virtual machines may allow a limited set of capabilities to be
10707 added in the live phase.
13971 </description>
13972 </param>
13973 </parameters>
13974 </event>
13975
13976 <event label="VM Object Allocation"
13977 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
13978 <description>
13979 Sent when a method causes the virtual machine to directly allocate an
13980 Object visible to Java programming language code.
13981 Generally object allocation should be detected by instrumenting
13982 the bytecodes of allocating methods.
13983 Object allocation generated in native code by JNI function
13984 calls should be detected using
13985 <internallink id="jniIntercept">JNI function interception</internallink>.
13986 Some methods might not have associated bytecodes and are not
13987 native methods, they instead are executed directly by the
13988 VM. These methods should send this event.
13989 Virtual machines which are incapable of bytecode instrumentation
13990 for some or all of their methods can send this event.
13991
13992 Note that the <internallink
13993 id="SampledObjectAlloc">SampledObjectAlloc</internallink>
13994 event is triggered on all Java object allocations, including those
13995 caused by bytecode method execution, JNI method execution, and
13996 directly by VM methods.
13997 <p/>
13998 Typical examples where this event might be sent:
13999 <ul>
14000 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
14001 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
14002 J2ME preloaded classes</li>
14003 </ul>
14004 Cases where this event would not be generated:
14005 <ul>
14006 <li>Allocation due to bytecodes -- for example, the <code>new</code>
14007 and <code>newarray</code> VM instructions</li>
14008 <li>Allocation due to JNI function calls -- for example,
14009 <code>AllocObject</code></li>
14010 <li>Allocations during VM initialization</li>
14011 <li>VM internal objects</li>
14012 </ul>
14013 </description>
14014 <origin>new</origin>
14015 <capabilities>
14016 <required id="can_generate_vm_object_alloc_events"></required>
14017 </capabilities>
14018 <parameters>
14019 <param id="jni_env">
14020 <outptr>
14021 <struct>JNIEnv</struct>
14022 </outptr>
14023 <description>
14024 The JNI environment of the event (current) thread
14025 </description>
14026 </param>
14027 <param id="thread">
14028 <jthread/>
14029 <description>
14030 Thread allocating the object.
14031 </description>
14032 </param>
14033 <param id="object">
14034 <jobject/>
14035 <description>
14036 JNI local reference to the object that was allocated.
14037 </description>
14038 </param>
14039 <param id="object_klass">
14040 <jclass/>
14041 <description>
14042 JNI local reference to the class of the object.
14043 </description>
14044 </param>
14045 <param id="size">
14046 <jlong/>
14047 <description>
14048 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14049 </description>
14050 </param>
14051 </parameters>
14052 </event>
14053
14054 <event label="Sampled Object Allocation"
14055 id="SampledObjectAlloc" const="JVMTI_EVENT_SAMPLED_OBJECT_ALLOC" filtered="thread" num="86" since="11">
14056 <description>
14063 When the number of bytes exceeds the sampling interval, it will send another event.
14064 This implies that, on average, one object will be sampled every time a thread has
14065 allocated 512KB bytes since the last sample.
14066 <p/>
14067 Note that the sampler is pseudo-random: it will not sample every 512KB precisely.
14068 The goal of this is to ensure high quality sampling even if allocation is
14069 happening in a fixed pattern (i.e., the same set of objects are being allocated
14070 every 512KB).
14071 <p/>
14072 If another sampling interval is required, the user can call
14073 <functionlink id="SetHeapSamplingInterval"></functionlink> with a strictly positive integer value,
14074 representing the new sampling interval.
14075 <p/>
14076 This event is sent once the sampled allocation has been performed. It provides the object, stack trace
14077 of the allocation, the thread allocating, the size of allocation, and the object's class.
14078 <p/>
14079 A typical use case of this system is to determine where heap allocations originate.
14080 In conjunction with weak references and the function
14081 <functionlink id="GetStackTrace"></functionlink>, a user can track which objects were allocated from which
14082 stack trace, and which are still live during the execution of the program.
14083 </description>
14084 <origin>new</origin>
14085 <capabilities>
14086 <required id="can_generate_sampled_object_alloc_events"></required>
14087 </capabilities>
14088 <parameters>
14089 <param id="jni_env">
14090 <outptr>
14091 <struct>JNIEnv</struct>
14092 </outptr>
14093 <description>
14094 The JNI environment of the event (current) thread.
14095 </description>
14096 </param>
14097 <param id="thread">
14098 <jthread/>
14099 <description>
14100 Thread allocating the object.
14101 </description>
14102 </param>
14103 <param id="object">
14104 <jobject/>
14105 <description>
14106 JNI local reference to the object that was allocated.
14107 </description>
14108 </param>
14109 <param id="object_klass">
14110 <jclass/>
14111 <description>
14112 JNI local reference to the class of the object
14113 </description>
14114 </param>
14115 <param id="size">
14116 <jlong/>
14117 <description>
14118 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14119 </description>
14120 </param>
14121 </parameters>
14122 </event>
14123
14124 <event label="Object Free"
14125 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
14126 <description>
14127 An Object Free event is sent when the garbage collector frees an object.
14128 Events are only sent for tagged objects--see
14129 <internallink id="Heap">heap functions</internallink>.
14130 <p/>
14131 The event handler must not use JNI functions and
14132 must not use <jvmti/> functions except those which
14133 specifically allow such use (see the raw monitor, memory management,
14134 and environment local storage functions).
14135 </description>
14136 <origin>new</origin>
14137 <capabilities>
14138 <required id="can_generate_object_free_events"></required>
14139 </capabilities>
14140 <parameters>
14141 <param id="tag">
14142 <jlong/>
14143 <description>
14144 The freed object's tag
14145 </description>
14146 </param>
14147 </parameters>
14148 </event>
14149
14150 <event label="Garbage Collection Start"
15453 implementation may choose to not call the Agent_OnUnload function
15454 if the Agent_OnAttach/Agent_OnAttach_L function reported an error.
15455 </change>
15456 <change date="8 June 2021" version="17.0.0">
15457 Minor update to deprecate Heap functions 1.0.
15458 </change>
15459 <change date="27 April 2022" version="19.0.0">
15460 Support for virtual threads (Preview):
15461 Add new capability: can_support_virtual_threads.
15462 Add new functions: SuspendAllVirtualThreads, ResumeAllVirtualThreads.
15463 Add new event types: JVMTI_EVENT_VIRTUAL_THREAD_START, JVMTI_EVENT_VIRTUAL_THREAD_END.
15464 Add new error code: JVMTI_ERROR_UNSUPPORTED_OPERATION.
15465 </change>
15466 <change date="7 June 2023" version="21.0.0">
15467 Virtual threads finalized to be a permanent feature.
15468 Agent start-up in the live phase now specified to print a warning.
15469 </change>
15470 <change date="10 January 2025" version="25.0.0">
15471 Add new function ClearAllFramePops. Needed to speedup debugger single stepping.
15472 </change>
15473 </changehistory>
15474
15475 </specification>
15476 <!-- Keep this comment at the end of the file
15477 Local variables:
15478 mode: sgml
15479 sgml-omittag:t
15480 sgml-shorttag:t
15481 sgml-namecase-general:t
15482 sgml-general-insert-case:lower
15483 sgml-minimize-attributes:nil
15484 sgml-always-quote-attributes:t
15485 sgml-indent-step:2
15486 sgml-indent-data:t
15487 sgml-parent-document:nil
15488 sgml-exposed-tags:nil
15489 sgml-local-catalogs:nil
15490 sgml-local-ecat-files:nil
15491 End:
15492 -->
|
1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
3 <!--
4 Copyright (c) 2002, 2026, Oracle and/or its affiliates. All rights reserved.
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
7 This code is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License version 2 only, as
9 published by the Free Software Foundation.
10
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
16
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24 -->
3359 <errors>
3360 <error id="JVMTI_ERROR_OPAQUE_FRAME">
3361 The implementation is unable to force the current frame to return
3362 (e.g. current frame is executing a native method).
3363 </error>
3364 <error id="JVMTI_ERROR_TYPE_MISMATCH">
3365 The result type of the called method is not <code>double</code>.
3366 </error>
3367 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
3368 Thread was not suspended and was not the current thread.
3369 </error>
3370 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
3371 There are no frames on the call stack.
3372 </error>
3373 </errors>
3374 </function>
3375
3376 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
3377 <synopsis>Force Early Return - Void</synopsis>
3378 <description>
3379 This function can be used to return from a method with a return type
3380 of <code>void</code>.
3381 A constructor is a special method named <code><init></code> with
3382 a return type of <code>void</code>. A class initializer is a special
3383 method named named <code><clinit></code> with a return type of
3384 <code>void</code>.
3385 <p/>
3386 When preview features are enabled, this function can not be used to return
3387 early from the constructor of a value class.
3388 </description>
3389 <origin>new</origin>
3390 <capabilities>
3391 <required id="can_force_early_return"></required>
3392 </capabilities>
3393 <parameters>
3394 <param id="thread">
3395 <jthread null="current" impl="noconvert"/>
3396 <description>
3397 The thread whose current frame is to return early.
3398 </description>
3399 </param>
3400 </parameters>
3401 <errors>
3402 <error id="JVMTI_ERROR_OPAQUE_FRAME">
3403 The implementation is unable to force the current frame to return
3404 (e.g. current frame is executing a native method or if preview features
3405 are enabled, the current frame is the constructor for a value class)
3406 </error>
3407 <error id="JVMTI_ERROR_TYPE_MISMATCH">
3408 The called method has a result type.
3409 </error>
3410 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
3411 Thread was not suspended and was not the current thread.
3412 </error>
3413 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
3414 There are no frames on the call stack.
3415 </error>
3416 </errors>
3417 </function>
3418
3419 </category>
3420
3421 <category id="Heap" label="Heap">
3422 <intro>
3423 These functions are used to analyze the heap.
3424 Functionality includes the ability to view the objects in the
3425 heap and to tag these objects.
3426 </intro>
3427
3428 <intro id="objectTags" label="Object Tags">
3429 A <i>tag</i> is a value associated with an object.
3430 Tags are explicitly set by the agent using the
3431 <functionlink id="SetTag"></functionlink> function or by
3432 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
3433 <p/>
3434 Tags are local to the environment; that is, the tags of one
3435 environment are not visible in another.
3436 <p/>
3437 Tags are <code>jlong</code> values which can be used
3438 simply to mark an object or to store a pointer to more detailed
3439 information. Objects which have not been tagged have a
3440 tag of zero.
3441 Setting a tag to zero makes the object untagged.
3442 <p/>
3443 If the <eventlink id="ObjectFree"/> event is enabled then an Object Free
3444 event is sent for tagged objects when the garbage collector frees the object.
3445 When preview features are enabled, the Object Free event is only sent for tagged
3446 <externallink id="jni/functions.html#hasidentity">identity objects</externallink>.
3447 <b>The event is not sent for tagged values objects.</b>
3448 </intro>
3449
3450 <intro id="heapCallbacks" label="Heap Callback Functions">
3451 Heap functions which iterate through the heap and recursively
3452 follow object references use agent supplied callback functions
3453 to deliver the information.
3454 <p/>
3455 These heap callback functions must adhere to the following restrictions --
3456 These callbacks must not use JNI functions.
3457 These callbacks must not use <jvmti/> functions except
3458 <i>callback safe</i> functions which
3459 specifically allow such use (see the raw monitor, memory management,
3460 and environment local storage functions).
3461 <p/>
3462 An implementation may invoke a callback on an internal thread or
3463 the thread which called the iteration function.
3464 Heap callbacks are single threaded -- no more than one callback will
3465 be invoked at a time.
3466 <p/>
3467 The Heap Filter Flags can be used to prevent reporting
5856 These functions are used to retrieve or set the value of a local variable.
5857 The variable is identified by the depth of the frame containing its
5858 value and the variable's slot number within that frame.
5859 The mapping of variables to
5860 slot numbers can be obtained with the function
5861 <functionlink id="GetLocalVariableTable"></functionlink>.
5862 <p/>
5863 The <code>GetLocalXXX</code> functions may be used to retrieve the value of
5864 a local variable contained in the frame of a virtual thread.
5865 The <code>SetLocalXXX</code> functions may be used to set the value of a
5866 local variable in the topmost frame of a virtual thread suspended at an event.
5867 An implementation may support setting locals in other cases.
5868 </intro>
5869
5870 <function id="GetLocalObject" num="21">
5871 <synopsis>Get Local Variable - Object</synopsis>
5872 <description>
5873 This function can be used to retrieve the value of a local
5874 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
5875 <p/>
5876 When preview features are enabled, if the local is the "<code>this</code>"
5877 object and "<code>this</code>" is a value object under construction, the
5878 function retrieves a snapshot of the "<code>this</code>" object representing
5879 the value object's state at the point the snapshot is taken.
5880 <p/>
5881 The specified thread must be suspended or must be the current thread.
5882 </description>
5883 <origin>jvmdi</origin>
5884 <capabilities>
5885 <required id="can_access_local_variables"></required>
5886 </capabilities>
5887 <parameters>
5888 <param id="thread">
5889 <jthread null="current" frame="frame" impl="noconvert"/>
5890 <description>
5891 The thread of the frame containing the variable's value.
5892 </description>
5893 </param>
5894 <param id="depth">
5895 <jframeID thread="thread"/>
5896 <description>
5897 The depth of the frame containing the variable's value.
5898 </description>
5899 </param>
5900 <param id="slot">
5901 <jint/>
5902 <description>
5903 The variable's slot number.
5904 </description>
5905 </param>
5906 <param id="value_ptr">
5907 <outptr><jobject/></outptr>
5908 <description>
5909 On return, points to the variable's value.
5910 When preview features are enabled, if the local is the "<code>this</code>"
5911 object and "<code>this</code>" is a value object under construction,
5912 <code>value_ptr</code> will point to a snapshot of the "<code>this</code>"
5913 object representing the value object's state at the point the snapshot
5914 is taken.
5915 </description>
5916 </param>
5917 </parameters>
5918 <errors>
5919 <error id="JVMTI_ERROR_INVALID_SLOT">
5920 Invalid <code>slot</code>.
5921 </error>
5922 <error id="JVMTI_ERROR_TYPE_MISMATCH">
5923 The variable type is not
5924 <code>Object</code> or a subclass of <code>Object</code>.
5925 </error>
5926 <error id="JVMTI_ERROR_OPAQUE_FRAME">
5927 The implementation is unable to get the frame locals
5928 (e.g. the frame at <code>depth</code> is executing a native method).
5929 </error>
5930 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5931 Thread was not suspended and was not the current thread.
5932 </error>
5933 </errors>
5934 </function>
5935
5936 <function id="GetLocalInstance" num="155" since="1.2">
5937 <synopsis>Get Local Instance</synopsis>
5938 <description>
5939 This function can be used to retrieve the value of the local object
5940 variable at slot 0 (the "<code>this</code>" object) from non-static
5941 frames. This function can retrieve the "<code>this</code>" object from
5942 native method frames, whereas <code>GetLocalObject()</code> would
5943 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
5944 <p/>
5945 When preview features are enabled and the "<code>this</code>" object is
5946 a value object under construction, the function retrieves a snapshot of the
5947 "<code>this</code>" object that represents the value object's state at
5948 the point the snapshot is taken.
5949 <p/>
5950 The specified thread must be suspended or must be the current thread.
5951 </description>
5952 <origin>new</origin>
5953 <capabilities>
5954 <required id="can_access_local_variables"></required>
5955 </capabilities>
5956 <parameters>
5957 <param id="thread">
5958 <jthread null="current" frame="frame" impl="noconvert"/>
5959 <description>
5960 The thread of the frame containing the variable's value.
5961 </description>
5962 </param>
5963 <param id="depth">
5964 <jframeID thread="thread"/>
5965 <description>
5966 The depth of the frame containing the variable's value.
5967 </description>
5968 </param>
5969 <param id="value_ptr">
5970 <outptr><jobject/></outptr>
5971 <description>
5972 On return, points to the variable's value.
5973 When preview features are enabled, and the "<code>this</code>" object is
5974 a value object under construction, <code>value_ptr</code> will point to
5975 a snapshot of the "<code>this</code>" object representing the value
5976 object's state at the point the snapshot is taken.
5977 </description>
5978 </param>
5979 </parameters>
5980 <errors>
5981 <error id="JVMTI_ERROR_INVALID_SLOT">
5982 If the specified frame is a static method frame.
5983 </error>
5984 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5985 Thread was not suspended and was not the current thread.
5986 </error>
5987 </errors>
5988 </function>
5989 <function id="GetLocalInt" num="22">
5990 <synopsis>Get Local Variable - Int</synopsis>
5991 <description>
5992 This function can be used to retrieve the value of a local
5993 variable whose type is <code>int</code>,
5994 <code>short</code>, <code>char</code>, <code>byte</code>, or
5995 <code>boolean</code>.
5996 <p/>
7368 </param>
7369 <param id="source_name_ptr">
7370 <allocbuf><char/></allocbuf>
7371 <description>
7372 On return, points to the class's source file name, encoded as a
7373 <internallink id="mUTF">modified UTF-8</internallink> string.
7374 </description>
7375 </param>
7376 </parameters>
7377 <errors>
7378 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
7379 Class information does not include a source file name. This includes
7380 cases where the class is an array class or primitive class.
7381 </error>
7382 </errors>
7383 </function>
7384
7385 <function id="GetClassModifiers" phase="start" num="51">
7386 <synopsis>Get Class Modifiers</synopsis>
7387 <description>
7388 For the class indicated by <code>klass</code>, return the Java language
7389 modifiers and class/interface properties of the corresponding
7390 <code>java.lang.Class</code> object, via <code>modifiers_ptr</code>.
7391 <p/>
7392 The modifiers are encoded as a mask of access-flag bit values defined in
7393 <vmspec chapter="4"/>. The returned value is not necessarily the value of the
7394 access_flags item in the class file of <code>klass</code>.
7395 In particular, for member, local, or anonymous classes and interfaces, the result
7396 may include modifiers represented by access flags from the <code>InnerClasses</code>
7397 attribute, such as <code>ACC_STATIC</code>.
7398 <p/>
7399 The modifiers include, as applicable, the Java Virtual Machine constants for
7400 public, private, protected, final, static, abstract, and interface, as well as
7401 access-flag bit values for other class/interface properties encoded in the
7402 result of invoking <code>java.lang.Class.getModifiers()</code> on the
7403 corresponding <code>java.lang.Class</code> object.
7404 <p/>
7405 If <code>klass</code> is an array class, then its public, private, and
7406 protected modifiers are the same as those of its component type. For arrays of
7407 primitives, this component type is represented by one of the primitive
7408 classes, such as <code>java.lang.Integer.TYPE</code>. For array classes, the
7409 abstract and final modifiers are set, and the interface modifier is not set.
7410 <p/>
7411 If <code>klass</code> is a primitive type or void, then its public, abstract,
7412 and final modifiers are always set, and its protected, private, and interface
7413 modifiers are never set.
7414 <p/>
7415 When preview features are enabled, the <code>ACC_IDENTITY</code> access flag
7416 is set if and only if <code>klass</code> is an identity class or an array class.
7417 <p/>
7418 When preview features are disabled, the <code>ACC_SUPER</code> access flag may be
7419 set only if <code>klass</code> is not a primitive type or void. The flag has no
7420 effective meaning.
7421 </description>
7422 <origin>jvmdi</origin>
7423 <capabilities>
7424 </capabilities>
7425 <parameters>
7426 <param id="klass">
7427 <jclass/>
7428 <description>
7429 The class to query.
7430 </description>
7431 </param>
7432 <param id="modifiers_ptr">
7433 <outptr><jint/></outptr>
7434 <description>
7435 On return, points to the modifiers of this class.
7436
7437 </description>
7438 </param>
7439 </parameters>
7440 <errors>
7441 </errors>
7442 </function>
7443
7444 <function id="GetClassMethods" phase="start" num="52">
7445 <synopsis>Get Class Methods</synopsis>
7446 <description>
7447 For the class indicated by <code>klass</code>, return a count of
7448 methods via <code>method_count_ptr</code> and a list of
7449 method IDs via <code>methods_ptr</code>. The method list contains
7450 constructors and static initializers as well as true methods.
7451 Only directly declared methods are returned (not inherited methods).
7452 An empty method list is returned for array classes and primitive classes
7453 (for example, <code>java.lang.Integer.TYPE</code>).
7454 </description>
7455 <origin>jvmdi</origin>
8318 <field id="notify_waiter_count">
8319 <jint/>
8320 <description>
8321 The number of platform threads waiting to own this monitor, or <code>0</code>
8322 if only virtual threads are waiting to be notified or no threads are waiting
8323 to be notified
8324 </description>
8325 </field>
8326 <field id="notify_waiters">
8327 <allocfieldbuf><jthread/></allocfieldbuf>
8328 <description>
8329 The <code>notify_waiter_count</code> platform threads waiting to be notified
8330 </description>
8331 </field>
8332 </typedef>
8333 <description>
8334 Get information about the object's monitor.
8335 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
8336 are filled in with information about usage of the monitor.
8337 <p/>
8338 When preview features are enabled, the object to query may be a value object.
8339 It is not possible to synchronize on a value object, so there is no monitor
8340 usage information to return. The fields of the returned
8341 <functionlink id="jvmtiMonitorUsage"></functionlink> structure will always
8342 be filled in with null values and zeros.
8343 <p/>
8344 <b> This function does not support getting information about an object's monitor
8345 when it is owned by a virtual thread. It also does not support returning a
8346 reference to virtual threads that are waiting to own a monitor or waiting to
8347 be notified.
8348 </b>
8349 <todo>
8350 Decide and then clarify suspend requirements.
8351 </todo>
8352 </description>
8353 <origin>jvmdi</origin>
8354 <capabilities>
8355 <required id="can_get_monitor_info"></required>
8356 </capabilities>
8357 <parameters>
8358 <param id="object">
8359 <jobject/>
8360 <description>
8361 The object to query.
8362 </description>
8363 </param>
10723 </capabilityfield>
10724 <capabilityfield id="can_generate_sampled_object_alloc_events" since="11">
10725 <description>
10726 Can generate sampled allocation events.
10727 If this capability is enabled then the heap sampling method
10728 <functionlink id="SetHeapSamplingInterval"></functionlink> can be
10729 called and <eventlink id="SampledObjectAlloc"></eventlink> events can be generated.
10730 </description>
10731 </capabilityfield>
10732 <capabilityfield id="can_support_virtual_threads" since="21">
10733 <description>
10734 Can support virtual threads.
10735 If this capability is enabled then the following functions can be called:
10736 <functionlink id="SuspendAllVirtualThreads"></functionlink>,
10737 <functionlink id="ResumeAllVirtualThreads"></functionlink>,
10738 and the following events can be enabled:
10739 <eventlink id="VirtualThreadStart"></eventlink>,
10740 <eventlink id="VirtualThreadEnd"></eventlink>.
10741 </description>
10742 </capabilityfield>
10743 <capabilityfield id="can_support_value_objects" since="28">
10744 <description>
10745 Can support value objects.
10746 When preview features are enabled and this capability is enabled, then
10747 events are sent for value objects when the following two events are enabled:
10748 <eventlink id="VMObjectAlloc"></eventlink>,
10749 <eventlink id="SampledObjectAlloc"></eventlink>.
10750 <b> can_support_value_objects is a preview API of the Java platform. </b>
10751 <i>Preview features may be removed in a future release, or upgraded to
10752 permanent features of the Java platform.</i>
10753 </description>
10754 </capabilityfield>
10755 </capabilitiestypedef>
10756
10757 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
10758 <synopsis>Get Potential Capabilities</synopsis>
10759 <description>
10760 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
10761 features that can potentially be possessed by this environment
10762 at this time.
10763 The returned capabilities differ from the complete set of capabilities
10764 implemented by the VM in two cases: another environment possesses
10765 capabilities that can only be possessed by one environment, or the
10766 current <functionlink id="GetPhase">phase</functionlink> is live,
10767 and certain capabilities can only be added during the <code>OnLoad</code> phase.
10768 The <functionlink id="AddCapabilities"></functionlink> function
10769 may be used to set any or all or these capabilities.
10770 Currently possessed capabilities are included.
10771 <p/>
10772 Typically this function is used in the <code>OnLoad</code> function.
10773 Some virtual machines may allow a limited set of capabilities to be
10774 added in the live phase.
14038 </description>
14039 </param>
14040 </parameters>
14041 </event>
14042
14043 <event label="VM Object Allocation"
14044 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
14045 <description>
14046 Sent when a method causes the virtual machine to directly allocate an
14047 Object visible to Java programming language code.
14048 Generally object allocation should be detected by instrumenting
14049 the bytecodes of allocating methods.
14050 Object allocation generated in native code by JNI function
14051 calls should be detected using
14052 <internallink id="jniIntercept">JNI function interception</internallink>.
14053 Some methods might not have associated bytecodes and are not
14054 native methods, they instead are executed directly by the
14055 VM. These methods should send this event.
14056 Virtual machines which are incapable of bytecode instrumentation
14057 for some or all of their methods can send this event.
14058 <p/>
14059 When preview features are enabled and the capability <code>can_support_value_objects</code>
14060 is enabled, this event is sent for the value object allocations.
14061 <code>null</code> is passed for the <paramlink id="object"></paramlink> parameter in such cases.
14062 <p/>
14063 Note that the <internallink
14064 id="SampledObjectAlloc">SampledObjectAlloc</internallink>
14065 event is triggered on all Java object allocations, including those
14066 caused by bytecode method execution, JNI method execution, and
14067 directly by VM methods.
14068 <p/>
14069 Typical examples where this event might be sent:
14070 <ul>
14071 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
14072 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
14073 J2ME preloaded classes</li>
14074 </ul>
14075 Cases where this event would not be generated:
14076 <ul>
14077 <li>Allocation due to bytecodes -- for example, the <code>new</code>
14078 and <code>newarray</code> VM instructions</li>
14079 <li>Allocation due to JNI function calls -- for example,
14080 <code>AllocObject</code></li>
14081 <li>Allocations during VM initialization</li>
14082 <li>VM internal objects</li>
14083 </ul>
14084 </description>
14085 <origin>new</origin>
14086 <capabilities>
14087 <required id="can_generate_vm_object_alloc_events"></required>
14088 <capability id="can_support_value_objects"></capability>
14089 </capabilities>
14090 <parameters>
14091 <param id="jni_env">
14092 <outptr>
14093 <struct>JNIEnv</struct>
14094 </outptr>
14095 <description>
14096 The JNI environment of the event (current) thread
14097 </description>
14098 </param>
14099 <param id="thread">
14100 <jthread/>
14101 <description>
14102 Thread allocating the object.
14103 </description>
14104 </param>
14105 <param id="object">
14106 <jobject/>
14107 <description>
14108 JNI local reference to the object that was allocated.
14109 Null when preview features are enabled, the capability <code>can_support_value_objects</code>
14110 is enabled, and the allocated object has no identity.
14111 </description>
14112 </param>
14113 <param id="object_klass">
14114 <jclass/>
14115 <description>
14116 JNI local reference to the class of the object.
14117 </description>
14118 </param>
14119 <param id="size">
14120 <jlong/>
14121 <description>
14122 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14123 </description>
14124 </param>
14125 </parameters>
14126 </event>
14127
14128 <event label="Sampled Object Allocation"
14129 id="SampledObjectAlloc" const="JVMTI_EVENT_SAMPLED_OBJECT_ALLOC" filtered="thread" num="86" since="11">
14130 <description>
14137 When the number of bytes exceeds the sampling interval, it will send another event.
14138 This implies that, on average, one object will be sampled every time a thread has
14139 allocated 512KB bytes since the last sample.
14140 <p/>
14141 Note that the sampler is pseudo-random: it will not sample every 512KB precisely.
14142 The goal of this is to ensure high quality sampling even if allocation is
14143 happening in a fixed pattern (i.e., the same set of objects are being allocated
14144 every 512KB).
14145 <p/>
14146 If another sampling interval is required, the user can call
14147 <functionlink id="SetHeapSamplingInterval"></functionlink> with a strictly positive integer value,
14148 representing the new sampling interval.
14149 <p/>
14150 This event is sent once the sampled allocation has been performed. It provides the object, stack trace
14151 of the allocation, the thread allocating, the size of allocation, and the object's class.
14152 <p/>
14153 A typical use case of this system is to determine where heap allocations originate.
14154 In conjunction with weak references and the function
14155 <functionlink id="GetStackTrace"></functionlink>, a user can track which objects were allocated from which
14156 stack trace, and which are still live during the execution of the program.
14157 <p/>
14158 When preview features are enabled and the capability <code>can_support_value_objects</code>
14159 is enabled, this event is sent for the allocated objects that have no identity.
14160 <code>null</code> is passed for the <paramlink id="object"></paramlink> parameter in such cases.
14161 </description>
14162 <origin>new</origin>
14163 <capabilities>
14164 <required id="can_generate_sampled_object_alloc_events"></required>
14165 <capability id="can_support_value_objects"></capability>
14166 </capabilities>
14167 <parameters>
14168 <param id="jni_env">
14169 <outptr>
14170 <struct>JNIEnv</struct>
14171 </outptr>
14172 <description>
14173 The JNI environment of the event (current) thread.
14174 </description>
14175 </param>
14176 <param id="thread">
14177 <jthread/>
14178 <description>
14179 Thread allocating the object.
14180 </description>
14181 </param>
14182 <param id="object">
14183 <jobject/>
14184 <description>
14185 JNI local reference to the object that was allocated.
14186 Null when preview features are enabled, the capability <code>can_support_value_objects</code>
14187 is enabled, and the allocated object has no identity.
14188 </description>
14189 </param>
14190 <param id="object_klass">
14191 <jclass/>
14192 <description>
14193 JNI local reference to the class of the object
14194 </description>
14195 </param>
14196 <param id="size">
14197 <jlong/>
14198 <description>
14199 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14200 </description>
14201 </param>
14202 </parameters>
14203 </event>
14204
14205 <event label="Object Free"
14206 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
14207 <description>
14208 An Object Free event is sent when the garbage collector frees an object.
14209 Events are only sent for tagged objects--see
14210 <internallink id="Heap">heap functions</internallink>.
14211 <p/>
14212 When preview features are enabled, the Object Free event is only sent for tagged
14213 <externallink id="jni/functions.html#hasidentity">identity objects</externallink>.
14214 <b>The event is not sent for tagged values objects.</b>
14215 <p/>
14216 The event handler must not use JNI functions and
14217 must not use <jvmti/> functions except those which
14218 specifically allow such use (see the raw monitor, memory management,
14219 and environment local storage functions).
14220 </description>
14221 <origin>new</origin>
14222 <capabilities>
14223 <required id="can_generate_object_free_events"></required>
14224 </capabilities>
14225 <parameters>
14226 <param id="tag">
14227 <jlong/>
14228 <description>
14229 The freed object's tag
14230 </description>
14231 </param>
14232 </parameters>
14233 </event>
14234
14235 <event label="Garbage Collection Start"
15538 implementation may choose to not call the Agent_OnUnload function
15539 if the Agent_OnAttach/Agent_OnAttach_L function reported an error.
15540 </change>
15541 <change date="8 June 2021" version="17.0.0">
15542 Minor update to deprecate Heap functions 1.0.
15543 </change>
15544 <change date="27 April 2022" version="19.0.0">
15545 Support for virtual threads (Preview):
15546 Add new capability: can_support_virtual_threads.
15547 Add new functions: SuspendAllVirtualThreads, ResumeAllVirtualThreads.
15548 Add new event types: JVMTI_EVENT_VIRTUAL_THREAD_START, JVMTI_EVENT_VIRTUAL_THREAD_END.
15549 Add new error code: JVMTI_ERROR_UNSUPPORTED_OPERATION.
15550 </change>
15551 <change date="7 June 2023" version="21.0.0">
15552 Virtual threads finalized to be a permanent feature.
15553 Agent start-up in the live phase now specified to print a warning.
15554 </change>
15555 <change date="10 January 2025" version="25.0.0">
15556 Add new function ClearAllFramePops. Needed to speedup debugger single stepping.
15557 </change>
15558 <change date="30 June 2026" version="28.0.0">
15559 Support for value objects (Preview):
15560 Add new capability: can_support_value_objects which enables
15561 the following events for value objects:
15562 JVMTI_EVENT_VM_OBJECT_ALLOC, JVMTI_EVENT_SAMPLED_OBJECT_ALLOC.
15563 </change>
15564 </changehistory>
15565
15566 </specification>
15567 <!-- Keep this comment at the end of the file
15568 Local variables:
15569 mode: sgml
15570 sgml-omittag:t
15571 sgml-shorttag:t
15572 sgml-namecase-general:t
15573 sgml-general-insert-case:lower
15574 sgml-minimize-attributes:nil
15575 sgml-always-quote-attributes:t
15576 sgml-indent-step:2
15577 sgml-indent-data:t
15578 sgml-parent-document:nil
15579 sgml-exposed-tags:nil
15580 sgml-local-catalogs:nil
15581 sgml-local-ecat-files:nil
15582 End:
15583 -->
|