# HG changeset patch # User Christian Humer # Date 1429032213 -7200 # Node ID 1ed58a90b510e777d1af4b400cc1e3550acff157 # Parent 354b7f1b4acff925e642fc37c0a8ce6451a072db Truffle-DSL: fixed isFrameUsedByAnyGuard() was incomplete diff -r 354b7f1b4acf -r 1ed58a90b510 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Tue Apr 14 19:23:32 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Tue Apr 14 19:23:33 2015 +0200 @@ -1792,7 +1792,11 @@ if (specialization.isFallback()) { builder.startIf().startCall("guardFallback"); if (node.isFrameUsedByAnyGuard()) { - builder.string(FRAME_VALUE); + if (currentValues.get(FRAME_VALUE) != null) { + builder.string(FRAME_VALUE); + } else { + builder.nullLiteral(); + } } currentValues.addReferencesTo(builder); diff -r 354b7f1b4acf -r 1ed58a90b510 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Tue Apr 14 19:23:32 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Tue Apr 14 19:23:33 2015 +0200 @@ -143,8 +143,18 @@ if (!specialization.isReachable()) { continue; } - if (specialization.isFrameUsed()) { - return true; + Parameter frame = specialization.getFrame(); + if (frame != null) { + for (GuardExpression guard : specialization.getGuards()) { + if (guard.getExpression().findBoundVariableElements().contains(frame.getVariableElement())) { + return true; + } + } + for (CacheExpression cache : specialization.getCaches()) { + if (cache.getExpression().findBoundVariableElements().contains(frame.getVariableElement())) { + return true; + } + } } } return false;