|
2 | 2 |
|
3 | 3 | import com.dylibso.chicory.runtime.ByteArrayMemory; |
4 | 4 | import com.dylibso.chicory.runtime.ImportValues; |
5 | | -import com.dylibso.chicory.runtime.Instance; |
| 5 | +import io.roastedroot.redline.api.RedlineInstance; |
6 | 6 | import com.dylibso.chicory.wasi.WasiOptions; |
7 | 7 | import com.dylibso.chicory.wasi.WasiPreview1; |
8 | 8 | import org.ruby_lang.prism.Loader; |
|
13 | 13 | public class Prism implements AutoCloseable { |
14 | 14 | private final WasiPreview1 wasi; |
15 | 15 | protected final Prism_ModuleExports exports; |
16 | | - private final Instance instance; |
| 16 | + private final RedlineInstance instance; |
17 | 17 |
|
18 | 18 | public Prism() { |
19 | 19 | this(WasiOptions.builder().build()); |
20 | 20 | } |
21 | 21 |
|
22 | 22 | public Prism(WasiOptions wasiOpts) { |
23 | 23 | wasi = WasiPreview1.builder().withOptions(wasiOpts).build(); |
24 | | - instance = Instance.builder(PrismParser.load()) |
25 | | - .withMemoryFactory(ByteArrayMemory::new) |
26 | | - .withMachineFactory(PrismParser::create) |
| 24 | + instance = PrismParser.builder() |
27 | 25 | .withImportValues(ImportValues.builder().addFunction(wasi.toHostFunctions()).build()) |
28 | 26 | .build(); |
29 | | - exports = new Prism_ModuleExports(instance); |
| 27 | + exports = new Prism_ModuleExports(instance.instance()); |
30 | 28 | } |
31 | 29 |
|
32 | 30 | public String version() { |
@@ -150,6 +148,9 @@ public ParseResult serializeParse(byte[] packedOptions, String source) { |
150 | 148 |
|
151 | 149 | @Override |
152 | 150 | public void close() { |
| 151 | + if (instance != null) { |
| 152 | + instance.close(); |
| 153 | + } |
153 | 154 | if (wasi != null) { |
154 | 155 | wasi.close(); |
155 | 156 | } |
|
0 commit comments