8205126: JVMTI spec incorrectly states that PopFrame can not be called on the current thread
Summary: Align the PopFrame spec with the implementation
Reviewed-by: amenkov, jcbeyler, cjplummer, dcubed
--- a/src/hotspot/share/prims/jvmti.xml Thu Jun 06 10:11:24 2019 +0800
+++ b/src/hotspot/share/prims/jvmti.xml Wed Jun 05 21:02:42 2019 -0700
@@ -2824,7 +2824,7 @@
<p/>
Changes to global state are not addressed and thus remain changed.
<p/>
- The specified thread must be suspended (which implies it cannot be the current thread).
+ The specified thread must be suspended or must be the current thread.
<p/>
Both the called method and calling method must be non-native Java programming
language methods.
@@ -2849,7 +2849,7 @@
The implementation is unable to pop this frame.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are less than two stack frames on the call stack.
@@ -2910,8 +2910,7 @@
Only frames corresponding to non-native Java programming language
methods can receive notification.
<p/>
- The specified thread must either be the current thread
- or the thread must be suspended.
+ The specified thread must be suspended or must be the current thread.
</description>
<origin>jvmdi</origin>
<capabilities>
@@ -3023,7 +3022,7 @@
result type of the called method.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no more frames on the call stack.
@@ -3071,7 +3070,7 @@
<code>boolean</code>.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no frames on the call stack.
@@ -3114,7 +3113,7 @@
The result type of the called method is not <code>long</code>.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no frames on the call stack.
@@ -3157,7 +3156,7 @@
The result type of the called method is not <code>float</code>.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no frames on the call stack.
@@ -3198,7 +3197,7 @@
The result type of the called method is not <code>double</code>.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no frames on the call stack.
@@ -3235,7 +3234,7 @@
The called method has a result type.
</error>
<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
- Thread was not the current thread and was not suspended.
+ Thread was not suspended and was not the current thread.
</error>
<error id="JVMTI_ERROR_NO_MORE_FRAMES">
There are no frames on the call stack.
@@ -14965,6 +14964,11 @@
"RedefineClasses can be called on any modifiable class. See IsModifiableClass.
(can_redefine_classes must also be set)"
</change>
+ <change date="5 June 2019" version="13.0.0">
+ Minor PopFrame spec update:
+ - The specified thread must be suspended or must be the current thread.
+ (It was not allowed to be the current thread before.)
+ </change>
</changehistory>
</specification>