Mercurial > hg > truffle
changeset 15991:df679a9e6de0
[inliner] additional bits and pieces of documentation and assertions
author | Miguel Garcia <miguel.m.garcia@oracle.com> |
---|---|
date | Sun, 01 Jun 2014 19:50:02 +0200 |
parents | 5aaef6a8985d |
children | 794daffa3850 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java |
diffstat | 1 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java Sun Jun 01 16:06:07 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java Sun Jun 01 19:50:02 2014 +0200 @@ -122,7 +122,15 @@ private static ArrayList<Node> replaceParamsWithMoreInformativeArguments(final Invoke invoke, final StructuredGraph newGraph, final HighTierContext context) { NodeInputList<ValueNode> args = invoke.callTarget().arguments(); ArrayList<Node> parameterUsages = null; - for (ParameterNode param : newGraph.getNodes(ParameterNode.class).snapshot()) { + List<ParameterNode> params = newGraph.getNodes(ParameterNode.class).snapshot(); + assert params.size() <= args.size(); + /* + * param-nodes that see no use (eg, after canonicalization) don't occur in `params`. That's + * why the sizes of `params` and `args` don't always match exactly. It's always possible to + * pair a param-node with its corresponding arg-node using param.index() as index into the + * `args` list. + */ + for (ParameterNode param : params) { if (param.usages().isNotEmpty()) { ValueNode arg = args.get(param.index()); if (arg.isConstant()) { @@ -130,6 +138,7 @@ parameterUsages = trackParameterUsages(param, parameterUsages); // collect param usages before replacing the param newGraph.replaceFloating(param, ConstantNode.forConstant(constant, context.getMetaAccess(), newGraph)); + // param-node gone, leaving a gap in the sequence given by param.index() } else { Stamp joinedStamp = param.stamp().join(arg.stamp()); if (joinedStamp != null && !joinedStamp.equals(param.stamp())) { @@ -141,6 +150,7 @@ } } } + assert (parameterUsages == null) || (!parameterUsages.isEmpty()); return parameterUsages; }