How to write a function call with Truffle
Chris Seaton
chris at chrisseaton.com
Thu Aug 15 07:51:30 PDT 2013
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