add i32.div_s, i64.div_s, i64.eqz and throw to the wat parser

This commit is contained in:
Volker Berlin 2020-04-19 19:09:58 +02:00
parent d99eb77de8
commit 1ce3e97464

View File

@ -29,7 +29,6 @@ import de.inetsoftware.jwebassembly.WasmException;
import de.inetsoftware.jwebassembly.module.FunctionName;
import de.inetsoftware.jwebassembly.module.ValueTypeConvertion;
import de.inetsoftware.jwebassembly.module.WasmCodeBuilder;
import de.inetsoftware.jwebassembly.module.TypeManager.StructType;
import de.inetsoftware.jwebassembly.wasm.AnyType;
import de.inetsoftware.jwebassembly.wasm.MemoryOperator;
import de.inetsoftware.jwebassembly.wasm.NamedStorageType;
@ -88,6 +87,9 @@ public class WatParser extends WasmCodeBuilder {
case "i32.eq":
addNumericInstruction( NumericOperator.eq, ValueType.i32, javaCodePos, lineNumber );
break;
case "i32.div_s":
addNumericInstruction( NumericOperator.div, ValueType.i32, javaCodePos, lineNumber );
break;
case "i32.eqz":
addNumericInstruction( NumericOperator.eqz, ValueType.i32, javaCodePos, lineNumber );
break;
@ -106,6 +108,12 @@ public class WatParser extends WasmCodeBuilder {
case "i64.const":
addConstInstruction( Long.parseLong( get( tokens, ++i ) ), ValueType.i64, javaCodePos, lineNumber );
break;
case "i64.div_s":
addNumericInstruction( NumericOperator.div, ValueType.i64, javaCodePos, lineNumber );
break;
case "i64.eqz":
addNumericInstruction( NumericOperator.eqz, ValueType.i64, javaCodePos, lineNumber );
break;
case "i64.extend_i32_s":
addConvertInstruction( ValueTypeConvertion.i2l, javaCodePos, lineNumber );
break;
@ -226,7 +234,7 @@ public class WatParser extends WasmCodeBuilder {
FunctionName name = new FunctionName( builder.substring( 1 ) );
addCallInstruction( name, javaCodePos, lineNumber );
} catch( Exception ex ) {
throw new WasmException( "The syntax for a function name is $package.ClassName.methodName(paramSignature)returnSignature", lineNumber );
throw WasmException.create( "The syntax for a function name is $package.ClassName.methodName(paramSignature)returnSignature", ex );
}
break;
case "return":
@ -262,6 +270,9 @@ public class WatParser extends WasmCodeBuilder {
case "br_if":
addBlockInstruction( WasmBlockOperator.BR_IF, getInt( tokens, ++i ), javaCodePos, lineNumber );
break;
case "throw":
addBlockInstruction( WasmBlockOperator.THROW, null, javaCodePos, lineNumber );
break;
case "unreachable":
addBlockInstruction( WasmBlockOperator.UNREACHABLE, null, javaCodePos, lineNumber );
break;