diff options
Diffstat (limited to 'test')
121 files changed, 912 insertions, 1638 deletions
diff --git a/test/004-JniTest/src/Main.java b/test/004-JniTest/src/Main.java index e0530d8d62..0221900113 100644 --- a/test/004-JniTest/src/Main.java +++ b/test/004-JniTest/src/Main.java @@ -220,7 +220,7 @@ public class Main { InvocationHandler handler = new DummyInvocationHandler(); SimpleInterface proxy = (SimpleInterface) Proxy.newProxyInstance(SimpleInterface.class.getClassLoader(), - new Class[] {SimpleInterface.class}, handler); + new Class<?>[] {SimpleInterface.class}, handler); if (testGetMethodID(SimpleInterface.class) == 0) { throw new AssertionError(); } diff --git a/test/004-UnsafeTest/src/Main.java b/test/004-UnsafeTest/src/Main.java index 9d4618a07c..d43d374a42 100644 --- a/test/004-UnsafeTest/src/Main.java +++ b/test/004-UnsafeTest/src/Main.java @@ -249,6 +249,6 @@ public class Main { public volatile Object volatileObjectVar = null; } - private static native int vmArrayBaseOffset(Class clazz); - private static native int vmArrayIndexScale(Class clazz); + private static native int vmArrayBaseOffset(Class<?> clazz); + private static native int vmArrayIndexScale(Class<?> clazz); } diff --git a/test/005-annotations/src/android/test/anno/AnnoFancyMethod.java b/test/005-annotations/src/android/test/anno/AnnoFancyMethod.java index 3088866647..aa7808f7d5 100644 --- a/test/005-annotations/src/android/test/anno/AnnoFancyMethod.java +++ b/test/005-annotations/src/android/test/anno/AnnoFancyMethod.java @@ -10,5 +10,5 @@ public @interface AnnoFancyMethod { boolean callMe() default false; boolean biteMe(); AnnoFancyMethodEnum enumerated() default AnnoFancyMethodEnum.FOO; - Class someClass() default SomeClass.class; + Class<?> someClass() default SomeClass.class; } diff --git a/test/005-annotations/src/android/test/anno/AnnoMissingClass.java b/test/005-annotations/src/android/test/anno/AnnoMissingClass.java index c32e9a28e8..7933b80efa 100644 --- a/test/005-annotations/src/android/test/anno/AnnoMissingClass.java +++ b/test/005-annotations/src/android/test/anno/AnnoMissingClass.java @@ -20,5 +20,5 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) public @interface AnnoMissingClass { - Class value(); + Class<?> value(); } diff --git a/test/005-annotations/src/android/test/anno/TestAnnotations.java b/test/005-annotations/src/android/test/anno/TestAnnotations.java index 51254b4220..8ea8e8eb8f 100644 --- a/test/005-annotations/src/android/test/anno/TestAnnotations.java +++ b/test/005-annotations/src/android/test/anno/TestAnnotations.java @@ -42,7 +42,7 @@ public class TestAnnotations { } } - static void printAnnotations(Class clazz) { + static void printAnnotations(Class<?> clazz) { Annotation[] annos; Annotation[][] parAnnos; @@ -52,7 +52,7 @@ public class TestAnnotations { printAnnotationArray("", annos); System.out.println(); - for (Constructor c: clazz.getDeclaredConstructors()) { + for (Constructor<?> c: clazz.getDeclaredConstructors()) { annos = c.getDeclaredAnnotations(); System.out.println(" annotations on CTOR " + c + ":"); printAnnotationArray(" ", annos); @@ -139,8 +139,7 @@ public class TestAnnotations { final IntToString[] mapping; try { - meth = TestAnnotations.class.getMethod("getFocusType", - (Class[])null); + meth = TestAnnotations.class.getMethod("getFocusType"); } catch (NoSuchMethodException nsme) { throw new RuntimeException(nsme); } @@ -255,7 +254,7 @@ public class TestAnnotations { } private static class VMRuntime { - private static Class vmRuntimeClass; + private static Class<?> vmRuntimeClass; private static Method getRuntimeMethod; private static Method getTargetSdkVersionMethod; private static Method setTargetSdkVersionMethod; diff --git a/test/021-string2/src/Main.java b/test/021-string2/src/Main.java index 0226614147..d1ea0b171a 100644 --- a/test/021-string2/src/Main.java +++ b/test/021-string2/src/Main.java @@ -85,7 +85,7 @@ public class Main { Assert.assertEquals("this is a path", test.replaceAll("/", " ")); Assert.assertEquals("this is a path", test.replace("/", " ")); - Class Strings = Class.forName("com.android.org.bouncycastle.util.Strings"); + Class<?> Strings = Class.forName("com.android.org.bouncycastle.util.Strings"); Method fromUTF8ByteArray = Strings.getDeclaredMethod("fromUTF8ByteArray", byte[].class); String result = (String) fromUTF8ByteArray.invoke(null, new byte[] {'O', 'K'}); System.out.println(result); diff --git a/test/031-class-attributes/src/ClassAttrs.java b/test/031-class-attributes/src/ClassAttrs.java index 38bd525b86..346e13d110 100644 --- a/test/031-class-attributes/src/ClassAttrs.java +++ b/test/031-class-attributes/src/ClassAttrs.java @@ -118,14 +118,13 @@ public class ClassAttrs { printClassAttrs(FancyClass.class); try { - Constructor cons; - cons = MemberClass.class.getConstructor( - new Class[] { MemberClass.class }); + Constructor<?> cons; + cons = MemberClass.class.getConstructor(MemberClass.class); System.out.println("constructor signature: " + getSignatureAttribute(cons)); Method meth; - meth = MemberClass.class.getMethod("foo", (Class[]) null); + meth = MemberClass.class.getMethod("foo"); System.out.println("method signature: " + getSignatureAttribute(meth)); @@ -222,7 +221,7 @@ public class ClassAttrs { public static String getSignatureAttribute(Object obj) { Method method; try { - Class c = obj.getClass(); + Class<?> c = obj.getClass(); if (c == Method.class || c == Constructor.class) { c = AbstractMethod.class; } @@ -263,9 +262,7 @@ public class ClassAttrs { /* * Dump a variety of class attributes. */ - public static void printClassAttrs(Class clazz) { - Class clazz2; - + public static <T> void printClassAttrs(Class<T> clazz) { System.out.println("***** " + clazz + ":"); System.out.println(" name: " @@ -321,7 +318,7 @@ public class ClassAttrs { System.out.println(" genericInterfaces: " + stringifyTypeArray(clazz.getGenericInterfaces())); - TypeVariable<Class<?>>[] typeParameters = clazz.getTypeParameters(); + TypeVariable<Class<T>>[] typeParameters = clazz.getTypeParameters(); System.out.println(" typeParameters: " + stringifyTypeArray(typeParameters)); } diff --git a/test/032-concrete-sub/src/ConcreteSub.java b/test/032-concrete-sub/src/ConcreteSub.java index 083f25dc7c..95adf63c37 100644 --- a/test/032-concrete-sub/src/ConcreteSub.java +++ b/test/032-concrete-sub/src/ConcreteSub.java @@ -37,13 +37,13 @@ public class ConcreteSub extends AbstractBase { /* * Check reflection stuff. */ - Class absClass = AbstractBase.class; + Class<?> absClass = AbstractBase.class; Method meth; System.out.println("class modifiers=" + absClass.getModifiers()); try { - meth = absClass.getMethod("redefineMe", (Class[]) null); + meth = absClass.getMethod("redefineMe"); } catch (NoSuchMethodException nsme) { nsme.printStackTrace(); return; diff --git a/test/042-new-instance/src/Main.java b/test/042-new-instance/src/Main.java index 8cd6b2ee7d..755d62ebb5 100644 --- a/test/042-new-instance/src/Main.java +++ b/test/042-new-instance/src/Main.java @@ -33,7 +33,7 @@ public class Main { static void testClassNewInstance() { // should succeed try { - Class c = Class.forName("LocalClass"); + Class<?> c = Class.forName("LocalClass"); Object obj = c.newInstance(); System.out.println("LocalClass succeeded"); } catch (Exception ex) { @@ -43,7 +43,7 @@ public class Main { // should fail try { - Class c = Class.forName("otherpackage.PackageAccess"); + Class<?> c = Class.forName("otherpackage.PackageAccess"); Object obj = c.newInstance(); System.err.println("ERROR: PackageAccess succeeded unexpectedly"); } catch (IllegalAccessException iae) { @@ -71,8 +71,8 @@ public class Main { static void testConstructorNewInstance() { // should fail -- getConstructor only returns public constructors try { - Class c = Class.forName("LocalClass"); - Constructor cons = c.getConstructor(new Class[0] /*(Class[])null*/); + Class<?> c = Class.forName("LocalClass"); + Constructor<?> cons = c.getConstructor(); System.err.println("Cons LocalClass succeeded unexpectedly"); } catch (NoSuchMethodException nsme) { System.out.println("Cons LocalClass failed as expected"); @@ -83,8 +83,8 @@ public class Main { // should succeed try { - Class c = Class.forName("LocalClass2"); - Constructor cons = c.getConstructor((Class[]) null); + Class<?> c = Class.forName("LocalClass2"); + Constructor<?> cons = c.getConstructor(); Object obj = cons.newInstance(); System.out.println("Cons LocalClass2 succeeded"); } catch (Exception ex) { @@ -94,8 +94,8 @@ public class Main { // should succeed try { - Class c = Class.forName("Main$InnerClass"); - Constructor cons = c.getDeclaredConstructor(new Class<?>[]{Main.class}); + Class<?> c = Class.forName("Main$InnerClass"); + Constructor<?> cons = c.getDeclaredConstructor(Main.class); Object obj = cons.newInstance(new Main()); System.out.println("Cons InnerClass succeeded"); } catch (Exception ex) { @@ -105,8 +105,8 @@ public class Main { // should succeed try { - Class c = Class.forName("Main$StaticInnerClass"); - Constructor cons = c.getDeclaredConstructor((Class[]) null); + Class<?> c = Class.forName("Main$StaticInnerClass"); + Constructor<?> cons = c.getDeclaredConstructor(); Object obj = cons.newInstance(); System.out.println("Cons StaticInnerClass succeeded"); } catch (Exception ex) { @@ -116,8 +116,8 @@ public class Main { // should fail try { - Class c = Class.forName("otherpackage.PackageAccess"); - Constructor cons = c.getConstructor(new Class[0] /*(Class[])null*/); + Class<?> c = Class.forName("otherpackage.PackageAccess"); + Constructor<?> cons = c.getConstructor(); System.err.println("ERROR: Cons PackageAccess succeeded unexpectedly"); } catch (NoSuchMethodException nsme) { // constructor isn't public @@ -129,8 +129,8 @@ public class Main { // should fail try { - Class c = Class.forName("MaybeAbstract"); - Constructor cons = c.getConstructor(new Class[0] /*(Class[])null*/); + Class<?> c = Class.forName("MaybeAbstract"); + Constructor<?> cons = c.getConstructor(); Object obj = cons.newInstance(); System.err.println("ERROR: Cons MaybeAbstract succeeded unexpectedly"); } catch (InstantiationException ie) { @@ -143,8 +143,8 @@ public class Main { // should fail try { - Class c = Class.forName("otherpackage.PackageAccess2"); - Constructor cons = c.getConstructor((Class[]) null); + Class<?> c = Class.forName("otherpackage.PackageAccess2"); + Constructor<?> cons = c.getConstructor(); if (!FULL_ACCESS_CHECKS) { throw new IllegalAccessException(); } Object obj = cons.newInstance(); System.err.println("ERROR: Cons PackageAccess2 succeeded unexpectedly"); @@ -197,7 +197,7 @@ class LocalClass3 { static Object newInstance() { try { - Class c = CC.class; + Class<?> c = CC.class; return c.newInstance(); } catch (Exception ex) { ex.printStackTrace(); diff --git a/test/042-new-instance/src/otherpackage/ConstructorAccess.java b/test/042-new-instance/src/otherpackage/ConstructorAccess.java index a74e9a0650..79d572c841 100644 --- a/test/042-new-instance/src/otherpackage/ConstructorAccess.java +++ b/test/042-new-instance/src/otherpackage/ConstructorAccess.java @@ -29,8 +29,8 @@ public class ConstructorAccess { // accessibility using the frame below (in Main class), we will see an // IllegalAccessException from #newInstance static public void newConstructorInstance() throws Exception { - Class c = Inner.class; - Constructor cons = c.getDeclaredConstructor((Class[]) null); + Class<?> c = Inner.class; + Constructor cons = c.getDeclaredConstructor(); Object obj = cons.newInstance(); } } diff --git a/test/044-proxy/src/BasicTest.java b/test/044-proxy/src/BasicTest.java index 445a6cc467..5f04b9344c 100644 --- a/test/044-proxy/src/BasicTest.java +++ b/test/044-proxy/src/BasicTest.java @@ -99,18 +99,16 @@ public class BasicTest { InvocationHandler handler = new MyInvocationHandler(proxyMe); /* create the proxy class */ - Class proxyClass = Proxy.getProxyClass(Shapes.class.getClassLoader(), - new Class[] { Quads.class, Colors.class, Trace.class }); + Class<?> proxyClass = Proxy.getProxyClass(Shapes.class.getClassLoader(), + Quads.class, Colors.class, Trace.class); Main.registerProxyClassName(proxyClass.getCanonicalName()); /* create a proxy object, passing the handler object in */ Object proxy = null; try { - Constructor<Class> cons; - cons = proxyClass.getConstructor( - new Class[] { InvocationHandler.class }); + Constructor<?> cons = proxyClass.getConstructor(InvocationHandler.class); //System.out.println("Constructor is " + cons); - proxy = cons.newInstance(new Object[] { handler }); + proxy = cons.newInstance(handler); } catch (NoSuchMethodException nsme) { System.err.println("failed: " + nsme); } catch (InstantiationException ie) { diff --git a/test/044-proxy/src/Clash.java b/test/044-proxy/src/Clash.java index adeffdcf11..d000112fb6 100644 --- a/test/044-proxy/src/Clash.java +++ b/test/044-proxy/src/Clash.java @@ -30,7 +30,7 @@ public class Clash { /* try passing in the same interface twice */ try { Proxy.newProxyInstance(Clash.class.getClassLoader(), - new Class[] { Interface1A.class, Interface1A.class }, + new Class<?>[] { Interface1A.class, Interface1A.class }, handler); System.err.println("Dupe did not throw expected exception"); } catch (IllegalArgumentException iae) { @@ -39,7 +39,7 @@ public class Clash { try { Proxy.newProxyInstance(Clash.class.getClassLoader(), - new Class[] { Interface1A.class, Interface1B.class }, + new Class<?>[] { Interface1A.class, Interface1B.class }, handler); System.err.println("Clash did not throw expected exception"); } catch (IllegalArgumentException iae) { diff --git a/test/044-proxy/src/Clash2.java b/test/044-proxy/src/Clash2.java index 2a384f4174..e405cfea03 100644 --- a/test/044-proxy/src/Clash2.java +++ b/test/044-proxy/src/Clash2.java @@ -29,7 +29,7 @@ public class Clash2 { try { Proxy.newProxyInstance(Clash.class.getClassLoader(), - new Class[] { Interface2A.class, Interface2B.class }, + new Class<?>[] { Interface2A.class, Interface2B.class }, handler); System.err.println("Clash2 did not throw expected exception"); } catch (IllegalArgumentException iae) { diff --git a/test/044-proxy/src/Clash3.java b/test/044-proxy/src/Clash3.java index 6d6f2f2965..44806cee7d 100644 --- a/test/044-proxy/src/Clash3.java +++ b/test/044-proxy/src/Clash3.java @@ -29,7 +29,7 @@ public class Clash3 { try { Proxy.newProxyInstance(Clash.class.getClassLoader(), - new Class[] { + new Class<?>[] { Interface3a.class, Interface3base.class, Interface3aa.class, diff --git a/test/044-proxy/src/Clash4.java b/test/044-proxy/src/Clash4.java index 1bfb37f58d..ca5c3ab6e6 100644 --- a/test/044-proxy/src/Clash4.java +++ b/test/044-proxy/src/Clash4.java @@ -29,7 +29,7 @@ public class Clash4 { try { Proxy.newProxyInstance(Clash.class.getClassLoader(), - new Class[] { + new Class<?>[] { Interface4a.class, Interface4aa.class, Interface4base.class, diff --git a/test/044-proxy/src/FloatSelect.java b/test/044-proxy/src/FloatSelect.java index febe697818..217ccafd25 100644 --- a/test/044-proxy/src/FloatSelect.java +++ b/test/044-proxy/src/FloatSelect.java @@ -34,7 +34,7 @@ public class FloatSelect { public static void main(String[] args) { FloatSelectI proxyObject = (FloatSelectI) Proxy.newProxyInstance( FloatSelectI.class.getClassLoader(), - new Class[] { FloatSelectI.class }, + new Class<?>[] { FloatSelectI.class }, new FloatSelectIInvoke1()); float floatResult = proxyObject.method(2.1f, 5.8f); diff --git a/test/044-proxy/src/NativeProxy.java b/test/044-proxy/src/NativeProxy.java index b425da87b5..c609dc25b3 100644 --- a/test/044-proxy/src/NativeProxy.java +++ b/test/044-proxy/src/NativeProxy.java @@ -40,7 +40,7 @@ public class NativeProxy { try { NativeInterface inf = (NativeInterface)Proxy.newProxyInstance( NativeProxy.class.getClassLoader(), - new Class[] { NativeInterface.class }, + new Class<?>[] { NativeInterface.class }, new NativeInvocationHandler()); nativeCall(inf); diff --git a/test/044-proxy/src/ReturnsAndArgPassing.java b/test/044-proxy/src/ReturnsAndArgPassing.java index 225cc5b232..3d8ebf05a9 100644 --- a/test/044-proxy/src/ReturnsAndArgPassing.java +++ b/test/044-proxy/src/ReturnsAndArgPassing.java @@ -98,7 +98,7 @@ public class ReturnsAndArgPassing { MyInvocationHandler myHandler = new MyInvocationHandler(); MyInterface proxyMyInterface = (MyInterface)Proxy.newProxyInstance(ReturnsAndArgPassing.class.getClassLoader(), - new Class[] { MyInterface.class }, + new Class<?>[] { MyInterface.class }, myHandler); check(fooInvocations == 0); proxyMyInterface.voidFoo(); @@ -441,7 +441,7 @@ public class ReturnsAndArgPassing { MyInvocationHandler myHandler = new MyInvocationHandler(); MyInterface proxyMyInterface = (MyInterface)Proxy.newProxyInstance(ReturnsAndArgPassing.class.getClassLoader(), - new Class[] { MyInterface.class }, + new Class<?>[] { MyInterface.class }, myHandler); check((Integer)proxyMyInterface.selectArg(0, Integer.MAX_VALUE, Long.MAX_VALUE, diff --git a/test/044-proxy/src/WrappedThrow.java b/test/044-proxy/src/WrappedThrow.java index 27ae84e24c..643ba053b9 100644 --- a/test/044-proxy/src/WrappedThrow.java +++ b/test/044-proxy/src/WrappedThrow.java @@ -32,7 +32,7 @@ public class WrappedThrow { try { proxy = Proxy.newProxyInstance(WrappedThrow.class.getClassLoader(), - new Class[] { InterfaceW1.class, InterfaceW2.class }, + new Class<?>[] { InterfaceW1.class, InterfaceW2.class }, handler); } catch (IllegalArgumentException iae) { System.out.println("WT init failed"); diff --git a/test/046-reflect/src/Main.java b/test/046-reflect/src/Main.java index 67a0d110ac..10dad8ddac 100644 --- a/test/046-reflect/src/Main.java +++ b/test/046-reflect/src/Main.java @@ -32,7 +32,7 @@ public class Main { public Main(ArrayList<Integer> stuff) {} void printMethodInfo(Method meth) { - Class[] params, exceptions; + Class<?>[] params, exceptions; int i; System.out.println("Method name is " + meth.getName()); @@ -62,7 +62,7 @@ public class Main { private void showStrings(Target instance) throws NoSuchFieldException, IllegalAccessException { - Class target = Target.class; + Class<?> target = Target.class; String one, two, three, four; Field field = null; @@ -80,15 +80,15 @@ public class Main { public static void checkAccess() { try { - Class target = otherpackage.Other.class; + Class<?> target = otherpackage.Other.class; Object instance = new otherpackage.Other(); Method meth; - meth = target.getMethod("publicMethod", (Class[]) null); + meth = target.getMethod("publicMethod"); meth.invoke(instance); try { - meth = target.getMethod("packageMethod", (Class[]) null); + meth = target.getMethod("packageMethod"); System.err.println("succeeded on package-scope method"); } catch (NoSuchMethodException nsme) { // good @@ -97,7 +97,7 @@ public class Main { instance = otherpackage.Other.getInnerClassInstance(); target = instance.getClass(); - meth = target.getMethod("innerMethod", (Class[]) null); + meth = target.getMethod("innerMethod"); try { if (!FULL_ACCESS_CHECKS) { throw new IllegalAccessException(); } meth.invoke(instance); @@ -121,26 +121,25 @@ public class Main { } public void run() { - Class target = Target.class; + Class<Target> target = Target.class; Method meth = null; Field field = null; boolean excep; try { - meth = target.getMethod("myMethod", new Class[] { int.class }); + meth = target.getMethod("myMethod", int.class); if (meth.getDeclaringClass() != target) throw new RuntimeException(); printMethodInfo(meth); - meth = target.getMethod("myMethod", new Class[] { float.class }); + meth = target.getMethod("myMethod", float.class); printMethodInfo(meth); - meth = target.getMethod("myNoargMethod", (Class[]) null); + meth = target.getMethod("myNoargMethod"); printMethodInfo(meth); - meth = target.getMethod("myMethod", - new Class[] { String[].class, float.class, char.class }); + meth = target.getMethod("myMethod", String[].class, float.class, char.class); printMethodInfo(meth); Target instance = new Target(); @@ -157,11 +156,11 @@ public class Main { System.out.println("Result of invoke: " + boxval.intValue()); System.out.println("Calling no-arg void-return method"); - meth = target.getMethod("myNoargMethod", (Class[]) null); + meth = target.getMethod("myNoargMethod"); meth.invoke(instance, (Object[]) null); /* try invoking a method that throws an exception */ - meth = target.getMethod("throwingMethod", (Class[]) null); + meth = target.getMethod("throwingMethod"); try { meth.invoke(instance, (Object[]) null); System.out.println("GLITCH: didn't throw"); @@ -372,7 +371,7 @@ public class Main { Target targ; Object[] args; - cons = target.getConstructor(new Class[] { int.class,float.class }); + cons = target.getConstructor(int.class, float.class); args = new Object[] { new Integer(7), new Float(3.3333) }; System.out.println("cons modifiers=" + cons.getModifiers()); targ = cons.newInstance(args); @@ -458,7 +457,7 @@ public class Main { public static void checkClinitForFields() throws Exception { // Loading a class constant shouldn't run <clinit>. System.out.println("calling const-class FieldNoisyInitUser.class"); - Class niuClass = FieldNoisyInitUser.class; + Class<?> niuClass = FieldNoisyInitUser.class; System.out.println("called const-class FieldNoisyInitUser.class"); // Getting the declared fields doesn't run <clinit>. @@ -480,14 +479,14 @@ public class Main { public static void checkClinitForMethods() throws Exception { // Loading a class constant shouldn't run <clinit>. System.out.println("calling const-class MethodNoisyInitUser.class"); - Class niuClass = MethodNoisyInitUser.class; + Class<?> niuClass = MethodNoisyInitUser.class; System.out.println("called const-class MethodNoisyInitUser.class"); // Getting the declared methods doesn't run <clinit>. Method[] methods = niuClass.getDeclaredMethods(); System.out.println("got methods"); - Method method = niuClass.getMethod("staticMethod", (Class[]) null); + Method method = niuClass.getMethod("staticMethod"); System.out.println("got method"); method.invoke(null); System.out.println("invoked method"); @@ -517,8 +516,7 @@ public class Main { Method method; try { - method = Main.class.getMethod("fancyMethod", - new Class[] { ArrayList.class }); + method = Main.class.getMethod("fancyMethod", ArrayList.class); } catch (NoSuchMethodException nsme) { throw new RuntimeException(nsme); } @@ -527,9 +525,9 @@ public class Main { System.out.println("generic method " + method.getName() + " params='" + stringifyTypeArray(parmTypes) + "' ret='" + ret + "'"); - Constructor ctor; + Constructor<?> ctor; try { - ctor = Main.class.getConstructor(new Class[] { ArrayList.class }); + ctor = Main.class.getConstructor( ArrayList.class); } catch (NoSuchMethodException nsme) { throw new RuntimeException(nsme); } @@ -580,8 +578,8 @@ public class Main { } Method method1, method2; try { - method1 = Main.class.getMethod("fancyMethod", new Class[] { ArrayList.class }); - method2 = Main.class.getMethod("fancyMethod", new Class[] { ArrayList.class }); + method1 = Main.class.getMethod("fancyMethod", ArrayList.class); + method2 = Main.class.getMethod("fancyMethod", ArrayList.class); } catch (NoSuchMethodException nsme) { throw new RuntimeException(nsme); } diff --git a/test/064-field-access/src/Main.java b/test/064-field-access/src/Main.java index 5d90129559..50ad5b9a20 100644 --- a/test/064-field-access/src/Main.java +++ b/test/064-field-access/src/Main.java @@ -38,7 +38,7 @@ public class Main { } try { - Class c = Class.forName("SubClassUsingInaccessibleField"); + Class<?> c = Class.forName("SubClassUsingInaccessibleField"); Object o = c.newInstance(); c.getMethod("test").invoke(o, null); } catch (InvocationTargetException ite) { @@ -64,7 +64,7 @@ public class Main { * On success, the boxed value retrieved is returned. */ public Object getValue(Field field, Object obj, char type, - Class expectedException) { + Class<?> expectedException) { Object result = null; try { switch (type) { @@ -638,7 +638,7 @@ class SubClass extends PublicClass { * reflection call is significant] */ public Object getValue(Field field, Object obj, char type, - Class expectedException) { + Class<?> expectedException) { Object result = null; try { switch (type) { @@ -698,7 +698,7 @@ class SubClass extends PublicClass { return result; } - public Object invoke(Method method, Object obj, Class expectedException) { + public Object invoke(Method method, Object obj, Class<?> expectedException) { Object result = null; try { result = method.invoke(obj); diff --git a/test/068-classloader/src/FancyLoader.java b/test/068-classloader/src/FancyLoader.java index 6a153cc9e2..e616bfc10f 100644 --- a/test/068-classloader/src/FancyLoader.java +++ b/test/068-classloader/src/FancyLoader.java @@ -41,7 +41,7 @@ public class FancyLoader extends ClassLoader { static final String DEX_FILE = System.getenv("DEX_LOCATION") + "/068-classloader-ex.jar"; /* on Dalvik, this is a DexFile; otherwise, it's null */ - private Class mDexClass; + private Class<?> mDexClass; private Object mDexFile; @@ -82,12 +82,12 @@ public class FancyLoader extends ClassLoader { if (mDexFile == null) { synchronized (FancyLoader.class) { - Constructor ctor; + Constructor<?> ctor; /* * Construct a DexFile object through reflection. */ try { - ctor = mDexClass.getConstructor(new Class[] {String.class}); + ctor = mDexClass.getConstructor(String.class); } catch (NoSuchMethodException nsme) { throw new ClassNotFoundException("getConstructor failed", nsme); @@ -111,8 +111,7 @@ public class FancyLoader extends ClassLoader { Method meth; try { - meth = mDexClass.getMethod("loadClass", - new Class[] { String.class, ClassLoader.class }); + meth = mDexClass.getMethod("loadClass", String.class, ClassLoader.class); } catch (NoSuchMethodException nsme) { throw new ClassNotFoundException("getMethod failed", nsme); } @@ -184,7 +183,7 @@ public class FancyLoader extends ClassLoader { protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { - Class res; + Class<?> res; /* * 1. Invoke findLoadedClass(String) to check if the class has diff --git a/test/068-classloader/src/Main.java b/test/068-classloader/src/Main.java index b2d843b351..01539b7172 100644 --- a/test/068-classloader/src/Main.java +++ b/test/068-classloader/src/Main.java @@ -74,11 +74,10 @@ public class Main { /* this is the "alternate" DEX/Jar file */ String DEX_FILE = System.getenv("DEX_LOCATION") + "/068-classloader-ex.jar"; /* on Dalvik, this is a DexFile; otherwise, it's null */ - Class mDexClass = Class.forName("dalvik.system.DexFile"); - Constructor ctor = mDexClass.getConstructor(new Class[] {String.class}); + Class<?> mDexClass = Class.forName("dalvik.system.DexFile"); + Constructor<?> ctor = mDexClass.getConstructor(String.class); Object mDexFile = ctor.newInstance(DEX_FILE); - Method meth = mDexClass.getMethod("loadClass", - new Class[] { String.class, ClassLoader.class }); + Method meth = mDexClass.getMethod("loadClass", String.class, ClassLoader.class); Object klass = meth.invoke(mDexFile, "Mutator", null); if (klass == null) { throw new AssertionError("loadClass with nullclass loader failed"); @@ -94,15 +93,15 @@ public class Main { FancyLoader loader2 = new FancyLoader(ClassLoader.getSystemClassLoader()); try { - Class target1 = loader1.loadClass("MutationTarget"); - Class target2 = loader2.loadClass("MutationTarget"); + Class<?> target1 = loader1.loadClass("MutationTarget"); + Class<?> target2 = loader2.loadClass("MutationTarget"); if (target1 == target2) { throw new RuntimeException("target1 should not be equal to target2"); } - Class mutator1 = loader1.loadClass("Mutator"); - Class mutator2 = loader2.loadClass("Mutator"); + Class<?> mutator1 = loader1.loadClass("Mutator"); + Class<?> mutator2 = loader2.loadClass("Mutator"); if (mutator1 == mutator2) { throw new RuntimeException("mutator1 should not be equal to mutator2"); @@ -134,12 +133,12 @@ public class Main { } } - private static void runMutator(Class c, int v) throws Exception { + private static void runMutator(Class<?> c, int v) throws Exception { java.lang.reflect.Method m = c.getDeclaredMethod("mutate", int.class); m.invoke(null, v); } - private static int getMutationTargetValue(Class c) throws Exception { + private static int getMutationTargetValue(Class<?> c) throws Exception { java.lang.reflect.Field f = c.getDeclaredField("value"); return f.getInt(null); } @@ -149,7 +148,7 @@ public class Main { * able to load it but not instantiate it. */ static void testAccess1(ClassLoader loader) { - Class altClass; + Class<?> altClass; try { altClass = loader.loadClass("Inaccessible1"); @@ -179,7 +178,7 @@ public class Main { * (though the base *is* accessible to us). */ static void testAccess2(ClassLoader loader) { - Class altClass; + Class<?> altClass; try { altClass = loader.loadClass("Inaccessible2"); @@ -199,7 +198,7 @@ public class Main { * See if we can load a class with an inaccessible interface. */ static void testAccess3(ClassLoader loader) { - Class altClass; + Class<?> altClass; try { altClass = loader.loadClass("Inaccessible3"); @@ -219,7 +218,7 @@ public class Main { * Test a doubled class that extends the base class. */ static void testExtend(ClassLoader loader) { - Class doubledExtendClass; + Class<?> doubledExtendClass; Object obj; /* get the "alternate" version of DoubledExtend */ @@ -268,7 +267,7 @@ public class Main { * it doesn't override the base class method. */ static void testExtendOkay(ClassLoader loader) { - Class doubledExtendOkayClass; + Class<?> doubledExtendOkayClass; Object obj; /* get the "alternate" version of DoubledExtendOkay */ @@ -316,7 +315,7 @@ public class Main { * an interface declared in a different class. */ static void testInterface(ClassLoader loader) { - Class getDoubledClass; + Class<?> getDoubledClass; Object obj; /* get GetDoubled from the "alternate" class loader */ @@ -362,7 +361,7 @@ public class Main { * Throw an abstract class into the middle and see what happens. */ static void testAbstract(ClassLoader loader) { - Class abstractGetClass; + Class<?> abstractGetClass; Object obj; /* get AbstractGet from the "alternate" loader */ @@ -407,7 +406,7 @@ public class Main { * Test a doubled class that implements a common interface. */ static void testImplement(ClassLoader loader) { - Class doubledImplementClass; + Class<?> doubledImplementClass; Object obj; useImplement(new DoubledImplement(), true); @@ -465,7 +464,7 @@ public class Main { * that refers to a doubled class. */ static void testIfaceImplement(ClassLoader loader) { - Class ifaceImplClass; + Class<?> ifaceImplClass; Object obj; /* diff --git a/test/071-dexfile/src/Main.java b/test/071-dexfile/src/Main.java index 2f85790175..c3a96715c2 100644 --- a/test/071-dexfile/src/Main.java +++ b/test/071-dexfile/src/Main.java @@ -66,7 +66,7 @@ public class Main { */ private static void testDexClassLoader() throws Exception { ClassLoader dexClassLoader = getDexClassLoader(); - Class Another = dexClassLoader.loadClass("Another"); + Class<?> Another = dexClassLoader.loadClass("Another"); Object another = Another.newInstance(); // not expected to work; just exercises the call dexClassLoader.getResource("nonexistent"); @@ -79,18 +79,21 @@ public class Main { */ private static ClassLoader getDexClassLoader() throws Exception { ClassLoader classLoader = Main.class.getClassLoader(); - Class DexClassLoader = classLoader.loadClass("dalvik.system.DexClassLoader"); - Constructor DexClassLoader_init = DexClassLoader.getConstructor(String.class, - String.class, - String.class, - ClassLoader.class); + Class<?> DexClassLoader = classLoader.loadClass("dalvik.system.DexClassLoader"); + Constructor<?> DexClassLoader_init = DexClassLoader.getConstructor(String.class, + String.class, + String.class, + ClassLoader.class); // create an instance, using the path we found - return (ClassLoader) DexClassLoader_init.newInstance(CLASS_PATH, getOdexDir(), LIB_DIR, classLoader); + return (ClassLoader) DexClassLoader_init.newInstance(CLASS_PATH, + getOdexDir(), + LIB_DIR, + classLoader); } private static void testDexFile() throws Exception { ClassLoader classLoader = Main.class.getClassLoader(); - Class DexFile = classLoader.loadClass("dalvik.system.DexFile"); + Class<?> DexFile = classLoader.loadClass("dalvik.system.DexFile"); Method DexFile_loadDex = DexFile.getMethod("loadDex", String.class, String.class, diff --git a/test/074-gc-thrash/src/Main.java b/test/074-gc-thrash/src/Main.java index f947d0b3dc..df0479365f 100644 --- a/test/074-gc-thrash/src/Main.java +++ b/test/074-gc-thrash/src/Main.java @@ -69,7 +69,7 @@ public class Main { */ private static Method getDumpHprofDataMethod() { ClassLoader myLoader = Main.class.getClassLoader(); - Class vmdClass; + Class<?> vmdClass; try { vmdClass = myLoader.loadClass("dalvik.system.VMDebug"); } catch (ClassNotFoundException cnfe) { @@ -78,8 +78,7 @@ public class Main { Method meth; try { - meth = vmdClass.getMethod("dumpHprofData", - new Class[] { String.class }); + meth = vmdClass.getMethod("dumpHprofData", String.class); } catch (NoSuchMethodException nsme) { System.err.println("Found VMDebug but not dumpHprofData method"); return null; diff --git a/test/080-oom-throw/src/Main.java b/test/080-oom-throw/src/Main.java index f007b2535c..0ae92a96dc 100644 --- a/test/080-oom-throw/src/Main.java +++ b/test/080-oom-throw/src/Main.java @@ -105,7 +105,7 @@ public class Main { static boolean triggerReflectionOOM() { try { Class<?> c = Main.class; - Method m = c.getMethod("blowup", (Class[]) null); + Method m = c.getMethod("blowup"); holder = new Object[1000000]; m.invoke(null); holder = null; diff --git a/test/086-null-super/src/Main.java b/test/086-null-super/src/Main.java index 060737f584..8bd17860ea 100644 --- a/test/086-null-super/src/Main.java +++ b/test/086-null-super/src/Main.java @@ -75,14 +75,12 @@ public class Main { * Find the DexFile class, and construct a DexFile object * through reflection, then call loadCLass on it. */ - Class mDexClass = ClassLoader.getSystemClassLoader(). + Class<?> mDexClass = ClassLoader.getSystemClassLoader(). loadClass("dalvik.system.DexFile"); - Constructor ctor = mDexClass. - getConstructor(new Class[] {String.class}); + Constructor<?> ctor = mDexClass.getConstructor(String.class); Object mDexFile = ctor.newInstance(DEX_FILE); Method meth = mDexClass. - getMethod("loadClass", - new Class[] { String.class, ClassLoader.class }); + getMethod("loadClass", String.class, ClassLoader.class); /* * Invoking loadClass on CLASS_NAME is expected to * throw an InvocationTargetException. Anything else diff --git a/test/087-gc-after-link/src/Main.java b/test/087-gc-after-link/src/Main.java index 7c47e9976f..698af0bcdc 100644 --- a/test/087-gc-after-link/src/Main.java +++ b/test/087-gc-after-link/src/Main.java @@ -70,7 +70,7 @@ public class Main { throws TestFailed, InvocationTargetException { Object dexFile = null; - Class dexClass = null; + Class<?> dexClass = null; try { try { @@ -80,11 +80,9 @@ public class Main { */ dexClass = ClassLoader.getSystemClassLoader(). loadClass("dalvik.system.DexFile"); - Constructor ctor = dexClass. - getConstructor(new Class[] {String.class}); + Constructor<?> ctor = dexClass.getConstructor(String.class); dexFile = ctor.newInstance(DEX_FILE); - Method meth = dexClass.getMethod("loadClass", - new Class[] { String.class, ClassLoader.class }); + Method meth = dexClass.getMethod("loadClass", String.class, ClassLoader.class); /* * Invoking loadClass on CLASS_NAME is expected to * throw an InvocationTargetException. Anything else @@ -95,7 +93,7 @@ public class Main { } finally { if (dexFile != null) { /* close the DexFile to make CloseGuard happy */ - Method meth = dexClass.getMethod("close", (Class[]) null); + Method meth = dexClass.getMethod("close"); meth.invoke(dexFile); } } diff --git a/test/088-monitor-verification/src/Main.java b/test/088-monitor-verification/src/Main.java index 212c894bd5..a6f0e642d4 100644 --- a/test/088-monitor-verification/src/Main.java +++ b/test/088-monitor-verification/src/Main.java @@ -100,7 +100,7 @@ public class Main { */ void constantLock() { assertIsManaged(); - Class thing = Thread.class; + Class<?> thing = Thread.class; synchronized (Thread.class) {} } diff --git a/test/098-ddmc/src/Main.java b/test/098-ddmc/src/Main.java index 50bbe5178e..72c5a28203 100644 --- a/test/098-ddmc/src/Main.java +++ b/test/098-ddmc/src/Main.java @@ -136,7 +136,7 @@ public class Main { private static final Method getRecentAllocationsMethod; static { try { - Class c = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); + Class<?> c = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); enableRecentAllocationsMethod = c.getDeclaredMethod("enableRecentAllocations", Boolean.TYPE); getRecentAllocationStatusMethod = c.getDeclaredMethod("getRecentAllocationStatus"); diff --git a/test/099-vmdebug/src/Main.java b/test/099-vmdebug/src/Main.java index 8068721219..90ad3155ca 100644 --- a/test/099-vmdebug/src/Main.java +++ b/test/099-vmdebug/src/Main.java @@ -242,7 +242,7 @@ public class Main { System.out.println("Instances of null " + VMDebug.countInstancesofClass(null, false)); System.out.println("Instances of ClassA assignable " + VMDebug.countInstancesofClass(ClassA.class, true)); - Class[] classes = new Class[]{ClassA.class, ClassB.class, null}; + Class<?>[] classes = new Class<?>[] {ClassA.class, ClassB.class, null}; long[] counts = VMDebug.countInstancesofClasses(classes, false); System.out.println("Array counts " + Arrays.toString(counts)); counts = VMDebug.countInstancesofClasses(classes, true); @@ -259,7 +259,7 @@ public class Main { private static final Method countInstancesOfClassesMethod; static { try { - Class c = Class.forName("dalvik.system.VMDebug"); + Class<?> c = Class.forName("dalvik.system.VMDebug"); startMethodTracingMethod = c.getDeclaredMethod("startMethodTracing", String.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Integer.TYPE); stopMethodTracingMethod = c.getDeclaredMethod("stopMethodTracing"); @@ -292,10 +292,10 @@ public class Main { public static Map<String, String> getRuntimeStats() throws Exception { return (Map<String, String>) getRuntimeStatsMethod.invoke(null); } - public static long countInstancesofClass(Class c, boolean assignable) throws Exception { + public static long countInstancesofClass(Class<?> c, boolean assignable) throws Exception { return (long) countInstancesOfClassMethod.invoke(null, new Object[]{c, assignable}); } - public static long[] countInstancesofClasses(Class[] classes, boolean assignable) + public static long[] countInstancesofClasses(Class<?>[] classes, boolean assignable) throws Exception { return (long[]) countInstancesOfClassesMethod.invoke( null, new Object[]{classes, assignable}); diff --git a/test/100-reflect2/src/Main.java b/test/100-reflect2/src/Main.java index 124585225f..91ba3075f4 100644 --- a/test/100-reflect2/src/Main.java +++ b/test/100-reflect2/src/Main.java @@ -275,10 +275,8 @@ class Main { } public static void testConstructorReflection() throws Exception { - Constructor<?> ctor; - - ctor = String.class.getConstructor(new Class[0]); - show(ctor.newInstance((Object[]) null)); + Constructor<String> ctor = String.class.getConstructor(); + show(ctor.newInstance()); ctor = String.class.getConstructor(char[].class, int.class, int.class); show(ctor.newInstance(new char[] { '\u2714', 'y', 'z', '!' }, 1, 2)); @@ -287,7 +285,7 @@ class Main { private static void testPackagePrivateConstructor() { try { Class<?> c = Class.forName("sub.PPClass"); - Constructor cons = c.getConstructor(); + Constructor<?> cons = c.getConstructor(); cons.newInstance(); throw new RuntimeException("Expected IllegalAccessException."); } catch (IllegalAccessException e) { @@ -301,7 +299,7 @@ class Main { private static void testPackagePrivateAccessibleConstructor() { try { Class<?> c = Class.forName("sub.PPClass"); - Constructor cons = c.getConstructor(); + Constructor<?> cons = c.getConstructor(); cons.setAccessible(true); // ensure we prevent IllegalAccessException cons.newInstance(); } catch (Exception e) { diff --git a/test/107-int-math2/src/Main.java b/test/107-int-math2/src/Main.java index 0c91d4438d..ec5678d5b0 100644 --- a/test/107-int-math2/src/Main.java +++ b/test/107-int-math2/src/Main.java @@ -104,7 +104,7 @@ class Main extends IntMathBase { } static int constClassTest(int x) { - Class c = String.class; + Class<?> c = String.class; if (c != null) { return x * 2; } else { diff --git a/test/118-noimage-dex2oat/src/Main.java b/test/118-noimage-dex2oat/src/Main.java index dba9166ad5..cc19107590 100644 --- a/test/118-noimage-dex2oat/src/Main.java +++ b/test/118-noimage-dex2oat/src/Main.java @@ -51,7 +51,7 @@ public class Main { private static final Method isBootClassPathOnDiskMethod; static { try { - Class c = Class.forName("dalvik.system.VMRuntime"); + Class<?> c = Class.forName("dalvik.system.VMRuntime"); getCurrentInstructionSetMethod = c.getDeclaredMethod("getCurrentInstructionSet"); isBootClassPathOnDiskMethod = c.getDeclaredMethod("isBootClassPathOnDisk", String.class); diff --git a/test/125-gc-and-classloading/src/Main.java b/test/125-gc-and-classloading/src/Main.java index 61e123d329..e81ef7bfd4 100644 --- a/test/125-gc-and-classloading/src/Main.java +++ b/test/125-gc-and-classloading/src/Main.java @@ -57,7 +57,7 @@ public class Main { public void run() { try { cdl.await(); - Class c0 = Class.forName("Main$BigClass"); + Class<?> c0 = Class.forName("Main$BigClass"); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/test/130-hprof/src/Main.java b/test/130-hprof/src/Main.java index 9868c617f5..c145f27103 100644 --- a/test/130-hprof/src/Main.java +++ b/test/130-hprof/src/Main.java @@ -37,15 +37,15 @@ public class Main { private static Object allocInDifferentLoader() throws Exception { final String DEX_FILE = System.getenv("DEX_LOCATION") + "/130-hprof-ex.jar"; - Class pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); + Class<?> pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); if (pathClassLoader == null) { throw new AssertionError("Couldn't find path class loader class"); } - Constructor constructor = + Constructor<?> constructor = pathClassLoader.getDeclaredConstructor(String.class, ClassLoader.class); ClassLoader loader = (ClassLoader)constructor.newInstance( DEX_FILE, ClassLoader.getSystemClassLoader()); - Class allocator = loader.loadClass("Allocator"); + Class<?> allocator = loader.loadClass("Allocator"); return allocator.getDeclaredMethod("allocObject", null).invoke(null); } @@ -105,7 +105,7 @@ public class Main { System.out.println("Generated data."); createDumpAndConv(); - Class klass = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); + Class<?> klass = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); if (klass == null) { throw new AssertionError("Couldn't find path class loader class"); } @@ -153,7 +153,7 @@ public class Main { */ private static Method getDumpHprofDataMethod() { ClassLoader myLoader = Main.class.getClassLoader(); - Class vmdClass; + Class<?> vmdClass; try { vmdClass = myLoader.loadClass("dalvik.system.VMDebug"); } catch (ClassNotFoundException cnfe) { @@ -162,8 +162,7 @@ public class Main { Method meth; try { - meth = vmdClass.getMethod("dumpHprofData", - new Class[] { String.class }); + meth = vmdClass.getMethod("dumpHprofData", String.class); } catch (NoSuchMethodException nsme) { System.err.println("Found VMDebug but not dumpHprofData method"); return null; diff --git a/test/134-reg-promotion/src/Main.java b/test/134-reg-promotion/src/Main.java index 008ac5804b..f633524832 100644 --- a/test/134-reg-promotion/src/Main.java +++ b/test/134-reg-promotion/src/Main.java @@ -32,13 +32,13 @@ public class Main { public static void main(String args[]) throws Exception { Class<?> c = Class.forName("Test"); - Method m = c.getMethod("run", (Class[]) null); + Method m = c.getMethod("run"); for (int i = 0; i < 10; i++) { holder = new char[128 * 1024][]; m.invoke(null, (Object[]) null); holder = null; } - m = c.getMethod("run2", (Class[]) null); + m = c.getMethod("run2"); for (int i = 0; i < 10; i++) { holder = new char[128 * 1024][]; m.invoke(null, (Object[]) null); diff --git a/test/138-duplicate-classes-check/src/Main.java b/test/138-duplicate-classes-check/src/Main.java index a2ef281939..5ffceb94fe 100644 --- a/test/138-duplicate-classes-check/src/Main.java +++ b/test/138-duplicate-classes-check/src/Main.java @@ -38,7 +38,7 @@ public class Main { getClass().getClassLoader()); try { - Class testEx = loader.loadClass("TestEx"); + Class<?> testEx = loader.loadClass("TestEx"); Method test = testEx.getDeclaredMethod("test"); test.invoke(null); } catch (Exception exc) { diff --git a/test/138-duplicate-classes-check2/src/FancyLoader.java b/test/138-duplicate-classes-check2/src/FancyLoader.java index 7e2bb08a5c..58b7ec49d3 100644 --- a/test/138-duplicate-classes-check2/src/FancyLoader.java +++ b/test/138-duplicate-classes-check2/src/FancyLoader.java @@ -42,7 +42,7 @@ public class FancyLoader extends ClassLoader { "/138-duplicate-classes-check2-ex.jar"; /* on Dalvik, this is a DexFile; otherwise, it's null */ - private Class mDexClass; + private Class<?> mDexClass; private Object mDexFile; @@ -83,12 +83,12 @@ public class FancyLoader extends ClassLoader { if (mDexFile == null) { synchronized (FancyLoader.class) { - Constructor ctor; + Constructor<?> ctor; /* * Construct a DexFile object through reflection. */ try { - ctor = mDexClass.getConstructor(new Class[] {String.class}); + ctor = mDexClass.getConstructor(String.class); } catch (NoSuchMethodException nsme) { throw new ClassNotFoundException("getConstructor failed", nsme); @@ -112,8 +112,7 @@ public class FancyLoader extends ClassLoader { Method meth; try { - meth = mDexClass.getMethod("loadClass", - new Class[] { String.class, ClassLoader.class }); + meth = mDexClass.getMethod("loadClass", String.class, ClassLoader.class); } catch (NoSuchMethodException nsme) { throw new ClassNotFoundException("getMethod failed", nsme); } @@ -185,7 +184,7 @@ public class FancyLoader extends ClassLoader { protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { - Class res; + Class<?> res; /* * 1. Invoke findLoadedClass(String) to check if the class has diff --git a/test/138-duplicate-classes-check2/src/Main.java b/test/138-duplicate-classes-check2/src/Main.java index a9b5bb04ea..a0d6977405 100644 --- a/test/138-duplicate-classes-check2/src/Main.java +++ b/test/138-duplicate-classes-check2/src/Main.java @@ -33,7 +33,7 @@ public class Main { FancyLoader loader = new FancyLoader(getClass().getClassLoader()); try { - Class testEx = loader.loadClass("TestEx"); + Class<?> testEx = loader.loadClass("TestEx"); Method test = testEx.getDeclaredMethod("test"); test.invoke(null); } catch (Exception exc) { diff --git a/test/139-register-natives/src/Main.java b/test/139-register-natives/src/Main.java index 8dd2131670..11bd53f2c0 100644 --- a/test/139-register-natives/src/Main.java +++ b/test/139-register-natives/src/Main.java @@ -47,7 +47,7 @@ public class Main { } } - private native static int registerNatives(Class c); + private native static int registerNatives(Class<?> c); private static void expectThrows(Base b) { try { diff --git a/test/141-class-unload/src/Main.java b/test/141-class-unload/src/Main.java index 9ed8d28a02..f9b6180ab1 100644 --- a/test/141-class-unload/src/Main.java +++ b/test/141-class-unload/src/Main.java @@ -28,11 +28,11 @@ public class Main { public static void main(String[] args) throws Exception { nativeLibraryName = args[0]; - Class pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); + Class<?> pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); if (pathClassLoader == null) { throw new AssertionError("Couldn't find path class loader class"); } - Constructor constructor = + Constructor<?> constructor = pathClassLoader.getDeclaredConstructor(String.class, String.class, ClassLoader.class); try { testUnloadClass(constructor); @@ -67,7 +67,7 @@ public class Main { System.out.println("Number of loaded unload-ex maps " + count); } - private static void stressTest(Constructor constructor) throws Exception { + private static void stressTest(Constructor<?> constructor) throws Exception { for (int i = 0; i <= 100; ++i) { setUpUnloadLoader(constructor, false); if (i % 10 == 0) { @@ -76,7 +76,7 @@ public class Main { } } - private static void testUnloadClass(Constructor constructor) throws Exception { + private static void testUnloadClass(Constructor<?> constructor) throws Exception { WeakReference<Class> klass = setUpUnloadClassWeak(constructor); // No strong references to class loader, should get unloaded. Runtime.getRuntime().gc(); @@ -87,7 +87,7 @@ public class Main { System.out.println(klass2.get()); } - private static void testUnloadLoader(Constructor constructor) + private static void testUnloadLoader(Constructor<?> constructor) throws Exception { WeakReference<ClassLoader> loader = setUpUnloadLoader(constructor, true); // No strong references to class loader, should get unloaded. @@ -96,8 +96,8 @@ public class Main { System.out.println(loader.get()); } - private static void testStackTrace(Constructor constructor) throws Exception { - Class klass = setUpUnloadClass(constructor); + private static void testStackTrace(Constructor<?> constructor) throws Exception { + Class<?> klass = setUpUnloadClass(constructor); WeakReference<Class> weak_klass = new WeakReference(klass); Method stackTraceMethod = klass.getDeclaredMethod("generateStackTrace"); Throwable throwable = (Throwable) stackTraceMethod.invoke(klass); @@ -108,7 +108,7 @@ public class Main { System.out.println("class null " + isNull + " " + throwable.getMessage()); } - private static void testLoadAndUnloadLibrary(Constructor constructor) throws Exception { + private static void testLoadAndUnloadLibrary(Constructor<?> constructor) throws Exception { WeakReference<ClassLoader> loader = setUpLoadLibrary(constructor); // No strong references to class loader, should get unloaded. Runtime.getRuntime().gc(); @@ -117,7 +117,7 @@ public class Main { } private static Object testNoUnloadHelper(ClassLoader loader) throws Exception { - Class intHolder = loader.loadClass("IntHolder"); + Class<?> intHolder = loader.loadClass("IntHolder"); return intHolder.newInstance(); } @@ -131,14 +131,14 @@ public class Main { public WeakReference<ClassLoader> classLoader; } - private static Pair testNoUnloadInstanceHelper(Constructor constructor) throws Exception { + private static Pair testNoUnloadInstanceHelper(Constructor<?> constructor) throws Exception { ClassLoader loader = (ClassLoader) constructor.newInstance( DEX_FILE, LIBRARY_SEARCH_PATH, ClassLoader.getSystemClassLoader()); Object o = testNoUnloadHelper(loader); return new Pair(o, loader); } - private static void testNoUnloadInstance(Constructor constructor) throws Exception { + private static void testNoUnloadInstance(Constructor<?> constructor) throws Exception { Pair p = testNoUnloadInstanceHelper(constructor); Runtime.getRuntime().gc(); // If the class loader was unloded too early due to races, just pass the test. @@ -146,10 +146,10 @@ public class Main { System.out.println("loader null " + isNull); } - private static Class setUpUnloadClass(Constructor constructor) throws Exception { + private static Class<?> setUpUnloadClass(Constructor<?> constructor) throws Exception { ClassLoader loader = (ClassLoader) constructor.newInstance( DEX_FILE, LIBRARY_SEARCH_PATH, ClassLoader.getSystemClassLoader()); - Class intHolder = loader.loadClass("IntHolder"); + Class<?> intHolder = loader.loadClass("IntHolder"); Method getValue = intHolder.getDeclaredMethod("getValue"); Method setValue = intHolder.getDeclaredMethod("setValue", Integer.TYPE); // Make sure we don't accidentally preserve the value in the int holder, the class @@ -161,17 +161,17 @@ public class Main { return intHolder; } - private static WeakReference<Class> setUpUnloadClassWeak(Constructor constructor) + private static WeakReference<Class> setUpUnloadClassWeak(Constructor<?> constructor) throws Exception { return new WeakReference<Class>(setUpUnloadClass(constructor)); } - private static WeakReference<ClassLoader> setUpUnloadLoader(Constructor constructor, + private static WeakReference<ClassLoader> setUpUnloadLoader(Constructor<?> constructor, boolean waitForCompilation) throws Exception { ClassLoader loader = (ClassLoader) constructor.newInstance( DEX_FILE, LIBRARY_SEARCH_PATH, ClassLoader.getSystemClassLoader()); - Class intHolder = loader.loadClass("IntHolder"); + Class<?> intHolder = loader.loadClass("IntHolder"); Method setValue = intHolder.getDeclaredMethod("setValue", Integer.TYPE); setValue.invoke(intHolder, 2); if (waitForCompilation) { @@ -180,7 +180,7 @@ public class Main { return new WeakReference(loader); } - private static void waitForCompilation(Class intHolder) throws Exception { + private static void waitForCompilation(Class<?> intHolder) throws Exception { // Load the native library so that we can call waitForCompilation. Method loadLibrary = intHolder.getDeclaredMethod("loadLibrary", String.class); loadLibrary.invoke(intHolder, nativeLibraryName); @@ -189,11 +189,11 @@ public class Main { waitForCompilation.invoke(intHolder); } - private static WeakReference<ClassLoader> setUpLoadLibrary(Constructor constructor) + private static WeakReference<ClassLoader> setUpLoadLibrary(Constructor<?> constructor) throws Exception { ClassLoader loader = (ClassLoader) constructor.newInstance( DEX_FILE, LIBRARY_SEARCH_PATH, ClassLoader.getSystemClassLoader()); - Class intHolder = loader.loadClass("IntHolder"); + Class<?> intHolder = loader.loadClass("IntHolder"); Method loadLibrary = intHolder.getDeclaredMethod("loadLibrary", String.class); loadLibrary.invoke(intHolder, nativeLibraryName); waitForCompilation(intHolder); diff --git a/test/142-classloader2/src/Main.java b/test/142-classloader2/src/Main.java index 89dadcee68..80b00e7dd2 100644 --- a/test/142-classloader2/src/Main.java +++ b/test/142-classloader2/src/Main.java @@ -25,8 +25,8 @@ public class Main { private static ClassLoader createClassLoader(String dexPath, ClassLoader parent) { try { Class<?> myClassLoaderClass = Class.forName("MyPathClassLoader"); - Constructor constructor = myClassLoaderClass.getConstructor(String.class, - ClassLoader.class); + Constructor<?> constructor = myClassLoaderClass.getConstructor(String.class, + ClassLoader.class); return (ClassLoader)constructor.newInstance(dexPath, parent); } catch (Exception e) { // Ups, not available?!?! diff --git a/test/145-alloc-tracking-stress/src/Main.java b/test/145-alloc-tracking-stress/src/Main.java index 752fdd9135..4a67a804bd 100644 --- a/test/145-alloc-tracking-stress/src/Main.java +++ b/test/145-alloc-tracking-stress/src/Main.java @@ -31,7 +31,7 @@ public class Main implements Runnable { } public static void main(String[] args) throws Exception { - Class klass = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); + Class<?> klass = Class.forName("org.apache.harmony.dalvik.ddmc.DdmVmInternal"); if (klass == null) { throw new AssertionError("Couldn't find DdmVmInternal class"); } diff --git a/test/148-multithread-gc-annotations/src/AnnoClass1.java b/test/148-multithread-gc-annotations/src/AnnoClass1.java index b82c61fd5b..3eb45aef68 100644 --- a/test/148-multithread-gc-annotations/src/AnnoClass1.java +++ b/test/148-multithread-gc-annotations/src/AnnoClass1.java @@ -19,5 +19,5 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface AnnoClass1 { - Class value(); + Class<?> value(); } diff --git a/test/148-multithread-gc-annotations/src/AnnoClass2.java b/test/148-multithread-gc-annotations/src/AnnoClass2.java index c75d950e2a..b17490ff90 100644 --- a/test/148-multithread-gc-annotations/src/AnnoClass2.java +++ b/test/148-multithread-gc-annotations/src/AnnoClass2.java @@ -19,5 +19,5 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface AnnoClass2 { - Class value(); + Class<?> value(); } diff --git a/test/148-multithread-gc-annotations/src/AnnoClass3.java b/test/148-multithread-gc-annotations/src/AnnoClass3.java index 5b4a378091..7d600a8100 100644 --- a/test/148-multithread-gc-annotations/src/AnnoClass3.java +++ b/test/148-multithread-gc-annotations/src/AnnoClass3.java @@ -19,5 +19,5 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface AnnoClass3 { - Class value(); + Class<?> value(); } diff --git a/test/201-built-in-exception-detail-messages/src/Main.java b/test/201-built-in-exception-detail-messages/src/Main.java index f0bb6ddd4f..dc58819924 100644 --- a/test/201-built-in-exception-detail-messages/src/Main.java +++ b/test/201-built-in-exception-detail-messages/src/Main.java @@ -247,7 +247,7 @@ public class Main { * Helper for testCastOperatorWithArrays. It's important that * the return type is Object. */ - private static Object makeArray(Class c) { + private static Object makeArray(Class<?> c) { return Array.newInstance(c, 1); } diff --git a/test/420-const-class/src/Main.java b/test/420-const-class/src/Main.java index 44a7436103..90ccf3ab2d 100644 --- a/test/420-const-class/src/Main.java +++ b/test/420-const-class/src/Main.java @@ -53,15 +53,15 @@ public class Main { $opt$LoadAndClinitCheck(); } - public static Class $opt$LoadThisClass() { + public static Class<?> $opt$LoadThisClass() { return Main.class; } - public static Class $opt$LoadOtherClass() { + public static Class<?> $opt$LoadOtherClass() { return Other.class; } - public static Class $opt$LoadSystemClass() { + public static Class<?> $opt$LoadSystemClass() { return System.class; } diff --git a/test/442-checker-constant-folding/src/Main.java b/test/442-checker-constant-folding/src/Main.java index b7712a701f..33ef10bf7f 100644 --- a/test/442-checker-constant-folding/src/Main.java +++ b/test/442-checker-constant-folding/src/Main.java @@ -213,17 +213,17 @@ public class Main { * Exercise constant folding on addition. */ - /// CHECK-START: int Main.IntAddition1() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntAddition1() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Add:i\d+>> Add [<<Const1>>,<<Const2>>] /// CHECK-DAG: Return [<<Add>>] - /// CHECK-START: int Main.IntAddition1() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntAddition1() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: Return [<<Const3>>] - /// CHECK-START: int Main.IntAddition1() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntAddition1() constant_folding$after_inlining (after) /// CHECK-NOT: Add public static int IntAddition1() { @@ -234,7 +234,7 @@ public class Main { return c; } - /// CHECK-START: int Main.IntAddition2() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntAddition2() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Const5:i\d+>> IntConstant 5 @@ -244,11 +244,11 @@ public class Main { /// CHECK-DAG: <<Add3:i\d+>> Add [<<Add1>>,<<Add2>>] /// CHECK-DAG: Return [<<Add3>>] - /// CHECK-START: int Main.IntAddition2() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntAddition2() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const14:i\d+>> IntConstant 14 /// CHECK-DAG: Return [<<Const14>>] - /// CHECK-START: int Main.IntAddition2() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntAddition2() constant_folding$after_inlining (after) /// CHECK-NOT: Add public static int IntAddition2() { @@ -263,17 +263,17 @@ public class Main { return c; } - /// CHECK-START: long Main.LongAddition() constant_folding_after_inlining (before) + /// CHECK-START: long Main.LongAddition() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:j\d+>> LongConstant 1 /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: <<Add:j\d+>> Add [<<Const1>>,<<Const2>>] /// CHECK-DAG: Return [<<Add>>] - /// CHECK-START: long Main.LongAddition() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongAddition() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 /// CHECK-DAG: Return [<<Const3>>] - /// CHECK-START: long Main.LongAddition() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongAddition() constant_folding$after_inlining (after) /// CHECK-NOT: Add public static long LongAddition() { @@ -284,17 +284,17 @@ public class Main { return c; } - /// CHECK-START: float Main.FloatAddition() constant_folding_after_inlining (before) + /// CHECK-START: float Main.FloatAddition() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:f\d+>> FloatConstant 1 /// CHECK-DAG: <<Const2:f\d+>> FloatConstant 2 /// CHECK-DAG: <<Add:f\d+>> Add [<<Const1>>,<<Const2>>] /// CHECK-DAG: Return [<<Add>>] - /// CHECK-START: float Main.FloatAddition() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatAddition() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3:f\d+>> FloatConstant 3 /// CHECK-DAG: Return [<<Const3>>] - /// CHECK-START: float Main.FloatAddition() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatAddition() constant_folding$after_inlining (after) /// CHECK-NOT: Add public static float FloatAddition() { @@ -305,17 +305,17 @@ public class Main { return c; } - /// CHECK-START: double Main.DoubleAddition() constant_folding_after_inlining (before) + /// CHECK-START: double Main.DoubleAddition() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:d\d+>> DoubleConstant 1 /// CHECK-DAG: <<Const2:d\d+>> DoubleConstant 2 /// CHECK-DAG: <<Add:d\d+>> Add [<<Const1>>,<<Const2>>] /// CHECK-DAG: Return [<<Add>>] - /// CHECK-START: double Main.DoubleAddition() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleAddition() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3:d\d+>> DoubleConstant 3 /// CHECK-DAG: Return [<<Const3>>] - /// CHECK-START: double Main.DoubleAddition() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleAddition() constant_folding$after_inlining (after) /// CHECK-NOT: Add public static double DoubleAddition() { @@ -331,17 +331,17 @@ public class Main { * Exercise constant folding on subtraction. */ - /// CHECK-START: int Main.IntSubtraction() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntSubtraction() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const6:i\d+>> IntConstant 6 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Sub:i\d+>> Sub [<<Const6>>,<<Const2>>] /// CHECK-DAG: Return [<<Sub>>] - /// CHECK-START: int Main.IntSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntSubtraction() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const4:i\d+>> IntConstant 4 /// CHECK-DAG: Return [<<Const4>>] - /// CHECK-START: int Main.IntSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntSubtraction() constant_folding$after_inlining (after) /// CHECK-NOT: Sub public static int IntSubtraction() { @@ -352,17 +352,17 @@ public class Main { return c; } - /// CHECK-START: long Main.LongSubtraction() constant_folding_after_inlining (before) + /// CHECK-START: long Main.LongSubtraction() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const6:j\d+>> LongConstant 6 /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: <<Sub:j\d+>> Sub [<<Const6>>,<<Const2>>] /// CHECK-DAG: Return [<<Sub>>] - /// CHECK-START: long Main.LongSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongSubtraction() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const4:j\d+>> LongConstant 4 /// CHECK-DAG: Return [<<Const4>>] - /// CHECK-START: long Main.LongSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongSubtraction() constant_folding$after_inlining (after) /// CHECK-NOT: Sub public static long LongSubtraction() { @@ -373,17 +373,17 @@ public class Main { return c; } - /// CHECK-START: float Main.FloatSubtraction() constant_folding_after_inlining (before) + /// CHECK-START: float Main.FloatSubtraction() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const6:f\d+>> FloatConstant 6 /// CHECK-DAG: <<Const2:f\d+>> FloatConstant 2 /// CHECK-DAG: <<Sub:f\d+>> Sub [<<Const6>>,<<Const2>>] /// CHECK-DAG: Return [<<Sub>>] - /// CHECK-START: float Main.FloatSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatSubtraction() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const4:f\d+>> FloatConstant 4 /// CHECK-DAG: Return [<<Const4>>] - /// CHECK-START: float Main.FloatSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatSubtraction() constant_folding$after_inlining (after) /// CHECK-NOT: Sub public static float FloatSubtraction() { @@ -394,17 +394,17 @@ public class Main { return c; } - /// CHECK-START: double Main.DoubleSubtraction() constant_folding_after_inlining (before) + /// CHECK-START: double Main.DoubleSubtraction() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const6:d\d+>> DoubleConstant 6 /// CHECK-DAG: <<Const2:d\d+>> DoubleConstant 2 /// CHECK-DAG: <<Sub:d\d+>> Sub [<<Const6>>,<<Const2>>] /// CHECK-DAG: Return [<<Sub>>] - /// CHECK-START: double Main.DoubleSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleSubtraction() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const4:d\d+>> DoubleConstant 4 /// CHECK-DAG: Return [<<Const4>>] - /// CHECK-START: double Main.DoubleSubtraction() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleSubtraction() constant_folding$after_inlining (after) /// CHECK-NOT: Sub public static double DoubleSubtraction() { @@ -420,17 +420,17 @@ public class Main { * Exercise constant folding on multiplication. */ - /// CHECK-START: int Main.IntMultiplication() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntMultiplication() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<Mul:i\d+>> Mul [<<Const7>>,<<Const3>>] /// CHECK-DAG: Return [<<Mul>>] - /// CHECK-START: int Main.IntMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntMultiplication() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const21:i\d+>> IntConstant 21 /// CHECK-DAG: Return [<<Const21>>] - /// CHECK-START: int Main.IntMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntMultiplication() constant_folding$after_inlining (after) /// CHECK-NOT: Mul public static int IntMultiplication() { @@ -441,17 +441,17 @@ public class Main { return c; } - /// CHECK-START: long Main.LongMultiplication() constant_folding_after_inlining (before) + /// CHECK-START: long Main.LongMultiplication() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:j\d+>> LongConstant 7 /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 /// CHECK-DAG: <<Mul:j\d+>> Mul [<<Const7>>,<<Const3>>] /// CHECK-DAG: Return [<<Mul>>] - /// CHECK-START: long Main.LongMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongMultiplication() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const21:j\d+>> LongConstant 21 /// CHECK-DAG: Return [<<Const21>>] - /// CHECK-START: long Main.LongMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongMultiplication() constant_folding$after_inlining (after) /// CHECK-NOT: Mul public static long LongMultiplication() { @@ -462,17 +462,17 @@ public class Main { return c; } - /// CHECK-START: float Main.FloatMultiplication() constant_folding_after_inlining (before) + /// CHECK-START: float Main.FloatMultiplication() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:f\d+>> FloatConstant 7 /// CHECK-DAG: <<Const3:f\d+>> FloatConstant 3 /// CHECK-DAG: <<Mul:f\d+>> Mul [<<Const7>>,<<Const3>>] /// CHECK-DAG: Return [<<Mul>>] - /// CHECK-START: float Main.FloatMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatMultiplication() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const21:f\d+>> FloatConstant 21 /// CHECK-DAG: Return [<<Const21>>] - /// CHECK-START: float Main.FloatMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatMultiplication() constant_folding$after_inlining (after) /// CHECK-NOT: Mul public static float FloatMultiplication() { @@ -483,17 +483,17 @@ public class Main { return c; } - /// CHECK-START: double Main.DoubleMultiplication() constant_folding_after_inlining (before) + /// CHECK-START: double Main.DoubleMultiplication() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:d\d+>> DoubleConstant 7 /// CHECK-DAG: <<Const3:d\d+>> DoubleConstant 3 /// CHECK-DAG: <<Mul:d\d+>> Mul [<<Const7>>,<<Const3>>] /// CHECK-DAG: Return [<<Mul>>] - /// CHECK-START: double Main.DoubleMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleMultiplication() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const21:d\d+>> DoubleConstant 21 /// CHECK-DAG: Return [<<Const21>>] - /// CHECK-START: double Main.DoubleMultiplication() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleMultiplication() constant_folding$after_inlining (after) /// CHECK-NOT: Mul public static double DoubleMultiplication() { @@ -509,18 +509,18 @@ public class Main { * Exercise constant folding on division. */ - /// CHECK-START: int Main.IntDivision() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntDivision() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:i\d+>> IntConstant 8 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<Div0Chk:i\d+>> DivZeroCheck [<<Const3>>] /// CHECK-DAG: <<Div:i\d+>> Div [<<Const8>>,<<Div0Chk>>] /// CHECK-DAG: Return [<<Div>>] - /// CHECK-START: int Main.IntDivision() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntDivision() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: int Main.IntDivision() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntDivision() constant_folding$after_inlining (after) /// CHECK-NOT: DivZeroCheck /// CHECK-NOT: Div @@ -532,18 +532,18 @@ public class Main { return c; } - /// CHECK-START: long Main.LongDivision() constant_folding_after_inlining (before) + /// CHECK-START: long Main.LongDivision() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:j\d+>> LongConstant 8 /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 /// CHECK-DAG: <<Div0Chk:j\d+>> DivZeroCheck [<<Const3>>] /// CHECK-DAG: <<Div:j\d+>> Div [<<Const8>>,<<Div0Chk>>] /// CHECK-DAG: Return [<<Div>>] - /// CHECK-START: long Main.LongDivision() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongDivision() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: long Main.LongDivision() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongDivision() constant_folding$after_inlining (after) /// CHECK-NOT: DivZeroCheck /// CHECK-NOT: Div @@ -555,17 +555,17 @@ public class Main { return c; } - /// CHECK-START: float Main.FloatDivision() constant_folding_after_inlining (before) + /// CHECK-START: float Main.FloatDivision() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:f\d+>> FloatConstant 8 /// CHECK-DAG: <<Const2P5:f\d+>> FloatConstant 2.5 /// CHECK-DAG: <<Div:f\d+>> Div [<<Const8>>,<<Const2P5>>] /// CHECK-DAG: Return [<<Div>>] - /// CHECK-START: float Main.FloatDivision() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatDivision() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3P2:f\d+>> FloatConstant 3.2 /// CHECK-DAG: Return [<<Const3P2>>] - /// CHECK-START: float Main.FloatDivision() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatDivision() constant_folding$after_inlining (after) /// CHECK-NOT: Div public static float FloatDivision() { @@ -576,17 +576,17 @@ public class Main { return c; } - /// CHECK-START: double Main.DoubleDivision() constant_folding_after_inlining (before) + /// CHECK-START: double Main.DoubleDivision() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:d\d+>> DoubleConstant 8 /// CHECK-DAG: <<Const2P5:d\d+>> DoubleConstant 2.5 /// CHECK-DAG: <<Div:d\d+>> Div [<<Const8>>,<<Const2P5>>] /// CHECK-DAG: Return [<<Div>>] - /// CHECK-START: double Main.DoubleDivision() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleDivision() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const3P2:d\d+>> DoubleConstant 3.2 /// CHECK-DAG: Return [<<Const3P2>>] - /// CHECK-START: double Main.DoubleDivision() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleDivision() constant_folding$after_inlining (after) /// CHECK-NOT: Div public static double DoubleDivision() { @@ -602,18 +602,18 @@ public class Main { * Exercise constant folding on remainder. */ - /// CHECK-START: int Main.IntRemainder() constant_folding_after_inlining (before) + /// CHECK-START: int Main.IntRemainder() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:i\d+>> IntConstant 8 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<Div0Chk:i\d+>> DivZeroCheck [<<Const3>>] /// CHECK-DAG: <<Rem:i\d+>> Rem [<<Const8>>,<<Div0Chk>>] /// CHECK-DAG: Return [<<Rem>>] - /// CHECK-START: int Main.IntRemainder() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntRemainder() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: int Main.IntRemainder() constant_folding_after_inlining (after) + /// CHECK-START: int Main.IntRemainder() constant_folding$after_inlining (after) /// CHECK-NOT: DivZeroCheck /// CHECK-NOT: Rem @@ -625,18 +625,18 @@ public class Main { return c; } - /// CHECK-START: long Main.LongRemainder() constant_folding_after_inlining (before) + /// CHECK-START: long Main.LongRemainder() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:j\d+>> LongConstant 8 /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 /// CHECK-DAG: <<Div0Chk:j\d+>> DivZeroCheck [<<Const3>>] /// CHECK-DAG: <<Rem:j\d+>> Rem [<<Const8>>,<<Div0Chk>>] /// CHECK-DAG: Return [<<Rem>>] - /// CHECK-START: long Main.LongRemainder() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongRemainder() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: long Main.LongRemainder() constant_folding_after_inlining (after) + /// CHECK-START: long Main.LongRemainder() constant_folding$after_inlining (after) /// CHECK-NOT: DivZeroCheck /// CHECK-NOT: Rem @@ -648,17 +648,17 @@ public class Main { return c; } - /// CHECK-START: float Main.FloatRemainder() constant_folding_after_inlining (before) + /// CHECK-START: float Main.FloatRemainder() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:f\d+>> FloatConstant 8 /// CHECK-DAG: <<Const2P5:f\d+>> FloatConstant 2.5 /// CHECK-DAG: <<Rem:f\d+>> Rem [<<Const8>>,<<Const2P5>>] /// CHECK-DAG: Return [<<Rem>>] - /// CHECK-START: float Main.FloatRemainder() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatRemainder() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const0P5:f\d+>> FloatConstant 0.5 /// CHECK-DAG: Return [<<Const0P5>>] - /// CHECK-START: float Main.FloatRemainder() constant_folding_after_inlining (after) + /// CHECK-START: float Main.FloatRemainder() constant_folding$after_inlining (after) /// CHECK-NOT: Rem public static float FloatRemainder() { @@ -669,17 +669,17 @@ public class Main { return c; } - /// CHECK-START: double Main.DoubleRemainder() constant_folding_after_inlining (before) + /// CHECK-START: double Main.DoubleRemainder() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const8:d\d+>> DoubleConstant 8 /// CHECK-DAG: <<Const2P5:d\d+>> DoubleConstant 2.5 /// CHECK-DAG: <<Rem:d\d+>> Rem [<<Const8>>,<<Const2P5>>] /// CHECK-DAG: Return [<<Rem>>] - /// CHECK-START: double Main.DoubleRemainder() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleRemainder() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const0P5:d\d+>> DoubleConstant 0.5 /// CHECK-DAG: Return [<<Const0P5>>] - /// CHECK-START: double Main.DoubleRemainder() constant_folding_after_inlining (after) + /// CHECK-START: double Main.DoubleRemainder() constant_folding$after_inlining (after) /// CHECK-NOT: Rem public static double DoubleRemainder() { @@ -695,18 +695,18 @@ public class Main { * Exercise constant folding on left shift. */ - /// CHECK-START: int Main.ShlIntLong() constant_folding_after_inlining (before) + /// CHECK-START: int Main.ShlIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] /// CHECK-DAG: <<Shl:i\d+>> Shl [<<Const1>>,<<TypeConv>>] /// CHECK-DAG: Return [<<Shl>>] - /// CHECK-START: int Main.ShlIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ShlIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const4:i\d+>> IntConstant 4 /// CHECK-DAG: Return [<<Const4>>] - /// CHECK-START: int Main.ShlIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ShlIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: Shl public static int ShlIntLong() { @@ -715,17 +715,17 @@ public class Main { return lhs << rhs; } - /// CHECK-START: long Main.ShlLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.ShlLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Shl:j\d+>> Shl [<<Const3L>>,<<Const2>>] /// CHECK-DAG: Return [<<Shl>>] - /// CHECK-START: long Main.ShlLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ShlLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const12L:j\d+>> LongConstant 12 /// CHECK-DAG: Return [<<Const12L>>] - /// CHECK-START: long Main.ShlLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ShlLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: Shl public static long ShlLongInt() { @@ -739,18 +739,18 @@ public class Main { * Exercise constant folding on right shift. */ - /// CHECK-START: int Main.ShrIntLong() constant_folding_after_inlining (before) + /// CHECK-START: int Main.ShrIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] /// CHECK-DAG: <<Shr:i\d+>> Shr [<<Const7>>,<<TypeConv>>] /// CHECK-DAG: Return [<<Shr>>] - /// CHECK-START: int Main.ShrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ShrIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: Return [<<Const1>>] - /// CHECK-START: int Main.ShrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ShrIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: Shr public static int ShrIntLong() { @@ -759,17 +759,17 @@ public class Main { return lhs >> rhs; } - /// CHECK-START: long Main.ShrLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.ShrLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const9L:j\d+>> LongConstant 9 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Shr:j\d+>> Shr [<<Const9L>>,<<Const2>>] /// CHECK-DAG: Return [<<Shr>>] - /// CHECK-START: long Main.ShrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ShrLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 /// CHECK-DAG: Return [<<Const2L>>] - /// CHECK-START: long Main.ShrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ShrLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: Shr public static long ShrLongInt() { @@ -783,18 +783,18 @@ public class Main { * Exercise constant folding on unsigned right shift. */ - /// CHECK-START: int Main.UShrIntLong() constant_folding_after_inlining (before) + /// CHECK-START: int Main.UShrIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<ConstM7:i\d+>> IntConstant -7 /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] /// CHECK-DAG: <<UShr:i\d+>> UShr [<<ConstM7>>,<<TypeConv>>] /// CHECK-DAG: Return [<<UShr>>] - /// CHECK-START: int Main.UShrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.UShrIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<ConstRes:i\d+>> IntConstant 1073741822 /// CHECK-DAG: Return [<<ConstRes>>] - /// CHECK-START: int Main.UShrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: int Main.UShrIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: UShr public static int UShrIntLong() { @@ -803,17 +803,17 @@ public class Main { return lhs >>> rhs; } - /// CHECK-START: long Main.UShrLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.UShrLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<ConstM9L:j\d+>> LongConstant -9 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<UShr:j\d+>> UShr [<<ConstM9L>>,<<Const2>>] /// CHECK-DAG: Return [<<UShr>>] - /// CHECK-START: long Main.UShrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.UShrLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<ConstRes:j\d+>> LongConstant 4611686018427387901 /// CHECK-DAG: Return [<<ConstRes>>] - /// CHECK-START: long Main.UShrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.UShrLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: UShr public static long UShrLongInt() { @@ -827,18 +827,18 @@ public class Main { * Exercise constant folding on logical and. */ - /// CHECK-START: long Main.AndIntLong() constant_folding_after_inlining (before) + /// CHECK-START: long Main.AndIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] /// CHECK-DAG: <<And:j\d+>> And [<<TypeConv>>,<<Const3L>>] /// CHECK-DAG: Return [<<And>>] - /// CHECK-START: long Main.AndIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.AndIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: long Main.AndIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.AndIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: And public static long AndIntLong() { @@ -847,18 +847,18 @@ public class Main { return lhs & rhs; } - /// CHECK-START: long Main.AndLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.AndLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] /// CHECK-DAG: <<And:j\d+>> And [<<TypeConv>>,<<Const10L>>] /// CHECK-DAG: Return [<<And>>] - /// CHECK-START: long Main.AndLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.AndLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 /// CHECK-DAG: Return [<<Const2>>] - /// CHECK-START: long Main.AndLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.AndLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: And public static long AndLongInt() { @@ -872,18 +872,18 @@ public class Main { * Exercise constant folding on logical or. */ - /// CHECK-START: long Main.OrIntLong() constant_folding_after_inlining (before) + /// CHECK-START: long Main.OrIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] /// CHECK-DAG: <<Or:j\d+>> Or [<<TypeConv>>,<<Const3L>>] /// CHECK-DAG: Return [<<Or>>] - /// CHECK-START: long Main.OrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.OrIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const11:j\d+>> LongConstant 11 /// CHECK-DAG: Return [<<Const11>>] - /// CHECK-START: long Main.OrIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.OrIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: Or public static long OrIntLong() { @@ -892,18 +892,18 @@ public class Main { return lhs | rhs; } - /// CHECK-START: long Main.OrLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.OrLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] /// CHECK-DAG: <<Or:j\d+>> Or [<<TypeConv>>,<<Const10L>>] /// CHECK-DAG: Return [<<Or>>] - /// CHECK-START: long Main.OrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.OrLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const11:j\d+>> LongConstant 11 /// CHECK-DAG: Return [<<Const11>>] - /// CHECK-START: long Main.OrLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.OrLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: Or public static long OrLongInt() { @@ -917,18 +917,18 @@ public class Main { * Exercise constant folding on logical exclusive or. */ - /// CHECK-START: long Main.XorIntLong() constant_folding_after_inlining (before) + /// CHECK-START: long Main.XorIntLong() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] /// CHECK-DAG: <<Xor:j\d+>> Xor [<<TypeConv>>,<<Const3L>>] /// CHECK-DAG: Return [<<Xor>>] - /// CHECK-START: long Main.XorIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.XorIntLong() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const9:j\d+>> LongConstant 9 /// CHECK-DAG: Return [<<Const9>>] - /// CHECK-START: long Main.XorIntLong() constant_folding_after_inlining (after) + /// CHECK-START: long Main.XorIntLong() constant_folding$after_inlining (after) /// CHECK-NOT: Xor public static long XorIntLong() { @@ -937,18 +937,18 @@ public class Main { return lhs ^ rhs; } - /// CHECK-START: long Main.XorLongInt() constant_folding_after_inlining (before) + /// CHECK-START: long Main.XorLongInt() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] /// CHECK-DAG: <<Xor:j\d+>> Xor [<<TypeConv>>,<<Const10L>>] /// CHECK-DAG: Return [<<Xor>>] - /// CHECK-START: long Main.XorLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.XorLongInt() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const9:j\d+>> LongConstant 9 /// CHECK-DAG: Return [<<Const9>>] - /// CHECK-START: long Main.XorLongInt() constant_folding_after_inlining (after) + /// CHECK-START: long Main.XorLongInt() constant_folding$after_inlining (after) /// CHECK-NOT: Xor public static long XorLongInt() { @@ -962,17 +962,17 @@ public class Main { * Exercise constant folding on constant (static) condition. */ - /// CHECK-START: int Main.StaticCondition() constant_folding_after_inlining (before) + /// CHECK-START: int Main.StaticCondition() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Cond:z\d+>> GreaterThanOrEqual [<<Const7>>,<<Const2>>] /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Cond>>] - /// CHECK-START: int Main.StaticCondition() constant_folding_after_inlining (after) + /// CHECK-START: int Main.StaticCondition() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Const1>>] - /// CHECK-START: int Main.StaticCondition() constant_folding_after_inlining (after) + /// CHECK-START: int Main.StaticCondition() constant_folding$after_inlining (after) /// CHECK-NOT: GreaterThanOrEqual public static int StaticCondition() { @@ -991,16 +991,16 @@ public class Main { * Exercise constant folding on constant (static) condition for null references. */ - /// CHECK-START: int Main.StaticConditionNulls() constant_folding_after_inlining (before) + /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (before) /// CHECK-DAG: <<Null:l\d+>> NullConstant /// CHECK-DAG: <<Cond:z\d+>> NotEqual [<<Null>>,<<Null>>] /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Cond>>] - /// CHECK-START: int Main.StaticConditionNulls() constant_folding_after_inlining (after) + /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Const0>>] - /// CHECK-START: int Main.StaticConditionNulls() constant_folding_after_inlining (after) + /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (after) /// CHECK-NOT: NotEqual private static Object getNull() { @@ -1023,7 +1023,7 @@ public class Main { * (forward) post-order traversal of the the dominator tree. */ - /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding_after_inlining (before) + /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding$after_inlining (before) /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 /// CHECK-DAG: <<Const5:i\d+>> IntConstant 5 @@ -1032,14 +1032,14 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Select [<<Sub>>,<<Add>>,<<Cond>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding_after_inlining (after) + /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding$after_inlining (after) /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 /// CHECK-DAG: <<Phi:i\d+>> Select [<<Const3>>,<<Const7>>,<<Cond>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding_after_inlining (after) + /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding$after_inlining (after) /// CHECK-NOT: Add /// CHECK-NOT: Sub @@ -1325,16 +1325,16 @@ public class Main { * Exercise constant folding on type conversions. */ - /// CHECK-START: int Main.ReturnInt33() constant_folding_after_inlining (before) + /// CHECK-START: int Main.ReturnInt33() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const33:j\d+>> LongConstant 33 /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<Const33>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: int Main.ReturnInt33() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnInt33() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 /// CHECK-DAG: Return [<<Const33>>] - /// CHECK-START: int Main.ReturnInt33() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnInt33() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static int ReturnInt33() { @@ -1342,16 +1342,16 @@ public class Main { return (int) imm; } - /// CHECK-START: int Main.ReturnIntMax() constant_folding_after_inlining (before) + /// CHECK-START: int Main.ReturnIntMax() constant_folding$after_inlining (before) /// CHECK-DAG: <<ConstMax:f\d+>> FloatConstant 1e+34 /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<ConstMax>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: int Main.ReturnIntMax() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnIntMax() constant_folding$after_inlining (after) /// CHECK-DAG: <<ConstMax:i\d+>> IntConstant 2147483647 /// CHECK-DAG: Return [<<ConstMax>>] - /// CHECK-START: int Main.ReturnIntMax() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnIntMax() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static int ReturnIntMax() { @@ -1359,16 +1359,16 @@ public class Main { return (int) imm; } - /// CHECK-START: int Main.ReturnInt0() constant_folding_after_inlining (before) + /// CHECK-START: int Main.ReturnInt0() constant_folding$after_inlining (before) /// CHECK-DAG: <<ConstNaN:d\d+>> DoubleConstant nan /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<ConstNaN>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: int Main.ReturnInt0() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnInt0() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: Return [<<Const0>>] - /// CHECK-START: int Main.ReturnInt0() constant_folding_after_inlining (after) + /// CHECK-START: int Main.ReturnInt0() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static int ReturnInt0() { @@ -1376,16 +1376,16 @@ public class Main { return (int) imm; } - /// CHECK-START: long Main.ReturnLong33() constant_folding_after_inlining (before) + /// CHECK-START: long Main.ReturnLong33() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<Const33>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: long Main.ReturnLong33() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong33() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const33:j\d+>> LongConstant 33 /// CHECK-DAG: Return [<<Const33>>] - /// CHECK-START: long Main.ReturnLong33() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong33() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static long ReturnLong33() { @@ -1393,16 +1393,16 @@ public class Main { return (long) imm; } - /// CHECK-START: long Main.ReturnLong34() constant_folding_after_inlining (before) + /// CHECK-START: long Main.ReturnLong34() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const34:f\d+>> FloatConstant 34 /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<Const34>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: long Main.ReturnLong34() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong34() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 /// CHECK-DAG: Return [<<Const34>>] - /// CHECK-START: long Main.ReturnLong34() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong34() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static long ReturnLong34() { @@ -1410,16 +1410,16 @@ public class Main { return (long) imm; } - /// CHECK-START: long Main.ReturnLong0() constant_folding_after_inlining (before) + /// CHECK-START: long Main.ReturnLong0() constant_folding$after_inlining (before) /// CHECK-DAG: <<ConstNaN:d\d+>> DoubleConstant nan /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<ConstNaN>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: long Main.ReturnLong0() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong0() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 /// CHECK-DAG: Return [<<Const0>>] - /// CHECK-START: long Main.ReturnLong0() constant_folding_after_inlining (after) + /// CHECK-START: long Main.ReturnLong0() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static long ReturnLong0() { @@ -1427,16 +1427,16 @@ public class Main { return (long) imm; } - /// CHECK-START: float Main.ReturnFloat33() constant_folding_after_inlining (before) + /// CHECK-START: float Main.ReturnFloat33() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const33>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: float Main.ReturnFloat33() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat33() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const33:f\d+>> FloatConstant 33 /// CHECK-DAG: Return [<<Const33>>] - /// CHECK-START: float Main.ReturnFloat33() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat33() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static float ReturnFloat33() { @@ -1444,16 +1444,16 @@ public class Main { return (float) imm; } - /// CHECK-START: float Main.ReturnFloat34() constant_folding_after_inlining (before) + /// CHECK-START: float Main.ReturnFloat34() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const34>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: float Main.ReturnFloat34() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat34() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const34:f\d+>> FloatConstant 34 /// CHECK-DAG: Return [<<Const34>>] - /// CHECK-START: float Main.ReturnFloat34() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat34() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static float ReturnFloat34() { @@ -1461,16 +1461,16 @@ public class Main { return (float) imm; } - /// CHECK-START: float Main.ReturnFloat99P25() constant_folding_after_inlining (before) + /// CHECK-START: float Main.ReturnFloat99P25() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const:d\d+>> DoubleConstant 99.25 /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: float Main.ReturnFloat99P25() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat99P25() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const:f\d+>> FloatConstant 99.25 /// CHECK-DAG: Return [<<Const>>] - /// CHECK-START: float Main.ReturnFloat99P25() constant_folding_after_inlining (after) + /// CHECK-START: float Main.ReturnFloat99P25() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static float ReturnFloat99P25() { @@ -1478,12 +1478,12 @@ public class Main { return (float) imm; } - /// CHECK-START: double Main.ReturnDouble33() constant_folding_after_inlining (before) + /// CHECK-START: double Main.ReturnDouble33() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const33>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: double Main.ReturnDouble33() constant_folding_after_inlining (after) + /// CHECK-START: double Main.ReturnDouble33() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const33:d\d+>> DoubleConstant 33 /// CHECK-DAG: Return [<<Const33>>] @@ -1492,16 +1492,16 @@ public class Main { return (double) imm; } - /// CHECK-START: double Main.ReturnDouble34() constant_folding_after_inlining (before) + /// CHECK-START: double Main.ReturnDouble34() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const34>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: double Main.ReturnDouble34() constant_folding_after_inlining (after) + /// CHECK-START: double Main.ReturnDouble34() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const34:d\d+>> DoubleConstant 34 /// CHECK-DAG: Return [<<Const34>>] - /// CHECK-START: double Main.ReturnDouble34() constant_folding_after_inlining (after) + /// CHECK-START: double Main.ReturnDouble34() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static double ReturnDouble34() { @@ -1509,16 +1509,16 @@ public class Main { return (double) imm; } - /// CHECK-START: double Main.ReturnDouble99P25() constant_folding_after_inlining (before) + /// CHECK-START: double Main.ReturnDouble99P25() constant_folding$after_inlining (before) /// CHECK-DAG: <<Const:f\d+>> FloatConstant 99.25 /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const>>] /// CHECK-DAG: Return [<<Convert>>] - /// CHECK-START: double Main.ReturnDouble99P25() constant_folding_after_inlining (after) + /// CHECK-START: double Main.ReturnDouble99P25() constant_folding$after_inlining (after) /// CHECK-DAG: <<Const:d\d+>> DoubleConstant 99.25 /// CHECK-DAG: Return [<<Const>>] - /// CHECK-START: double Main.ReturnDouble99P25() constant_folding_after_inlining (after) + /// CHECK-START: double Main.ReturnDouble99P25() constant_folding$after_inlining (after) /// CHECK-NOT: TypeConversion public static double ReturnDouble99P25() { diff --git a/test/449-checker-bce/src/Main.java b/test/449-checker-bce/src/Main.java index c125e337cb..3a56c3b7d5 100644 --- a/test/449-checker-bce/src/Main.java +++ b/test/449-checker-bce/src/Main.java @@ -1380,7 +1380,7 @@ public class Main { /// CHECK-NOT: BoundsCheck /// CHECK: ArrayGet - /// CHECK-START: void Main.foo9(int[], boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: void Main.foo9(int[], boolean) instruction_simplifier$after_bce (after) // Simplification removes the redundant check /// CHECK: Deoptimize /// CHECK: Deoptimize diff --git a/test/450-checker-types/src/Main.java b/test/450-checker-types/src/Main.java index 36f14d8779..6e453af616 100644 --- a/test/450-checker-types/src/Main.java +++ b/test/450-checker-types/src/Main.java @@ -103,7 +103,7 @@ public class Main { /// CHECK-NOT: CheckCast public String testClassRemove() { Object s = SubclassA.class; - return ((Class)s).getName(); + return ((Class<?>)s).getName(); } /// CHECK-START: java.lang.String Main.testClassKeep() instruction_simplifier (before) @@ -214,11 +214,11 @@ public class Main { /// CHECK-DAG: <<IOf:z\d+>> InstanceOf /// CHECK-DAG: If [<<IOf>>] - /// CHECK-START: void Main.testInstanceOf_Inlined(java.lang.Object) instruction_simplifier_after_bce (before) + /// CHECK-START: void Main.testInstanceOf_Inlined(java.lang.Object) instruction_simplifier$after_bce (before) /// CHECK: CheckCast /// CHECK-NOT: CheckCast - /// CHECK-START: void Main.testInstanceOf_Inlined(java.lang.Object) instruction_simplifier_after_bce (after) + /// CHECK-START: void Main.testInstanceOf_Inlined(java.lang.Object) instruction_simplifier$after_bce (after) /// CHECK-NOT: CheckCast public void testInstanceOf_Inlined(Object o) { if (!$inline$InstanceofSubclassC(o)) { diff --git a/test/458-checker-instruction-simplification/src/Main.java b/test/458-checker-instruction-simplification/src/Main.java index 040479e8c5..5b1473523b 100644 --- a/test/458-checker-instruction-simplification/src/Main.java +++ b/test/458-checker-instruction-simplification/src/Main.java @@ -876,7 +876,7 @@ public class Main { /// CHECK-NOT: Neg /// CHECK-NOT: Add - /// CHECK-START: int Main.$noinline$NegNeg2(int) constant_folding_after_inlining (after) + /// CHECK-START: int Main.$noinline$NegNeg2(int) constant_folding$after_inlining (after) /// CHECK: <<Const0:i\d+>> IntConstant 0 /// CHECK-NOT: Neg /// CHECK-NOT: Add @@ -1126,7 +1126,7 @@ public class Main { return res; } - /// CHECK-START: boolean Main.$noinline$EqualBoolVsIntConst(boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$noinline$EqualBoolVsIntConst(boolean) instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -1136,7 +1136,7 @@ public class Main { /// CHECK-DAG: <<NotCond:i\d+>> Select [<<Const1>>,<<Const0>>,<<Cond>>] /// CHECK-DAG: Return [<<NotCond>>] - /// CHECK-START: boolean Main.$noinline$EqualBoolVsIntConst(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$noinline$EqualBoolVsIntConst(boolean) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<True:i\d+>> IntConstant 1 /// CHECK-DAG: Return [<<True>>] @@ -1151,7 +1151,7 @@ public class Main { return arg; } - /// CHECK-START: boolean Main.$noinline$NotEqualBoolVsIntConst(boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$noinline$NotEqualBoolVsIntConst(boolean) instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -1161,7 +1161,7 @@ public class Main { /// CHECK-DAG: <<NotCond:i\d+>> Select [<<Const1>>,<<Const0>>,<<Cond>>] /// CHECK-DAG: Return [<<NotCond>>] - /// CHECK-START: boolean Main.$noinline$NotEqualBoolVsIntConst(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$noinline$NotEqualBoolVsIntConst(boolean) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<False:i\d+>> IntConstant 0 /// CHECK-DAG: Return [<<False>>] @@ -1178,7 +1178,7 @@ public class Main { * remove the second. */ - /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -1186,7 +1186,7 @@ public class Main { /// CHECK-DAG: <<NotNotArg:i\d+>> Select [<<Const1>>,<<Const0>>,<<NotArg>>] /// CHECK-DAG: Return [<<NotNotArg>>] - /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$noinline$NotNotBool(boolean) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -1317,7 +1317,7 @@ public class Main { return arg * 31; } - /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() instruction_simplifier_after_bce (before) + /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1327,7 +1327,7 @@ public class Main { /// CHECK-DAG: <<Select:i\d+>> Select [<<Const13>>,<<Const54>>,<<NE>>] /// CHECK-DAG: Return [<<Select>>] - /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() instruction_simplifier$after_bce (after) /// CHECK-DAG: <<doThrow:z\d+>> StaticFieldGet /// CHECK-DAG: <<Field:z\d+>> StaticFieldGet /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 @@ -1340,7 +1340,7 @@ public class Main { return (booleanField == $inline$true()) ? 13 : 54; } - /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() instruction_simplifier_after_bce (before) + /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1350,7 +1350,7 @@ public class Main { /// CHECK-DAG: <<Select:i\d+>> Select [<<Const13>>,<<Const54>>,<<NE>>] /// CHECK-DAG: Return [<<Select>>] - /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() instruction_simplifier$after_bce (after) /// CHECK-DAG: <<doThrow:z\d+>> StaticFieldGet /// CHECK-DAG: <<Field:z\d+>> StaticFieldGet /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 @@ -1363,7 +1363,7 @@ public class Main { return (booleanField != $inline$false()) ? 13 : 54; } - /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) instruction_simplifier_after_bce (before) + /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -1376,7 +1376,7 @@ public class Main { /// CHECK-DAG: <<Result:i\d+>> Select [<<Const13>>,<<Const54>>,<<NE>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -1392,7 +1392,7 @@ public class Main { return ((i > 42) == $inline$true()) ? 13 : 54; } - /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) instruction_simplifier_after_bce (before) + /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) instruction_simplifier$after_bce (before) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -1405,7 +1405,7 @@ public class Main { /// CHECK-DAG: <<Result:i\d+>> Select [<<Const13>>,<<Const54>>,<<NE>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -1426,7 +1426,7 @@ public class Main { /// CHECK-START: int Main.$noinline$floatConditionNotEqualOne(float) builder (after) /// CHECK: LessThanOrEqual - /// CHECK-START: int Main.$noinline$floatConditionNotEqualOne(float) instruction_simplifier_before_codegen (after) + /// CHECK-START: int Main.$noinline$floatConditionNotEqualOne(float) instruction_simplifier$before_codegen (after) /// CHECK-DAG: <<Arg:f\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1443,7 +1443,7 @@ public class Main { /// CHECK-START: int Main.$noinline$doubleConditionEqualZero(double) builder (after) /// CHECK: LessThanOrEqual - /// CHECK-START: int Main.$noinline$doubleConditionEqualZero(double) instruction_simplifier_before_codegen (after) + /// CHECK-START: int Main.$noinline$doubleConditionEqualZero(double) instruction_simplifier$before_codegen (after) /// CHECK-DAG: <<Arg:d\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1859,7 +1859,7 @@ public class Main { if (doThrow) { throw new Error(); } try { Class<?> c = Class.forName("SmaliTests"); - Method m = c.getMethod(name, new Class[] { boolean.class }); + Method m = c.getMethod(name, boolean.class); return (Integer) m.invoke(null, input); } catch (Exception ex) { throw new Error(ex); diff --git a/test/462-checker-inlining-across-dex-files/src-multidex/OtherDex.java b/test/462-checker-inlining-across-dex-files/src-multidex/OtherDex.java index 171ade875c..2056e2f2aa 100644 --- a/test/462-checker-inlining-across-dex-files/src-multidex/OtherDex.java +++ b/test/462-checker-inlining-across-dex-files/src-multidex/OtherDex.java @@ -38,25 +38,25 @@ public class OtherDex { return "OtherDex"; } - public static Class returnOtherDexClass() { + public static Class<?> returnOtherDexClass() { return OtherDex.class; } - public static Class returnMainClass() { + public static Class<?> returnMainClass() { return Main.class; } - private static Class returnOtherDexClass2() { + private static Class<?> returnOtherDexClass2() { return OtherDex.class; } - public static Class returnOtherDexClassStaticCall() { + public static Class<?> returnOtherDexClassStaticCall() { // Do not call returnOtherDexClass, as it may have been flagged // as non-inlineable. return returnOtherDexClass2(); } - public static Class returnOtherDexCallingMain() { + public static Class<?> returnOtherDexCallingMain() { return Main.getOtherClass(); } diff --git a/test/462-checker-inlining-across-dex-files/src/Main.java b/test/462-checker-inlining-across-dex-files/src/Main.java index 1fe49a8046..c2bb479468 100644 --- a/test/462-checker-inlining-across-dex-files/src/Main.java +++ b/test/462-checker-inlining-across-dex-files/src/Main.java @@ -106,7 +106,7 @@ public class Main { /// CHECK-DAG: <<Invoke:l\d+>> InvokeStaticOrDirect /// CHECK-DAG: Return [<<Invoke>>] - public static Class dontInlineOtherDexClass() { + public static Class<?> dontInlineOtherDexClass() { return OtherDex.returnOtherDexClass(); } @@ -123,7 +123,7 @@ public class Main { // Note: There are two LoadClass instructions. We obtain the correct // instruction id by matching the Return's input list first. - public static Class inlineMainClass() { + public static Class<?> inlineMainClass() { return OtherDex.returnMainClass(); } @@ -135,7 +135,7 @@ public class Main { /// CHECK-DAG: <<Invoke:l\d+>> InvokeStaticOrDirect /// CHECK-DAG: Return [<<Invoke>>] - public static Class dontInlineOtherDexClassStaticCall() { + public static Class<?> dontInlineOtherDexClassStaticCall() { return OtherDex.returnOtherDexClassStaticCall(); } @@ -152,11 +152,11 @@ public class Main { // Note: There are two LoadClass instructions. We obtain the correct // instruction id by matching the Return's input list first. - public static Class inlineOtherDexCallingMain() { + public static Class<?> inlineOtherDexCallingMain() { return OtherDex.returnOtherDexCallingMain(); } - public static Class getOtherClass() { + public static Class<?> getOtherClass() { return Main.class; } diff --git a/test/471-uninitialized-locals/src/Main.java b/test/471-uninitialized-locals/src/Main.java index a5b1c48339..1ac749e142 100644 --- a/test/471-uninitialized-locals/src/Main.java +++ b/test/471-uninitialized-locals/src/Main.java @@ -24,8 +24,8 @@ public class Main { public static void main(String args[]) throws Exception { try { Class<?> c = Class.forName("Test"); - Method m = c.getMethod("ThrowException", (Class[]) null); - m.invoke(null, (Object[]) null); + Method m = c.getMethod("ThrowException"); + m.invoke(null); } catch (VerifyError e) { // Compilation should go fine but we expect the runtime verification to fail. return; diff --git a/test/472-unreachable-if-regression/src/Main.java b/test/472-unreachable-if-regression/src/Main.java index c9f9511834..d426df1d0f 100644 --- a/test/472-unreachable-if-regression/src/Main.java +++ b/test/472-unreachable-if-regression/src/Main.java @@ -25,12 +25,12 @@ public class Main { System.out.println("Test started."); Class<?> c = Class.forName("Test"); - Method unreachableIf = c.getMethod("UnreachableIf", (Class[]) null); - unreachableIf.invoke(null, (Object[]) null); + Method unreachableIf = c.getMethod("UnreachableIf"); + unreachableIf.invoke(null); System.out.println("Successfully called UnreachableIf()."); - Method unreachablePackedSwitch = c.getMethod("UnreachablePackedSwitch", (Class[]) null); - unreachablePackedSwitch.invoke(null, (Object[]) null); + Method unreachablePackedSwitch = c.getMethod("UnreachablePackedSwitch"); + unreachablePackedSwitch.invoke(null); System.out.println("Successfully called UnreachablePackedSwitch()."); } diff --git a/test/480-checker-dead-blocks/src/Main.java b/test/480-checker-dead-blocks/src/Main.java index e5171f045f..141054d23a 100644 --- a/test/480-checker-dead-blocks/src/Main.java +++ b/test/480-checker-dead-blocks/src/Main.java @@ -30,7 +30,7 @@ public class Main { return false; } - /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination$final (before) /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue /// CHECK-DAG: <<ArgY:i\d+>> ParameterValue /// CHECK-DAG: If @@ -39,13 +39,13 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Add>>,<<Sub>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination$final (after) /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue /// CHECK-DAG: <<ArgY:i\d+>> ParameterValue /// CHECK-DAG: <<Add:i\d+>> Add [<<ArgX>>,<<ArgY>>] /// CHECK-DAG: Return [<<Add>>] - /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testTrueBranch(int, int) dead_code_elimination$final (after) /// CHECK-NOT: If /// CHECK-NOT: Sub /// CHECK-NOT: Phi @@ -62,7 +62,7 @@ public class Main { return z; } - /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination$final (before) /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue /// CHECK-DAG: <<ArgY:i\d+>> ParameterValue /// CHECK-DAG: If @@ -71,13 +71,13 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Add>>,<<Sub>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination$final (after) /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue /// CHECK-DAG: <<ArgY:i\d+>> ParameterValue /// CHECK-DAG: <<Sub:i\d+>> Sub [<<ArgX>>,<<ArgY>>] /// CHECK-DAG: Return [<<Sub>>] - /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testFalseBranch(int, int) dead_code_elimination$final (after) /// CHECK-NOT: If /// CHECK-NOT: Add /// CHECK-NOT: Phi @@ -94,10 +94,10 @@ public class Main { return z; } - /// CHECK-START: int Main.testRemoveLoop(int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testRemoveLoop(int) dead_code_elimination$final (before) /// CHECK: Mul - /// CHECK-START: int Main.testRemoveLoop(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testRemoveLoop(int) dead_code_elimination$final (after) /// CHECK-NOT: Mul public static int testRemoveLoop(int x) { @@ -109,11 +109,11 @@ public class Main { return x; } - /// CHECK-START: int Main.testInfiniteLoop(int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testInfiniteLoop(int) dead_code_elimination$final (before) /// CHECK-DAG: Return /// CHECK-DAG: Exit - /// CHECK-START: int Main.testInfiniteLoop(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testInfiniteLoop(int) dead_code_elimination$final (after) /// CHECK-NOT: Return /// CHECK-NOT: Exit @@ -124,15 +124,15 @@ public class Main { return x; } - /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination$final (before) /// CHECK-DAG: If /// CHECK-DAG: Add - /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination$final (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] - /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testDeadLoop(int) dead_code_elimination$final (after) /// CHECK-NOT: If /// CHECK-NOT: Add @@ -143,16 +143,16 @@ public class Main { return x; } - /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination$final (before) /// CHECK-DAG: If /// CHECK-DAG: If /// CHECK-DAG: Add - /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination$final (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] - /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testUpdateLoopInformation(int) dead_code_elimination$final (after) /// CHECK-NOT: If /// CHECK-NOT: Add @@ -165,13 +165,13 @@ public class Main { return x; } - /// CHECK-START: int Main.testRemoveSuspendCheck(int, int) dead_code_elimination_final (before) + /// CHECK-START: int Main.testRemoveSuspendCheck(int, int) dead_code_elimination$final (before) /// CHECK: SuspendCheck /// CHECK: SuspendCheck /// CHECK: SuspendCheck /// CHECK-NOT: SuspendCheck - /// CHECK-START: int Main.testRemoveSuspendCheck(int, int) dead_code_elimination_final (after) + /// CHECK-START: int Main.testRemoveSuspendCheck(int, int) dead_code_elimination$final (after) /// CHECK: SuspendCheck /// CHECK: SuspendCheck /// CHECK-NOT: SuspendCheck diff --git a/test/485-checker-dce-loop-update/smali/TestCase.smali b/test/485-checker-dce-loop-update/smali/TestCase.smali index 056f22c71c..e3617c7477 100644 --- a/test/485-checker-dce-loop-update/smali/TestCase.smali +++ b/test/485-checker-dce-loop-update/smali/TestCase.smali @@ -23,7 +23,7 @@ .end method -## CHECK-START: int TestCase.testSingleExit(int, boolean) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testSingleExit(int, boolean) dead_code_elimination$final (before) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<Cst1:i\d+>> IntConstant 1 @@ -36,7 +36,7 @@ ## CHECK-DAG: <<Add7>> Add [<<PhiX>>,<<Cst7>>] loop:<<HeaderY>> ## CHECK-DAG: Return [<<PhiX>>] loop:none -## CHECK-START: int TestCase.testSingleExit(int, boolean) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testSingleExit(int, boolean) dead_code_elimination$final (after) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<Cst7:i\d+>> IntConstant 7 @@ -73,7 +73,7 @@ .end method -## CHECK-START: int TestCase.testMultipleExits(int, boolean, boolean) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testMultipleExits(int, boolean, boolean) dead_code_elimination$final (before) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue @@ -88,7 +88,7 @@ ## CHECK-DAG: <<Add7>> Add [<<PhiX>>,<<Cst7>>] loop:<<HeaderY>> ## CHECK-DAG: Return [<<PhiX>>] loop:none -## CHECK-START: int TestCase.testMultipleExits(int, boolean, boolean) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testMultipleExits(int, boolean, boolean) dead_code_elimination$final (after) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue @@ -129,7 +129,7 @@ .end method -## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) dead_code_elimination$final (before) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue @@ -146,7 +146,7 @@ ## CHECK-DAG: <<Add7>> Add [<<PhiX>>,<<Cst7>>] loop:<<HeaderY>> ## CHECK-DAG: Return [<<SelX>>] loop:none -## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) dead_code_elimination$final (after) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue @@ -194,7 +194,7 @@ .end method -## CHECK-START: int TestCase.testInnerLoop(int, boolean, boolean) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testInnerLoop(int, boolean, boolean) dead_code_elimination$final (before) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue @@ -217,7 +217,7 @@ ## CHECK-DAG: <<Add7>> Add [<<PhiX>>,<<Cst7>>] loop:<<HeaderY>> ## CHECK-DAG: Return [<<PhiX>>] loop:none -## CHECK-START: int TestCase.testInnerLoop(int, boolean, boolean) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testInnerLoop(int, boolean, boolean) dead_code_elimination$final (after) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue diff --git a/test/485-checker-dce-switch/src/Main.java b/test/485-checker-dce-switch/src/Main.java index 019d876ec8..7d5fd4fd53 100644 --- a/test/485-checker-dce-switch/src/Main.java +++ b/test/485-checker-dce-switch/src/Main.java @@ -20,14 +20,14 @@ public class Main { return 5; } - /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination_final (before) + /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination$final (before) /// CHECK-DAG: PackedSwitch - /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination$final (after) /// CHECK-DAG: <<Const100:i\d+>> IntConstant 100 /// CHECK-DAG: Return [<<Const100>>] - /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination_final (after) + /// CHECK-START: int Main.wholeSwitchDead(int) dead_code_elimination$final (after) /// CHECK-NOT: PackedSwitch public static int wholeSwitchDead(int j) { @@ -60,14 +60,14 @@ public class Main { return l; } - /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination_final (before) + /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination$final (before) /// CHECK-DAG: PackedSwitch - /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination$final (after) /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 /// CHECK-DAG: Return [<<Const7>>] - /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_InRange() dead_code_elimination$final (after) /// CHECK-NOT: PackedSwitch public static int constantSwitch_InRange() { @@ -96,14 +96,14 @@ public class Main { return i; } - /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination_final (before) + /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination$final (before) /// CHECK-DAG: PackedSwitch - /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination$final (after) /// CHECK-DAG: <<Const15:i\d+>> IntConstant 15 /// CHECK-DAG: Return [<<Const15>>] - /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_AboveRange() dead_code_elimination$final (after) /// CHECK-NOT: PackedSwitch public static int constantSwitch_AboveRange() { @@ -132,14 +132,14 @@ public class Main { return i; } - /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination_final (before) + /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination$final (before) /// CHECK-DAG: PackedSwitch - /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination$final (after) /// CHECK-DAG: <<ConstM5:i\d+>> IntConstant -5 /// CHECK-DAG: Return [<<ConstM5>>] - /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination_final (after) + /// CHECK-START: int Main.constantSwitch_BelowRange() dead_code_elimination$final (after) /// CHECK-NOT: PackedSwitch public static int constantSwitch_BelowRange() { diff --git a/test/489-current-method-regression/src/Main.java b/test/489-current-method-regression/src/Main.java index 7d102f5490..285c41d723 100644 --- a/test/489-current-method-regression/src/Main.java +++ b/test/489-current-method-regression/src/Main.java @@ -23,7 +23,7 @@ public class Main { if (a == 42) { // The class loading will be seen as dead code by // the optimizer. - Class c = Main.class; + Class<?> c = Main.class; } return new Main().bar(); } diff --git a/test/496-checker-inlining-and-class-loader/src/Main.java b/test/496-checker-inlining-and-class-loader/src/Main.java index 78e8a40399..15d4dc07bc 100644 --- a/test/496-checker-inlining-and-class-loader/src/Main.java +++ b/test/496-checker-inlining-and-class-loader/src/Main.java @@ -69,7 +69,7 @@ class MyClassLoader extends ClassLoader { "loadClassBinaryName", String.class, ClassLoader.class, List.class); if (dexFile != null) { - Class clazz = (Class)method.invoke(dexFile, className, this, null); + Class<?> clazz = (Class<?>)method.invoke(dexFile, className, this, null); if (clazz != null) { return clazz; } @@ -124,7 +124,7 @@ class LoadedByMyClassLoader { public class Main { public static void main(String[] args) throws Exception { MyClassLoader o = new MyClassLoader(); - Class foo = o.loadClass("LoadedByMyClassLoader"); + Class<?> foo = o.loadClass("LoadedByMyClassLoader"); Method m = foo.getDeclaredMethod("bar"); m.invoke(null); } diff --git a/test/497-inlining-and-class-loader/src/Main.java b/test/497-inlining-and-class-loader/src/Main.java index 832b1f08ee..1e27e77786 100644 --- a/test/497-inlining-and-class-loader/src/Main.java +++ b/test/497-inlining-and-class-loader/src/Main.java @@ -66,7 +66,7 @@ class MyClassLoader extends ClassLoader { "loadClassBinaryName", String.class, ClassLoader.class, List.class); if (dex != null) { - Class clazz = (Class)method.invoke(dex, className, this, null); + Class<?> clazz = (Class<?>)method.invoke(dex, className, this, null); if (clazz != null) { return clazz; } @@ -92,7 +92,7 @@ class Main { MyClassLoader o = new MyClassLoader(); MyClassLoader.level1ClassLoader = new MyClassLoader(); - Class foo = o.loadClass("LoadedByMyClassLoader"); + Class<?> foo = o.loadClass("LoadedByMyClassLoader"); Method m = foo.getDeclaredMethod("bar"); try { m.invoke(null); diff --git a/test/501-regression-packed-switch/src/Main.java b/test/501-regression-packed-switch/src/Main.java index 12bc1a8138..74c081a2be 100644 --- a/test/501-regression-packed-switch/src/Main.java +++ b/test/501-regression-packed-switch/src/Main.java @@ -24,12 +24,12 @@ public class Main { public static void main(String args[]) throws Exception { Class<?> c = Class.forName("Test"); - Method m = c.getMethod("EmptyPackedSwitch", new Class[] { int.class }); + Method m = c.getMethod("EmptyPackedSwitch", int.class); Integer result = (Integer) m.invoke(null, new Integer(42)); if (result != 5) { throw new Error("Expected 5, got " + result); } - m = c.getMethod("PackedSwitchAfterData", new Class[] { int.class }); + m = c.getMethod("PackedSwitchAfterData", int.class); result = (Integer) m.invoke(null, new Integer(0)); if (result != 1) { throw new Error("Expected 1, got " + result); diff --git a/test/504-regression-baseline-entry/src/Main.java b/test/504-regression-baseline-entry/src/Main.java index 2c9df28342..284cbdcc19 100644 --- a/test/504-regression-baseline-entry/src/Main.java +++ b/test/504-regression-baseline-entry/src/Main.java @@ -24,7 +24,7 @@ public class Main { public static void main(String args[]) throws Exception { Class<?> c = Class.forName("Test"); - Method m = c.getMethod("SingleGotoStart", (Class[]) null); + Method m = c.getMethod("SingleGotoStart"); Integer result = (Integer) m.invoke(null); if (result != 5) { throw new Error("Expected 5, got " + result); diff --git a/test/510-checker-try-catch/smali/Builder.smali b/test/510-checker-try-catch/smali/Builder.smali index 733a1dd0d2..b0bffa5b78 100644 --- a/test/510-checker-try-catch/smali/Builder.smali +++ b/test/510-checker-try-catch/smali/Builder.smali @@ -1360,7 +1360,7 @@ # Test that a throw-catch loop on monitor-exit is eliminated. # Note that we do not test this until after DCE which merges trivially split blocks. -## CHECK-START: int Builder.testSynchronized(java.lang.Object) dead_code_elimination (after) +## CHECK-START: int Builder.testSynchronized(java.lang.Object) dead_code_elimination$initial (after) ## CHECK: flags "catch_block" ## CHECK-NOT: end_block ## CHECK: MonitorOperation kind:exit diff --git a/test/510-checker-try-catch/src/Main.java b/test/510-checker-try-catch/src/Main.java index 25cdc0eb12..d6dcd30f3c 100644 --- a/test/510-checker-try-catch/src/Main.java +++ b/test/510-checker-try-catch/src/Main.java @@ -39,7 +39,7 @@ public class Main { public static void testMethod(String method) throws Exception { Class<?> c = Class.forName("Runtime"); - Method m = c.getMethod(method, new Class[] { boolean.class, boolean.class }); + Method m = c.getMethod(method, boolean.class, boolean.class); for (TestPath path : TestPath.values()) { Object[] arguments = new Object[] { path.arg1, path.arg2 }; diff --git a/test/517-checker-builder-fallthrough/src/Main.java b/test/517-checker-builder-fallthrough/src/Main.java index 23d94e697d..14170f5e86 100644 --- a/test/517-checker-builder-fallthrough/src/Main.java +++ b/test/517-checker-builder-fallthrough/src/Main.java @@ -20,7 +20,7 @@ public class Main { public static int runTest(int input) throws Exception { Class<?> c = Class.forName("TestCase"); - Method m = c.getMethod("testCase", new Class[] { int.class }); + Method m = c.getMethod("testCase", int.class); return (Integer) m.invoke(null, input); } diff --git a/test/522-checker-regression-monitor-exit/smali/Test.smali b/test/522-checker-regression-monitor-exit/smali/Test.smali index c8e91984e0..72583d2e7b 100644 --- a/test/522-checker-regression-monitor-exit/smali/Test.smali +++ b/test/522-checker-regression-monitor-exit/smali/Test.smali @@ -17,11 +17,11 @@ .super Ljava/lang/Object; -## CHECK-START: int Test.synchronizedHashCode(java.lang.Object) dead_code_elimination (before) +## CHECK-START: int Test.synchronizedHashCode(java.lang.Object) dead_code_elimination$initial (before) ## CHECK: MonitorOperation [<<Param:l\d+>>] kind:enter ## CHECK: MonitorOperation [<<Param>>] kind:exit -## CHECK-START: int Test.synchronizedHashCode(java.lang.Object) dead_code_elimination (after) +## CHECK-START: int Test.synchronizedHashCode(java.lang.Object) dead_code_elimination$initial (after) ## CHECK: MonitorOperation [<<Param:l\d+>>] kind:enter ## CHECK: MonitorOperation [<<Param>>] kind:exit diff --git a/test/522-checker-regression-monitor-exit/src/Main.java b/test/522-checker-regression-monitor-exit/src/Main.java index c85ac966ad..a5e9512796 100644 --- a/test/522-checker-regression-monitor-exit/src/Main.java +++ b/test/522-checker-regression-monitor-exit/src/Main.java @@ -40,7 +40,7 @@ public class Main { Integer result; try { Class<?> c = Class.forName("Test"); - Method m = c.getMethod("synchronizedHashCode", new Class[] { Object.class }); + Method m = c.getMethod("synchronizedHashCode", Object.class); result = (Integer) m.invoke(null, m_obj); } catch (Exception e) { System.err.println("Hash code query exception"); diff --git a/test/527-checker-array-access-split/src/Main.java b/test/527-checker-array-access-split/src/Main.java index 3366f20cc5..9435ef1def 100644 --- a/test/527-checker-array-access-split/src/Main.java +++ b/test/527-checker-array-access-split/src/Main.java @@ -189,7 +189,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM64: void Main.getSet(int[], int) GVN_after_arch (after) + /// CHECK-START-ARM64: void Main.getSet(int[], int) GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant /// CHECK: <<Array:l\d+>> NullCheck @@ -220,7 +220,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM: void Main.getSet(int[], int) GVN_after_arch (after) + /// CHECK-START-ARM: void Main.getSet(int[], int) GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant /// CHECK: <<Array:l\d+>> NullCheck @@ -260,7 +260,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM64: int[] Main.accrossGC(int[], int) GVN_after_arch (after) + /// CHECK-START-ARM64: int[] Main.accrossGC(int[], int) GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant /// CHECK: <<Array:l\d+>> NullCheck @@ -294,7 +294,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM: int[] Main.accrossGC(int[], int) GVN_after_arch (after) + /// CHECK-START-ARM: int[] Main.accrossGC(int[], int) GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant /// CHECK: <<Array:l\d+>> NullCheck @@ -349,7 +349,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM64: int Main.canMergeAfterBCE1() GVN_after_arch (after) + /// CHECK-START-ARM64: int Main.canMergeAfterBCE1() GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant 12 /// CHECK: <<Array:l\d+>> NewArray @@ -386,7 +386,7 @@ public class Main { /// CHECK: <<Address2:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK-NEXT: ArraySet [<<Address2>>,<<Index>>,<<Add>>] - /// CHECK-START-ARM: int Main.canMergeAfterBCE1() GVN_after_arch (after) + /// CHECK-START-ARM: int Main.canMergeAfterBCE1() GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant 12 /// CHECK: <<Array:l\d+>> NewArray @@ -445,7 +445,7 @@ public class Main { /// CHECK: <<Address3:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK: ArraySet [<<Address3>>,<<Index1>>,<<Add>>] - /// CHECK-START-ARM64: int Main.canMergeAfterBCE2() GVN_after_arch (after) + /// CHECK-START-ARM64: int Main.canMergeAfterBCE2() GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant 12 /// CHECK: <<Array:l\d+>> NewArray @@ -461,7 +461,7 @@ public class Main { // There should be only one intermediate address computation in the loop. - /// CHECK-START-ARM64: int Main.canMergeAfterBCE2() GVN_after_arch (after) + /// CHECK-START-ARM64: int Main.canMergeAfterBCE2() GVN$after_arch (after) /// CHECK: IntermediateAddress /// CHECK-NOT: IntermediateAddress @@ -494,7 +494,7 @@ public class Main { /// CHECK: <<Address3:l\d+>> IntermediateAddress [<<Array>>,<<DataOffset>>] /// CHECK: ArraySet [<<Address3>>,<<Index1>>,<<Add>>] - /// CHECK-START-ARM: int Main.canMergeAfterBCE2() GVN_after_arch (after) + /// CHECK-START-ARM: int Main.canMergeAfterBCE2() GVN$after_arch (after) /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<DataOffset:i\d+>> IntConstant 12 /// CHECK: <<Array:l\d+>> NewArray @@ -508,7 +508,7 @@ public class Main { /// CHECK: <<Add:i\d+>> Add [<<ArrayGetI>>,<<ArrayGetI1>>] /// CHECK: ArraySet [<<Address>>,<<Index1>>,<<Add>>] - /// CHECK-START-ARM: int Main.canMergeAfterBCE2() GVN_after_arch (after) + /// CHECK-START-ARM: int Main.canMergeAfterBCE2() GVN$after_arch (after) /// CHECK: IntermediateAddress /// CHECK-NOT: IntermediateAddress diff --git a/test/530-checker-loops3/src/Main.java b/test/530-checker-loops3/src/Main.java index 5ffcbe964d..6b5c657294 100644 --- a/test/530-checker-loops3/src/Main.java +++ b/test/530-checker-loops3/src/Main.java @@ -132,7 +132,7 @@ public class Main { /// CHECK-DAG: Deoptimize loop:none /// CHECK-NOT: Deoptimize // - /// CHECK-START: void Main.multipleUnitStrides(int[], int[]) instruction_simplifier_after_bce (after) + /// CHECK-START: void Main.multipleUnitStrides(int[], int[]) instruction_simplifier$after_bce (after) /// CHECK-DAG: Deoptimize loop:none /// CHECK-DAG: Deoptimize loop:none /// CHECK-DAG: Deoptimize loop:none @@ -164,7 +164,7 @@ public class Main { /// CHECK-DAG: Deoptimize loop:none /// CHECK-NOT: Deoptimize // - /// CHECK-START: void Main.multipleUnitStridesConditional(int[], int[]) instruction_simplifier_after_bce (after) + /// CHECK-START: void Main.multipleUnitStridesConditional(int[], int[]) instruction_simplifier$after_bce (after) /// CHECK-DAG: Deoptimize loop:none /// CHECK-DAG: Deoptimize loop:none /// CHECK-DAG: Deoptimize loop:none @@ -196,7 +196,7 @@ public class Main { /// CHECK-DAG: Deoptimize loop:none /// CHECK-NOT: Deoptimize // - /// CHECK-START: void Main.shifter(int[]) instruction_simplifier_after_bce (after) + /// CHECK-START: void Main.shifter(int[]) instruction_simplifier$after_bce (after) /// CHECK-DAG: Deoptimize loop:none /// CHECK-DAG: Deoptimize loop:none /// CHECK-NOT: Deoptimize diff --git a/test/538-checker-embed-constants/src/Main.java b/test/538-checker-embed-constants/src/Main.java index f791adfd9a..f6713a2962 100644 --- a/test/538-checker-embed-constants/src/Main.java +++ b/test/538-checker-embed-constants/src/Main.java @@ -473,7 +473,7 @@ public class Main { } /** - * Test that the `-1` constant is not synthesized in a register and that we + * ARM/ARM64: Test that the `-1` constant is not synthesized in a register and that we * instead simply switch between `add` and `sub` instructions with the * constant embedded. * We need two uses (or more) of the constant because the compiler always @@ -491,10 +491,137 @@ public class Main { /// CHECK: sub x{{\d+}}, x{{\d+}}, #0x1 /// CHECK: add x{{\d+}}, x{{\d+}}, #0x1 + /// CHECK-START-ARM: long Main.addM1(long) register (after) + /// CHECK: <<Arg:j\d+>> ParameterValue + /// CHECK: <<ConstM1:j\d+>> LongConstant -1 + /// CHECK-NOT: ParallelMove + /// CHECK: Add [<<Arg>>,<<ConstM1>>] + /// CHECK: Sub [<<Arg>>,<<ConstM1>>] + + /// CHECK-START-ARM: long Main.addM1(long) disassembly (after) + /// CHECK: <<Arg:j\d+>> ParameterValue + /// CHECK: <<ConstM1:j\d+>> LongConstant -1 + /// CHECK: Add [<<Arg>>,<<ConstM1>>] + /// CHECK-NEXT: subs r{{\d+}}, #1 + /// CHECK-NEXT: adc r{{\d+}}, r{{\d+}}, #-1 + /// CHECK: Sub [<<Arg>>,<<ConstM1>>] + /// CHECK-NEXT: adds r{{\d+}}, #1 + /// CHECK-NEXT: adc r{{\d+}}, r{{\d+}}, #0 + public static long addM1(long arg) { return (arg + (-1)) | (arg - (-1)); } + /** + * ARM: Test that some long constants are not synthesized in a register for add-long. + * Also test some negative cases where we do synthetize constants in registers. + */ + + /// CHECK-START-ARM: long Main.addLongConstants(long) disassembly (after) + /// CHECK: <<Arg:j\d+>> ParameterValue + /// CHECK-DAG: <<ConstA:j\d+>> LongConstant 4486007727657233 + /// CHECK-DAG: <<ConstB:j\d+>> LongConstant 4486011735248896 + /// CHECK-DAG: <<ConstC:j\d+>> LongConstant -1071856711330889728 + /// CHECK-DAG: <<ConstD:j\d+>> LongConstant 17587891077120 + /// CHECK-DAG: <<ConstE:j\d+>> LongConstant -8808977924096 + /// CHECK-DAG: <<ConstF:j\d+>> LongConstant 17587891077121 + /// CHECK-DAG: <<ConstG:j\d+>> LongConstant 4095 + /// CHECK: Add [<<Arg>>,<<ConstA>>] + /// CHECK-NEXT: adds r{{\d+}}, r{{\d+}}, #286331153 + /// CHECK-NEXT: adc r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK: Add [<<Arg>>,<<ConstB>>] + /// CHECK-NEXT: subs r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK-NEXT: adc r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK: Add [<<Arg>>,<<ConstC>>] + /// CHECK-NEXT: subs r{{\d+}}, r{{\d+}}, #16711680 + /// CHECK-NEXT: sbc r{{\d+}}, r{{\d+}}, #249561088 + /// CHECK: Add [<<Arg>>,<<ConstD>>] + // There may or may not be a MOV here. + /// CHECK: addw r{{\d+}}, r{{\d+}}, #4095 + /// CHECK: Add [<<Arg>>,<<ConstE>>] + // There may or may not be a MOV here. + /// CHECK: subw r{{\d+}}, r{{\d+}}, #2051 + /// CHECK: Add [<<Arg>>,<<ConstF>>] + /// CHECK-NEXT: adds{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK-NEXT: adc{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK: Add [<<Arg>>,<<ConstG>>] + /// CHECK-NEXT: adds{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK-NEXT: adc{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + + public static long addLongConstants(long arg) { + return + // Modified immediates. + (arg + 0x000ff00011111111L) ^ // 4486007727657233 + // Modified immediates high and -low. + (arg + 0x000ff000fff01000L) ^ // 4486011735248896 + // Modified immediates ~high and -low. + (arg + 0xf11fffffff010000L) ^ // -1071856711330889728 + // Low word 0 (no carry), high is imm12. + (arg + 0x00000fff00000000L) ^ // 17587891077120 + // Low word 0 (no carry), -high is imm12. + (arg + 0xfffff7fd00000000L) ^ // -8808977924096 + // Cannot embed imm12 in ADC/SBC for high word. + (arg + 0x00000fff00000001L) ^ // 17587891077121 + // Cannot embed imm12 in ADDS/SUBS for low word (need to set flags). + (arg + 0x0000000000000fffL) ^ // 4095 + arg; + } + + /** + * ARM: Test that some long constants are not synthesized in a register for add-long. + * Also test some negative cases where we do synthetize constants in registers. + */ + + /// CHECK-START-ARM: long Main.subLongConstants(long) disassembly (after) + /// CHECK: <<Arg:j\d+>> ParameterValue + /// CHECK-DAG: <<ConstA:j\d+>> LongConstant 4486007727657233 + /// CHECK-DAG: <<ConstB:j\d+>> LongConstant 4486011735248896 + /// CHECK-DAG: <<ConstC:j\d+>> LongConstant -1071856711330889728 + /// CHECK-DAG: <<ConstD:j\d+>> LongConstant 17587891077120 + /// CHECK-DAG: <<ConstE:j\d+>> LongConstant -8808977924096 + /// CHECK-DAG: <<ConstF:j\d+>> LongConstant 17587891077121 + /// CHECK-DAG: <<ConstG:j\d+>> LongConstant 4095 + /// CHECK: Sub [<<Arg>>,<<ConstA>>] + /// CHECK-NEXT: subs r{{\d+}}, r{{\d+}}, #286331153 + /// CHECK-NEXT: sbc r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK: Sub [<<Arg>>,<<ConstB>>] + /// CHECK-NEXT: adds r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK-NEXT: sbc r{{\d+}}, r{{\d+}}, #1044480 + /// CHECK: Sub [<<Arg>>,<<ConstC>>] + /// CHECK-NEXT: adds r{{\d+}}, r{{\d+}}, #16711680 + /// CHECK-NEXT: adc r{{\d+}}, r{{\d+}}, #249561088 + /// CHECK: Sub [<<Arg>>,<<ConstD>>] + // There may or may not be a MOV here. + /// CHECK: subw r{{\d+}}, r{{\d+}}, #4095 + /// CHECK: Sub [<<Arg>>,<<ConstE>>] + // There may or may not be a MOV here. + /// CHECK: addw r{{\d+}}, r{{\d+}}, #2051 + /// CHECK: Sub [<<Arg>>,<<ConstF>>] + /// CHECK-NEXT: subs{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK-NEXT: sbc{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK: Sub [<<Arg>>,<<ConstG>>] + /// CHECK-NEXT: subs{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + /// CHECK-NEXT: sbc{{(\.w)?}} r{{\d+}}, r{{\d+}}, r{{\d+}} + + public static long subLongConstants(long arg) { + return + // Modified immediates. + (arg - 0x000ff00011111111L) ^ // 4486007727657233 + // Modified immediates high and -low. + (arg - 0x000ff000fff01000L) ^ // 4486011735248896 + // Modified immediates ~high and -low. + (arg - 0xf11fffffff010000L) ^ // -1071856711330889728 + // Low word 0 (no carry), high is imm12. + (arg - 0x00000fff00000000L) ^ // 17587891077120 + // Low word 0 (no carry), -high is imm12. + (arg - 0xfffff7fd00000000L) ^ // -8808977924096 + // Cannot embed imm12 in ADC/SBC for high word. + (arg - 0x00000fff00000001L) ^ // 17587891077121 + // Cannot embed imm12 in ADDS/SUBS for low word (need to set flags). + (arg - 0x0000000000000fffL) ^ // 4095 + arg; + } + public static void main(String[] args) { int arg = 0x87654321; assertIntEquals(and255(arg), 0x21); @@ -522,7 +649,7 @@ public class Main { assertLongEquals(xor0xfffffff00000000f(longArg), 0xedcba9888765432eL); assertLongEquals(xor0xf00000000000000f(longArg), 0xe23456788765432eL); - assertLongEquals(14, addM1(7)); + assertLongEquals(14L, addM1(7)); assertLongEquals(shl1(longArg), 0x2468acf10eca8642L); assertLongEquals(shl2(longArg), 0x48d159e21d950c84L); @@ -562,5 +689,30 @@ public class Main { assertLongEquals(ushr32(~longArg), 0x00000000edcba987L); assertLongEquals(ushr33(~longArg), 0x0000000076e5d4c3L); assertLongEquals(ushr63(~longArg), 0x0000000000000001L); + + // Test -1, 0, +1 and arbitrary constants just before and after overflow + // on low word in subexpressions of addLongConstants()/subLongConstants(), + // so that we check that we carry the overflow correctly to the high word. + // For example + // 0x111eeeeeeee+0x000ff00011111111 = 0x000ff111ffffffff (carry=0), + // 0x111eeeeeeef+0x000ff00011111111 = 0x000ff11200000000 (carry=1). + assertLongEquals(0xf11ff7fdee1e1111L, addLongConstants(0xffffffffffffffffL)); + assertLongEquals(0xee0080211e00eefL, addLongConstants(0x0L)); + assertLongEquals(0xee0080211e01111L, addLongConstants(0x1L)); + assertLongEquals(0xedff81c12201113L, addLongConstants(0x111eeeeeeeeL)); + assertLongEquals(0xedff81feddfeef1L, addLongConstants(0x111eeeeeeefL)); + assertLongEquals(0xedff83e11c1f111L, addLongConstants(0x222000fefffL)); + assertLongEquals(0xedff83fee3e0eefL, addLongConstants(0x222000ff000L)); + assertLongEquals(0xedff805edfe1111L, addLongConstants(0x33300feffffL)); + assertLongEquals(0xedff80412000eefL, addLongConstants(0x33300ff0000L)); + assertLongEquals(0xee0080211e00eefL, subLongConstants(0xffffffffffffffffL)); + assertLongEquals(0xf11ff7fdee1e1111L, subLongConstants(0x0L)); + assertLongEquals(0xf11ff7fc11e1eef3L, subLongConstants(0x1L)); + assertLongEquals(0xee0080412201113L, subLongConstants(0x44411111111L)); + assertLongEquals(0xee0080412201111L, subLongConstants(0x44411111112L)); + assertLongEquals(0xee0080e11c1f111L, subLongConstants(0x555fff01000L)); + assertLongEquals(0xee0080e11c1eef3L, subLongConstants(0x555fff01001L)); + assertLongEquals(0xee0080dedfe1111L, subLongConstants(0x666ff010000L)); + assertLongEquals(0xee0080dedffeef3L, subLongConstants(0x666ff010001L)); } } diff --git a/test/540-checker-rtp-bug/src/Main.java b/test/540-checker-rtp-bug/src/Main.java index 17b11db295..19b7fb701a 100644 --- a/test/540-checker-rtp-bug/src/Main.java +++ b/test/540-checker-rtp-bug/src/Main.java @@ -48,7 +48,7 @@ public class Main { /// CHECK: <<Class:l\d+>> LoadClass /// CHECK: InstanceOf [<<Phi>>,<<Class>>] - /// CHECK-START: void Main.testKeepInstanceOf(java.lang.Object, boolean) dead_code_elimination (after) + /// CHECK-START: void Main.testKeepInstanceOf(java.lang.Object, boolean) dead_code_elimination$initial (after) /// CHECK: <<Phi:l\d+>> Phi /// CHECK: <<Class:l\d+>> LoadClass /// CHECK: InstanceOf [<<Phi>>,<<Class>>] diff --git a/test/542-unresolved-access-check/src/Main.java b/test/542-unresolved-access-check/src/Main.java index 2bdf47f172..62bfea1dea 100644 --- a/test/542-unresolved-access-check/src/Main.java +++ b/test/542-unresolved-access-check/src/Main.java @@ -58,7 +58,7 @@ class MyClassLoader extends ClassLoader { "loadClassBinaryName", String.class, ClassLoader.class, List.class); if (dex != null) { - Class clazz = (Class)method.invoke(dex, className, this, null); + Class<?> clazz = (Class<?>)method.invoke(dex, className, this, null); if (clazz != null) { return clazz; } @@ -72,7 +72,7 @@ class MyClassLoader extends ClassLoader { public class Main { public static void main(String[] args) throws Exception { MyClassLoader o = new MyClassLoader(); - Class foo = o.loadClass("LoadedByMyClassLoader"); + Class<?> foo = o.loadClass("LoadedByMyClassLoader"); Method m = foo.getDeclaredMethod("main"); m.invoke(null); } diff --git a/test/543-checker-dce-trycatch/smali/TestCase.smali b/test/543-checker-dce-trycatch/smali/TestCase.smali index 9f9916d2f5..5557c7b321 100644 --- a/test/543-checker-dce-trycatch/smali/TestCase.smali +++ b/test/543-checker-dce-trycatch/smali/TestCase.smali @@ -26,18 +26,18 @@ # Test a case when one entering TryBoundary is dead but the rest of the try # block remains live. -## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination$final (before) ## CHECK: Add -## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination$final (before) ## CHECK: TryBoundary kind:entry ## CHECK: TryBoundary kind:entry ## CHECK-NOT: TryBoundary kind:entry -## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination$final (after) ## CHECK-NOT: Add -## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testDeadEntry(int, int, int, int) dead_code_elimination$final (after) ## CHECK: TryBoundary kind:entry ## CHECK-NOT: TryBoundary kind:entry @@ -71,18 +71,18 @@ # Test a case when one exiting TryBoundary is dead but the rest of the try # block remains live. -## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination$final (before) ## CHECK: Add -## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination$final (before) ## CHECK: TryBoundary kind:exit ## CHECK: TryBoundary kind:exit ## CHECK-NOT: TryBoundary kind:exit -## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination$final (after) ## CHECK-NOT: Add -## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testDeadExit(int, int, int, int) dead_code_elimination$final (after) ## CHECK: TryBoundary kind:exit ## CHECK-NOT: TryBoundary kind:exit @@ -117,21 +117,21 @@ # Test that a catch block remains live and consistent if some of try blocks # throwing into it are removed. -## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination$final (before) ## CHECK: TryBoundary kind:entry ## CHECK: TryBoundary kind:entry ## CHECK-NOT: TryBoundary kind:entry -## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination$final (before) ## CHECK: TryBoundary kind:exit ## CHECK: TryBoundary kind:exit ## CHECK-NOT: TryBoundary kind:exit -## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination$final (after) ## CHECK: TryBoundary kind:entry ## CHECK-NOT: TryBoundary kind:entry -## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testOneTryBlockDead(int, int, int, int) dead_code_elimination$final (after) ## CHECK: TryBoundary kind:exit ## CHECK-NOT: TryBoundary kind:exit @@ -203,7 +203,7 @@ # Test that DCE removes catch phi uses of instructions defined in dead try blocks. -## CHECK-START: int TestCase.testCatchPhiInputs_DefinedInTryBlock(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testCatchPhiInputs_DefinedInTryBlock(int, int, int, int) dead_code_elimination$final (before) ## CHECK-DAG: <<Arg0:i\d+>> ParameterValue ## CHECK-DAG: <<Arg1:i\d+>> ParameterValue ## CHECK-DAG: <<Const0xa:i\d+>> IntConstant 10 @@ -220,7 +220,7 @@ ## CHECK-DAG: Phi [<<Add>>,<<Const0xc>>,<<Const0xe>>] reg:2 is_catch_phi:true ## CHECK-DAG: Phi [<<Select>>,<<Const0x10>>,<<Const0x11>>] reg:3 is_catch_phi:true -## CHECK-START: int TestCase.testCatchPhiInputs_DefinedInTryBlock(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testCatchPhiInputs_DefinedInTryBlock(int, int, int, int) dead_code_elimination$final (after) ## CHECK-DAG: <<Const0xb:i\d+>> IntConstant 11 ## CHECK-DAG: <<Const0xc:i\d+>> IntConstant 12 ## CHECK-DAG: <<Const0xd:i\d+>> IntConstant 13 @@ -277,7 +277,7 @@ # Test that DCE does not remove catch phi uses of instructions defined outside # dead try blocks. -## CHECK-START: int TestCase.testCatchPhiInputs_DefinedOutsideTryBlock(int, int, int, int) dead_code_elimination_final (before) +## CHECK-START: int TestCase.testCatchPhiInputs_DefinedOutsideTryBlock(int, int, int, int) dead_code_elimination$final (before) ## CHECK-DAG: <<Const0xa:i\d+>> IntConstant 10 ## CHECK-DAG: <<Const0xb:i\d+>> IntConstant 11 ## CHECK-DAG: <<Const0xc:i\d+>> IntConstant 12 @@ -287,7 +287,7 @@ ## CHECK-DAG: Phi [<<Const0xa>>,<<Const0xb>>,<<Const0xd>>] reg:1 is_catch_phi:true ## CHECK-DAG: Phi [<<Const0xf>>,<<Const0xc>>,<<Const0xe>>] reg:2 is_catch_phi:true -## CHECK-START: int TestCase.testCatchPhiInputs_DefinedOutsideTryBlock(int, int, int, int) dead_code_elimination_final (after) +## CHECK-START: int TestCase.testCatchPhiInputs_DefinedOutsideTryBlock(int, int, int, int) dead_code_elimination$final (after) ## CHECK-DAG: <<Const0xa:i\d+>> IntConstant 10 ## CHECK-DAG: <<Const0xb:i\d+>> IntConstant 11 ## CHECK-DAG: <<Const0xc:i\d+>> IntConstant 12 diff --git a/test/543-checker-dce-trycatch/src/Main.java b/test/543-checker-dce-trycatch/src/Main.java index 6e73d0dbd1..19587e78b9 100644 --- a/test/543-checker-dce-trycatch/src/Main.java +++ b/test/543-checker-dce-trycatch/src/Main.java @@ -35,10 +35,10 @@ public class Main { // where TryBoundary still has exception handler successors after having removed // some already. - /// CHECK-START: void Main.testDeadTryCatch(boolean) dead_code_elimination_final (after) + /// CHECK-START: void Main.testDeadTryCatch(boolean) dead_code_elimination$final (after) /// CHECK-NOT: TryBoundary - /// CHECK-START: void Main.testDeadTryCatch(boolean) dead_code_elimination_final (after) + /// CHECK-START: void Main.testDeadTryCatch(boolean) dead_code_elimination$final (after) /// CHECK: begin_block /// CHECK: begin_block /// CHECK: begin_block diff --git a/test/545-tracing-and-jit/src/Main.java b/test/545-tracing-and-jit/src/Main.java index a2d51d5a8c..f365c6e6fd 100644 --- a/test/545-tracing-and-jit/src/Main.java +++ b/test/545-tracing-and-jit/src/Main.java @@ -226,7 +226,7 @@ public class Main { private static final Method getMethodTracingModeMethod; static { try { - Class c = Class.forName("dalvik.system.VMDebug"); + Class<?> c = Class.forName("dalvik.system.VMDebug"); startMethodTracingMethod = c.getDeclaredMethod("startMethodTracing", String.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Integer.TYPE); stopMethodTracingMethod = c.getDeclaredMethod("stopMethodTracing"); diff --git a/test/552-checker-primitive-typeprop/src/Main.java b/test/552-checker-primitive-typeprop/src/Main.java index fe2343e48a..129680018f 100644 --- a/test/552-checker-primitive-typeprop/src/Main.java +++ b/test/552-checker-primitive-typeprop/src/Main.java @@ -29,15 +29,15 @@ public class Main { public static void main(String[] args) throws Exception { Class<?> c = Class.forName("SsaBuilder"); - Method m = c.getMethod("environmentPhi", new Class[] { boolean.class, int[].class }); + Method m = c.getMethod("environmentPhi", boolean.class, int[].class); int[] array = new int[3]; int result; - result = (Integer) m.invoke(null, new Object[] { true, array } ); + result = (Integer) m.invoke(null, true, array); assertEquals(2, result); - result = (Integer) m.invoke(null, new Object[] { false, array } ); + result = (Integer) m.invoke(null, false, array); assertEquals(0, result); } } diff --git a/test/557-checker-instruction-simplifier-ror/src/Main.java b/test/557-checker-instruction-simplifier-ror/src/Main.java index 6d8b74d1ec..0e3d14518a 100644 --- a/test/557-checker-instruction-simplifier-ror/src/Main.java +++ b/test/557-checker-instruction-simplifier-ror/src/Main.java @@ -175,7 +175,7 @@ public class Main { // (i >>> #distance) | (i << #-distance) - /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier_after_bce (before) + /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier$after_bce (before) /// CHECK: <<ArgValue:i\d+>> ParameterValue /// CHECK: <<Const2:i\d+>> IntConstant 2 /// CHECK: <<ConstNeg2:i\d+>> IntConstant -2 @@ -184,13 +184,13 @@ public class Main { /// CHECK: <<Or:i\d+>> Or [<<UShr>>,<<Shl>>] /// CHECK: Return [<<Or>>] - /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier$after_bce (after) /// CHECK: <<ArgValue:i\d+>> ParameterValue /// CHECK: <<Const2:i\d+>> IntConstant 2 /// CHECK: <<Ror:i\d+>> Ror [<<ArgValue>>,<<Const2>>] /// CHECK: Return [<<Ror>>] - /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.ror_int_constant_c_negc(int) instruction_simplifier$after_bce (after) /// CHECK-NOT: UShr /// CHECK-NOT: Shl public static int ror_int_constant_c_negc(int value) { diff --git a/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali b/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali index 7ce60a304b..5d4aa56c8f 100644 --- a/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali +++ b/test/559-checker-irreducible-loop/smali/IrreducibleLoop.smali @@ -28,7 +28,7 @@ # exit \- \ # other_loop_entry # -## CHECK-START: int IrreducibleLoop.simpleLoop(int) dead_code_elimination (before) +## CHECK-START: int IrreducibleLoop.simpleLoop(int) dead_code_elimination$initial (before) ## CHECK: irreducible:true .method public static simpleLoop(I)I .registers 2 @@ -65,7 +65,7 @@ # other_loop_entry # set 30 in p1:myField # -## CHECK-START: int IrreducibleLoop.lse(int, Main) dead_code_elimination (after) +## CHECK-START: int IrreducibleLoop.lse(int, Main) dead_code_elimination$initial (after) ## CHECK: irreducible:true # ## CHECK-START: int IrreducibleLoop.lse(int, Main) load_store_elimination (after) @@ -101,10 +101,10 @@ # exit \- \ # other_loop_entry # -## CHECK-START: int IrreducibleLoop.dce(int) dead_code_elimination (before) +## CHECK-START: int IrreducibleLoop.dce(int) dead_code_elimination$initial (before) ## CHECK: irreducible:true -## CHECK-START: int IrreducibleLoop.dce(int) dead_code_elimination (after) +## CHECK-START: int IrreducibleLoop.dce(int) dead_code_elimination$initial (after) ## CHECK: irreducible:true .method public static dce(I)I .registers 3 diff --git a/test/564-checker-irreducible-loop/smali/IrreducibleLoop.smali b/test/564-checker-irreducible-loop/smali/IrreducibleLoop.smali index b82ed921a5..75344f74bf 100644 --- a/test/564-checker-irreducible-loop/smali/IrreducibleLoop.smali +++ b/test/564-checker-irreducible-loop/smali/IrreducibleLoop.smali @@ -16,7 +16,7 @@ .super Ljava/lang/Object; -## CHECK-START-X86: int IrreducibleLoop.simpleLoop(int) dead_code_elimination (before) +## CHECK-START-X86: int IrreducibleLoop.simpleLoop(int) dead_code_elimination$initial (before) ## CHECK-DAG: <<Method:(i|j)\d+>> CurrentMethod ## CHECK-DAG: <<Constant:i\d+>> IntConstant 42 ## CHECK-DAG: InvokeStaticOrDirect [<<Constant>>,<<Method>>] loop:{{B\d+}} irreducible:true diff --git a/test/565-checker-doublenegbitwise/src/Main.java b/test/565-checker-doublenegbitwise/src/Main.java index e426b75bf0..811c280474 100644 --- a/test/565-checker-doublenegbitwise/src/Main.java +++ b/test/565-checker-doublenegbitwise/src/Main.java @@ -70,7 +70,7 @@ public class Main { * same pass. */ - /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier$after_bce (before) /// CHECK: <<P1:z\d+>> ParameterValue /// CHECK: <<P2:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -80,18 +80,18 @@ public class Main { /// CHECK: <<And:i\d+>> And [<<Select2>>,<<Select1>>] /// CHECK: Return [<<And>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Cond1:z\d+>> ParameterValue /// CHECK: <<Cond2:z\d+>> ParameterValue /// CHECK: <<Or:i\d+>> Or [<<Cond2>>,<<Cond1>>] /// CHECK: <<BooleanNot:z\d+>> BooleanNot [<<Or>>] /// CHECK: Return [<<BooleanNot>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: BooleanNot /// CHECK-NOT: BooleanNot - /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanAndToOr(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK-NOT: And public static boolean $opt$noinline$booleanAndToOr(boolean a, boolean b) { @@ -138,7 +138,7 @@ public class Main { * same pass. */ - /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier$after_bce (before) /// CHECK: <<P1:z\d+>> ParameterValue /// CHECK: <<P2:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -148,18 +148,18 @@ public class Main { /// CHECK: <<Or:i\d+>> Or [<<Select2>>,<<Select1>>] /// CHECK: Return [<<Or>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Cond1:z\d+>> ParameterValue /// CHECK: <<Cond2:z\d+>> ParameterValue /// CHECK: <<And:i\d+>> And [<<Cond2>>,<<Cond1>>] /// CHECK: <<BooleanNot:z\d+>> BooleanNot [<<And>>] /// CHECK: Return [<<BooleanNot>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: BooleanNot /// CHECK-NOT: BooleanNot - /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanOrToAnd(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK-NOT: Or public static boolean $opt$noinline$booleanOrToAnd(boolean a, boolean b) { @@ -246,7 +246,7 @@ public class Main { * same pass. */ - /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier_after_bce (before) + /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier$after_bce (before) /// CHECK: <<P1:z\d+>> ParameterValue /// CHECK: <<P2:z\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -256,13 +256,13 @@ public class Main { /// CHECK: <<Xor:i\d+>> Xor [<<Select2>>,<<Select1>>] /// CHECK: Return [<<Xor>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Cond1:z\d+>> ParameterValue /// CHECK: <<Cond2:z\d+>> ParameterValue /// CHECK: <<Xor:i\d+>> Xor [<<Cond2>>,<<Cond1>>] /// CHECK: Return [<<Xor>>] - /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: boolean Main.$opt$noinline$booleanNotXorToXor(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK-NOT: BooleanNot public static boolean $opt$noinline$booleanNotXorToXor(boolean a, boolean b) { diff --git a/test/565-checker-rotate/src/Main.java b/test/565-checker-rotate/src/Main.java index aadb5978e8..eb0e8688c0 100644 --- a/test/565-checker-rotate/src/Main.java +++ b/test/565-checker-rotate/src/Main.java @@ -52,14 +52,14 @@ public class Main { /// CHECK-START: int Main.rotateLeftBoolean(boolean, int) select_generator (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.rotateLeftBoolean(boolean, int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.rotateLeftBoolean(boolean, int) instruction_simplifier$after_bce (after) /// CHECK: <<ArgVal:z\d+>> ParameterValue /// CHECK: <<ArgDist:i\d+>> ParameterValue /// CHECK-DAG: <<NegDist:i\d+>> Neg [<<ArgDist>>] /// CHECK-DAG: <<Result:i\d+>> Ror [<<ArgVal>>,<<NegDist>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.rotateLeftBoolean(boolean, int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.rotateLeftBoolean(boolean, int) instruction_simplifier$after_bce (after) /// CHECK-NOT: Select private static int rotateLeftBoolean(boolean value, int distance) { @@ -206,13 +206,13 @@ public class Main { /// CHECK-START: int Main.rotateRightBoolean(boolean, int) select_generator (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.rotateRightBoolean(boolean, int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.rotateRightBoolean(boolean, int) instruction_simplifier$after_bce (after) /// CHECK: <<ArgVal:z\d+>> ParameterValue /// CHECK: <<ArgDist:i\d+>> ParameterValue /// CHECK-DAG: <<Result:i\d+>> Ror [<<ArgVal>>,<<ArgDist>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.rotateRightBoolean(boolean, int) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.rotateRightBoolean(boolean, int) instruction_simplifier$after_bce (after) /// CHECK-NOT: Select private static int rotateRightBoolean(boolean value, int distance) { diff --git a/test/566-checker-signum/src/Main.java b/test/566-checker-signum/src/Main.java index 5f2cf3dc95..7fc9e84055 100644 --- a/test/566-checker-signum/src/Main.java +++ b/test/566-checker-signum/src/Main.java @@ -45,13 +45,13 @@ public class Main { /// CHECK-START: int Main.signBoolean(boolean) select_generator (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.signBoolean(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.signBoolean(boolean) instruction_simplifier$after_bce (after) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 /// CHECK-DAG: <<Result:i\d+>> Compare [<<Arg>>,<<Zero>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.signBoolean(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.signBoolean(boolean) instruction_simplifier$after_bce (after) /// CHECK-NOT: Select private static int signBoolean(boolean x) { diff --git a/test/566-polymorphic-inlining/src/Main.java b/test/566-polymorphic-inlining/src/Main.java index 53852a417c..793b85f5e5 100644 --- a/test/566-polymorphic-inlining/src/Main.java +++ b/test/566-polymorphic-inlining/src/Main.java @@ -15,9 +15,9 @@ */ interface Itf { - public Class sameInvokeInterface(); - public Class sameInvokeInterface2(); - public Class sameInvokeInterface3(); + public Class<?> sameInvokeInterface(); + public Class<?> sameInvokeInterface2(); + public Class<?> sameInvokeInterface3(); } public class Main implements Itf { @@ -81,31 +81,31 @@ public class Main implements Itf { assertEquals(20001, counter); } - public Class sameInvokeVirtual() { + public Class<?> sameInvokeVirtual() { field.getClass(); // null check to ensure we get an inlined frame in the CodeInfo. return Main.class; } - public Class sameInvokeInterface() { + public Class<?> sameInvokeInterface() { field.getClass(); // null check to ensure we get an inlined frame in the CodeInfo. return Itf.class; } - public Class sameInvokeInterface2() { + public Class<?> sameInvokeInterface2() { field.getClass(); // null check to ensure we get an inlined frame in the CodeInfo. return Itf.class; } - public Class sameInvokeInterface3() { + public Class<?> sameInvokeInterface3() { field.getClass(); // null check to ensure we get an inlined frame in the CodeInfo. return Itf.class; } - public static Class testInvokeInterface(Itf i) { + public static Class<?> testInvokeInterface(Itf i) { return i.sameInvokeInterface(); } - public static Class testInvokeInterface2(Itf i) { + public static Class<?> testInvokeInterface2(Itf i) { // Make three interface calls that will do a ClassTableGet to ensure bogus code // generation of ClassTableGet will crash. i.sameInvokeInterface(); @@ -113,7 +113,7 @@ public class Main implements Itf { return i.sameInvokeInterface3(); } - public static Class testInvokeVirtual(Main m) { + public static Class<?> testInvokeVirtual(Main m) { return m.sameInvokeVirtual(); } @@ -139,18 +139,18 @@ class Subclass extends Main { } class OtherSubclass extends Main { - public Class sameInvokeVirtual() { + public Class<?> sameInvokeVirtual() { return OtherSubclass.class; } - public Class sameInvokeInterface() { + public Class<?> sameInvokeInterface() { return OtherSubclass.class; } - public Class sameInvokeInterface2() { + public Class<?> sameInvokeInterface2() { return null; } - public Class sameInvokeInterface3() { + public Class<?> sameInvokeInterface3() { return null; } } diff --git a/test/567-checker-compare/src/Main.java b/test/567-checker-compare/src/Main.java index 85879500d9..a05bb60fad 100644 --- a/test/567-checker-compare/src/Main.java +++ b/test/567-checker-compare/src/Main.java @@ -75,13 +75,13 @@ public class Main { /// CHECK-START: int Main.compareBooleans(boolean, boolean) select_generator (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK: <<ArgX:z\d+>> ParameterValue /// CHECK: <<ArgY:z\d+>> ParameterValue /// CHECK-DAG: <<Result:i\d+>> Compare [<<ArgX>>,<<ArgY>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier$after_bce (after) /// CHECK-NOT: Select private static int compareBooleans(boolean x, boolean y) { diff --git a/test/570-checker-osr/smali/Osr.smali b/test/570-checker-osr/smali/Osr.smali index 869c7c31b8..6592b7b9d3 100644 --- a/test/570-checker-osr/smali/Osr.smali +++ b/test/570-checker-osr/smali/Osr.smali @@ -19,7 +19,7 @@ # Check that blocks only havig nops are not merged when they are loop headers. # This ensures we can do on-stack replacement for branches to those nop blocks. -## CHECK-START: int Osr.simpleLoop(int, int) dead_code_elimination_final (after) +## CHECK-START: int Osr.simpleLoop(int, int) dead_code_elimination$final (after) ## CHECK-DAG: SuspendCheck loop:<<OuterLoop:B\d+>> outer_loop:none ## CHECK-DAG: SuspendCheck loop:{{B\d+}} outer_loop:<<OuterLoop>> .method public static simpleLoop(II)I diff --git a/test/570-checker-osr/src/Main.java b/test/570-checker-osr/src/Main.java index 15c232d6a8..8af3894b33 100644 --- a/test/570-checker-osr/src/Main.java +++ b/test/570-checker-osr/src/Main.java @@ -129,7 +129,7 @@ public class Main { DeoptimizationController.startDeoptimization(); } - public static Class $noinline$inlineCache(Main m, boolean isSecondInvocation) { + public static Class<?> $noinline$inlineCache(Main m, boolean isSecondInvocation) { // If we are running in non-JIT mode, or were unlucky enough to get this method // already JITted, just return the expected value. if (!isInInterpreter("$noinline$inlineCache")) { @@ -159,7 +159,7 @@ public class Main { return other.returnClass(); } - public static Class $noinline$inlineCache2(Main m, boolean isSecondInvocation) { + public static Class<?> $noinline$inlineCache2(Main m, boolean isSecondInvocation) { // If we are running in non-JIT mode, or were unlucky enough to get this method // already JITted, just return the expected value. if (!isInInterpreter("$noinline$inlineCache2")) { @@ -188,7 +188,7 @@ public class Main { return (other == null) ? null : other.returnClass(); } - public static Class $noinline$inlineCache3(Main m, boolean isSecondInvocation) { + public static Class<?> $noinline$inlineCache3(Main m, boolean isSecondInvocation) { // If we are running in non-JIT mode, or were unlucky enough to get this method // already JITted, just return the expected value. if (!isInInterpreter("$noinline$inlineCache3")) { @@ -229,7 +229,7 @@ public class Main { return null; } - public Class returnClass() { + public Class<?> returnClass() { return Main.class; } @@ -305,7 +305,7 @@ public class Main { } class SubMain extends Main { - public Class returnClass() { + public Class<?> returnClass() { return SubMain.class; } diff --git a/test/576-polymorphic-inlining/src/Main.java b/test/576-polymorphic-inlining/src/Main.java index d8d09aff87..5763d89cf9 100644 --- a/test/576-polymorphic-inlining/src/Main.java +++ b/test/576-polymorphic-inlining/src/Main.java @@ -65,11 +65,11 @@ public class Main { public void willOnlyInlineForMainVoid() { } - public Class willInlineWithReturnValue() { + public Class<?> willInlineWithReturnValue() { return Main.class; } - public Class willOnlyInlineForMainWithReturnValue() { + public Class<?> willOnlyInlineForMainWithReturnValue() { return Main.class; } public static boolean doThrow; @@ -83,21 +83,21 @@ class SubMain extends Main { public void willInlineVoid() { } - public Class willInlineWithReturnValue() { + public Class<?> willInlineWithReturnValue() { return SubMain.class; } - public Class willOnlyInlineForMainWithReturnValue() { + public Class<?> willOnlyInlineForMainWithReturnValue() { return SubMain.class; } } class SubSubMain extends SubMain { - public Class willInlineWithReturnValue() { + public Class<?> willInlineWithReturnValue() { return SubSubMain.class; } - public Class willOnlyInlineForMainWithReturnValue() { + public Class<?> willOnlyInlineForMainWithReturnValue() { return SubSubMain.class; } } diff --git a/test/577-profile-foreign-dex/src/Main.java b/test/577-profile-foreign-dex/src/Main.java index 0cd85b58e8..ed7a625e75 100644 --- a/test/577-profile-foreign-dex/src/Main.java +++ b/test/577-profile-foreign-dex/src/Main.java @@ -111,11 +111,11 @@ public class Main { } private static void loadDexFile(String dexFile) throws Exception { - Class pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); + Class<?> pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); if (pathClassLoader == null) { throw new RuntimeException("Couldn't find path class loader class"); } - Constructor constructor = + Constructor<?> constructor = pathClassLoader.getDeclaredConstructor(String.class, ClassLoader.class); constructor.newInstance( dexFile, ClassLoader.getSystemClassLoader()); @@ -125,7 +125,7 @@ public class Main { private static final Method registerAppInfoMethod; static { try { - Class c = Class.forName("dalvik.system.VMRuntime"); + Class<?> c = Class.forName("dalvik.system.VMRuntime"); registerAppInfoMethod = c.getDeclaredMethod("registerAppInfo", String.class, String.class, String[].class, String.class); } catch (Exception e) { diff --git a/test/580-checker-round/src/Main.java b/test/580-checker-round/src/Main.java index 9e248ef95a..83bc55c480 100644 --- a/test/580-checker-round/src/Main.java +++ b/test/580-checker-round/src/Main.java @@ -36,7 +36,8 @@ public class Main { expectEquals32(-2, round32(-1.51f)); expectEquals32(-1, round32(-1.2f)); expectEquals32(-1, round32(-1.0f)); - expectEquals32(-1, round32(-0.51f)); + expectEquals32(-1, round32(-0.5000001f)); + expectEquals32(0, round32(-0.5f)); expectEquals32(0, round32(-0.2f)); expectEquals32(0, round32(-0.0f)); expectEquals32(0, round32(+0.0f)); @@ -47,11 +48,23 @@ public class Main { expectEquals32(2, round32(+1.5f)); expectEquals32(2147483647, round32(Float.POSITIVE_INFINITY)); + // Near minint. + expectEquals32(-2147483648, round32(Math.nextAfter(-2147483648.0f, Float.NEGATIVE_INFINITY))); + expectEquals32(-2147483648, round32(-2147483648.0f)); + expectEquals32(-2147483520, round32(Math.nextAfter(-2147483648.0f, Float.POSITIVE_INFINITY))); + + // Near maxint. + expectEquals32(2147483520, round32(Math.nextAfter(2147483648.0f, Float.NEGATIVE_INFINITY))); + expectEquals32(2147483647, round32(2147483648.0f)); + expectEquals32(2147483647, round32(Math.nextAfter(2147483648.0f, Float.POSITIVE_INFINITY))); + // Some others. for (int i = -100; i <= 100; ++i) { expectEquals32(i - 1, round32((float) i - 0.51f)); + expectEquals32(i, round32((float) i - 0.5f)); expectEquals32(i, round32((float) i)); expectEquals32(i + 1, round32((float) i + 0.5f)); + expectEquals32(i + 1, round32((float) i + 0.51f)); } for (float f = -1.5f; f <= -1.499f; f = Math.nextAfter(f, Float.POSITIVE_INFINITY)) { expectEquals32(-1, round32(f)); @@ -61,8 +74,10 @@ public class Main { float[] fvals = { -16777215.5f, -16777215.0f, - -0.4999f, - 0.4999f, + -0.49999998f, + -0.4999999701976776123046875f, + 0.4999999701976776123046875f, + 0.49999998f, 16777215.0f, 16777215.5f }; @@ -71,6 +86,8 @@ public class Main { -16777215, 0, 0, + 0, + 0, 16777215, 16777216 }; @@ -98,7 +115,8 @@ public class Main { expectEquals64(-2L, round64(-1.51d)); expectEquals64(-1L, round64(-1.2d)); expectEquals64(-1L, round64(-1.0d)); - expectEquals64(-1L, round64(-0.51d)); + expectEquals64(-1L, round64(-0.5000001f)); + expectEquals64(0L, round64(-0.5d)); expectEquals64(0L, round64(-0.2d)); expectEquals64(0L, round64(-0.0d)); expectEquals64(0L, round64(+0.0d)); @@ -109,11 +127,27 @@ public class Main { expectEquals64(2L, round64(+1.5d)); expectEquals64(9223372036854775807L, round64(Double.POSITIVE_INFINITY)); + // Near minlong. + expectEquals64(-9223372036854775808L, + round64(Math.nextAfter(-9223372036854775808.0, Double.NEGATIVE_INFINITY))); + expectEquals64(-9223372036854775808L, round64(-9223372036854775808.0)); + expectEquals64(-9223372036854774784L, + round64(Math.nextAfter(-9223372036854775809.0, Double.POSITIVE_INFINITY))); + + // Near maxlong. + expectEquals64(9223372036854774784L, + round64(Math.nextAfter(9223372036854775808.0, Double.NEGATIVE_INFINITY))); + expectEquals64(9223372036854775807L, round64(9223372036854775808.0)); + expectEquals64(9223372036854775807L, + round64(Math.nextAfter(9223372036854775808.0, Double.POSITIVE_INFINITY))); + // Some others. for (long l = -100; l <= 100; ++l) { expectEquals64(l - 1, round64((double) l - 0.51d)); + expectEquals64(l, round64((double) l - 0.5d)); + expectEquals64(l, round64((double) l)); expectEquals64(l + 1, round64((double) l + 0.5d)); - expectEquals64(l + 1, round64((double) l + 0.5d)); + expectEquals64(l + 1, round64((double) l + 0.51d)); } for (double d = -1.5d; d <= -1.49999999999d; d = Math.nextAfter(d, Double.POSITIVE_INFINITY)) { expectEquals64(-1L, round64(d)); @@ -123,8 +157,10 @@ public class Main { double[] dvals = { -9007199254740991.5d, -9007199254740991.0d, + -0.49999999999999997d, -0.49999999999999994d, 0.49999999999999994d, + 0.49999999999999997d, 9007199254740991.0d, 9007199254740991.5d }; @@ -133,6 +169,8 @@ public class Main { -9007199254740991L, 0L, 0L, + 0L, + 0L, 9007199254740991L, 9007199254740992L }; diff --git a/test/588-checker-irreducible-lifetime-hole/smali/IrreducibleLoop.smali b/test/588-checker-irreducible-lifetime-hole/smali/IrreducibleLoop.smali index 7dbd9dae21..186f0ab3e8 100644 --- a/test/588-checker-irreducible-lifetime-hole/smali/IrreducibleLoop.smali +++ b/test/588-checker-irreducible-lifetime-hole/smali/IrreducibleLoop.smali @@ -16,7 +16,7 @@ .super Ljava/lang/Object; -## CHECK-START-X86: int IrreducibleLoop.simpleLoop1(int) dead_code_elimination (before) +## CHECK-START-X86: int IrreducibleLoop.simpleLoop1(int) dead_code_elimination$initial (before) ## CHECK-DAG: <<Method:(i|j)\d+>> CurrentMethod ## CHECK-DAG: <<Constant:i\d+>> IntConstant 42 ## CHECK-DAG: Goto irreducible:true @@ -57,7 +57,7 @@ return v0 .end method -## CHECK-START-X86: int IrreducibleLoop.simpleLoop2(int) dead_code_elimination (before) +## CHECK-START-X86: int IrreducibleLoop.simpleLoop2(int) dead_code_elimination$initial (before) ## CHECK-DAG: <<Method:(i|j)\d+>> CurrentMethod ## CHECK-DAG: <<Constant:i\d+>> IntConstant 42 ## CHECK-DAG: Goto irreducible:true diff --git a/test/591-checker-regression-dead-loop/src/Main.java b/test/591-checker-regression-dead-loop/src/Main.java index 6d9fcf8e6e..19856cff80 100644 --- a/test/591-checker-regression-dead-loop/src/Main.java +++ b/test/591-checker-regression-dead-loop/src/Main.java @@ -17,7 +17,7 @@ class Main { private static boolean $inline$false() { return false; } - /// CHECK-START: void Main.main(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.main(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const0>>,<<Add:i\d+>>] loop:{{B\d+}} diff --git a/test/593-checker-boolean-to-integral-conv/src/Main.java b/test/593-checker-boolean-to-integral-conv/src/Main.java index ba65839376..b4c91c8db6 100644 --- a/test/593-checker-boolean-to-integral-conv/src/Main.java +++ b/test/593-checker-boolean-to-integral-conv/src/Main.java @@ -46,7 +46,7 @@ public class Main { /// CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Sel>>] /// CHECK-DAG: Return [<<IToS>>] - /// CHECK-START: byte Main.booleanToByte(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: byte Main.booleanToByte(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -72,7 +72,7 @@ public class Main { /// CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Sel>>] /// CHECK-DAG: Return [<<IToS>>] - /// CHECK-START: short Main.booleanToShort(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: short Main.booleanToShort(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -98,7 +98,7 @@ public class Main { /// CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Sel>>] /// CHECK-DAG: Return [<<IToC>>] - /// CHECK-START: char Main.booleanToChar(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: char Main.booleanToChar(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -122,7 +122,7 @@ public class Main { /// CHECK-DAG: <<Sel:i\d+>> Select [<<Zero>>,<<One>>,<<Arg>>] /// CHECK-DAG: Return [<<Sel>>] - /// CHECK-START: int Main.booleanToInt(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.booleanToInt(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: Return [<<Arg>>] @@ -148,7 +148,7 @@ public class Main { /// CHECK-DAG: <<IToJ:j\d+>> TypeConversion [<<Sel>>] /// CHECK-DAG: Return [<<IToJ>>] - /// CHECK-START: long Main.booleanToLong(boolean) instruction_simplifier_after_bce (after) + /// CHECK-START: long Main.booleanToLong(boolean) instruction_simplifier$after_bce (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<ZToJ:j\d+>> TypeConversion [<<Arg>>] /// CHECK-DAG: Return [<<ZToJ>>] @@ -185,7 +185,7 @@ public class Main { /// CHECK-DAG: <<JToI:i\d+>> TypeConversion [<<IToJ>>] /// CHECK-DAG: Return [<<JToI>>] - /// CHECK-START: int Main.longToIntOfBoolean() instruction_simplifier_after_bce (after) + /// CHECK-START: int Main.longToIntOfBoolean() instruction_simplifier$after_bce (after) /// CHECK-DAG: <<Method:[ij]\d+>> CurrentMethod /// CHECK-DAG: <<Sget:z\d+>> StaticFieldGet /// CHECK-DAG: Return [<<Sget>>] diff --git a/test/601-method-access/src/Main.java b/test/601-method-access/src/Main.java index 838080a506..9d9e568051 100644 --- a/test/601-method-access/src/Main.java +++ b/test/601-method-access/src/Main.java @@ -22,7 +22,7 @@ import java.lang.reflect.InvocationTargetException; public class Main { public static void main(String[] args) { try { - Class c = Class.forName("SubClassUsingInaccessibleMethod"); + Class<?> c = Class.forName("SubClassUsingInaccessibleMethod"); Object o = c.newInstance(); c.getMethod("test").invoke(o, null); } catch (InvocationTargetException ite) { diff --git a/test/604-hot-static-interface/src/Main.java b/test/604-hot-static-interface/src/Main.java index 04d7cd6567..a26623c73f 100644 --- a/test/604-hot-static-interface/src/Main.java +++ b/test/604-hot-static-interface/src/Main.java @@ -29,7 +29,7 @@ public class Main { } } - private static native void ensureJitCompiled(Class itf, String method_name); + private static native void ensureJitCompiled(Class<?> itf, String method_name); } interface Itf { diff --git a/test/605-new-string-from-bytes/src/Main.java b/test/605-new-string-from-bytes/src/Main.java index 7dc0c15d99..5bd6c5d7e5 100644 --- a/test/605-new-string-from-bytes/src/Main.java +++ b/test/605-new-string-from-bytes/src/Main.java @@ -20,7 +20,7 @@ import java.lang.reflect.Method; public class Main { public static void main(String[] args) throws Exception { - Class c = Class.forName("java.lang.StringFactory"); + Class<?> c = Class.forName("java.lang.StringFactory"); Method m = c.getDeclaredMethod("newStringFromBytes", byte[].class, int.class); // Loop over allocations to get more chances of doing GC while in the diff --git a/test/611-checker-simplify-if/src/Main.java b/test/611-checker-simplify-if/src/Main.java index 21f4115c55..7dac0072e6 100644 --- a/test/611-checker-simplify-if/src/Main.java +++ b/test/611-checker-simplify-if/src/Main.java @@ -35,14 +35,14 @@ public class Main { // Test when a condition is the input of the if. - /// CHECK-START: void Main.testNoInline(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testNoInline(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK: <<Const0:i\d+>> IntConstant 0 /// CHECK: If /// CHECK: <<Phi:i\d+>> Phi /// CHECK: <<Equal:z\d+>> Equal [<<Phi>>,<<Const0>>] /// CHECK: If [<<Equal>>] - /// CHECK-START: void Main.testNoInline(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testNoInline(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK: If /// CHECK-NOT: Phi /// CHECK-NOT: Equal @@ -64,13 +64,13 @@ public class Main { // Test when the phi is the input of the if. - /// CHECK-START: void Main.testInline(java.lang.String[]) dead_code_elimination_final (before) + /// CHECK-START: void Main.testInline(java.lang.String[]) dead_code_elimination$final (before) /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 /// CHECK-DAG: If /// CHECK-DAG: <<Phi:i\d+>> Phi /// CHECK-DAG: If [<<Phi>>] - /// CHECK-START: void Main.testInline(java.lang.String[]) dead_code_elimination_final (after) + /// CHECK-START: void Main.testInline(java.lang.String[]) dead_code_elimination$final (after) /// CHECK: If /// CHECK-NOT: Phi /// CHECK-NOT: If @@ -96,7 +96,7 @@ public class Main { // Test when one input is not a constant. We can only optimize the constant input. - /// CHECK-START: void Main.testNonConstantInputs(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testNonConstantInputs(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK-DAG: <<Const34:i\d+>> IntConstant 34 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 /// CHECK-DAG: If @@ -105,7 +105,7 @@ public class Main { /// CHECK-DAG: <<NotEqual:z\d+>> NotEqual [<<Phi>>,<<Const42>>] /// CHECK-DAG: If [<<NotEqual>>] - /// CHECK-START: void Main.testNonConstantInputs(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testNonConstantInputs(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 /// CHECK-DAG: If /// CHECK-DAG: <<StaticFieldGet:i\d+>> StaticFieldGet @@ -129,7 +129,7 @@ public class Main { // Test with a condition. - /// CHECK-START: void Main.testGreaterCondition(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testGreaterCondition(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK-DAG: <<Const34:i\d+>> IntConstant 34 /// CHECK-DAG: <<Const22:i\d+>> IntConstant 22 /// CHECK-DAG: <<Const25:i\d+>> IntConstant 25 @@ -138,7 +138,7 @@ public class Main { /// CHECK-DAG: <<GE:z\d+>> GreaterThanOrEqual [<<Phi>>,<<Const25>>] /// CHECK-DAG: If [<<GE>>] - /// CHECK-START: void Main.testGreaterCondition(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testGreaterCondition(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK-DAG: If /// CHECK-NOT: Phi /// CHECK-NOT: GreaterThanOrEqual @@ -160,7 +160,7 @@ public class Main { // Test when comparing non constants. - /// CHECK-START: void Main.testNonConstantEqual(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testNonConstantEqual(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK-DAG: <<Const34:i\d+>> IntConstant 34 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 /// CHECK-DAG: If @@ -169,7 +169,7 @@ public class Main { /// CHECK-DAG: <<NotEqual:z\d+>> NotEqual [<<Phi>>,<<StaticFieldGet>>] /// CHECK-DAG: If [<<NotEqual>>] - /// CHECK-START: void Main.testNonConstantEqual(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testNonConstantEqual(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK-DAG: <<Const34:i\d+>> IntConstant 34 /// CHECK-DAG: If /// CHECK-DAG: <<StaticFieldGet:i\d+>> StaticFieldGet @@ -217,12 +217,12 @@ public class Main { return true; } - /// CHECK-START: void Main.testSwitch(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testSwitch(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK: If /// CHECK: If /// CHECK: If - /// CHECK-START: void Main.testSwitch(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testSwitch(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK: If /// CHECK: If /// CHECK-NOT: If @@ -248,11 +248,11 @@ public class Main { // Redirect default here. } - /// CHECK-START: void Main.testFP(java.lang.String[]) dead_code_elimination (before) + /// CHECK-START: void Main.testFP(java.lang.String[]) dead_code_elimination$initial (before) /// CHECK: If /// CHECK: If - /// CHECK-START: void Main.testFP(java.lang.String[]) dead_code_elimination (after) + /// CHECK-START: void Main.testFP(java.lang.String[]) dead_code_elimination$initial (after) /// CHECK: If /// CHECK: If public static void testFP(String[] args) { diff --git a/test/612-jit-dex-cache/src-ex/LoadedByAppClassLoader.java b/test/612-jit-dex-cache/src-ex/LoadedByAppClassLoader.java index 1d6158a593..fcb314d1f7 100644 --- a/test/612-jit-dex-cache/src-ex/LoadedByAppClassLoader.java +++ b/test/612-jit-dex-cache/src-ex/LoadedByAppClassLoader.java @@ -29,7 +29,7 @@ public class LoadedByAppClassLoader { } class OtherClass { - public static Class getB() { + public static Class<?> getB() { // This used to return the B class of another class loader. return B.class; } diff --git a/test/612-jit-dex-cache/src/Main.java b/test/612-jit-dex-cache/src/Main.java index 0e4bd2245d..89ebe09827 100644 --- a/test/612-jit-dex-cache/src/Main.java +++ b/test/612-jit-dex-cache/src/Main.java @@ -41,7 +41,7 @@ class DelegateLastPathClassLoader extends PathClassLoader { public class Main { - private static Class classFromDifferentLoader() throws Exception { + private static Class<?> classFromDifferentLoader() throws Exception { final String DEX_FILE = System.getenv("DEX_LOCATION") + "/612-jit-dex-cache-ex.jar"; ClassLoader loader = new DelegateLastPathClassLoader(DEX_FILE, Main.class.getClassLoader()); return loader.loadClass("LoadedByAppClassLoader"); @@ -49,7 +49,7 @@ public class Main { public static void main(String[] args) throws Exception { System.loadLibrary(args[0]); - Class cls = classFromDifferentLoader(); + Class<?> cls = classFromDifferentLoader(); Method m = cls.getDeclaredMethod("letMeInlineYou", A.class); B b = new B(); // Invoke the method enough times to get an inline cache and get JITted. @@ -63,5 +63,5 @@ public class Main { } } - public static native void ensureJitCompiled(Class cls, String method_name); + public static native void ensureJitCompiled(Class<?> cls, String method_name); } diff --git a/test/614-checker-dump-constant-location/expected.txt b/test/614-checker-dump-constant-location/expected.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/614-checker-dump-constant-location/expected.txt diff --git a/test/614-checker-dump-constant-location/info.txt b/test/614-checker-dump-constant-location/info.txt new file mode 100644 index 0000000000..4a94fface0 --- /dev/null +++ b/test/614-checker-dump-constant-location/info.txt @@ -0,0 +1,2 @@ +Test that the graph visualizer outputs useful information for constant +locations in parallel moves. diff --git a/test/614-checker-dump-constant-location/src/Main.java b/test/614-checker-dump-constant-location/src/Main.java new file mode 100644 index 0000000000..f6bc063d86 --- /dev/null +++ b/test/614-checker-dump-constant-location/src/Main.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class Main { + + public static int array_int[] = { 0 }; + public static long array_long[] = { 0 }; + public static float array_float[] = { 0.0f }; + public static double array_double[] = { 0.0 }; + + // The code used to print constant locations in parallel moves is architecture + // independent. We only test for ARM and ARM64 as it is easy: 'store' + // instructions only take registers as a source. + + /// CHECK-START-ARM: void Main.store_to_arrays() register (after) + /// CHECK: ParallelMove {{.*#1->.*#2->.*#3\.3->.*#4\.4->.*}} + + /// CHECK-START-ARM64: void Main.store_to_arrays() register (after) + /// CHECK: ParallelMove {{.*#1->.*#2->.*#3\.3->.*#4\.4->.*}} + + public void store_to_arrays() { + array_int[0] = 1; + array_long[0] = 2; + array_float[0] = 3.3f; + array_double[0] = 4.4; + } + + public static void main(String args[]) {} +} diff --git a/test/615-checker-arm64-zr-parallel-move/expected.txt b/test/615-checker-arm64-zr-parallel-move/expected.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/615-checker-arm64-zr-parallel-move/expected.txt diff --git a/test/615-checker-arm64-zr-parallel-move/info.txt b/test/615-checker-arm64-zr-parallel-move/info.txt new file mode 100644 index 0000000000..199755d38d --- /dev/null +++ b/test/615-checker-arm64-zr-parallel-move/info.txt @@ -0,0 +1 @@ +Checker test to verify we correctly use wzr and xzr to synthesize zero constants. diff --git a/test/615-checker-arm64-zr-parallel-move/src/Main.java b/test/615-checker-arm64-zr-parallel-move/src/Main.java new file mode 100644 index 0000000000..5024f2881c --- /dev/null +++ b/test/615-checker-arm64-zr-parallel-move/src/Main.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class Main { + + public static boolean doThrow = false; + + public void $noinline$foo(int in_w1, + int in_w2, + int in_w3, + int in_w4, + int in_w5, + int in_w6, + int in_w7, + int on_stack_int, + long on_stack_long, + float in_s0, + float in_s1, + float in_s2, + float in_s3, + float in_s4, + float in_s5, + float in_s6, + float in_s7, + float on_stack_float, + double on_stack_double) { + if (doThrow) throw new Error(); + } + + // We expect a parallel move that moves four times the zero constant to stack locations. + /// CHECK-START-ARM64: void Main.bar() register (after) + /// CHECK: ParallelMove {{.*#0->[0-9x]+\(sp\).*#0->[0-9x]+\(sp\).*#0->[0-9x]+\(sp\).*#0->[0-9x]+\(sp\).*}} + + // Those four moves should generate four 'store' instructions using directly the zero register. + /// CHECK-START-ARM64: void Main.bar() disassembly (after) + /// CHECK-DAG: {{(str|stur)}} wzr, [sp, #{{[0-9]+}}] + /// CHECK-DAG: {{(str|stur)}} xzr, [sp, #{{[0-9]+}}] + /// CHECK-DAG: {{(str|stur)}} wzr, [sp, #{{[0-9]+}}] + /// CHECK-DAG: {{(str|stur)}} xzr, [sp, #{{[0-9]+}}] + + public void bar() { + $noinline$foo(1, 2, 3, 4, 5, 6, 7, // Integral values in registers. + 0, 0L, // Integral values on the stack. + 1, 2, 3, 4, 5, 6, 7, 8, // Floating-point values in registers. + 0.0f, 0.0); // Floating-point values on the stack. + } + + public static void main(String args[]) {} +} diff --git a/test/955-lambda-smali/build b/test/955-lambda-smali/build deleted file mode 100755 index 14230c2e1d..0000000000 --- a/test/955-lambda-smali/build +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# Copyright 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# make us exit on a failure -set -e - -./default-build "$@" --experimental default-methods diff --git a/test/955-lambda-smali/expected.txt b/test/955-lambda-smali/expected.txt deleted file mode 100644 index 16381e4b46..0000000000 --- a/test/955-lambda-smali/expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -SanityCheck -Hello world! (0-args, no closure) -ABCD Hello world! (4-args, no closure) -Caught NPE -(BoxUnbox) Hello boxing world! (0-args, no closure) -(BoxUnbox) Boxing repeatedly yields referentially-equal objects -(BoxUnbox) Caught NPE for unbox-lambda -(BoxUnbox) Caught NPE for box-lambda -(BoxUnbox) Caught ClassCastException for unbox-lambda -(MoveResult) testZ success -(MoveResult) testB success -(MoveResult) testS success -(MoveResult) testI success -(MoveResult) testC success -(MoveResult) testJ success -(MoveResult) testF success -(MoveResult) testD success -(MoveResult) testL success -(CaptureVariables) (0-args, 1 captured variable 'Z'): value is true -(CaptureVariables) (0-args, 1 captured variable 'B'): value is R -(CaptureVariables) (0-args, 1 captured variable 'C'): value is ∂ -(CaptureVariables) (0-args, 1 captured variable 'S'): value is 1000 -(CaptureVariables) (0-args, 1 captured variable 'I'): value is 12345678 -(CaptureVariables) (0-args, 1 captured variable 'J'): value is 3287471278325742 -(CaptureVariables) (0-args, 1 captured variable 'F'): value is Infinity -(CaptureVariables) (0-args, 1 captured variable 'D'): value is -Infinity -(CaptureVariables) (0-args, 8 captured variable 'ZBCSIJFD'): value is true,R,∂,1000,12345678,3287471278325742,Infinity,-Infinity -(CaptureVariables) Caught NPE diff --git a/test/955-lambda-smali/info.txt b/test/955-lambda-smali/info.txt deleted file mode 100644 index aed5e848c4..0000000000 --- a/test/955-lambda-smali/info.txt +++ /dev/null @@ -1,3 +0,0 @@ -Smali-based tests for experimental lambda intructions. - -Obviously needs to run under ART. diff --git a/test/955-lambda-smali/run b/test/955-lambda-smali/run deleted file mode 100755 index 2fb2f89f6b..0000000000 --- a/test/955-lambda-smali/run +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Ensure that the lambda experimental opcodes are turned on for dalvikvm and dex2oat -${RUN} "$@" --experimental lambdas diff --git a/test/955-lambda-smali/smali/BoxUnbox.smali b/test/955-lambda-smali/smali/BoxUnbox.smali deleted file mode 100644 index 915de2d55d..0000000000 --- a/test/955-lambda-smali/smali/BoxUnbox.smali +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LBoxUnbox; -.super Ljava/lang/Object; - -.method public constructor <init>()V -.registers 1 - invoke-direct {p0}, Ljava/lang/Object;-><init>()V - return-void -.end method - -.method public static run()V - .registers 0 - - invoke-static {}, LBoxUnbox;->testBox()V - invoke-static {}, LBoxUnbox;->testBoxEquality()V - invoke-static {}, LBoxUnbox;->testFailures()V - invoke-static {}, LBoxUnbox;->testFailures2()V - invoke-static {}, LBoxUnbox;->testFailures3()V - invoke-static {}, LBoxUnbox;->forceGC()V - - return-void -.end method - -#TODO: should use a closure type instead of ArtMethod. -.method public static doHelloWorld(J)V - .registers 4 # 1 wide parameters, 2 locals - - const-string v0, "(BoxUnbox) Hello boxing world! (0-args, no closure)" - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void -.end method - -# Test boxing and unboxing; the same lambda should be invoked as if there was no box. -.method private static testBox()V - .registers 3 - - create-lambda v0, LBoxUnbox;->doHelloWorld(J)V - box-lambda v2, v0 # v2 = box(v0) - unbox-lambda v0, v2, J # v0 = unbox(v2) - invoke-lambda v0, {} - - return-void -.end method - -# Test that boxing the same lambda twice yield the same object. -.method private static testBoxEquality()V - .registers 6 # 0 parameters, 6 locals - - create-lambda v0, LBoxUnbox;->doHelloWorld(J)V - box-lambda v2, v0 # v2 = box(v0) - box-lambda v3, v0 # v3 = box(v0) - - # The objects should be not-null, and they should have the same reference - if-eqz v2, :is_zero - if-ne v2, v3, :is_not_equal - - const-string v4, "(BoxUnbox) Boxing repeatedly yields referentially-equal objects" - goto :end - -:is_zero - const-string v4, "(BoxUnbox) Boxing repeatedly FAILED: boxing returned null" - goto :end - -:is_not_equal - const-string v4, "(BoxUnbox) Boxing repeatedly FAILED: objects were not same reference" - goto :end - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void -.end method - -# Test exceptions are thrown as expected when used opcodes incorrectly -.method private static testFailures()V - .registers 4 # 0 parameters, 4 locals - - const v0, 0 # v0 = null - const v1, 0 # v1 = null -:start - unbox-lambda v2, v0, J - # attempting to unbox a null lambda will throw NPE -:end - return-void - -:handler - const-string v2, "(BoxUnbox) Caught NPE for unbox-lambda" - sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void - - .catch Ljava/lang/NullPointerException; {:start .. :end} :handler -.end method - -# Test exceptions are thrown as expected when used opcodes incorrectly -.method private static testFailures2()V - .registers 4 # 0 parameters, 4 locals - - const v0, 0 # v0 = null - const v1, 0 # v1 = null -:start - box-lambda v2, v0 # attempting to box a null lambda will throw NPE -:end - return-void - - # TODO: refactor testFailures using a goto - -:handler - const-string v2, "(BoxUnbox) Caught NPE for box-lambda" - sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void - - .catch Ljava/lang/NullPointerException; {:start .. :end} :handler -.end method - -# Test exceptions are thrown as expected when used opcodes incorrectly -.method private static testFailures3()V - .registers 4 # 0 parameters, 4 locals - - const-string v0, "This is not a boxed lambda" -:start - # TODO: use \FunctionalType; here instead - unbox-lambda v2, v0, J - # can't use a string, expects a lambda object here. throws ClassCastException. -:end - return-void - - # TODO: refactor testFailures using a goto - -:handler - const-string v2, "(BoxUnbox) Caught ClassCastException for unbox-lambda" - sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void - - .catch Ljava/lang/ClassCastException; {:start .. :end} :handler -.end method - - -# Force a GC. Used to ensure our weak reference table of boxed lambdas is getting swept. -.method private static forceGC()V - .registers 1 - invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; - move-result-object v0 - invoke-virtual {v0}, Ljava/lang/Runtime;->gc()V - - return-void -.end method diff --git a/test/955-lambda-smali/smali/CaptureVariables.smali b/test/955-lambda-smali/smali/CaptureVariables.smali deleted file mode 100644 index f18b7ff741..0000000000 --- a/test/955-lambda-smali/smali/CaptureVariables.smali +++ /dev/null @@ -1,311 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LCaptureVariables; -.super Ljava/lang/Object; - -.method public constructor <init>()V -.registers 1 - invoke-direct {p0}, Ljava/lang/Object;-><init>()V - return-void -.end method - -.method public static run()V -.registers 8 - # Test boolean capture - const v2, 1 # v2 = true - capture-variable v2, "Z" - create-lambda v0, LCaptureVariables;->printCapturedVariable_Z(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test byte capture - const v2, 82 # v2 = 82, 'R' - capture-variable v2, "B" - create-lambda v0, LCaptureVariables;->printCapturedVariable_B(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test char capture - const v2, 0x2202 # v2 = 0x2202, '∂' - capture-variable v2, "C" - create-lambda v0, LCaptureVariables;->printCapturedVariable_C(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test short capture - const v2, 1000 # v2 = 1000 - capture-variable v2, "S" - create-lambda v0, LCaptureVariables;->printCapturedVariable_S(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test int capture - const v2, 12345678 - capture-variable v2, "I" - create-lambda v0, LCaptureVariables;->printCapturedVariable_I(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test long capture - const-wide v2, 0x0badf00dc0ffeeL # v2 = 3287471278325742 - capture-variable v2, "J" - create-lambda v0, LCaptureVariables;->printCapturedVariable_J(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test float capture - const v2, infinityf - capture-variable v2, "F" - create-lambda v0, LCaptureVariables;->printCapturedVariable_F(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Test double capture - const-wide v2, -infinity - capture-variable v2, "D" - create-lambda v0, LCaptureVariables;->printCapturedVariable_D(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - #TODO: capture objects and lambdas once we have support for it - - # Test capturing multiple variables - invoke-static {}, LCaptureVariables;->testMultipleCaptures()V - - # Test failures - invoke-static {}, LCaptureVariables;->testFailures()V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_Z(J)V - .registers 5 # 1 wide parameter, 3 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'Z'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "Z" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Z)V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_B(J)V - .registers 5 # 1 wide parameter, 3 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'B'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "B" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(C)V # no println(B), use char instead. - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_C(J)V - .registers 5 # 1 wide parameter, 3 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'C'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "C" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(C)V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_S(J)V - .registers 5 # 1 wide parameter, 3 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'S'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "S" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(I)V # no println(S), use int instead - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_I(J)V - .registers 5 # 1 wide parameter, 3 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'I'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "I" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(I)V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_J(J)V - .registers 6 # 1 wide parameter, 4 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'J'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "J" - invoke-virtual {v1, v2, v3}, Ljava/io/PrintStream;->println(J)V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_F(J)V - .registers 5 # 1 parameter, 4 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'F'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "F" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(F)V - - return-void -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_D(J)V - .registers 6 # 1 wide parameter, 4 locals - - const-string v0, "(CaptureVariables) (0-args, 1 captured variable 'D'): value is " - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "D" - invoke-virtual {v1, v2, v3}, Ljava/io/PrintStream;->println(D)V - - return-void -.end method - -# Test capturing more than one variable. -.method private static testMultipleCaptures()V - .registers 4 # 0 parameters, 4 locals - - const v2, 1 # v2 = true - capture-variable v2, "Z" - - const v2, 82 # v2 = 82, 'R' - capture-variable v2, "B" - - const v2, 0x2202 # v2 = 0x2202, '∂' - capture-variable v2, "C" - - const v2, 1000 # v2 = 1000 - capture-variable v2, "S" - - const v2, 12345678 - capture-variable v2, "I" - - const-wide v2, 0x0badf00dc0ffeeL # v2 = 3287471278325742 - capture-variable v2, "J" - - const v2, infinityf - capture-variable v2, "F" - - const-wide v2, -infinity - capture-variable v2, "D" - - create-lambda v0, LCaptureVariables;->printCapturedVariable_ZBCSIJFD(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - -.end method - -#TODO: should use a closure type instead of a long -.method public static printCapturedVariable_ZBCSIJFD(J)V - .registers 7 # 1 wide parameter, 5 locals - - const-string v0, "(CaptureVariables) (0-args, 8 captured variable 'ZBCSIJFD'): value is " - const-string v4, "," - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "Z" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(Z)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "B" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(C)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "C" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(C)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "S" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(I)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "I" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(I)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "J" - invoke-virtual {v1, v2, v3}, Ljava/io/PrintStream;->print(J)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "F" - invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(F)V - invoke-virtual {v1, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - liberate-variable v2, p0, "D" - invoke-virtual {v1, v2, v3}, Ljava/io/PrintStream;->println(D)V - - return-void -.end method - -# Test exceptions are thrown as expected when used opcodes incorrectly -.method private static testFailures()V - .registers 4 # 0 parameters, 4 locals - - const v0, 0 # v0 = null - const v1, 0 # v1 = null -:start - liberate-variable v0, v2, "Z" # invoking a null lambda shall raise an NPE -:end - return-void - -:handler - const-string v2, "(CaptureVariables) Caught NPE" - sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void - - .catch Ljava/lang/NullPointerException; {:start .. :end} :handler -.end method diff --git a/test/955-lambda-smali/smali/Main.smali b/test/955-lambda-smali/smali/Main.smali deleted file mode 100644 index 9892d6124e..0000000000 --- a/test/955-lambda-smali/smali/Main.smali +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LMain; - -.super Ljava/lang/Object; - -.method public static main([Ljava/lang/String;)V - .registers 2 - - invoke-static {}, LSanityCheck;->run()I - invoke-static {}, LTrivialHelloWorld;->run()V - invoke-static {}, LBoxUnbox;->run()V - invoke-static {}, LMoveResult;->run()V - invoke-static {}, LCaptureVariables;->run()V - -# TODO: add tests when verification fails - - return-void -.end method diff --git a/test/955-lambda-smali/smali/MoveResult.smali b/test/955-lambda-smali/smali/MoveResult.smali deleted file mode 100644 index 52f7ba363b..0000000000 --- a/test/955-lambda-smali/smali/MoveResult.smali +++ /dev/null @@ -1,330 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LMoveResult; -.super Ljava/lang/Object; - -.method public constructor <init>()V -.registers 1 - invoke-direct {p0}, Ljava/lang/Object;-><init>()V - return-void -.end method - -.method public static run()V -.registers 8 - invoke-static {}, LMoveResult;->testZ()V - invoke-static {}, LMoveResult;->testB()V - invoke-static {}, LMoveResult;->testS()V - invoke-static {}, LMoveResult;->testI()V - invoke-static {}, LMoveResult;->testC()V - invoke-static {}, LMoveResult;->testJ()V - invoke-static {}, LMoveResult;->testF()V - invoke-static {}, LMoveResult;->testD()V - invoke-static {}, LMoveResult;->testL()V - - return-void -.end method - -# Test that booleans are returned correctly via move-result. -.method public static testZ()V - .registers 6 - - create-lambda v0, LMoveResult;->lambdaZ(J)Z - invoke-lambda v0, {} - move-result v2 - const v3, 1 - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testZ success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testZ failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testZ. Always returns "true". -.method public static lambdaZ(J)Z - .registers 3 - - const v0, 1 - return v0 - -.end method - -# Test that bytes are returned correctly via move-result. -.method public static testB()V - .registers 6 - - create-lambda v0, LMoveResult;->lambdaB(J)B - invoke-lambda v0, {} - move-result v2 - const v3, 15 - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testB success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testB failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testB. Always returns "15". -.method public static lambdaB(J)B - .registers 3 # 1 parameters, 2 locals - - const v0, 15 - return v0 - -.end method - -# Test that shorts are returned correctly via move-result. -.method public static testS()V - .registers 6 - - create-lambda v0, LMoveResult;->lambdaS(J)S - invoke-lambda v0, {} - move-result v2 - const/16 v3, 31000 - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testS success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testS failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testS. Always returns "31000". -.method public static lambdaS(J)S - .registers 3 - - const/16 v0, 31000 - return v0 - -.end method - -# Test that ints are returned correctly via move-result. -.method public static testI()V - .registers 6 - - create-lambda v0, LMoveResult;->lambdaI(J)I - invoke-lambda v0, {} - move-result v2 - const v3, 128000 - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testI success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testI failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testI. Always returns "128000". -.method public static lambdaI(J)I - .registers 3 - - const v0, 128000 - return v0 - -.end method - -# Test that chars are returned correctly via move-result. -.method public static testC()V - .registers 7 - - create-lambda v0, LMoveResult;->lambdaC(J)C - invoke-lambda v0, {} - move-result v2 - const v3, 65535 - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testC success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testC failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testC. Always returns "65535". -.method public static lambdaC(J)C - .registers 3 - - const v0, 65535 - return v0 - -.end method - -# Test that longs are returned correctly via move-result. -.method public static testJ()V - .registers 9 - - create-lambda v0, LMoveResult;->lambdaJ(J)J - invoke-lambda v0, {} - move-result v2 - const-wide v4, 0xdeadf00dc0ffeeL - - if-ne v4, v2, :is_not_equal - const-string v6, "(MoveResult) testJ success" - goto :end - -:is_not_equal - const-string v6, "(MoveResult) testJ failed" - -:end - sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testC. Always returns "0xdeadf00dc0ffeeL". -.method public static lambdaJ(J)J - .registers 5 - - const-wide v0, 0xdeadf00dc0ffeeL - return-wide v0 - -.end method - -# Test that floats are returned correctly via move-result. -.method public static testF()V - .registers 6 - - create-lambda v0, LMoveResult;->lambdaF(J)F - invoke-lambda v0, {} - move-result v2 - const v3, infinityf - - if-ne v3, v2, :is_not_equal - const-string v4, "(MoveResult) testF success" - goto :end - -:is_not_equal - const-string v4, "(MoveResult) testF failed" - -:end - sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testF. Always returns "infinityf". -.method public static lambdaF(J)F - .registers 4 - - const v0, infinityf - return v0 - -.end method - -# Test that doubles are returned correctly via move-result. -.method public static testD()V - .registers 8 - - create-lambda v0, LMoveResult;->lambdaD(J)D - invoke-lambda v0, {} - move-result-wide v2 - const-wide v4, -infinity - - if-ne v4, v2, :is_not_equal - const-string v6, "(MoveResult) testD success" - goto :end - -:is_not_equal - const-string v6, "(MoveResult) testD failed" - -:end - sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testD. Always returns "infinity". -.method public static lambdaD(J)D - .registers 5 - - const-wide v0, -infinity - return-wide v0 - -.end method - - -# Test that objects are returned correctly via move-result. -.method public static testL()V - .registers 8 - - create-lambda v0, LMoveResult;->lambdaL(J)Ljava/lang/String; - invoke-lambda v0, {} - move-result-object v2 - const-string v4, "Interned string" - - # relies on string interning returning identical object references - if-ne v4, v2, :is_not_equal - const-string v6, "(MoveResult) testL success" - goto :end - -:is_not_equal - const-string v6, "(MoveResult) testL failed" - -:end - sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - return-void - -.end method - -# Lambda target for testL. Always returns "Interned string" (string). -.method public static lambdaL(J)Ljava/lang/String; - .registers 5 - - const-string v0, "Interned string" - return-object v0 - -.end method - - diff --git a/test/955-lambda-smali/smali/SanityCheck.smali b/test/955-lambda-smali/smali/SanityCheck.smali deleted file mode 100644 index 4c807d7df9..0000000000 --- a/test/955-lambda-smali/smali/SanityCheck.smali +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LSanityCheck; -.super Ljava/lang/Object; - - -.method public constructor <init>()V -.registers 1 - invoke-direct {p0}, Ljava/lang/Object;-><init>()V - return-void -.end method - -# This test is just here to make sure that we can at least execute basic non-lambda -# functionality such as printing (when lambdas are enabled in the runtime). -.method public static run()I -# Don't use too many registers here to avoid hitting the Stack::SanityCheck frame<2KB assert -.registers 3 - const-string v0, "SanityCheck" - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - const v2, 123456 - return v2 -.end method diff --git a/test/955-lambda-smali/smali/TrivialHelloWorld.smali b/test/955-lambda-smali/smali/TrivialHelloWorld.smali deleted file mode 100644 index 3444b13a65..0000000000 --- a/test/955-lambda-smali/smali/TrivialHelloWorld.smali +++ /dev/null @@ -1,94 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -.class public LTrivialHelloWorld; -.super Ljava/lang/Object; - -.method public constructor <init>()V -.registers 1 - invoke-direct {p0}, Ljava/lang/Object;-><init>()V - return-void -.end method - -.method public static run()V -.registers 8 - # Trivial 0-arg hello world - create-lambda v0, LTrivialHelloWorld;->doHelloWorld(J)V - # TODO: create-lambda should not write to both v0 and v1 - invoke-lambda v0, {} - - # Slightly more interesting 4-arg hello world - create-lambda v2, doHelloWorldArgs(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - # TODO: create-lambda should not write to both v2 and v3 - const-string v4, "A" - const-string v5, "B" - const-string v6, "C" - const-string v7, "D" - invoke-lambda v2, {v4, v5, v6, v7} - - invoke-static {}, LTrivialHelloWorld;->testFailures()V - - return-void -.end method - -#TODO: should use a closure type instead of jlong. -.method public static doHelloWorld(J)V - .registers 5 # 1 wide parameters, 3 locals - - const-string v0, "Hello world! (0-args, no closure)" - - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void -.end method - -#TODO: should use a closure type instead of jlong. -.method public static doHelloWorldArgs(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - .registers 9 # 1 wide parameter, 4 narrow parameters, 3 locals - - const-string v0, " Hello world! (4-args, no closure)" - sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; - - invoke-virtual {v1, p2}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - invoke-virtual {v1, p3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - invoke-virtual {v1, p4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - invoke-virtual {v1, p5}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V - - invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void -.end method - -# Test exceptions are thrown as expected when used opcodes incorrectly -.method private static testFailures()V - .registers 4 # 0 parameters, 4 locals - - const v0, 0 # v0 = null - const v1, 0 # v1 = null -:start - invoke-lambda v0, {} # invoking a null lambda shall raise an NPE -:end - return-void - -:handler - const-string v2, "Caught NPE" - sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; - invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V - - return-void - - .catch Ljava/lang/NullPointerException; {:start .. :end} :handler -.end method diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index 8f8b667429..bba6f8e721 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -26,7 +26,8 @@ TEST_ART_RUN_TESTS := $(subst $(LOCAL_PATH)/,, $(TEST_ART_RUN_TESTS)) # The path where build only targets will be output, e.g. # out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA -art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA +art_run_tests_build_dir := $(call intermediates-dir-for,JAVA_LIBRARIES,art-run-tests)/DATA +art_run_tests_install_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA # A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is # an empty file touched in the intermediate directory. @@ -49,7 +50,8 @@ endif # Helper to create individual build targets for tests. Must be called with $(eval). # $(1): the test number define define-build-art-run-test - dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch + dmart_target := $(art_run_tests_build_dir)/art-run-tests/$(1)/touch + dmart_install_target := $(art_run_tests_install_dir)/art-run-tests/$(1)/touch run_test_options = --build-only ifeq ($(ART_TEST_QUIET),true) run_test_options += --quiet @@ -67,8 +69,13 @@ $$(dmart_target): $(TEST_ART_RUN_TEST_DEPENDENCIES) $(TARGET_JACK_CLASSPATH_DEPE $(LOCAL_PATH)/run-test $$(PRIVATE_RUN_TEST_OPTIONS) --output-path $$(abspath $$(dir $$@)) $(1) $(hide) touch $$@ - TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target) +$$(dmart_install_target): $$(dmart_target) + $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@) + $(hide) cp $$(dir $$<)/* $$(dir $$@)/ + + TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_install_target) dmart_target := + dmart_install_target := run_test_options := endef $(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test)))) @@ -78,12 +85,13 @@ LOCAL_MODULE_TAGS := tests LOCAL_MODULE := art-run-tests LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES) # The build system use this flag to pick up files generated by declare-make-art-run-test. -LOCAL_PICKUP_FILES := $(art_run_tests_dir) +LOCAL_PICKUP_FILES := $(art_run_tests_install_dir) include $(BUILD_PHONY_PACKAGE) # Clear temp vars. -art_run_tests_dir := +art_run_tests_build_dir := +art_run_tests_install_dir := define-build-art-run-test := TEST_ART_RUN_TEST_BUILD_RULES := @@ -111,8 +119,14 @@ endif ifeq ($(ART_TEST_JIT),true) COMPILER_TYPES += jit endif +OPTIMIZING_COMPILER_TYPES := ifeq ($(ART_TEST_OPTIMIZING),true) COMPILER_TYPES += optimizing + OPTIMIZING_COMPILER_TYPES += optimizing +endif +ifeq ($(ART_TEST_OPTIMIZING_GRAPH_COLOR),true) + COMPILER_TYPES += regalloc_gc + OPTIMIZING_COMPILER_TYPES += regalloc_gc endif RELOCATE_TYPES := relocate ifeq ($(ART_TEST_RUN_TEST_NO_RELOCATE),true) @@ -468,14 +482,28 @@ endif TEST_ART_BROKEN_JIT_RUN_TESTS := +# Known broken tests for the graph coloring register allocator. +# These tests were based on the linear scan allocator, which makes different decisions than +# the graph coloring allocator. (These attempt to test for code quality, not correctness.) +TEST_ART_BROKEN_OPTIMIZING_GRAPH_COLOR := \ + 570-checker-select \ + 484-checker-register-hints + +ifneq (,$(filter regalloc_gc,$(COMPILER_TYPES))) + ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ + regalloc_gc,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), \ + $(TEST_ART_BROKEN_OPTIMIZING_GRAPH_COLOR),$(ALL_ADDRESS_SIZES)) +endif + # Known broken tests for the mips32 optimizing compiler backend. TEST_ART_BROKEN_OPTIMIZING_MIPS_RUN_TESTS := \ 510-checker-try-catch \ ifeq (mips,$(TARGET_ARCH)) - ifneq (,$(filter optimizing,$(COMPILER_TYPES))) + ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ - optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), \ $(TEST_ART_BROKEN_OPTIMIZING_MIPS_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -487,9 +515,9 @@ TEST_ART_BROKEN_OPTIMIZING_MIPS_RUN_TESTS := TEST_ART_BROKEN_OPTIMIZING_MIPS64_RUN_TESTS := \ ifeq (mips64,$(TARGET_ARCH)) - ifneq (,$(filter optimizing,$(COMPILER_TYPES))) + ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ - optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), \ $(TEST_ART_BROKEN_OPTIMIZING_MIPS64_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -502,9 +530,9 @@ TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS := \ 454-get-vreg \ 457-regs \ -ifneq (,$(filter optimizing,$(COMPILER_TYPES))) +ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ - optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ $(IMAGE_TYPES),$(PICTEST_TYPES),ndebuggable,$(TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -513,9 +541,9 @@ TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS := # Tests that should fail when the optimizing compiler compiles them debuggable. TEST_ART_BROKEN_OPTIMIZING_DEBUGGABLE_RUN_TESTS := \ -ifneq (,$(filter optimizing,$(COMPILER_TYPES))) +ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ - optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ $(IMAGE_TYPES),$(PICTEST_TYPES),debuggable,$(TEST_ART_BROKEN_OPTIMIZING_DEBUGGABLE_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -527,13 +555,10 @@ TEST_ART_BROKEN_INTERPRETER_READ_BARRIER_RUN_TESTS := # Tests that should fail in the read barrier configuration with the Optimizing compiler (AOT). # 484: Baker's fast path based read barrier compiler instrumentation generates code containing # more parallel moves on x86, thus some Checker assertions may fail. -# 527: On ARM64 and ARM, the read barrier instrumentation does not support the HIntermediateAddress -# instruction yet (b/26601270). # 537: Expects an array copy to be intrinsified on x86-64, but calling-on-slowpath intrinsics are # not yet handled in the read barrier configuration. TEST_ART_BROKEN_OPTIMIZING_READ_BARRIER_RUN_TESTS := \ 484-checker-register-hints \ - 527-checker-array-access-split \ 537-checker-arraycopy # Tests that should fail in the read barrier configuration with JIT (Optimizing compiler). @@ -547,9 +572,9 @@ ifeq ($(ART_USE_READ_BARRIER),true) $(TEST_ART_BROKEN_INTERPRETER_READ_BARRIER_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif - ifneq (,$(filter optimizing,$(COMPILER_TYPES))) + ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES), \ - $(PREBUILD_TYPES),optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES), \ + $(PREBUILD_TYPES),$(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES), \ $(JNI_TYPES),$(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), \ $(TEST_ART_BROKEN_OPTIMIZING_READ_BARRIER_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -578,9 +603,9 @@ TEST_ART_BROKEN_OPTIMIZING_HEAP_POISONING_RUN_TESTS := \ 055-enum-performance ifeq ($(ART_HEAP_POISONING),true) - ifneq (,$(filter optimizing,$(COMPILER_TYPES))) + ifneq (,$(filter $(OPTIMIZING_COMPILER_TYPES),$(COMPILER_TYPES))) ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES), \ - $(PREBUILD_TYPES),optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ + $(PREBUILD_TYPES),$(OPTIMIZING_COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), \ $(TEST_ART_BROKEN_OPTIMIZING_HEAP_POISONING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) endif @@ -727,6 +752,9 @@ define define-test-art-run-test ifeq ($(4),optimizing) test_groups += ART_RUN_TEST_$$(uc_host_or_target)_OPTIMIZING_RULES run_test_options += --optimizing + else ifeq ($(4),regalloc_gc) + test_groups += ART_RUN_TEST_$$(uc_host_or_target)_OPTIMIZING_GRAPH_COLOR_RULES + run_test_options += --optimizing -Xcompiler-option --register-allocation-strategy=graph-color else ifeq ($(4),interpreter) test_groups += ART_RUN_TEST_$$(uc_host_or_target)_INTERPRETER_RULES @@ -810,6 +838,10 @@ define define-test-art-run-test endif endif image_suffix := $(4) + ifeq ($(4),regalloc_gc) + # Graph coloring tests share the image_suffix with optimizing tests. + image_suffix := optimizing + endif ifeq ($(9),no-image) test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_IMAGE_RULES run_test_options += --no-image diff --git a/test/MyClassNatives/MyClassNatives.java b/test/MyClassNatives/MyClassNatives.java index 19c13f78d9..4a8b0e0241 100644 --- a/test/MyClassNatives/MyClassNatives.java +++ b/test/MyClassNatives/MyClassNatives.java @@ -35,11 +35,11 @@ class MyClassNatives { static native int getText(long val1, Object obj1, long val2, Object obj2); synchronized native Object []getSinkPropertiesNative(String path); - native Class instanceMethodThatShouldReturnClass(); - static native Class staticMethodThatShouldReturnClass(); + native Class<?> instanceMethodThatShouldReturnClass(); + static native Class<?> staticMethodThatShouldReturnClass(); - native void instanceMethodThatShouldTakeClass(int i, Class c); - static native void staticMethodThatShouldTakeClass(int i, Class c); + native void instanceMethodThatShouldTakeClass(int i, Class<?> c); + static native void staticMethodThatShouldTakeClass(int i, Class<?> c); native float checkFloats(float f1, float f2); native void forceStackParameters(int i1, int i2, int i3, int i4, int i5, int i6, int i8, int i9, diff --git a/test/common/runtime_state.cc b/test/common/runtime_state.cc index 806e130cb9..ee2ee1a36a 100644 --- a/test/common/runtime_state.cc +++ b/test/common/runtime_state.cc @@ -130,18 +130,18 @@ extern "C" JNIEXPORT void JNICALL Java_Main_ensureJitCompiled(JNIEnv* env, return; } - ScopedObjectAccess soa(Thread::Current()); - - ScopedUtfChars chars(env, method_name); - CHECK(chars.c_str() != nullptr); - - mirror::Class* klass = soa.Decode<mirror::Class*>(cls); - ArtMethod* method = klass->FindDeclaredDirectMethodByName(chars.c_str(), kRuntimePointerSize); + ArtMethod* method = nullptr; + { + ScopedObjectAccess soa(Thread::Current()); + + ScopedUtfChars chars(env, method_name); + CHECK(chars.c_str() != nullptr); + method = soa.Decode<mirror::Class*>(cls)->FindDeclaredDirectMethodByName( + chars.c_str(), kRuntimePointerSize); + } jit::JitCodeCache* code_cache = jit->GetCodeCache(); OatQuickMethodHeader* header = nullptr; - // Make sure there is a profiling info, required by the compiler. - ProfilingInfo::Create(soa.Self(), method, /* retry_allocation */ true); while (true) { header = OatQuickMethodHeader::FromEntryPoint(method->GetEntryPointFromQuickCompiledCode()); if (code_cache->ContainsPc(header->GetCode())) { @@ -149,6 +149,9 @@ extern "C" JNIEXPORT void JNICALL Java_Main_ensureJitCompiled(JNIEnv* env, } else { // Sleep to yield to the compiler thread. usleep(1000); + ScopedObjectAccess soa(Thread::Current()); + // Make sure there is a profiling info, required by the compiler. + ProfilingInfo::Create(soa.Self(), method, /* retry_allocation */ true); // Will either ensure it's compiled or do the compilation itself. jit->CompileMethod(method, soa.Self(), /* osr */ false); } diff --git a/test/etc/run-test-jar b/test/etc/run-test-jar index 64bf4f3046..c6c9380412 100755 --- a/test/etc/run-test-jar +++ b/test/etc/run-test-jar @@ -553,12 +553,10 @@ else if [ "$TIME_OUT" = "timeout" ]; then # Add timeout command if time out is desired. # - # Note: We use nested timeouts. The inner timeout sends SIGRTMIN+2 (usually 36) to ART, which - # will induce a full thread dump before abort. However, dumping threads might deadlock, - # so the outer timeout sends the regular SIGTERM after an additional minute to ensure - # termination (without dumping all threads). - TIME_PLUS_ONE=$(($TIME_OUT_VALUE + 60)) - cmdline="timeout ${TIME_PLUS_ONE}s timeout -s SIGRTMIN+2 ${TIME_OUT_VALUE}s $cmdline" + # Note: We first send SIGRTMIN+2 (usually 36) to ART, which will induce a full thread dump + # before abort. However, dumping threads might deadlock, so we also use the "-k" + # option to definitely kill the child. + cmdline="timeout -k 120s -s SIGRTMIN+2 ${TIME_OUT_VALUE}s $cmdline" fi if [ "$DEV_MODE" = "y" ]; then |