From 1376af2f3fb431059d69ba8c0b6dcaf63bb478df Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Mon, 14 Jan 2019 20:09:00 +0100 Subject: [PATCH] Rename StorageType to AnyType. --- .../jwebassembly/binary/BinaryModuleWriter.java | 12 ++++++------ .../jwebassembly/binary/FunctionTypeEntry.java | 10 +++++----- .../jwebassembly/binary/WasmOutputStream.java | 4 ++-- .../module/JavaMethodWasmCodeBuilder.java | 4 ++-- .../jwebassembly/module/ModuleGenerator.java | 6 +++--- .../jwebassembly/module/ModuleWriter.java | 8 ++++---- .../jwebassembly/module/TypeManager.java | 4 ++-- .../jwebassembly/module/WasmArrayInstruction.java | 9 ++++----- .../jwebassembly/module/WasmCodeBuilder.java | 4 ++-- .../jwebassembly/module/WasmStructInstruction.java | 4 ++-- .../jwebassembly/text/TextModuleWriter.java | 10 +++++----- .../wasm/{StorageType.java => AnyType.java} | 8 +++++--- .../jwebassembly/wasm/NamedStorageType.java | 4 ++-- src/de/inetsoftware/jwebassembly/wasm/ValueType.java | 2 +- .../jwebassembly/wasm/ValueTypeParser.java | 2 +- 15 files changed, 46 insertions(+), 45 deletions(-) rename src/de/inetsoftware/jwebassembly/wasm/{StorageType.java => AnyType.java} (69%) diff --git a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java index 31e112b..5f6f887 100644 --- a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java @@ -37,7 +37,7 @@ import de.inetsoftware.jwebassembly.module.ValueTypeConvertion; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NumericOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; @@ -63,7 +63,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod private Map functions = new LinkedHashMap<>(); - private List locals = new ArrayList<>(); + private List locals = new ArrayList<>(); private Map globals = new LinkedHashMap<>(); @@ -287,7 +287,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod * {@inheritDoc} */ @Override - protected void writeMethodParam( String kind, StorageType valueType, @Nullable String name ) throws IOException { + protected void writeMethodParam( String kind, AnyType valueType, @Nullable String name ) throws IOException { switch( kind ) { case "param": functionType.params.add( valueType ); @@ -327,7 +327,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod protected void writeMethodFinish() throws IOException { WasmOutputStream localsStream = new WasmOutputStream(); localsStream.writeVaruint32( locals.size() ); - for( StorageType valueType : locals ) { + for( AnyType valueType : locals ) { localsStream.writeVaruint32( 1 ); // TODO optimize, write the count of same types. localsStream.writeValueType( valueType ); } @@ -812,7 +812,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod * {@inheritDoc} */ @Override - protected void writeArrayOperator( @Nonnull ArrayOperator op, StorageType type ) throws IOException { + protected void writeArrayOperator( @Nonnull ArrayOperator op, AnyType type ) throws IOException { int opCode; switch(op) { case NEW: @@ -838,7 +838,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod * {@inheritDoc} */ @Override - protected void writeStructOperator( StructOperator op, StorageType type, String fieldName ) throws IOException { + protected void writeStructOperator( StructOperator op, AnyType type, String fieldName ) throws IOException { int opCode; switch(op) { case NEW: diff --git a/src/de/inetsoftware/jwebassembly/binary/FunctionTypeEntry.java b/src/de/inetsoftware/jwebassembly/binary/FunctionTypeEntry.java index 0a2fa67..68b5189 100644 --- a/src/de/inetsoftware/jwebassembly/binary/FunctionTypeEntry.java +++ b/src/de/inetsoftware/jwebassembly/binary/FunctionTypeEntry.java @@ -19,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.ValueType; /** @@ -29,9 +29,9 @@ import de.inetsoftware.jwebassembly.wasm.ValueType; */ class FunctionTypeEntry extends TypeEntry { - final List params = new ArrayList<>(); + final List params = new ArrayList<>(); - final List results = new ArrayList<>(); + final List results = new ArrayList<>(); /** * {@inheritDoc} @@ -47,11 +47,11 @@ class FunctionTypeEntry extends TypeEntry { @Override void writeSectionEntryDetails( WasmOutputStream stream ) throws IOException { stream.writeVaruint32( this.params.size() ); - for( StorageType valueType : this.params ) { + for( AnyType valueType : this.params ) { stream.writeValueType( valueType ); } stream.writeVaruint32( this.results.size() ); - for( StorageType valueType : this.results ) { + for( AnyType valueType : this.results ) { stream.writeValueType( valueType ); } } diff --git a/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java b/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java index 8701f10..78067a4 100644 --- a/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java +++ b/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java @@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets; import javax.annotation.Nonnegative; import javax.annotation.Nonnull; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.ValueType; /** @@ -72,7 +72,7 @@ class WasmOutputStream extends FilterOutputStream { * @throws IOException * if an I/O error occurs. */ - public void writeValueType( StorageType type ) throws IOException { + public void writeValueType( AnyType type ) throws IOException { writeVarint( type.getCode() ); } diff --git a/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java index a5ffe8b..c57b4f3 100644 --- a/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/JavaMethodWasmCodeBuilder.java @@ -28,7 +28,7 @@ import de.inetsoftware.classparser.ConstantRef; import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.NumericOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; @@ -186,7 +186,7 @@ class JavaMethodWasmCodeBuilder extends WasmCodeBuilder { addArrayInstruction( ArrayOperator.GET, ValueType.f64, codePos ); break; case 50: // aaload - StorageType storeType = findPreviousPushInstructionPushValueType(); + AnyType storeType = findPreviousPushInstructionPushValueType(); addArrayInstruction( ArrayOperator.GET, storeType, codePos ); break; case 51: // baload diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java index ba6a2f3..ceb1626 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java @@ -37,7 +37,7 @@ import de.inetsoftware.jwebassembly.JWebAssembly; import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.module.TypeManager.StructType; import de.inetsoftware.jwebassembly.wasm.NamedStorageType; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueTypeParser; import de.inetsoftware.jwebassembly.watparser.WatParser; @@ -179,7 +179,7 @@ public class ModuleGenerator { if( field.isStatic() ) { continue; } - StorageType fieldtype = new ValueTypeParser( field.getType(), types ).next(); + AnyType fieldtype = new ValueTypeParser( field.getType(), types ).next(); list.add( new NamedStorageType( fieldtype, field.getName() ) ); } int id = writer.writeStruct( className, list ); @@ -355,7 +355,7 @@ public class ModuleGenerator { writer.writeMethodParam( "param", ValueType.anyref, "this" ); } ValueTypeParser parser = new ValueTypeParser( signature ); - StorageType type; + AnyType type; for( String kind : new String[] {"param","result"}) { while( (type = parser.next()) != null ) { String paramName = null; diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java b/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java index ac3325d..ac5da4a 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java @@ -26,7 +26,7 @@ import de.inetsoftware.classparser.Member; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NumericOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; @@ -107,7 +107,7 @@ public abstract class ModuleWriter implements Closeable { * @throws IOException * if any I/O error occur */ - protected abstract void writeMethodParam( String kind, StorageType valueType, @Nullable String name ) throws IOException; + protected abstract void writeMethodParam( String kind, AnyType valueType, @Nullable String name ) throws IOException; /** * Finish the function parameter. @@ -227,7 +227,7 @@ public abstract class ModuleWriter implements Closeable { * @throws IOException * if any I/O error occur */ - protected abstract void writeArrayOperator( @Nonnull ArrayOperator op, StorageType type ) throws IOException; + protected abstract void writeArrayOperator( @Nonnull ArrayOperator op, AnyType type ) throws IOException; /** * Write a struct operation @@ -240,5 +240,5 @@ public abstract class ModuleWriter implements Closeable { * @throws IOException * if any I/O error occur */ - protected abstract void writeStructOperator( StructOperator op, StorageType type, String fieldName ) throws IOException; + protected abstract void writeStructOperator( StructOperator op, AnyType type, String fieldName ) throws IOException; } diff --git a/src/de/inetsoftware/jwebassembly/module/TypeManager.java b/src/de/inetsoftware/jwebassembly/module/TypeManager.java index d7e2990..1acf370 100644 --- a/src/de/inetsoftware/jwebassembly/module/TypeManager.java +++ b/src/de/inetsoftware/jwebassembly/module/TypeManager.java @@ -22,7 +22,7 @@ import java.util.Map; import javax.annotation.Nonnull; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; /** * Manage the written and to write types (classes) @@ -76,7 +76,7 @@ public class TypeManager { * * @author Volker Berlin */ - static class StructType implements StorageType { + static class StructType implements AnyType { private final String name; diff --git a/src/de/inetsoftware/jwebassembly/module/WasmArrayInstruction.java b/src/de/inetsoftware/jwebassembly/module/WasmArrayInstruction.java index c5dda1a..7f1fe0c 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmArrayInstruction.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmArrayInstruction.java @@ -1,5 +1,5 @@ /* - Copyright 2018 Volker Berlin (i-net software) + Copyright 2018 - 2019 Volker Berlin (i-net software) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -22,9 +22,8 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import de.inetsoftware.jwebassembly.WasmException; -import de.inetsoftware.jwebassembly.module.WasmInstruction.Type; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.ValueType; /** @@ -37,7 +36,7 @@ class WasmArrayInstruction extends WasmInstruction { private final ArrayOperator op; - private final StorageType type; + private final AnyType type; /** * Create an instance of an array operation. @@ -49,7 +48,7 @@ class WasmArrayInstruction extends WasmInstruction { * @param javaCodePos * the code position/offset in the Java method */ - WasmArrayInstruction( @Nullable ArrayOperator op, @Nullable StorageType type, int javaCodePos ) { + WasmArrayInstruction( @Nullable ArrayOperator op, @Nullable AnyType type, int javaCodePos ) { super( javaCodePos ); this.op = op; this.type = type; diff --git a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java index 8a84840..19dfa0b 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java @@ -25,7 +25,7 @@ import javax.annotation.Nullable; import de.inetsoftware.classparser.Member; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.NumericOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; @@ -222,7 +222,7 @@ public abstract class WasmCodeBuilder { * @param javaCodePos * the code position/offset in the Java method */ - protected void addArrayInstruction( ArrayOperator op, StorageType type, int javaCodePos ) { + protected void addArrayInstruction( ArrayOperator op, AnyType type, int javaCodePos ) { instructions.add( new WasmArrayInstruction( op, type, javaCodePos ) ); } diff --git a/src/de/inetsoftware/jwebassembly/module/WasmStructInstruction.java b/src/de/inetsoftware/jwebassembly/module/WasmStructInstruction.java index 2036651..0e99112 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmStructInstruction.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmStructInstruction.java @@ -23,7 +23,7 @@ import javax.annotation.Nullable; import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.module.TypeManager.StructType; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; @@ -39,7 +39,7 @@ class WasmStructInstruction extends WasmInstruction { private final String typeName; - private StorageType type; + private AnyType type; private final String fieldName; diff --git a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java index 7bdaecc..7ff6023 100644 --- a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java @@ -31,7 +31,7 @@ import de.inetsoftware.jwebassembly.module.ValueTypeConvertion; import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NumericOperator; -import de.inetsoftware.jwebassembly.wasm.StorageType; +import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.StructOperator; import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; @@ -101,7 +101,7 @@ public class TextModuleWriter extends ModuleWriter { output.append( " $" ).append( field.name ); } output.append( " (mut " ); - StorageType type = field.type; + AnyType type = field.type; if( type.getCode() < 0 ) { output.append( type.toString() ); } else { @@ -152,7 +152,7 @@ public class TextModuleWriter extends ModuleWriter { * {@inheritDoc} */ @Override - protected void writeMethodParam( String kind, StorageType valueType, @Nullable String name ) throws IOException { + protected void writeMethodParam( String kind, AnyType valueType, @Nullable String name ) throws IOException { methodOutput.append( " (" ).append( kind ); if( debugNames && name != null ) { methodOutput.append( " $" ).append( name ); @@ -423,7 +423,7 @@ public class TextModuleWriter extends ModuleWriter { * {@inheritDoc} */ @Override - protected void writeArrayOperator( @Nonnull ArrayOperator op, StorageType type ) throws IOException { + protected void writeArrayOperator( @Nonnull ArrayOperator op, AnyType type ) throws IOException { String operation; switch( op ) { case NEW: @@ -449,7 +449,7 @@ public class TextModuleWriter extends ModuleWriter { * {@inheritDoc} */ @Override - protected void writeStructOperator( StructOperator op, StorageType type, String fieldName ) throws IOException { + protected void writeStructOperator( StructOperator op, AnyType type, String fieldName ) throws IOException { String operation; switch( op ) { case NEW: diff --git a/src/de/inetsoftware/jwebassembly/wasm/StorageType.java b/src/de/inetsoftware/jwebassembly/wasm/AnyType.java similarity index 69% rename from src/de/inetsoftware/jwebassembly/wasm/StorageType.java rename to src/de/inetsoftware/jwebassembly/wasm/AnyType.java index b975768..2e62620 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/StorageType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/AnyType.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Volker Berlin (i-net software) + * Copyright 2018 - 2019 Volker Berlin (i-net software) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,20 +16,22 @@ package de.inetsoftware.jwebassembly.wasm; /** + * Interface of all possible types in WebAssembly. This are predefined (native) types and custom types in the type section. *

  * numtype ::= i32 | i64 | f32 | f64
  * packedtype ::= i8 | i16
  * reftype ::= anyref | anyfunc | nullref
  * valtype ::= numtype | reftype
+ * deftype ::= functype | structtype | arraytype
  * 
  * storagetype ::= valtype | packedtype
  * 
* @author Volker Berlin */ -public interface StorageType { +public interface AnyType { /** - * The operation code in WebAssembly. + * The type code(typeidx) in WebAssembly. Predefined types have an negative typeidx. Custom types have the positive index in the type section. * * @return the code */ diff --git a/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java b/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java index 8c79274..d9cfc01 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java @@ -22,7 +22,7 @@ package de.inetsoftware.jwebassembly.wasm; */ public class NamedStorageType { - public final StorageType type; + public final AnyType type; public final String name; @@ -31,7 +31,7 @@ public class NamedStorageType { * @param type the type * @param name the name */ - public NamedStorageType( StorageType type, String name ) { + public NamedStorageType( AnyType type, String name ) { this.type = type; this.name = name; } diff --git a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java index c8d7efc..91b4126 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java @@ -18,7 +18,7 @@ package de.inetsoftware.jwebassembly.wasm; /** * @author Volker Berlin */ -public enum ValueType implements StorageType { +public enum ValueType implements AnyType { i32(-0x01), i64(-0x02), f32(-0x03), diff --git a/src/de/inetsoftware/jwebassembly/wasm/ValueTypeParser.java b/src/de/inetsoftware/jwebassembly/wasm/ValueTypeParser.java index c527f4c..178b4dd 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/ValueTypeParser.java +++ b/src/de/inetsoftware/jwebassembly/wasm/ValueTypeParser.java @@ -61,7 +61,7 @@ public class ValueTypeParser { * * @return next type or null */ - public StorageType next() { + public AnyType next() { if( idx >= sig.length() ) { return null; }