Skip to content

Commit 9f6eb85

Browse files
committed
[truffle] Implement and document running on the SubstrateVM
1 parent 78dceac commit 9f6eb85

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

README.pod

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,20 @@ That's passed to nqp::runtruffle.
147147
Inside the TruffleCompiler (src/vm/jvm/runtime/org/perl6/nqp/truffle/TruffleCompiler.java) that intermediate form is turned into the Truffle tree nodes.
148148
Those are then interpreted and JITed by the Truffle framework.
149149

150+
=head3 Running on SubstrateVM
151+
152+
To build the truffle6 vm: (Also see https://github.com/oracle/graal/issues/540)
153+
154+
make nqp-truffle-impl.jar
155+
mkdir <graalvm_root>/jre/languages/nqp
156+
cp -r nqp-truffle-impl.jar <graalvm_root>/jre/languages/nqp
157+
cp -r src/vm/jvm/native-image.properties <graalvm_root>/jre/languages/nqp
158+
native-image --language:nqp org.perl6.nqp.truffle.svm.Truffle6
159+
cp org.perl6.nqp.truffle.svm.Truffle6 truffle6
160+
161+
To run it
162+
163+
./nqp-j nqp-truffle.nqp --target=bytecode --output=literals.truffle6 t/nqp/001-literals.nqp
164+
./truffle6 literals.truffle6
165+
150166
=cut

src/vm/jvm/native-image.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ImageName = truffle6
2+
Requires = tool:truffle
3+
Args = -H:MaxRuntimeCompileMethods=100000
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.perl6.nqp.truffle.svm;
2+
3+
import java.io.PrintStream;
4+
import org.perl6.nqp.truffle.ByteCodeRunnerGen;
5+
6+
public class Truffle6 {
7+
public static void help(PrintStream stream) {
8+
stream.println("USAGE: truffle6 input.truffle6 [program args]");
9+
stream.println(" truffle6 --help");
10+
stream.println(" --help display this message");
11+
}
12+
13+
public static void main(String[] args) {
14+
if (args.length < 1) {
15+
System.err.println("ERROR: Missing input file.");
16+
help(System.err);
17+
} else if (args[0] == "--help") {
18+
help(System.out);
19+
} else {
20+
(new ByteCodeRunnerGen()).runByteCode(args[0]);
21+
}
22+
}
23+
}

tools/build/Makefile-JVM.in

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ RUNTIME_JAVAS = \
2020
src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/*.java \
2121
src/vm/jvm/runtime/org/perl6/nqp/tools/*.java \
2222

23+
TRUFFLE6_JAVAS = \
24+
src/vm/jvm/runtime/org/perl6/nqp/truffle/runtime/*.java \
25+
src/vm/jvm/runtime/org/perl6/nqp/truffle/nodes/*.java \
26+
src/vm/jvm/runtime/org/perl6/nqp/truffle/nodes/*/*.java \
27+
src/vm/jvm/runtime/org/perl6/nqp/truffle/*.java \
28+
src/vm/jvm/runtime/org/perl6/nqp/truffle/svm/*.java \
29+
2330
DSL_JAVAS = src/vm/jvm/dsl/org/perl6/nqp/dsl/*.java
2431

2532
DSL_JAR = dsl-processor.jar
@@ -34,6 +41,8 @@ JNA = @jna@
3441
TRUFFLE_API = @truffleapi@
3542
TRUFFLE_DSL_PROCESSOR = @truffledslprocessor@
3643
THIRDPARTY_JARS = $(ASM)@cpsep@$(ASMTREE)@cpsep@$(JLINE)@cpsep@$(JNA)@cpsep@$(TRUFFLE_API)@cpsep@$(TRUFFLE_DSL_PROCESSOR)
44+
THIRDPARY_TRUFFLE6_JARS = $(TRUFFLE_API)@cpsep@$(TRUFFLE_DSL_PROCESSOR)
45+
3746
J_STAGE0_DIR = src/vm/jvm/stage0
3847
J_STAGE1_DIR = $(JVM_BUILD_DIR)/stage1
3948
J_STAGE2_DIR = $(JVM_BUILD_DIR)/stage2
@@ -311,6 +320,12 @@ $(P5QREGEX_JAR): $(ALL_OUTPUT) $(P5QREGEX_SOURCES)
311320
.@slash@$(J_RUNNER) --target=jar --output=$(P5QREGEX_JAR) \
312321
$(J_STAGE2_DIR)/$(P5QREGEX_COMBINED)
313322

323+
324+
nqp-truffle-impl.jar: $(TRUFFLE6_JAVAS) $(DSL_JAR)
325+
$(MKPATH) bin-truffle6
326+
$(JAVAC) -source 1.8 -cp $(THIRDPARY_TRUFFLE6_JARS):$(DSL_JAR) -g -d bin-truffle6 -encoding UTF8 $(TRUFFLE6_JAVAS)
327+
$(JAR) cfe0 nqp-truffle-impl.jar org.perl6.nqp.truffle.svm.Truffle6 -C bin-truffle6/ .
328+
314329
$(TRUFFLE_JAR): $(ALL_OUTPUT) $(J_RUNNER) $(P5QREGEX_JAR) src/vm/jvm/Truffle.nqp
315330
.@slash@$(J_RUNNER) --target=jar --output=$(TRUFFLE_JAR) src/vm/jvm/Truffle.nqp
316331

0 commit comments

Comments
 (0)