< prev index next >

test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestMetaAccessProvider.java

Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -66,20 +66,35 @@
                     metaAccess.encodeDeoptActionAndReason(DEOPT_ACTION, DEOPT_REASON, DEBUG_IDS[1]).asInt(),
                     metaAccess.encodeDeoptActionAndReason(DEOPT_ACTION, DEOPT_REASON, DEBUG_IDS[2]).asInt(),
                     metaAccess.encodeDeoptActionAndReason(DEOPT_ACTION, DEOPT_REASON, DEBUG_IDS[3]).asInt()
     };
 
-    private static boolean isUnsafeAnoymous(ResolvedJavaType type) {
+    private static boolean isHiddenClass(Class<?> cls) {
+        if (cls.isHiddenClass()) {
+            return true;
+        }
+
+        // Check array of hidden type.
+        while (cls.getComponentType() != null) {
+            cls = cls.getComponentType();
+        }
+        if (cls.isHiddenClass()) {
+            return true;
+        }
+        return false;
+    }
+
+    private static boolean isUnsafeAnonymous(ResolvedJavaType type) {
         return type.getHostClass() != null;
     }
 
     @Test
     public void lookupJavaTypeTest() {
         for (Class<?> c : classes) {
             ResolvedJavaType type = metaAccess.lookupJavaType(c);
             assertNotNull(c.toString(), type);
-            if (!isUnsafeAnoymous(type)) {
+            if (!isHiddenClass(c) && !isUnsafeAnonymous(type)) {
                 assertEquals(c.toString(), type.getName(), toInternalName(c.getName()));
                 assertEquals(c.toString(), type.getName(), toInternalName(type.toJavaName()));
                 assertEquals(c.toString(), c.getName(), type.toClassName());
                 if (!type.isArray()) {
                     assertEquals(c.toString(), c.getName(), type.toJavaName());

@@ -96,11 +111,11 @@
     @Test
     public void lookupJavaTypesTest() {
         ResolvedJavaType[] result = metaAccess.lookupJavaTypes(classes.toArray(new Class<?>[classes.size()]));
         int counter = 0;
         for (Class<?> aClass : classes) {
-            if (!isUnsafeAnoymous(result[counter])) {
+            if (!isHiddenClass(aClass) && !isUnsafeAnonymous(result[counter])) {
                 assertEquals("Unexpected javaType: " + result[counter] + " while expecting of class: " + aClass, result[counter].toClassName(), aClass.getName());
             }
             counter++;
         }
     }
< prev index next >