< prev index next >

test/compiler/jvmci/compilerToVM/ExecuteInstalledCodeTest.java

Print this page

        

*** 2,11 **** --- 2,12 ---- import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.code.InvalidInstalledCodeException; import jdk.vm.ci.hotspot.CompilerToVMHelper; import jdk.test.lib.Asserts; + import jdk.test.lib.Utils; import jdk.test.lib.Pair; import sun.hotspot.code.NMethod; import java.lang.reflect.Constructor; import java.lang.reflect.Executable;
*** 33,43 **** * compiler.jvmci.compilerToVM.ExecuteInstalledCodeTest */ public class ExecuteInstalledCodeTest { - public static void main(String[] args) { ExecuteInstalledCodeTest test = new ExecuteInstalledCodeTest(); List<CompileCodeTestCase> testCases = new ArrayList<>(); testCases.addAll(CompileCodeTestCase.generate(/* bci = */ -1)); testCases .stream() --- 34,43 ----
*** 52,70 **** private void checkSanity(CompileCodeTestCase testCase) { System.out.println(testCase); // to have a clean state testCase.deoptimize(); Pair<Object, ? extends Throwable> reflectionResult; ! Object[] args = getArguments(testCase.executable); ! reflectionResult = invoke(testCase, args); NMethod nMethod = testCase.compile(); if (nMethod == null) { throw new Error(testCase + " : nmethod is null"); } ! InstalledCode installedCode = new InstalledCode( ! testCase.executable.getName()); ! installedCode.setAddress(nMethod.address); Object result = null; Throwable expectedException = reflectionResult.second; boolean gotException = true; try { args = addReceiver(testCase, args); --- 52,69 ---- private void checkSanity(CompileCodeTestCase testCase) { System.out.println(testCase); // to have a clean state testCase.deoptimize(); Pair<Object, ? extends Throwable> reflectionResult; ! Object[] args = Utils.getNullValues( ! testCase.executable.getParameterTypes()); ! reflectionResult = testCase.invoke(args); NMethod nMethod = testCase.compile(); if (nMethod == null) { throw new Error(testCase + " : nmethod is null"); } ! InstalledCode installedCode = testCase.toInstalledCode(); Object result = null; Throwable expectedException = reflectionResult.second; boolean gotException = true; try { args = addReceiver(testCase, args);
*** 105,176 **** private Object[] addReceiver(CompileCodeTestCase testCase, Object[] args) { if (!Modifier.isStatic(testCase.executable.getModifiers())) { // add instance as 0th arg Object[] newArgs = new Object[args.length + 1]; ! newArgs[0] = getReciever(testCase); System.arraycopy(args, 0, newArgs, 1, args.length); args = newArgs; } return args; } - - private Object getReciever(CompileCodeTestCase testCase) { - return CompileCodeTestCase.RECEIVERS.get( - testCase.executable.getDeclaringClass()); - } - - public Pair<Object, ? extends Throwable> invoke( - CompileCodeTestCase testCase, Object[] args) { - Executable executable = testCase.executable; - boolean old = executable.isAccessible(); - executable.setAccessible(true); - try { - try { - if (executable instanceof Method) { - Method m = (Method) executable; - return new Pair<>(m.invoke(getReciever(testCase), args), null); - } - - if (executable instanceof Constructor) { - Constructor c = (Constructor) executable; - return new Pair<>(c.newInstance(args), null); - } - } catch (InvocationTargetException e) { - return new Pair<>(null, e.getCause()); - } catch (Throwable e) { - return new Pair<>(null, e); - } - } finally { - executable.setAccessible(old); - } - throw new Error(executable + " has unsupported type " - + executable.getClass()); - } - - private Object[] getArguments(Executable method) { - Class<?>[] params = method.getParameterTypes(); - Object[] result = new Object[params.length]; - int i = 0; - for (Class<?> aClass : params) { - result[i++] = getArgument(aClass); - } - return result; - } - private static Map<Class<?>, Object> DEFAULT_VALUES = new HashMap<>(); - static { - DEFAULT_VALUES.put(boolean.class, false); - DEFAULT_VALUES.put(byte.class, (byte) 0); - DEFAULT_VALUES.put(short.class, (short) 0); - DEFAULT_VALUES.put(char.class, '\0'); - DEFAULT_VALUES.put(int.class, 0); - DEFAULT_VALUES.put(long.class, 0L); - DEFAULT_VALUES.put(float.class, 0.0f); - DEFAULT_VALUES.put(double.class, 0.0d); - } - private Object getArgument(Class<?> aClass) { - if (aClass.isPrimitive()) { - return DEFAULT_VALUES.get(aClass); - } - return null; - } } --- 104,115 ---- private Object[] addReceiver(CompileCodeTestCase testCase, Object[] args) { if (!Modifier.isStatic(testCase.executable.getModifiers())) { // add instance as 0th arg Object[] newArgs = new Object[args.length + 1]; ! newArgs[0] = testCase.receiver; System.arraycopy(args, 0, newArgs, 1, args.length); args = newArgs; } return args; } }
< prev index next >