Mercurial > hg > truffle
view test/compiler/6894807/IsInstanceTest.java @ 3293:1f4413413144
7039089: G1: changeset for 7037276 broke heap verification, and related cleanups
Summary: In G1 heap verification, we no longer scan perm to G1-collected heap refs as part of process_strong_roots() but rather in a separate explicit oop iteration over the perm gen. This preserves the original perm card-marks. Added a new assertion in younger_refs_iterate() to catch a simple subcase where the user may have forgotten a prior save_marks() call, as happened in the case of G1's attempt to iterate perm to G1 refs when verifying the heap before exit. The assert was deliberately weakened for ParNew+CMS and will be fixed for that combination in a future CR. Also made some (non-G1) cleanups related to code and comments obsoleted by the migration of Symbols to the native heap.
Reviewed-by: iveresov, jmasa, tonyp
author | ysr |
---|---|
date | Tue, 26 Apr 2011 21:17:24 -0700 |
parents | 495caa35b1b5 |
children |
line wrap: on
line source
/* * @test * @bug 6894807 * @summary No ClassCastException for HashAttributeSet constructors if run with -Xcomp * @compile IsInstanceTest.java * @run shell Test6894807.sh */ public class IsInstanceTest { public static void main(String[] args) { BaseInterface baseInterfaceImpl = new BaseInterfaceImpl(); for (int i = 0; i < 100000; i++) { if (isInstanceOf(baseInterfaceImpl, ExtendedInterface.class)) { System.out.println("Failed at index:" + i); System.out.println("Arch: "+System.getProperty("os.arch", "")+ " OS: "+System.getProperty("os.name", "")+ " OSV: "+System.getProperty("os.version", "")+ " Cores: "+Runtime.getRuntime().availableProcessors()+ " JVM: "+System.getProperty("java.version", "")+" "+System.getProperty("sun.arch.data.model", "")); break; } } System.out.println("Done!"); } public static boolean isInstanceOf(BaseInterface baseInterfaceImpl, Class... baseInterfaceClasses) { for (Class baseInterfaceClass : baseInterfaceClasses) { if (baseInterfaceClass.isInstance(baseInterfaceImpl)) { return true; } } return false; } private interface BaseInterface { } private interface ExtendedInterface extends BaseInterface { } private static class BaseInterfaceImpl implements BaseInterface { } }