Rename StorageType to AnyType.

This commit is contained in:
Volker Berlin 2019-01-14 20:09:00 +01:00
parent 522f25c326
commit 1376af2f3f
15 changed files with 46 additions and 45 deletions

View File

@ -37,7 +37,7 @@ import de.inetsoftware.jwebassembly.module.ValueTypeConvertion;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NamedStorageType;
import de.inetsoftware.jwebassembly.wasm.NumericOperator; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator;
@ -63,7 +63,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
private Map<String, Function> functions = new LinkedHashMap<>(); private Map<String, Function> functions = new LinkedHashMap<>();
private List<StorageType> locals = new ArrayList<>(); private List<AnyType> locals = new ArrayList<>();
private Map<String, Global> globals = new LinkedHashMap<>(); private Map<String, Global> globals = new LinkedHashMap<>();
@ -287,7 +287,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @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 ) { switch( kind ) {
case "param": case "param":
functionType.params.add( valueType ); functionType.params.add( valueType );
@ -327,7 +327,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
protected void writeMethodFinish() throws IOException { protected void writeMethodFinish() throws IOException {
WasmOutputStream localsStream = new WasmOutputStream(); WasmOutputStream localsStream = new WasmOutputStream();
localsStream.writeVaruint32( locals.size() ); localsStream.writeVaruint32( locals.size() );
for( StorageType valueType : locals ) { for( AnyType valueType : locals ) {
localsStream.writeVaruint32( 1 ); // TODO optimize, write the count of same types. localsStream.writeVaruint32( 1 ); // TODO optimize, write the count of same types.
localsStream.writeValueType( valueType ); localsStream.writeValueType( valueType );
} }
@ -812,7 +812,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
protected void writeArrayOperator( @Nonnull ArrayOperator op, StorageType type ) throws IOException { protected void writeArrayOperator( @Nonnull ArrayOperator op, AnyType type ) throws IOException {
int opCode; int opCode;
switch(op) { switch(op) {
case NEW: case NEW:
@ -838,7 +838,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @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; int opCode;
switch(op) { switch(op) {
case NEW: case NEW:

View File

@ -19,7 +19,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.inetsoftware.jwebassembly.wasm.StorageType; import de.inetsoftware.jwebassembly.wasm.AnyType;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
/** /**
@ -29,9 +29,9 @@ import de.inetsoftware.jwebassembly.wasm.ValueType;
*/ */
class FunctionTypeEntry extends TypeEntry { class FunctionTypeEntry extends TypeEntry {
final List<StorageType> params = new ArrayList<>(); final List<AnyType> params = new ArrayList<>();
final List<StorageType> results = new ArrayList<>(); final List<AnyType> results = new ArrayList<>();
/** /**
* {@inheritDoc} * {@inheritDoc}
@ -47,11 +47,11 @@ class FunctionTypeEntry extends TypeEntry {
@Override @Override
void writeSectionEntryDetails( WasmOutputStream stream ) throws IOException { void writeSectionEntryDetails( WasmOutputStream stream ) throws IOException {
stream.writeVaruint32( this.params.size() ); stream.writeVaruint32( this.params.size() );
for( StorageType valueType : this.params ) { for( AnyType valueType : this.params ) {
stream.writeValueType( valueType ); stream.writeValueType( valueType );
} }
stream.writeVaruint32( this.results.size() ); stream.writeVaruint32( this.results.size() );
for( StorageType valueType : this.results ) { for( AnyType valueType : this.results ) {
stream.writeValueType( valueType ); stream.writeValueType( valueType );
} }
} }

View File

@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets;
import javax.annotation.Nonnegative; import javax.annotation.Nonnegative;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import de.inetsoftware.jwebassembly.wasm.StorageType; import de.inetsoftware.jwebassembly.wasm.AnyType;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
/** /**
@ -72,7 +72,7 @@ class WasmOutputStream extends FilterOutputStream {
* @throws IOException * @throws IOException
* if an I/O error occurs. * if an I/O error occurs.
*/ */
public void writeValueType( StorageType type ) throws IOException { public void writeValueType( AnyType type ) throws IOException {
writeVarint( type.getCode() ); writeVarint( type.getCode() );
} }

View File

@ -28,7 +28,7 @@ import de.inetsoftware.classparser.ConstantRef;
import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.NumericOperator; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator;
@ -186,7 +186,7 @@ class JavaMethodWasmCodeBuilder extends WasmCodeBuilder {
addArrayInstruction( ArrayOperator.GET, ValueType.f64, codePos ); addArrayInstruction( ArrayOperator.GET, ValueType.f64, codePos );
break; break;
case 50: // aaload case 50: // aaload
StorageType storeType = findPreviousPushInstructionPushValueType(); AnyType storeType = findPreviousPushInstructionPushValueType();
addArrayInstruction( ArrayOperator.GET, storeType, codePos ); addArrayInstruction( ArrayOperator.GET, storeType, codePos );
break; break;
case 51: // baload case 51: // baload

View File

@ -37,7 +37,7 @@ import de.inetsoftware.jwebassembly.JWebAssembly;
import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.module.TypeManager.StructType; import de.inetsoftware.jwebassembly.module.TypeManager.StructType;
import de.inetsoftware.jwebassembly.wasm.NamedStorageType; 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.ValueType;
import de.inetsoftware.jwebassembly.wasm.ValueTypeParser; import de.inetsoftware.jwebassembly.wasm.ValueTypeParser;
import de.inetsoftware.jwebassembly.watparser.WatParser; import de.inetsoftware.jwebassembly.watparser.WatParser;
@ -179,7 +179,7 @@ public class ModuleGenerator {
if( field.isStatic() ) { if( field.isStatic() ) {
continue; continue;
} }
StorageType fieldtype = new ValueTypeParser( field.getType(), types ).next(); AnyType fieldtype = new ValueTypeParser( field.getType(), types ).next();
list.add( new NamedStorageType( fieldtype, field.getName() ) ); list.add( new NamedStorageType( fieldtype, field.getName() ) );
} }
int id = writer.writeStruct( className, list ); int id = writer.writeStruct( className, list );
@ -355,7 +355,7 @@ public class ModuleGenerator {
writer.writeMethodParam( "param", ValueType.anyref, "this" ); writer.writeMethodParam( "param", ValueType.anyref, "this" );
} }
ValueTypeParser parser = new ValueTypeParser( signature ); ValueTypeParser parser = new ValueTypeParser( signature );
StorageType type; AnyType type;
for( String kind : new String[] {"param","result"}) { for( String kind : new String[] {"param","result"}) {
while( (type = parser.next()) != null ) { while( (type = parser.next()) != null ) {
String paramName = null; String paramName = null;

View File

@ -26,7 +26,7 @@ import de.inetsoftware.classparser.Member;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NamedStorageType;
import de.inetsoftware.jwebassembly.wasm.NumericOperator; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator;
@ -107,7 +107,7 @@ public abstract class ModuleWriter implements Closeable {
* @throws IOException * @throws IOException
* if any I/O error occur * 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. * Finish the function parameter.
@ -227,7 +227,7 @@ public abstract class ModuleWriter implements Closeable {
* @throws IOException * @throws IOException
* if any I/O error occur * 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 * Write a struct operation
@ -240,5 +240,5 @@ public abstract class ModuleWriter implements Closeable {
* @throws IOException * @throws IOException
* if any I/O error occur * 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;
} }

View File

@ -22,7 +22,7 @@ import java.util.Map;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import de.inetsoftware.jwebassembly.wasm.StorageType; import de.inetsoftware.jwebassembly.wasm.AnyType;
/** /**
* Manage the written and to write types (classes) * Manage the written and to write types (classes)
@ -76,7 +76,7 @@ public class TypeManager {
* *
* @author Volker Berlin * @author Volker Berlin
*/ */
static class StructType implements StorageType { static class StructType implements AnyType {
private final String name; private final String name;

View File

@ -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"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with 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 javax.annotation.Nullable;
import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.module.WasmInstruction.Type;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.StorageType; import de.inetsoftware.jwebassembly.wasm.AnyType;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
/** /**
@ -37,7 +36,7 @@ class WasmArrayInstruction extends WasmInstruction {
private final ArrayOperator op; private final ArrayOperator op;
private final StorageType type; private final AnyType type;
/** /**
* Create an instance of an array operation. * Create an instance of an array operation.
@ -49,7 +48,7 @@ class WasmArrayInstruction extends WasmInstruction {
* @param javaCodePos * @param javaCodePos
* the code position/offset in the Java method * 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 ); super( javaCodePos );
this.op = op; this.op = op;
this.type = type; this.type = type;

View File

@ -25,7 +25,7 @@ import javax.annotation.Nullable;
import de.inetsoftware.classparser.Member; import de.inetsoftware.classparser.Member;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.NumericOperator; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator;
@ -222,7 +222,7 @@ public abstract class WasmCodeBuilder {
* @param javaCodePos * @param javaCodePos
* the code position/offset in the Java method * 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 ) ); instructions.add( new WasmArrayInstruction( op, type, javaCodePos ) );
} }

View File

@ -23,7 +23,7 @@ import javax.annotation.Nullable;
import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.module.TypeManager.StructType; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
@ -39,7 +39,7 @@ class WasmStructInstruction extends WasmInstruction {
private final String typeName; private final String typeName;
private StorageType type; private AnyType type;
private final String fieldName; private final String fieldName;

View File

@ -31,7 +31,7 @@ import de.inetsoftware.jwebassembly.module.ValueTypeConvertion;
import de.inetsoftware.jwebassembly.wasm.ArrayOperator; import de.inetsoftware.jwebassembly.wasm.ArrayOperator;
import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NamedStorageType;
import de.inetsoftware.jwebassembly.wasm.NumericOperator; 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.StructOperator;
import de.inetsoftware.jwebassembly.wasm.ValueType; import de.inetsoftware.jwebassembly.wasm.ValueType;
import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator; import de.inetsoftware.jwebassembly.wasm.WasmBlockOperator;
@ -101,7 +101,7 @@ public class TextModuleWriter extends ModuleWriter {
output.append( " $" ).append( field.name ); output.append( " $" ).append( field.name );
} }
output.append( " (mut " ); output.append( " (mut " );
StorageType type = field.type; AnyType type = field.type;
if( type.getCode() < 0 ) { if( type.getCode() < 0 ) {
output.append( type.toString() ); output.append( type.toString() );
} else { } else {
@ -152,7 +152,7 @@ public class TextModuleWriter extends ModuleWriter {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @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 ); methodOutput.append( " (" ).append( kind );
if( debugNames && name != null ) { if( debugNames && name != null ) {
methodOutput.append( " $" ).append( name ); methodOutput.append( " $" ).append( name );
@ -423,7 +423,7 @@ public class TextModuleWriter extends ModuleWriter {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
protected void writeArrayOperator( @Nonnull ArrayOperator op, StorageType type ) throws IOException { protected void writeArrayOperator( @Nonnull ArrayOperator op, AnyType type ) throws IOException {
String operation; String operation;
switch( op ) { switch( op ) {
case NEW: case NEW:
@ -449,7 +449,7 @@ public class TextModuleWriter extends ModuleWriter {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @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; String operation;
switch( op ) { switch( op ) {
case NEW: case NEW:

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,20 +16,22 @@
package de.inetsoftware.jwebassembly.wasm; package de.inetsoftware.jwebassembly.wasm;
/** /**
* Interface of all possible types in WebAssembly. This are predefined (native) types and custom types in the type section.
* <pre><code> * <pre><code>
* numtype ::= i32 | i64 | f32 | f64 * numtype ::= i32 | i64 | f32 | f64
* packedtype ::= i8 | i16 * packedtype ::= i8 | i16
* reftype ::= anyref | anyfunc | nullref * reftype ::= anyref | anyfunc | nullref
* valtype ::= numtype | reftype * valtype ::= numtype | reftype
* deftype ::= functype | structtype | arraytype
* *
* storagetype ::= valtype | packedtype * storagetype ::= valtype | packedtype
* </code></pre> * </code></pre>
* @author Volker Berlin * @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 * @return the code
*/ */

View File

@ -22,7 +22,7 @@ package de.inetsoftware.jwebassembly.wasm;
*/ */
public class NamedStorageType { public class NamedStorageType {
public final StorageType type; public final AnyType type;
public final String name; public final String name;
@ -31,7 +31,7 @@ public class NamedStorageType {
* @param type the type * @param type the type
* @param name the name * @param name the name
*/ */
public NamedStorageType( StorageType type, String name ) { public NamedStorageType( AnyType type, String name ) {
this.type = type; this.type = type;
this.name = name; this.name = name;
} }

View File

@ -18,7 +18,7 @@ package de.inetsoftware.jwebassembly.wasm;
/** /**
* @author Volker Berlin * @author Volker Berlin
*/ */
public enum ValueType implements StorageType { public enum ValueType implements AnyType {
i32(-0x01), i32(-0x01),
i64(-0x02), i64(-0x02),
f32(-0x03), f32(-0x03),

View File

@ -61,7 +61,7 @@ public class ValueTypeParser {
* *
* @return next type or null * @return next type or null
*/ */
public StorageType next() { public AnyType next() {
if( idx >= sig.length() ) { if( idx >= sig.length() ) {
return null; return null;
} }