summaryrefslogtreecommitdiff
path: root/test/727-checker-unresolved-class
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2020-08-27 17:36:24 +0100
committer Vladimir Marko <vmarko@google.com> 2020-08-27 17:36:24 +0100
commit0280e5d21e387812b7a1719d75ef2e3a94280c60 (patch)
treead79993400d41f2b0de9662f230b89787a750c8a /test/727-checker-unresolved-class
parent4100e5e2ebb9376696ae3b9f26dccde5ebcf5c7e (diff)
Optimizing: Improve generated code for HLoadClass...
... for resolved package-private class accessed from unresolved compiling class in the same package. Test: Additional tests in 727-checker-unresolved-class. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 161898207 Change-Id: I215dcd9db2297f5c8d9547635d80975d88534579
Diffstat (limited to 'test/727-checker-unresolved-class')
-rw-r--r--test/727-checker-unresolved-class/src-ex/resolved/SubclassOfUnresolvedClass2.java18
-rw-r--r--test/727-checker-unresolved-class/src/resolved/SubclassOfUnresolvedClass.java15
-rw-r--r--test/727-checker-unresolved-class/src/unresolved/UnresolvedClass.java18
3 files changed, 51 insertions, 0 deletions
diff --git a/test/727-checker-unresolved-class/src-ex/resolved/SubclassOfUnresolvedClass2.java b/test/727-checker-unresolved-class/src-ex/resolved/SubclassOfUnresolvedClass2.java
index 8469cf7d2c..423fdd3fd6 100644
--- a/test/727-checker-unresolved-class/src-ex/resolved/SubclassOfUnresolvedClass2.java
+++ b/test/727-checker-unresolved-class/src-ex/resolved/SubclassOfUnresolvedClass2.java
@@ -23,6 +23,9 @@ import unresolved.UnresolvedClass;
// loader is illegal even though the package name is the same.
public class SubclassOfUnresolvedClass2 extends UnresolvedClass {
public static void $noinline$main() {
+ $noinline$testResolvedPublicClass();
+ $noinline$testResolvedPackagePrivateClass();
+
$noinline$testPublicFieldInResolvedPackagePrivateClass();
$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass();
$noinline$testPrivateFieldInResolvedPackagePrivateClass();
@@ -40,6 +43,21 @@ public class SubclassOfUnresolvedClass2 extends UnresolvedClass {
System.out.println("SubclassOfUnresolvedClass2 passed");
}
+ /// CHECK-START: void resolved.SubclassOfUnresolvedClass2.$noinline$testResolvedPublicClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPublicSubclassOfPackagePrivateClass needs_access_check:false
+ static void $noinline$testResolvedPublicClass() {
+ Class<?> c = ResolvedPublicSubclassOfPackagePrivateClass.class;
+ }
+
+ /// CHECK-START: void resolved.SubclassOfUnresolvedClass2.$noinline$testResolvedPackagePrivateClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPackagePrivateClass needs_access_check:true
+ static void $noinline$testResolvedPackagePrivateClass() {
+ try {
+ Class<?> c = ResolvedPackagePrivateClass.class;
+ throw new Error("Unreachable");
+ } catch (IllegalAccessError expected) {}
+ }
+
/// CHECK-START: void resolved.SubclassOfUnresolvedClass2.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after)
/// CHECK: UnresolvedStaticFieldSet
diff --git a/test/727-checker-unresolved-class/src/resolved/SubclassOfUnresolvedClass.java b/test/727-checker-unresolved-class/src/resolved/SubclassOfUnresolvedClass.java
index d767411659..56a4f6a934 100644
--- a/test/727-checker-unresolved-class/src/resolved/SubclassOfUnresolvedClass.java
+++ b/test/727-checker-unresolved-class/src/resolved/SubclassOfUnresolvedClass.java
@@ -20,6 +20,9 @@ import unresolved.UnresolvedClass;
public class SubclassOfUnresolvedClass extends UnresolvedClass {
public static void $noinline$main() {
+ $noinline$testResolvedPublicClass();
+ $noinline$testResolvedPackagePrivateClass();
+
$noinline$testPublicFieldInResolvedPackagePrivateClass();
$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass();
$noinline$testPrivateFieldInResolvedPackagePrivateClass();
@@ -37,6 +40,18 @@ public class SubclassOfUnresolvedClass extends UnresolvedClass {
System.out.println("SubclassOfUnresolvedClass passed");
}
+ /// CHECK-START: void resolved.SubclassOfUnresolvedClass.$noinline$testResolvedPublicClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPublicSubclassOfPackagePrivateClass needs_access_check:false
+ static void $noinline$testResolvedPublicClass() {
+ Class<?> c = ResolvedPublicSubclassOfPackagePrivateClass.class;
+ }
+
+ /// CHECK-START: void resolved.SubclassOfUnresolvedClass.$noinline$testResolvedPackagePrivateClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPackagePrivateClass needs_access_check:false
+ static void $noinline$testResolvedPackagePrivateClass() {
+ Class<?> c = ResolvedPackagePrivateClass.class;
+ }
+
/// CHECK-START: void resolved.SubclassOfUnresolvedClass.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after)
/// CHECK: StaticFieldSet
diff --git a/test/727-checker-unresolved-class/src/unresolved/UnresolvedClass.java b/test/727-checker-unresolved-class/src/unresolved/UnresolvedClass.java
index eaa9493931..336c555c33 100644
--- a/test/727-checker-unresolved-class/src/unresolved/UnresolvedClass.java
+++ b/test/727-checker-unresolved-class/src/unresolved/UnresolvedClass.java
@@ -21,6 +21,9 @@ import resolved.ResolvedPublicSubclassOfPackagePrivateClass;
public class UnresolvedClass {
public static void $noinline$main() {
+ $noinline$testResolvedPublicClass();
+ $noinline$testResolvedPackagePrivateClass();
+
$noinline$testPublicFieldInResolvedPackagePrivateClass();
$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass();
$noinline$testPrivateFieldInResolvedPackagePrivateClass();
@@ -38,6 +41,21 @@ public class UnresolvedClass {
System.out.println("UnresolvedClass passed");
}
+ /// CHECK-START: void unresolved.UnresolvedClass.$noinline$testResolvedPublicClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPublicSubclassOfPackagePrivateClass needs_access_check:false
+ static void $noinline$testResolvedPublicClass() {
+ Class<?> c = ResolvedPublicSubclassOfPackagePrivateClass.class;
+ }
+
+ /// CHECK-START: void unresolved.UnresolvedClass.$noinline$testResolvedPackagePrivateClass() builder (after)
+ /// CHECK: LoadClass class_name:resolved.ResolvedPackagePrivateClass needs_access_check:true
+ static void $noinline$testResolvedPackagePrivateClass() {
+ try {
+ Class<?> c = ResolvedPackagePrivateClass.class;
+ throw new Error("Unreachable");
+ } catch (IllegalAccessError expected) {}
+ }
+
/// CHECK-START: void unresolved.UnresolvedClass.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after)
/// CHECK: UnresolvedStaticFieldSet