How to write a function call with Truffle

Thomas Wuerthinger thomas.wuerthinger at oracle.com
Thu Aug 15 07:57:19 PDT 2013


Remi,

Nice stack trace ;). I'm currently looking into it. Two quick comments:
a) You should run in hosted mode for better startup performance. Build the vm via "./mx.sh --vm server build" and run then via "./mx.sh --vm server vm". Then the only Graal compilations done are the Truffle compilations.
b) The FunCallNode.eval method looks like it is in need of an @ExplodeLoop annotation.

- thomas

On Aug 15, 2013, at 4:51 PM, Chris Seaton <chris at chrisseaton.com> wrote:

> This looks like the virtual frame escaping problem. See
> https://wiki.openjdk.java.net/display/Graal/Truffle+FAQ+and+Guidelines#TruffleFAQandGuidelines-WhyamIgettingerrorsaboutescapingframes
> ?.
> 
> 
> On 15 August 2013 15:38, Remi Forax <forax at univ-mlv.fr> wrote:
> 
>> 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::**
>> parsePackageNameAndSimpleClass**TypeSignature() (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@**
>> 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.**
>> getMaterializedRepresentationH**elper(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