Regression for TraceTruffleCompilationDetails?

Stefan Marr java at stefan-marr.de
Wed Dec 18 07:22:37 PST 2013


Hi Christian:

Sorry, yes, TruffleSOM is not tested on Windows, and there are certainly hidden problems.
Since I don’t have access to a windows box, I unfortunately can’t provide you with something more robust, sorry.

You are running here into problems because the TruffleSOM git repo uses symlinks and core-lib is the git submodule to which the symlinks should be pointing. And symlinks aren’t supported on NTFS…

The problem you are seeing with the missing bitXor: primitive is probably caused by a mismatch between the core-lib version on the TruffleSOM version.

Please note the `--recursive` in the git command line: `git clone --recursive https://github.com/smarr/TruffleSOM.git`
The proper version should normally be loaded with the following commands after a non-recursive clone:
 git submodule init
 git submodule update

With regard to [1]: The simple answer is, because I didn’t write that code. I’ll fix it.

Either way, thanks for looking into it. Not sure whether it is an important issue, but I worked around it by just swallowing the exception.

Best regards
Stefan

On 18 Dec 2013, at 16:03, Christian Humer <christian.humer at gmail.com> wrote:

> Hi Stefan,
> 
> I gave it another try even so you did not provide me with a more robust form for the command line. After I've hardcoded the Universe#fileSeparator to a "/" I managed to at least run something [1] . After I've fixed the class path provided in your -cp which is not where it should be if you do a clean checkout from git I came up with this command line:
> 
> mx --vm server vm  -G:+TraceTruffleCompilationDetails -Xbootclasspath/a:../TruffleSOM/build/classes;../TruffleSOM/libs/com.oracle.truffle.api.jar;../TruffleSOM/libs/com.oracle.truffle.api.dsl.jar som.vm.Universe -cp ../TruffleSOM/core-lib/Smalltalk ../TruffleSOM/core-lib/Examples/Benchmarks/BenchmarkHarness.som IntegerLoop 1 2 2000
> 
> However I got this output on the console:
> Warning: Primitive bitXor: is not in class definition for class Double
> Exception in thread "main" java.lang.RuntimeException: This should not happen in TruffleSOM
>         at som.interpreter.nodes.messages.BinarySendNode$UninitializedSendNode.createCachedNode(BinarySendNode.java:162)
>         at som.interpreter.nodes.messages.BinarySendNode$UninitializedSendNode.specialize(BinarySendNode.java:141)
>         at som.interpreter.nodes.messages.BinarySendNode$UninitializedSendNode.executeEvaluated(BinarySendNode.java:117)
>         at som.interpreter.nodes.messages.BinarySendNode.executeGeneric(BinarySendNode.java:58)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:43)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:1)
>         at som.interpreter.Method.messageSendExecution(Method.java:89)
>         at som.interpreter.Method.execute(Method.java:77)
>         at com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:214)
>         at com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:143)
>         at com.oracle.graal.truffle.OptimizedCallTarget.callHelper(OptimizedCallTarget.java:98)
>         at com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:75)
>         at som.interpreter.nodes.messages.BinarySendNode$InlinableSendNode.executeEvaluated(BinarySendNode.java:233)
>         at som.interpreter.nodes.messages.BinarySendNode$CachedSendNode.executeEvaluated(BinarySendNode.java:86)
>         at som.interpreter.nodes.messages.BinarySendNode$UninitializedSendNode.executeEvaluated(BinarySendNode.java:117)
>         at som.interpreter.nodes.messages.BinarySendNode.executeGeneric(BinarySendNode.java:58)
>         at som.interpreter.nodes.messages.TernarySendNode.executeGeneric(TernarySendNode.java:60)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:43)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:1)
>         at som.interpreter.Method.messageSendExecution(Method.java:89)
>         at som.interpreter.Method.execute(Method.java:77)
>         at com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:214)
>         at com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:143)
>         at com.oracle.graal.truffle.OptimizedCallTarget.callHelper(OptimizedCallTarget.java:98)
>         at com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:75)
>         at som.interpreter.nodes.messages.BinarySendNode$InlinableSendNode.executeEvaluated(BinarySendNode.java:233)
>         at som.interpreter.nodes.messages.BinarySendNode$CachedSendNode.executeEvaluated(BinarySendNode.java:86)
>         at som.interpreter.nodes.messages.BinarySendNode$UninitializedSendNode.executeEvaluated(BinarySendNode.java:117)
>         at som.interpreter.nodes.messages.BinarySendNode.executeGeneric(BinarySendNode.java:58)
>         at som.interpreter.nodes.messages.TernarySendNode.executeGeneric(TernarySendNode.java:60)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:43)
>         at som.interpreter.nodes.SequenceNode.executeGeneric(SequenceNode.java:1)
>         at som.interpreter.Method.messageSendExecution(Method.java:89)
>         at som.interpreter.Method.execute(Method.java:77)
>         at com.oracle.graal.truffle.OptimizedCallTarget.executeHelper(OptimizedCallTarget.java:214)
>         at com.oracle.graal.truffle.OptimizedCallTarget.interpreterCall(OptimizedCallTarget.java:143)
>         at com.oracle.graal.truffle.OptimizedCallTarget.callHelper(OptimizedCallTarget.java:98)
>         at com.oracle.graal.truffle.OptimizedCallTarget.call(OptimizedCallTarget.java:75)
>         at com.oracle.truffle.api.CallTarget.call(CallTarget.java:62)
>         at som.vmobjects.SMethod.invokeRoot(SMethod.java:86)
>         at som.vm.Universe.execute(Universe.java:302)
>         at som.vm.Universe.interpret(Universe.java:77)
>         at som.vm.Universe.main(Universe.java:63)
> 
> Whats this? I stopped investigating at this point.
> 
> [1] Why didnt you just use the java.io.File API in the jdk to parse your pathes?
> 
> 
> Cheers,
> 
> - Christian Humer
> 
> 
> On Mon, Dec 16, 2013 at 2:57 PM, Stefan Marr <java at stefan-marr.de> wrote:
> Hi Christian:
> 
> Since I don’t know exactly whether there is anything Windows related going wrong, perhaps a few additional notes on my setup.
> I think, the standard problems should be that either the paths in the command line are not correct, or the git repo wasn’t checked out with its submodules:
> 
> To clone the git repo of TruffleSOM with its submodules:
>   git clone --recursive https://github.com/smarr/TruffleSOM.git
> 
> In contrast to other Truffle languages, TruffleSOM wasn’t yet adapted to the mx compilation infrastructure, but uses a simple ant script.
> 
>  Executing `ant tests` should compile the necessary files and execute a simple test.
>  Note, it will download the necessary precompiled Truffle jars. I guess, that should work on Windows.
> 
> Afterwards, it will depend on where your Graal folder is located.
> 
> The command line assumes that it is in a folder next to TruffleSOM, so in the command line, `../TruffleSOM` would need to be replaced for other locations accordingly. Perhaps the path separators need to be changed for windows as well.
> 
> > ./mx.sh --vm server vm  -G:+TraceTruffleCompilationDetails -Xbootclasspath/a:../TruffleSOM/build/classes:../TruffleSOM/libs/com.oracle.truffle.api.jar:../TruffleSOM/libs/com.oracle.truffle.api.dsl.jar som.vm.Universe -cp ../TruffleSOM/Smalltalk ../TruffleSOM/Examples/Benchmarks/BenchmarkHarness.som Loop 1 100 100
> 
> 
> After the mx.sh arguments, the bootclass path is set to include the Truffle libraries, as well as the compiled TruffleSOM classes (from  the build/classes folder).
> The main class of TruffleSOM is som.vm.Universe, `-cp` gives a class path to SOM to enabled to find its Smalltalk class library, and the main script to be executed is ../TruffleSOM/Examples/Benchmarks/BenchmarkHarness.som with a name for the benchmark and infos on how many iterations, and warmup cycles should be executed.
> 
> Thanks for looking into the issue. I worked around it by just catching the exception for the moment.
> 
> Best regards
> Stefan
> 
> On 16 Dec 2013, at 11:51, Christian Humer <christian.humer at gmail.com> wrote:
> 
> > Hi Stefan,
> >
> > Could you please provide a little more robust command line for the problem?
> > I just completely failed to run it on windows.
> >
> >
> > - Christian Humer
> >
> >
> > On Mon, Dec 16, 2013 at 11:13 AM, Stefan Marr <java at stefan-marr.de> wrote:
> > Hi:
> >
> > I am running here into a class cast exception when using -G:+TraceTruffleCompilationDetails:
> >
> > java.lang.ClassCastException: com.oracle.graal.truffle.nodes.frame.NewFrameNode cannot be cast to com.oracle.graal.nodes.ConstantNode
> >         at com.oracle.graal.truffle.PartialEvaluator.expandTree(PartialEvaluator.java:193)
> >
> > The corresponding line is:
> >  ConstantNode constantNode = (ConstantNode) methodCallTargetNode.arguments().first();
> >
> > However, the first argument is not a ConstantNode but a NewFrameNode (the new frame node looks like one of mine, i.e., for a TruffleSOM method call).
> >
> > The targetMethod of is `HotSpotMethod<FrameWithoutBoxing.getObject(FrameSlot)>`.
> >
> > The problem can be triggered for instance with the following TruffleSOM benchmark:
> >
> > ./mx.sh -d --vm server vm  -G:+TraceTruffleCompilationDetails -Xbootclasspath/a:../som/build/classes:../som/libs/com.oracle.truffle.api.jar:../som/libs/com.oracle.truffle.api.dsl.jar som.vm.Universe -cp ../som/Smalltalk ../som/Examples/Benchmarks/BenchmarkHarness.som Loop 1 100 100
> >
> > I suppose the receiver is here expected to be constant to print out tracing information, but it isn’t in my case.
> >
> > Is there perhaps some simple work-around possible?
> >
> > Thanks
> > Stefan
> >
> > To check out TruffleSOM:
> >
> > git clone --recursive https://github.com/smarr/TruffleSOM.git
> >   cd TruffleSOM
> >   ant jar
> >   cd $GRAAL
> >
> > --
> > Stefan Marr
> > Software Languages Lab
> > Vrije Universiteit Brussel
> > Pleinlaan 2 / B-1050 Brussels / Belgium
> > http://soft.vub.ac.be/~smarr
> > Phone: +32 2 629 2974
> > Fax:   +32 2 629 3525
> >
> >
> 
> --
> Stefan Marr
> Software Languages Lab
> Vrije Universiteit Brussel
> Pleinlaan 2 / B-1050 Brussels / Belgium
> http://soft.vub.ac.be/~smarr
> Phone: +32 2 629 2974
> Fax:   +32 2 629 3525
> 
> 

-- 
Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
http://soft.vub.ac.be/~smarr
Phone: +32 2 629 2974
Fax:   +32 2 629 3525



More information about the graal-dev mailing list