JDK-8255957 : Make VerifyMergedCPBytecodes option obsolete
  • Type: CSR
  • Component: hotspot
  • Sub-Component: jvmti
  • Priority: P4
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 16
  • Submitted: 2020-11-05
  • Updated: 2020-11-09
  • Resolved: 2020-11-09
Related Reports
CSR :  
Description
Summary
-------

The VerifyMergedCPBytecodes option was a verification option that was made a product option at the time of development.  It should be removed.

Problem
-------

The option is on by default for product code which can slow down redefinition.  There is no reason to expose this option to user code.

Solution
--------

Remove the option and do the verification in develop mode.

Specification
-------------

-  /* change to false by default sometime after Mustang */                   \
-  product(bool, VerifyMergedCPBytecodes, true,                              \
-          "Verify bytecodes after RedefineClasses constant pool merging")   \
-                                                                            \

And give a warning like:

Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option VerifyMergedCPBytecodes; support was removed in 16.0

Comments
Moving to Approved.
09-11-2020

The change of behavior is that redefinition will run faster, but if we had a bug in constant pool rewriting, the application could have gotten a JVMTI error. So I'm sure there's no compatibility issue there. But yes, there is a behavior change.
06-11-2020

By no longer doing the post merge verification in product bits, you are changing the behavior so I marked "behavioral" for the compatibility kind.
05-11-2020

This CSR looks good.
05-11-2020