RFR: 8150083: Convert VerboseVerification to Unified Logging

David Holmes david.holmes at oracle.com
Mon Mar 7 01:02:01 UTC 2016


Hi Rachel,

A few comments ...

On 5/03/2016 7:42 AM, Rachel Protacio wrote:
> Hello,
>
> Please review this conversion of -XX:+VerboseVerification to
> -Xlog:verboseverification=info.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8150083
> Open webrev: http://cr.openjdk.java.net/~rprotacio/8150083.01/

  if (log_is_enabled(Info, classinit)){
  194     log_end_verification(LogHandle(classinit)::info_stream(), 
klassName, exception_name, THREAD);
  195   }
  196   if (log_is_enabled(Info, verboseverification)){
  197     ResourceMark rm;
  198 
log_end_verification(LogHandle(verboseverification)::info_stream(), 
klassName, exception_name, THREAD);
  199   }

No ResourceMark needed at #197 (for same reason it is not needed at #194).

---

  603   if (was_recursively_verified()){
  604     log_info(verboseverification)("Recursive verification detected 
for: %s", _klass->external_name());



  605     log_info(classinit)("Recursive verification detected for: %s",
  606                         _klass->external_name());
  607   }

When TraceclassInitialization was converted it was suggested that where 
we had:

if (TraceClassInitialization || VerboseVerification) {
   // log something ....

and we then got the output printed twice with classinit using UL, that 
these would be fixed up when VerboseVerification was converted:

http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2015-November/016846.html

"When VerboseVerification is converted to UL, the logging statements 
will be more compact."

---

test/runtime/logging/ClassInitializationTest.java

I think the "Ensure that VerboseVerification still triggers appropriate 
messages" subtest can be deleted now as we test 
-Xlog:verboseverification separately. It was only present to ensure the 
old VerboseVerification flag still functioned after the classinit change.

---

Thanks,
David
-----


> Sample old output:
>
>     Verifying class hello with new format
>     Verifying method hello.<init>()V
>     StackMapTable: frame_count = 0
>     table = {
>       }
>     bci: @0
>     flags: { flagThisUninit }
>     locals: { uninitializedThis }
>     stack: { }
>     offset = 0,  opcode = aload_0
>     bci: @1
>     flags: { flagThisUninit }
>     locals: { uninitializedThis }
>     stack: { uninitializedThis }
>     offset = 1,  opcode = invokespecial
>     bci: @4
>     flags: { }
>     locals: { 'hello' }
>     stack: { }
>     offset = 4,  opcode = return
>     Verifying method hello.main([Ljava/lang/String;)V
>
> Sample new output:
>
>     [0.696s][info][verboseverification] Verifying class
>     VerboseVerificationTest$InternalClass with new format
>     [0.696s][info][verboseverification] Verifying method
>     VerboseVerificationTest$InternalClass.<init>()V
>     [0.696s][info][verboseverification] StackMapTable: frame_count = 0
>     [0.696s][info][verboseverification] table = {
>     [0.696s][info][verboseverification]  }
>     [0.696s][info][verboseverification] bci: @0
>     [0.696s][info][verboseverification] flags: { flagThisUninit }
>     [0.696s][info][verboseverification] locals: { uninitializedThis }
>     [0.696s][info][verboseverification] stack: { }
>     [0.696s][info][verboseverification] offset = 0,  opcode = aload_0
>     [0.696s][info][verboseverification] bci: @1
>     [0.696s][info][verboseverification] flags: { flagThisUninit }
>     [0.696s][info][verboseverification] locals: { uninitializedThis }
>     [0.696s][info][verboseverification] stack: { uninitializedThis }
>     [0.696s][info][verboseverification] offset = 1,  opcode = invokespecial
>     [0.696s][info][verboseverification] bci: @4
>     [0.696s][info][verboseverification] flags: { }
>     [0.696s][info][verboseverification] locals: {
>     'VerboseVerificationTest$InternalClass' }
>     [0.696s][info][verboseverification] stack: { }
>     [0.696s][info][verboseverification] offset = 4,  opcode = return
>     [0.696s][info][verboseverification] Verifying method
>     VerboseVerificationTest$InternalClass.main([Ljava/lang/String;)V
>
> Tested with JPRT; jck vm, lang, and api/java_lang; and RBT hotspot and
> non-colo tests.
>
> Thank you,
> Rachel


More information about the hotspot-runtime-dev mailing list