Update JVMTI ForceEarlyReturnVoid, and the equivalent JDWP command and JDI 
method, to specify that the operation fails if the target thread's top frame is 
a constructor or the class initializer of a class with strictly-initialized 
fields.

Several options have been explored for both constructors and class 
initializers,  the details are attached to the JBS issue.

The changes are very simple.  ClassFileParser::parse_fields records if the 
class has class has strict instance fields, as it does already for strict 
static fields. JvmtiEnvBase::check_top_frame is changed to check if the top 
frame is a constructor of a class with strict instance fields in the class 
hierarchy or the initializer of a class with strict static fields. This 
replaces the check if the top frame is a value class constructor, the interim 
solution for the initial JEP 539 integration.

In jvmti.xml, the custom XML element `externallink` is updated to support the 
`sup` element so a "PREVIEW" superscript can decorate links to preview APIs.

Test ForceEarlyReturnStrictInitFields is added to test ForceEarlyReturnVoid 
when the target thread's top frame is the constructor, method, or class 
initializer of a a class with strictly-initialized fields.

Testing: tier 1-5

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - Fix typos in comments/docs
 - Merge branch 'master' into JDK-8387648
 - API doc improvements
 - Update
 - Merge branch 'master' into JDK-8387648
 - Merge branch 'master' into JDK-8387648
 - Move has_strict_instance_fields_in_hierarchy implementation out of header 
file
 - Merge branch 'master' into JDK-8387648
 - Merge branch 'master' into JDK-8387648
 - Reorder to explain constructors first, add API note
 - ... and 2 more: https://git.openjdk.org/jdk/compare/0b44562c...24781212

Changes: https://git.openjdk.org/jdk/pull/32198/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32198&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8387648
  Stats: 1148 lines in 14 files changed: 802 ins; 316 del; 30 mod
  Patch: https://git.openjdk.org/jdk/pull/32198.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/32198/head:pull/32198

PR: https://git.openjdk.org/jdk/pull/32198

Reply via email to