--- old/test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaField.java 2018-11-20 10:04:19.000000000 +0100 +++ new/test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaField.java 2018-11-20 10:04:18.000000000 +0100 @@ -142,16 +142,15 @@ } } } + + private static final String NON_EXISTENT_CLASS_NAME = "XXXXXXXXXXX"; + static class TestClassLoader extends ClassLoader { @Override - protected Class findClass(final String name) { + protected Class findClass(final String name) throws ClassNotFoundException { if (!name.equals(TypeWithUnresolvedFieldType.class.getName())) { - try { - return super.findClass(name); - } catch (ClassNotFoundException e) { - throw new AssertionError("unexpected: " + e); - } + return super.findClass(name); } // copy classfile to byte array byte[] classData = null; @@ -176,7 +175,7 @@ int index = -1; while ((index = indexOf(classData, index + 1, "PrintStream")) != -1) { - replace(classData, index, "XXXXXXXXXXX"); + replace(classData, index, NON_EXISTENT_CLASS_NAME); } Class c = defineClass(null, classData, 0, classData.length); @@ -211,13 +210,14 @@ * type of the field is not resolvable. */ @Test - public void testGetType() { + public void testGetType() throws ClassNotFoundException { Class c = new TestClassLoader().findClass(TypeWithUnresolvedFieldType.class.getName()); ResolvedJavaType type = metaAccess.lookupJavaType(c); for (ResolvedJavaField field : type.getInstanceFields(false)) { assertTrue(field.getName().equals("fieldWithUnresolvableType")); field.getType(); field.toString(); + field.getAnnotations(); } } }