Mercurial > hg > truffle
changeset 5574:13624e51918a
allow null for @ConstantParameter values
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 12 Jun 2012 23:05:42 +0200 |
parents | f5cfb62f17b8 |
children | eddf8a51be38 |
files | graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java |
diffstat | 1 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java Tue Jun 12 22:59:40 2012 +0200 +++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java Tue Jun 12 23:05:42 2012 +0200 @@ -68,10 +68,12 @@ } public Key add(String name, Object value) { - assert value != null; assert !map.containsKey(name); map.put(name, value); - hash = hash ^ name.hashCode() * (value.hashCode() + 1); + hash = hash ^ name.hashCode(); + if (value != null) { + hash *= (value.hashCode() + 1); + } return this; } @@ -194,7 +196,6 @@ if (c != null) { String name = c.value(); Object arg = key.get(name); - assert arg != null : method + ": requires a constant named " + name; Kind kind = signature.argumentKindAt(i); assert checkConstantArgument(method, signature, i, name, arg, kind); replacements.put(snippetGraph.getLocal(i), ConstantNode.forConstant(Constant.forBoxed(kind, arg), runtime, snippetCopy)); @@ -327,11 +328,11 @@ private static boolean checkConstantArgument(final ResolvedJavaMethod method, Signature signature, int i, String name, Object arg, Kind kind) { if (kind.isObject()) { Class<?> type = signature.argumentTypeAt(i, method.holder()).resolve(method.holder()).toJava(); - assert type.isInstance(arg) : + assert arg == null || type.isInstance(arg) : method + ": wrong value type for " + name + ": expected " + type.getName() + ", got " + arg.getClass().getName(); } else { - assert kind.toBoxedJavaClass() == arg.getClass() : - method + ": wrong value kind for " + name + ": expected " + kind + ", got " + arg.getClass().getSimpleName(); + assert arg != null && kind.toBoxedJavaClass() == arg.getClass() : + method + ": wrong value kind for " + name + ": expected " + kind + ", got " + (arg == null ? "null" : arg.getClass().getSimpleName()); } return true; }