# HG changeset patch # User Christian Wimmer # Date 1431644955 25200 # Node ID 30fe503e1c46317640ee6976e483eba26d4c1de9 # Parent 5cd0166c1b254a3518684adb0e83dffe3d6b65a9 Allow null value for wordTypes diff -r 5cd0166c1b25 -r 30fe503e1c46 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Thu May 14 16:08:49 2015 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Thu May 14 16:09:15 2015 -0700 @@ -91,7 +91,7 @@ } public T changeToWord(T node) { - if (wordTypes.isWord(node)) { + if (wordTypes != null && wordTypes.isWord(node)) { node.setStamp(wordTypes.getWordStamp(StampTool.typeOrNull(node))); } return node; @@ -127,6 +127,11 @@ */ public InvokeNode createInvoke(Class declaringClass, String name, InvokeKind invokeKind, FrameStateBuilder frameStateBuilder, int bci, ValueNode... args) { boolean isStatic = invokeKind == InvokeKind.Static; + ResolvedJavaMethod method = findMethod(declaringClass, name, isStatic); + return createInvoke(method, invokeKind, frameStateBuilder, bci, args); + } + + public ResolvedJavaMethod findMethod(Class declaringClass, String name, boolean isStatic) { ResolvedJavaMethod method = null; for (Method m : declaringClass.getDeclaredMethods()) { if (Modifier.isStatic(m.getModifiers()) == isStatic && m.getName().equals(name)) { @@ -135,7 +140,7 @@ } } assert method != null : "did not find method in " + declaringClass + " named " + name; - return createInvoke(method, invokeKind, frameStateBuilder, bci, args); + return method; } /** @@ -181,12 +186,14 @@ } int argIndex = 0; if (!isStatic) { - Kind expected = wordTypes.asKind(method.getDeclaringClass()); + ResolvedJavaType expectedType = method.getDeclaringClass(); + Kind expected = wordTypes == null ? expectedType.getKind() : wordTypes.asKind(expectedType); Kind actual = args[argIndex++].stamp().getStackKind(); assert expected == actual : graph + ": wrong kind of value for receiver argument of call to " + method + " [" + actual + " != " + expected + "]"; } for (int i = 0; i != signature.getParameterCount(false); i++) { - Kind expected = wordTypes.asKind(signature.getParameterType(i, method.getDeclaringClass())).getStackKind(); + JavaType expectedType = signature.getParameterType(i, method.getDeclaringClass()); + Kind expected = wordTypes == null ? expectedType.getKind().getStackKind() : wordTypes.asKind(expectedType).getStackKind(); Kind actual = args[argIndex++].stamp().getStackKind(); if (expected != actual) { throw new AssertionError(graph + ": wrong kind of value for argument " + i + " of call to " + method + " [" + actual + " != " + expected + "]");