From 5883adc2af0931b951a5a339781887db57bf6e0c Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Thu, 8 Aug 2019 19:28:27 +0200 Subject: [PATCH] pass the compiler properties to sub classes --- src/de/inetsoftware/jwebassembly/JWebAssembly.java | 2 +- .../module/JavaMethodWasmCodeBuilder.java | 11 +++++++++++ .../jwebassembly/module/ModuleGenerator.java | 11 ++++++++--- .../jwebassembly/module/WasmCodeBuilder.java | 10 ++++++++++ .../jwebassembly/watparser/WatParser.java | 11 +++++++++++ .../jwebassembly/module/WatParserTest.java | 2 +- 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/de/inetsoftware/jwebassembly/JWebAssembly.java b/src/de/inetsoftware/jwebassembly/JWebAssembly.java index b828e5e..5c8e063 100644 --- a/src/de/inetsoftware/jwebassembly/JWebAssembly.java +++ b/src/de/inetsoftware/jwebassembly/JWebAssembly.java @@ -320,7 +320,7 @@ public class JWebAssembly { * if any conversion error occurs */ private void compile( ModuleWriter writer, WasmTarget target ) throws IOException, WasmException { - ModuleGenerator generator = new ModuleGenerator( writer, target, libraries ); + ModuleGenerator generator = new ModuleGenerator( writer, target, libraries, properties ); for( URL url : classFiles ) { ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) ); generator.prepare( classFile ); diff --git a/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java index a9c45cc..498f153 100644 --- a/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java @@ -16,6 +16,7 @@ package de.inetsoftware.jwebassembly.module; import java.io.IOException; +import java.util.HashMap; import java.util.List; import javax.annotation.Nonnull; @@ -44,6 +45,16 @@ class JavaMethodWasmCodeBuilder extends WasmCodeBuilder { private BranchManger branchManager = new BranchManger( getInstructions() ); + /** + * Create a new code builder. + * + * @param properties + * compiler properties + */ + public JavaMethodWasmCodeBuilder( HashMap properties ) { + super( properties ); + } + /** * Build the wasm instructions * diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java index 4ea7ef9..03721b4 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java @@ -22,6 +22,7 @@ import java.net.URL; import java.net.URLClassLoader; import java.nio.file.Files; import java.nio.file.Path; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -59,9 +60,9 @@ public class ModuleGenerator { private final URLClassLoader libraries; - private final JavaMethodWasmCodeBuilder javaCodeBuilder = new JavaMethodWasmCodeBuilder(); + private final JavaMethodWasmCodeBuilder javaCodeBuilder; - private final WatParser watParser = new WatParser(); + private final WatParser watParser; private String sourceFile; @@ -82,8 +83,12 @@ public class ModuleGenerator { * the target for the module data * @param libraries * libraries + * @param properties + * compiler properties */ - public ModuleGenerator( @Nonnull ModuleWriter writer, WasmTarget target, @Nonnull List libraries ) { + public ModuleGenerator( @Nonnull ModuleWriter writer, WasmTarget target, @Nonnull List libraries, HashMap properties ) { + this.javaCodeBuilder = new JavaMethodWasmCodeBuilder( properties ); + this.watParser = new WatParser( properties ); this.writer = writer; this.javaScript = new JavaScriptWriter( target ); this.libraries = new URLClassLoader( libraries.toArray( new URL[libraries.size()] ) ); diff --git a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java index c13b8be..709e3c0 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java @@ -16,6 +16,7 @@ package de.inetsoftware.jwebassembly.module; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import javax.annotation.Nonnegative; @@ -48,6 +49,15 @@ public abstract class WasmCodeBuilder { private TypeManager types; + /** + * Create a new code builder. + * + * @param properties + * compiler properties + */ + public WasmCodeBuilder( HashMap properties ) { + } + /** * Get the list of instructions * diff --git a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java index bdbbc2e..92761b6 100644 --- a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java +++ b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java @@ -17,6 +17,7 @@ package de.inetsoftware.jwebassembly.watparser; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import javax.annotation.Nonnegative; @@ -37,6 +38,16 @@ import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; */ public class WatParser extends WasmCodeBuilder { + /** + * Create a new code builder. + * + * @param properties + * compiler properties + */ + public WatParser( HashMap properties ) { + super( properties ); + } + /** * Parse the given wasm text format and generate a list of WasmInstuctions * diff --git a/test/de/inetsoftware/jwebassembly/module/WatParserTest.java b/test/de/inetsoftware/jwebassembly/module/WatParserTest.java index 27739f9..11ad00c 100644 --- a/test/de/inetsoftware/jwebassembly/module/WatParserTest.java +++ b/test/de/inetsoftware/jwebassembly/module/WatParserTest.java @@ -36,7 +36,7 @@ import de.inetsoftware.jwebassembly.watparser.WatParser; public class WatParserTest { private void test( String wat ) throws IOException { - WatParser parser = new WatParser(); + WatParser parser = new WatParser( new HashMap<>() ); parser.parse( wat, 100 ); WasmCodeBuilder codeBuilder = parser; StringBuilder builder = new StringBuilder();