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