RFR(XS) 8011391: C1: assert(code_offset() - offset == NativeInstruction::nop_instruction_size) failed: only one instruction can go in a delay slot

Niclas Adlertz niclas.adlertz at oracle.com
Tue Dec 17 08:14:10 PST 2013


Hi all,

The flag "VerifyOopMaps" is a non-product C1 only flag and does some but 
not all of the verification that the "VerifyOops" flag does. But 
"VerifyOopMaps" can cause problems. Since "VerifyOopMaps" temporarily 
turns on the "VerifyOops" flag during a part of the compilation of a C1 
method, it becomes a problem when multiple compiler threads are working 
at the same time, causing VerifyOopMaps to be turned on and off at 
random during a single compilation. This is what happens during this crash.

My suggested fix is to remove the "VerifyOopMaps" flag and instead use 
the "VerifyOops" flag for Oop maps verification.

Another fix could be to internally set the "VerifyOopMaps" flag to false 
if we run tiered and/or are using more than one compiler thread. A third 
way could be to terminate the VM (and telling why) when having the 
"VerifyOopMaps" flag enabled in tiered and/or when using multiple 
compiler threads.

Kind Regards,
Niclas Adlertz

BUG: https://bugs.openjdk.java.net/browse/JDK-8011391
WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8011391/webrev00/


More information about the hotspot-compiler-dev mailing list