Mercurial > hg > graal-jvmci-8
changeset 11613:bf7c26dc56e1
TruffleCache: use frame state values to check argument stamps; iterating over local nodes is no longer sufficient since e231671f39d0.
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Thu, 12 Sep 2013 16:09:50 +0200 |
parents | 5f532ea846fb |
children | 57674ff0f7e2 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java |
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 14:43:21 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java Thu Sep 12 16:09:50 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; } }