Mercurial > hg > graal-compiler
changeset 11614:57674ff0f7e2
Merge
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Thu, 12 Sep 2013 19:01:40 +0200 |
parents | 54dff87002e0 (current diff) bf7c26dc56e1 (diff) |
children | 3f706be38bf9 |
files | |
diffstat | 1 files changed, 11 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java Thu Sep 12 17:32:45 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java Thu Sep 12 19:01:40 2013 +0200 @@ -306,14 +306,18 @@ private static boolean checkArgumentStamps(StructuredGraph graph, NodeInputList<ValueNode> arguments) { assert graph.getNodes(LocalNode.class).count() <= arguments.count(); - for (LocalNode localNode : graph.getNodes(LocalNode.class)) { - Stamp newStamp = localNode.stamp().meet(arguments.get(localNode.index()).stamp()); - if (!newStamp.equals(localNode.stamp())) { - if (TruffleCompilerOptions.TraceTruffleCacheDetails.getValue()) { - TTY.println(String.format("[truffle] graph cache entry too specific for method %s argument %s previous stamp %s new stamp %s.", graph.method(), localNode, localNode.stamp(), - newStamp)); + FrameState startState = graph.start().stateAfter(); + for (int i = 0; i < arguments.size(); i++) { + ValueNode localNode = startState.localAt(i); + if (localNode != null) { + Stamp newStamp = localNode.stamp().meet(arguments.get(i).stamp()); + if (!newStamp.equals(localNode.stamp())) { + if (TruffleCompilerOptions.TraceTruffleCacheDetails.getValue()) { + TTY.println(String.format("[truffle] graph cache entry too specific for method %s argument %s previous stamp %s new stamp %s.", graph.method(), localNode, localNode.stamp(), + newStamp)); + } + return false; } - return false; } }