Mercurial > hg > graal-jvmci-8
changeset 21461:2e6ce8d1d067
Warn about null arguments to snippets and allow recursive calls in snippets
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 18 May 2015 16:51:01 -0700 |
parents | 877d718f3ab2 |
children | ac2694c465db |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon May 18 14:57:05 2015 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon May 18 16:51:01 2015 -0700 @@ -87,6 +87,7 @@ public abstract static class SnippetInfo { protected final ResolvedJavaMethod method; + protected ResolvedJavaMethod original; protected final LocationIdentity[] privateLocations; /** @@ -175,6 +176,10 @@ return lazy().constantParameters.length; } + public void setOriginalMethod(ResolvedJavaMethod original) { + this.original = original; + } + public boolean isConstantParameter(int paramIdx) { return lazy().constantParameters[paramIdx]; } @@ -263,6 +268,7 @@ } public Arguments addConst(String name, Object value) { + assert value != null; return addConst(name, value, null); } @@ -560,7 +566,7 @@ this.info = args.info; Object[] constantArgs = getConstantArgs(args); - StructuredGraph snippetGraph = providers.getReplacements().getSnippet(args.info.method, constantArgs); + StructuredGraph snippetGraph = providers.getReplacements().getSnippet(args.info.method, args.info.original, constantArgs); instantiationTimer = Debug.timer("SnippetTemplateInstantiationTime[%#s]", args); instantiationCounter = Debug.metric("SnippetTemplateInstantiationCount[%#s]", args); @@ -781,6 +787,8 @@ for (int i = 0; i < args.info.getParameterCount(); i++) { if (!args.info.isConstantParameter(i)) { constantArgs[i] = null; + } else { + assert constantArgs[i] != null : "Can't pass raw null through as argument"; } } return constantArgs;