Z flag value will not be set by 'repne' if RCX == 0 since 'repne' does not change flags. Setting Z = 1 before repne_scanl() in check_klass_subtype_slow_path(): // pointer were to sneak in here. Note that we have already loaded the // Klass::super_check_offset from the super_klass in the fast path, // so if there is a null in that register, we are already in the afterlife. + push(rax); + xorq(rax,rax); // Set Z = 1 + pop(rax); repne_scanl(); will cause next exception: % java -Xmx128M -jar GCBasher.jar -time:300 Exception in thread "main" java.lang.IncompatibleClassChangeError at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:153) at java.lang.StringCoding.decode(StringCoding.java:193) at java.lang.String.<init>(String.java:452) at java.util.jar.Attributes.read(Attributes.java:418) at java.util.jar.Manifest.read(Manifest.java:199) at java.util.jar.Manifest.<init>(Manifest.java:69) at java.util.jar.JarFile.getManifestFromReference(JarFile.java:177) at java.util.jar.JarFile.getManifest(JarFile.java:163) j
|