How to write a function call with Truffle

Remi Forax forax at univ-mlv.fr
Thu Aug 15 07:38:00 PDT 2013


I've written a small 'not a lisp' language using Truffle
(using only the API part, not the DSL part)
   https://github.com/forax/ninal

but I've some trouble to understand how writing a function call,
so Graal/Truffle chokes when it tries to JIT the code for a simple fib 
function like this:

(def fib (n)
   (if (< n 1)
     1
     (+ (fib (- n 1)) (fib (- n 2)))
   )
)

(print (fib 17))

[forax at localhost ninal]$ mx.sh --java-home=/usr/jdk/jdk1.8.0 vm 
-G:+DumpOnError -XX:-BootstrapGraal -XX:+PrintCompilation -cp classes 
fr.umlv.ninal.Main fib.ninal
      59    1     n 
com.oracle.graal.hotspot.bridge.CompilerToVMImpl::executeCompiledMethodIntrinsic 
(native)   (static)
     193    2     n       java.lang.System::arraycopy (native) (static)
     239    3     n       sun.misc.Unsafe::getInt (native)
       0    2             sun.nio.cs.UTF_8$Encoder::encode(char[], int, 
int, byte[]) (359 bytes)
       0    1             java.lang.String::charAt(int) (29 bytes)
       0    3             java.lang.String::indexOf(int, int) (70 bytes)
       0    4             java.lang.String::hashCode() (55 bytes)
using Graal Truffle Runtime
IfNode(sourceSection = null) {
     condition = TestOpNode(sourceSection = null, binOp = LT) {
         leftNode = VarLoadNode(sourceSection = null, slot = [0,:n,Object])
         rightNode = ConstNode(sourceSection = null, constant = 1)
     }
     trueNode = ConstNode(sourceSection = null, constant = 1)
     falseNode = NumberOpNode(sourceSection = null, binOp = ADD) {
         leftNode = FunCallNode(sourceSection = null, name = :fib) {
             argumentNodes = [NumberOpNode(sourceSection = null, binOp = 
SUB) {
                 leftNode = VarLoadNode(sourceSection = null, slot = 
[0,:n,Object])
                 rightNode = ConstNode(sourceSection = null, constant = 1)
             }]
         }
         rightNode = FunCallNode(sourceSection = null, name = :fib) {
             argumentNodes = [NumberOpNode(sourceSection = null, binOp = 
SUB) {
                 leftNode = VarLoadNode(sourceSection = null, slot = 
[0,:n,Object])
                 rightNode = ConstNode(sourceSection = null, constant = 2)
             }]
         }
     }
}
     648    4     n       sun.misc.Unsafe::getObject (native)
     651    5     n       java.lang.Thread::currentThread (native) (static)
     736    6     n       java.lang.Object::getClass (native)
     742    7     n       java.lang.Class::isInstance (native)
     795    8     n       java.lang.Object::hashCode (native)
     874    9     n       sun.misc.Unsafe::getObjectVolatile (native)
     878   10     n       java.lang.System::identityHashCode (native)   
(static)
    1012   11     n       java.lang.Object::clone (native)
    1228   12     n       sun.misc.Unsafe::putObject (native)
       0    5             java.io.DataOutputStream::writeUTF(String, 
DataOutput) (435 bytes)
       0    7             java.util.HashMap::indexFor(int, int) (6 bytes)
       0    8 java.lang.CharacterDataLatin1::isWhitespace(int) (23 bytes)
       0    6             java.lang.String::indexOf(char[], int, int, 
char[], int, int, int) (166 bytes)
       0    9 
sun.reflect.generics.parser.SignatureParser::parseIdentifier() (115 bytes)
    1404   13     n       java.lang.Class::isPrimitive (native)
       0   10             java.util.HashMap::transfer(Object[]) (155 bytes)
    1746   14     n       java.lang.Class::getComponentType (native)
    1762   15     n       java.lang.reflect.Array::newArray (native)   
(static)
       0   11             java.lang.String::replace(char, char) (127 bytes)
    2709   16     n       java.lang.Class::isAssignableFrom (native)
    3756   17     n       sun.reflect.Reflection::getCallerClass 
(native)   (static)
    3760   18     n       java.lang.Class::getModifiers (native)
    3761   19     n       java.lang.Class::getClassLoader0 (native)
       0   12 sun.reflect.generics.parser.SignatureParser::current() (40 
bytes)
       0   13             java.lang.Object::<init>() (1 bytes)
       0   14             java.lang.Character::isWhitespace(char) (5 bytes)
       0   15             java.lang.Character::isWhitespace(int) (9 bytes)
       0   16             java.lang.StringBuilder::<init>() (7 bytes)
    4809   20     n       sun.reflect.ConstantPool::getUTF8At0 (native)
    5389   21     n       sun.misc.Unsafe::getLong (native)
    6554   22     n       sun.misc.Unsafe::getShort (native)
       0   17             java.lang.CharacterData::of(int) (120 bytes)
       0   18 java.lang.CharacterDataLatin1::getProperties(int) (11 bytes)
       0   19 
java.lang.AbstractStringBuilder::ensureCapacityInternal(int) (16 bytes)
       0   20             java.lang.String::lastIndexOf(int, int) (52 bytes)
       0   21             java.lang.Math::min(int, int) (11 bytes)
       0   22             java.lang.String::equals(Object) (81 bytes)
       0   23             java.util.ArrayList::access$100(ArrayList) (5 
bytes)
       0   24             java.lang.ref.Reference::get() (5 bytes)
       0   25             java.util.HashMap::hash(Object) (33 bytes)
    7227   23     n       java.lang.Class::getConstantPool (native)
       0   26             java.lang.reflect.Method::getName() (5 bytes)
       0   27             java.lang.String::startsWith(String, int) (72 
bytes)
       0   28 
com.oracle.graal.hotspot.meta.HotSpotSignature::parseSignature(String, 
int) (199 bytes)
       0   29             java.util.ArrayList::size() (5 bytes)
       0   30 java.lang.AbstractStringBuilder::append(char) (29 bytes)
       0   31             java.lang.StringBuilder::append(char) (8 bytes)
       0   32             java.util.HashMap$Entry::<init>(int, Object, 
Object, Object) (26 bytes)
       0   33             java.util.Arrays::copyOfRange(char[], int, 
int) (63 bytes)
       0   34             java.lang.String::<init>(char[], int, int) (62 
bytes)
       0   35 com.oracle.graal.graph.Graph::access$000(Graph) (5 bytes)
       0   36             java.lang.String::length() (6 bytes)
    8064   24     n       sun.misc.Unsafe::getBoolean (native)
       0   37             java.util.HashMap::get(Object) (20 bytes)
       0   38             java.util.ArrayList::rangeCheck(int) (22 bytes)
       0   39             java.util.ArrayList::elementData(int) (7 bytes)
       0   40 sun.reflect.generics.parser.SignatureParser::advance() (37 
bytes)
       0   41             java.util.ArrayList::get(int) (11 bytes)
       0   42             java.util.HashMap$Entry::getValue() (5 bytes)
       0   43             com.oracle.graal.graph.Node::id() (5 bytes)
       0   44 java.lang.ThreadLocal::access$400(ThreadLocal) (5 bytes)
       0   45             java.lang.ThreadLocal::getMap(Thread) (5 bytes)
       0   46             java.lang.ThreadLocal::get() (38 bytes)
       0   47 
java.lang.ThreadLocal$ThreadLocalMap::getEntry(ThreadLocal) (42 bytes)
       0   48 
java.lang.ThreadLocal$ThreadLocalMap::access$000(ThreadLocal$ThreadLocalMap, 
ThreadLocal) (6 bytes)
       0   49 
com.oracle.graal.graph.NodeClass$NodeClassIterator::forward() (161 bytes)
       0   50             java.util.BitSet::wordIndex(int) (5 bytes)
       0   51             com.oracle.graal.graph.Node::getNodeClass() (5 
bytes)
       0   52 java.util.ArrayList::ensureExplicitCapacity(int) (26 bytes)
    8600   25     n       java.lang.String::intern (native)
       0   53 java.util.ArrayList::ensureCapacityInternal(int) (23 bytes)
       0   54             java.util.BitSet::checkInvariants() (111 bytes)
       0   55 com.oracle.graal.graph.NodeClass::getNode(Node, long) (12 
bytes)
       0   56             java.util.ArrayList$Itr::hasNext() (20 bytes)
       0   57 com.oracle.graal.debug.internal.DebugScope::getInstance() 
(53 bytes)
       0   58             java.util.ArrayList::add(Object) (29 bytes)
       0   59 
com.oracle.graal.graph.NodeClass$NodeClassIterator::hasNext() (83 bytes)
       0   60 com.oracle.graal.graph.Graph$NodeIterator::forward() (62 
bytes)
       0   61 com.oracle.graal.graph.NodeClass::access$300(Node, long) 
(6 bytes)
       0   62 
com.oracle.graal.graph.iterators.AbstractNodeIterable::<init>() (5 bytes)
       0   63             com.oracle.graal.graph.Node::isAlive() (13 bytes)
       0   64 java.util.ArrayList$Itr::checkForComodification() (23 bytes)
       0   65             java.util.BitSet::get(int) (69 bytes)
       0   66             java.util.ArrayList$Itr::next() (66 bytes)
       0   67 com.oracle.graal.graph.NodeBitMap::isMarked(Node) (12 bytes)
       0   68 
com.oracle.graal.graph.NodeUsagesList::access$100(NodeUsagesList) (5 bytes)
       0   69 com.oracle.graal.graph.NodeUsagesList$1::hasNext() (48 bytes)
       0   70 
com.oracle.graal.debug.internal.DebugScope::getQualifiedName() (5 bytes)
       0   71 
com.oracle.graal.compiler.GraalDebugConfig::checkDebugFilter(String, 
DebugFilter) (18 bytes)
       0   72 com.oracle.graal.debug.Debug::currentScope() (16 bytes)
       0   73 
com.oracle.graal.compiler.GraalDebugConfig::isEnabled(DebugFilter) (23 
bytes)
       0   74 
com.oracle.graal.graph.Graph$NodeIterator::checkForDeletedNode() (65 bytes)
       0   75 com.oracle.graal.graph.Graph$NodeIterator::hasNext() (27 
bytes)
       0   76             com.oracle.graal.graph.NodeMap::check(Node) 
(88 bytes)
       0   77 java.util.AbstractCollection::<init>() (5 bytes)
       0   78 
com.oracle.graal.graph.iterators.PredicatedProxyNodeIterator::forward() 
(113 bytes)
       0   79             com.oracle.graal.graph.NodeMap::size() (6 bytes)
       0   80             com.oracle.graal.graph.NodeMap::isNew(Node) 
(17 bytes)
   10220   26     n       java.lang.Class::forName0 (native) (static)
       0   81             com.oracle.graal.graph.NodeMap::get(Node) (15 
bytes)
       0   82 com.oracle.graal.graph.Graph$NodeIterator::next() (31 bytes)
   10292   27     n       sun.misc.Unsafe::getByte (native)
       0   83 com.oracle.graal.graph.Graph$NodeIterator::next() (5 bytes)
       0   84 com.oracle.graal.graph.NodeClassIterable::<init>() (5 bytes)
       0   85             com.oracle.graal.graph.Node::modCount() (5 bytes)
       0   86 
com.oracle.graal.graph.NodeClass$NodeClassIterator::<init>(Node, long[], 
int, NodeClass$1) (8 bytes)
   10541   28     n       sun.misc.Unsafe::getLong (native)
       0   87 
com.oracle.graal.graph.NodeClass$NodeClassIterator::<init>(Node, long[], 
int) (42 bytes)
       0   88 java.util.HashMap$HashIterator::findNextBin() (66 bytes)
       0   89             java.util.Arrays::copyOf(char[], int) (19 bytes)
       0   90 com.oracle.graal.graph.NodeUsagesList$1::next() (48 bytes)
       0   91 com.oracle.graal.graph.NodeUsagesList$1::next() (5 bytes)
       0   92 com.oracle.graal.graph.NodeClass$NodeClassIterator::next() 
(74 bytes)
       0   93 
com.oracle.graal.graph.NodeClass$NodeClassIterator::nextElement() (74 bytes)
       0   94 java.lang.AbstractStringBuilder::expandCapacity(int) (50 
bytes)
       0   95             com.oracle.graal.nodes.cfg.Block::getId() (5 
bytes)
       0   96 
com.oracle.graal.graph.iterators.NodePredicates$PositiveTypePredicate::apply(Node) 
(35 bytes)
       0   97             java.util.HashMap::put(Object, Object) (300 bytes)
       0   98 
sun.reflect.ClassFileAssembler::emitConstantPoolUTF8(String) (50 bytes)
       0   99             sun.reflect.UTF8::encode(String) (191 bytes)
       0  100             sun.reflect.UTF8::utf8Length(String) (81 bytes)
       0  101 
com.oracle.graal.nodes.cfg.ControlFlowGraph::getNodeToBlock() (5 bytes)
       0  102             java.lang.Enum::ordinal() (5 bytes)
       0  103 java.io.ByteArrayOutputStream::ensureCapacity(int) (16 bytes)
       0  104             java.util.Arrays::fill(Object[], Object) (21 
bytes)
       0  105 
sun.reflect.generics.parser.SignatureParser::parsePackageNameAndSimpleClassTypeSignature() 
(139 bytes)
       0  106             java.util.HashMap::createEntry(int, Object, 
Object, int, boolean) (131 bytes)
   12621   -1             java.lang.String::indexOf (166 bytes) made not 
entrant
scope: Truffle.createGraph.PartialEscape.iteration 0.InterceptException
Exception occurred in scope: Truffle.createGraph.PartialEscape.iteration 
0.InterceptException
Context obj com.oracle.graal.nodes.util.GraphUtil$2: Must not let 
virtual frame object escape at node 100|FrameSetByte. Insert a call to 
VirtualFrame.materialize() to convert the instance to a materialized 
frame object (source position of following stack trace is approximate)
Context obj com.oracle.graal.virtual.phases.ea.PartialEscapePhase at 38089dae
Context obj 
StructuredGraph:6{HotSpotMethod<OptimizedCallTarget.executeHelper(PackedFrame, 
Arguments)>}
Could not connect to the IGV on 127.0.0.1:4445 : 
java.net.ConnectException: Connection refused
Context obj DebugDumpScope[Truffle: FunctionNode at 4dcbadb4]
[truffle] opt failed FunctionNode at 4dcbadb4 
com.oracle.graal.nodes.util.GraphUtil$2: Must not let virtual frame 
object escape at node 100|FrameSetByte. Insert a call to 
VirtualFrame.materialize() to convert the instance to a materialized 
frame object (source position of following stack trace is approximate)
com.oracle.graal.nodes.util.GraphUtil$2: Must not let virtual frame 
object escape at node 100|FrameSetByte. Insert a call to 
VirtualFrame.materialize() to convert the instance to a materialized 
frame object (source position of following stack trace is approximate)
Caused by: com.oracle.graal.graph.GraalInternalError: Must not let 
virtual frame object escape at node 100|FrameSetByte. Insert a call to 
VirtualFrame.materialize() to convert the instance to a materialized 
frame object (source position of following stack trace is approximate)
     at 
com.oracle.graal.truffle.nodes.NewFrameNode.getMaterializedRepresentationHelper(NewFrameNode.java:130)
     at 
com.oracle.graal.truffle.nodes.NewFrameNode$VirtualOnlyInstanceNode.getMaterializedRepresentation(NewFrameNode.java:107)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeBlockState.materializeWithCommit(PartialEscapeBlockState.java:93)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeBlockState.materializeBefore(PartialEscapeBlockState.java:83)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeClosure.ensureMaterialized(PartialEscapeClosure.java:207)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeClosure.replaceWithMaterialized(PartialEscapeClosure.java:215)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeClosure.processNode(PartialEscapeClosure.java:196)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapeClosure.processNode(PartialEscapeClosure.java:98)
     at 
com.oracle.graal.virtual.phases.ea.PEReadEliminationClosure.processNode(PEReadEliminationClosure.java:54)
     at 
com.oracle.graal.virtual.phases.ea.PEReadEliminationClosure.processNode(PEReadEliminationClosure.java:41)
     at 
com.oracle.graal.virtual.phases.ea.EffectsClosure.processBlock(EffectsClosure.java:121)
     at 
com.oracle.graal.virtual.phases.ea.EffectsClosure.processBlock(EffectsClosure.java:39)
     at 
com.oracle.graal.phases.graph.ReentrantBlockIterator.apply(ReentrantBlockIterator.java:91)
     at 
com.oracle.graal.phases.graph.ReentrantBlockIterator.processLoop(ReentrantBlockIterator.java:56)
     at 
com.oracle.graal.virtual.phases.ea.EffectsClosure.processLoop(EffectsClosure.java:149)
     at 
com.oracle.graal.virtual.phases.ea.EffectsClosure.processLoop(EffectsClosure.java:39)
     at 
com.oracle.graal.phases.graph.ReentrantBlockIterator.apply(ReentrantBlockIterator.java:108)
     at 
com.oracle.graal.phases.graph.ReentrantBlockIterator.apply(ReentrantBlockIterator.java:76)
     at 
com.oracle.graal.virtual.phases.ea.EffectsPhase$1.call(EffectsPhase.java:69)
     at 
com.oracle.graal.virtual.phases.ea.EffectsPhase$1.call(EffectsPhase.java:62)
     at com.oracle.graal.debug.internal.DebugScope.call(DebugScope.java:311)
     at 
com.oracle.graal.debug.internal.DebugScope.executeScope(DebugScope.java:192)
     at 
com.oracle.graal.debug.internal.DebugScope.scope(DebugScope.java:177)
     at com.oracle.graal.debug.Debug.scope(Debug.java:155)
     at com.oracle.graal.debug.Debug.scope(Debug.java:126)
     at 
com.oracle.graal.virtual.phases.ea.EffectsPhase.runAnalysis(EffectsPhase.java:62)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapePhase.run(PartialEscapePhase.java:63)
     at 
com.oracle.graal.virtual.phases.ea.PartialEscapePhase.run(PartialEscapePhase.java:41)
     at com.oracle.graal.phases.BasePhase$1.run(BasePhase.java:62)
     at 
com.oracle.graal.debug.internal.DebugScope.executeScope(DebugScope.java:189)
     at 
com.oracle.graal.debug.internal.DebugScope.scope(DebugScope.java:177)
     at com.oracle.graal.debug.Debug.scope(Debug.java:135)
     at com.oracle.graal.debug.Debug.scope(Debug.java:130)
     at com.oracle.graal.phases.BasePhase.apply(BasePhase.java:59)
     at com.oracle.graal.phases.BasePhase.apply(BasePhase.java:55)
     at 
com.oracle.graal.truffle.PartialEvaluator$1.run(PartialEvaluator.java:180)
     at 
com.oracle.graal.debug.internal.DebugScope.executeScope(DebugScope.java:189)
     at 
com.oracle.graal.debug.internal.DebugScope.scope(DebugScope.java:177)
     at com.oracle.graal.debug.Debug.scope(Debug.java:135)
     at com.oracle.graal.debug.Debug.scope(Debug.java:130)
     at 
com.oracle.graal.truffle.PartialEvaluator.createGraph(PartialEvaluator.java:112)
     at 
com.oracle.graal.truffle.TruffleCompilerImpl.compileMethodImpl(TruffleCompilerImpl.java:118)
     at 
com.oracle.graal.truffle.TruffleCompilerImpl.access$000(TruffleCompilerImpl.java:54)
     at 
com.oracle.graal.truffle.TruffleCompilerImpl$1.call(TruffleCompilerImpl.java:105)
     at 
com.oracle.graal.truffle.TruffleCompilerImpl$1.call(TruffleCompilerImpl.java:101)
     at com.oracle.graal.debug.internal.DebugScope.call(DebugScope.java:311)
     at 
com.oracle.graal.debug.internal.DebugScope.executeScope(DebugScope.java:192)
     at 
com.oracle.graal.debug.internal.DebugScope.scope(DebugScope.java:177)
     at com.oracle.graal.debug.Debug.scope(Debug.java:155)
     at 
com.oracle.graal.truffle.TruffleCompilerImpl.compile(TruffleCompilerImpl.java:101)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.compile(OptimizedCallTarget.java:140)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.compileOrInline(OptimizedCallTarget.java:128)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:116)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:217)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:217)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:217)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:217)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$NumberOpNode.eval(Interpreter.java:216)
     at 
fr.umlv.ninal.interpreter.Interpreter$IfNode.eval(Interpreter.java:383)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunctionNode.execute(Interpreter.java:107)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at 
fr.umlv.ninal.interpreter.Interpreter$FunCallNode.eval(Interpreter.java:156)
     at 
fr.umlv.ninal.interpreter.Interpreter$PrintNode.eval(Interpreter.java:355)
     at 
fr.umlv.ninal.interpreter.Interpreter$EvalNode.execute(Interpreter.java:77)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:174)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:114)
     at 
com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:89)
     at com.oracle.truffle.api.CallTarget.call(CallTarget.java:42)
     at 
fr.umlv.ninal.interpreter.Interpreter.interpret(Interpreter.java:605)
     at fr.umlv.ninal.Main.main(Main.java:22)


Rémi



More information about the graal-dev mailing list