From 1ce3e9746422c490f8e1f66224a7d33a2dedd0b4 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 19 Apr 2020 19:09:58 +0200 Subject: [PATCH] add i32.div_s, i64.div_s, i64.eqz and throw to the wat parser --- .../jwebassembly/watparser/WatParser.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java index 8bf652a..bc12809 100644 --- a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java +++ b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java @@ -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;