diff --git a/java/wasm/pom.xml b/java/wasm/pom.xml
index b389c57ed1..01803a5448 100644
--- a/java/wasm/pom.xml
+++ b/java/wasm/pom.xml
@@ -63,14 +63,19 @@
10.0.4.0
test
+
+ io.roastedroot
+ redline
+ 0.0.1
+
- com.dylibso.chicory
- chicory-compiler-maven-plugin
- ${chicory.version}
+ io.roastedroot
+ redline-compiler-maven-plugin
+ 0.0.1
prism
diff --git a/java/wasm/src/main/java/org/ruby_lang/prism/wasm/Prism.java b/java/wasm/src/main/java/org/ruby_lang/prism/wasm/Prism.java
index 21bace0a3c..7ccc618bbd 100644
--- a/java/wasm/src/main/java/org/ruby_lang/prism/wasm/Prism.java
+++ b/java/wasm/src/main/java/org/ruby_lang/prism/wasm/Prism.java
@@ -2,7 +2,7 @@
import com.dylibso.chicory.runtime.ByteArrayMemory;
import com.dylibso.chicory.runtime.ImportValues;
-import com.dylibso.chicory.runtime.Instance;
+import io.roastedroot.redline.api.RedlineInstance;
import com.dylibso.chicory.wasi.WasiOptions;
import com.dylibso.chicory.wasi.WasiPreview1;
import org.ruby_lang.prism.Loader;
@@ -13,7 +13,7 @@
public class Prism implements AutoCloseable {
private final WasiPreview1 wasi;
protected final Prism_ModuleExports exports;
- private final Instance instance;
+ private final RedlineInstance instance;
public Prism() {
this(WasiOptions.builder().build());
@@ -21,12 +21,10 @@ public Prism() {
public Prism(WasiOptions wasiOpts) {
wasi = WasiPreview1.builder().withOptions(wasiOpts).build();
- instance = Instance.builder(PrismParser.load())
- .withMemoryFactory(ByteArrayMemory::new)
- .withMachineFactory(PrismParser::create)
+ instance = PrismParser.builder()
.withImportValues(ImportValues.builder().addFunction(wasi.toHostFunctions()).build())
.build();
- exports = new Prism_ModuleExports(instance);
+ exports = new Prism_ModuleExports(instance.instance());
}
public String version() {
@@ -150,6 +148,9 @@ public ParseResult serializeParse(byte[] packedOptions, String source) {
@Override
public void close() {
+ if (instance != null) {
+ instance.close();
+ }
if (wasi != null) {
wasi.close();
}