From 88b925fbde5b861c990757c76a35d8a1165a8643 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Thu, 12 Sep 2019 21:54:35 +0200 Subject: [PATCH] add script engine SpiderMonkeyWatGC --- .../jwebassembly/ScriptEngine.java | 1 + .../jwebassembly/SpiderMonkeyWatTest.js | 4 +- .../inetsoftware/jwebassembly/WasmRule.java | 53 ++++++++++++------- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/test/de/inetsoftware/jwebassembly/ScriptEngine.java b/test/de/inetsoftware/jwebassembly/ScriptEngine.java index b8fa94e..81acc47 100644 --- a/test/de/inetsoftware/jwebassembly/ScriptEngine.java +++ b/test/de/inetsoftware/jwebassembly/ScriptEngine.java @@ -28,6 +28,7 @@ public enum ScriptEngine { SpiderMonkeyWat, Wat2Wasm, SpiderMonkeyGC, + SpiderMonkeyWatGC, ; public static ScriptEngine[] testEngines() { diff --git a/test/de/inetsoftware/jwebassembly/SpiderMonkeyWatTest.js b/test/de/inetsoftware/jwebassembly/SpiderMonkeyWatTest.js index d504829..f3e4781 100644 --- a/test/de/inetsoftware/jwebassembly/SpiderMonkeyWatTest.js +++ b/test/de/inetsoftware/jwebassembly/SpiderMonkeyWatTest.js @@ -1,5 +1,5 @@ -load( "spiderMonkey.wasm.js" ); -var wasm = wasmTextToBinary( read( "spiderMonkey.wat" ) ); +load( "{test}.wasm.js" ); +var wasm = wasmTextToBinary( read( "{test}.wat" ) ); var testData = JSON.parse( read( "testdata.json" ) ); function callExport(instance) { diff --git a/test/de/inetsoftware/jwebassembly/WasmRule.java b/test/de/inetsoftware/jwebassembly/WasmRule.java index 9cc9ced..1816610 100644 --- a/test/de/inetsoftware/jwebassembly/WasmRule.java +++ b/test/de/inetsoftware/jwebassembly/WasmRule.java @@ -70,6 +70,8 @@ public class WasmRule extends TemporaryFolder { private File spiderMonkeyScriptGC; + private File spiderMonkeyScriptWatGC; + private File nodeWatScript; private File spiderMonkeyWatScript; @@ -405,6 +407,8 @@ public class WasmRule extends TemporaryFolder { return spiderMonkeyCommand( false, false ); case SpiderMonkeyGC: return spiderMonkeyCommand( true, true ); + case SpiderMonkeyWatGC: + return spiderMonkeyCommand( false, true ); case NodeJS: return nodeJsCommand( nodeScript ); case NodeWat: @@ -495,28 +499,39 @@ public class WasmRule extends TemporaryFolder { try { System.setProperty( "SpiderMonkey", "true" ); if( gc ) { - if( spiderMonkeyScriptGC == null ) { - File file = newFile( "spiderMonkeyGC.wasm" ); - compiler.setProperty( JWebAssembly.WASM_USE_GC, "true" ); - compiler.compileToBinary( file ); - spiderMonkeyScriptGC = createScript( "SpiderMonkeyTest.js", "{test.wasm}", file.getName() ); + if( binary ) { + if( spiderMonkeyScriptGC == null ) { + File file = newFile( "spiderMonkeyGC.wasm" ); + compiler.setProperty( JWebAssembly.WASM_USE_GC, "true" ); + compiler.compileToBinary( file ); + spiderMonkeyScriptGC = createScript( "SpiderMonkeyTest.js", "{test.wasm}", file.getName() ); + } + script = spiderMonkeyScriptGC; + } else { + if( spiderMonkeyScriptWatGC == null ) { + File file = newFile( "spiderMonkeyGC.wat" ); + compiler.setProperty( JWebAssembly.WASM_USE_GC, "true" ); + compiler.compileToText( file ); + spiderMonkeyScriptWatGC = createScript( "SpiderMonkeyWatTest.js", "{test}", "spiderMonkeyGC" ); + } + script = spiderMonkeyScriptWatGC; } - script = spiderMonkeyScriptGC; - - } else if( binary ) { - if( spiderMonkeyScript == null ) { - File file = newFile( "spiderMonkey.wasm" ); - compiler.compileToBinary( file ); - spiderMonkeyScript = createScript( "SpiderMonkeyTest.js", "{test.wasm}", file.getName() ); - } - script = spiderMonkeyScript; } else { - if( spiderMonkeyWatScript == null ) { - File file = newFile( "spiderMonkey.wat" ); - compiler.compileToText( file ); - spiderMonkeyWatScript = createScript( "SpiderMonkeyWatTest.js", "{test.wat}", file.getName() ); + if( binary ) { + if( spiderMonkeyScript == null ) { + File file = newFile( "spiderMonkey.wasm" ); + compiler.compileToBinary( file ); + spiderMonkeyScript = createScript( "SpiderMonkeyTest.js", "{test.wasm}", file.getName() ); + } + script = spiderMonkeyScript; + } else { + if( spiderMonkeyWatScript == null ) { + File file = newFile( "spiderMonkey.wat" ); + compiler.compileToText( file ); + spiderMonkeyWatScript = createScript( "SpiderMonkeyWatTest.js", "{test}", "spiderMonkey" ); + } + script = spiderMonkeyWatScript; } - script = spiderMonkeyWatScript; } } finally { compiler.setProperty( JWebAssembly.WASM_USE_GC, null );