pass compiler properties to the module writers

This commit is contained in:
Volker Berlin 2018-10-08 22:02:19 +02:00
parent cd50b9c203
commit a10d029e00
3 changed files with 18 additions and 6 deletions

View File

@ -48,6 +48,8 @@ public class JWebAssembly {
private final HashMap<String, String> properties = new HashMap<>(); private final HashMap<String, String> properties = new HashMap<>();
public static final String DEBUG_NAMES = "DebugNames";
/** /**
* Create a instance. * Create a instance.
*/ */
@ -123,8 +125,8 @@ public class JWebAssembly {
* if any conversion error occurs * if any conversion error occurs
*/ */
public void compileToText( File file ) throws WasmException { public void compileToText( File file ) throws WasmException {
try (TextModuleWriter writer = new TextModuleWriter( new OutputStreamWriter( new FileOutputStream( file ), StandardCharsets.UTF_8 ) )) { try (OutputStreamWriter output = new OutputStreamWriter( new FileOutputStream( file ), StandardCharsets.UTF_8 )) {
compile( writer ); compileToText( output );
} catch( Exception ex ) { } catch( Exception ex ) {
throw WasmException.create( ex ); throw WasmException.create( ex );
} }
@ -139,7 +141,7 @@ public class JWebAssembly {
* if any conversion error occurs * if any conversion error occurs
*/ */
public void compileToText( Appendable output ) throws WasmException { public void compileToText( Appendable output ) throws WasmException {
try (TextModuleWriter writer = new TextModuleWriter( output )) { try (TextModuleWriter writer = new TextModuleWriter( output, properties )) {
compile( writer ); compile( writer );
} catch( Exception ex ) { } catch( Exception ex ) {
throw WasmException.create( ex ); throw WasmException.create( ex );
@ -184,7 +186,7 @@ public class JWebAssembly {
* if any conversion error occurs * if any conversion error occurs
*/ */
public void compileToBinary( OutputStream output ) throws WasmException { public void compileToBinary( OutputStream output ) throws WasmException {
try (BinaryModuleWriter writer = new BinaryModuleWriter( output )) { try (BinaryModuleWriter writer = new BinaryModuleWriter( output, properties )) {
compile( writer ); compile( writer );
} catch( Exception ex ) { } catch( Exception ex ) {
throw WasmException.create( ex ); throw WasmException.create( ex );

View File

@ -20,6 +20,7 @@ import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -28,6 +29,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import de.inetsoftware.classparser.ConstantRef; import de.inetsoftware.classparser.ConstantRef;
import de.inetsoftware.jwebassembly.JWebAssembly;
import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.module.FunctionName; import de.inetsoftware.jwebassembly.module.FunctionName;
import de.inetsoftware.jwebassembly.module.ModuleWriter; import de.inetsoftware.jwebassembly.module.ModuleWriter;
@ -49,6 +51,8 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
private WasmOutputStream wasm; private WasmOutputStream wasm;
private final boolean debugNames;
private WasmOutputStream codeStream = new WasmOutputStream(); private WasmOutputStream codeStream = new WasmOutputStream();
private WasmOutputStream functionsStream = new WasmOutputStream(); private WasmOutputStream functionsStream = new WasmOutputStream();
@ -74,11 +78,14 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
* *
* @param output * @param output
* the target for the module data. * the target for the module data.
* @param properties
* compiler properties
* @throws IOException * @throws IOException
* if any I/O error occur * if any I/O error occur
*/ */
public BinaryModuleWriter( OutputStream output ) throws IOException { public BinaryModuleWriter( OutputStream output, HashMap<String, String> properties ) throws IOException {
wasm = new WasmOutputStream( output ); wasm = new WasmOutputStream( output );
debugNames = Boolean.parseBoolean( properties.get( JWebAssembly.DEBUG_NAMES ) );
} }
/** /**

View File

@ -16,6 +16,7 @@
package de.inetsoftware.jwebassembly.text; package de.inetsoftware.jwebassembly.text;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -53,10 +54,12 @@ public class TextModuleWriter extends ModuleWriter {
* *
* @param output * @param output
* target for the result * target for the result
* @param properties
* compiler properties
* @throws IOException * @throws IOException
* if any I/O error occur * if any I/O error occur
*/ */
public TextModuleWriter( Appendable output ) throws IOException { public TextModuleWriter( Appendable output, HashMap<String, String> properties ) throws IOException {
this.output = output; this.output = output;
output.append( "(module" ); output.append( "(module" );
inset++; inset++;