From 0290a5f8e4d04eef38d6a0dcdddeded7d3f5423a Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 20 Sep 2020 13:53:57 +0200 Subject: [PATCH] Add support for Wat instruction `array.len` --- src/de/inetsoftware/jwebassembly/watparser/WatParser.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java index 731fba6..fdd5fbc 100644 --- a/src/de/inetsoftware/jwebassembly/watparser/WatParser.java +++ b/src/de/inetsoftware/jwebassembly/watparser/WatParser.java @@ -30,6 +30,8 @@ import de.inetsoftware.jwebassembly.module.FunctionName; import de.inetsoftware.jwebassembly.module.ValueTypeConvertion; import de.inetsoftware.jwebassembly.module.WasmCodeBuilder; import de.inetsoftware.jwebassembly.wasm.AnyType; +import de.inetsoftware.jwebassembly.wasm.ArrayOperator; +import de.inetsoftware.jwebassembly.wasm.ArrayType; import de.inetsoftware.jwebassembly.wasm.MemoryOperator; import de.inetsoftware.jwebassembly.wasm.NamedStorageType; import de.inetsoftware.jwebassembly.wasm.NumericOperator; @@ -300,6 +302,11 @@ public class WatParser extends WasmCodeBuilder { } addStructInstruction( StructOperator.GET, typeName, fieldNameType, javaCodePos, lineNumber ); break; + case "array.len": + typeName = get( tokens, ++i ); + AnyType type = ((ArrayType)getTypeManager().valueOf( typeName )).getArrayType(); + addArrayInstruction( ArrayOperator.LEN, type, javaCodePos, lineNumber ); + break; default: throw new WasmException( "Unknown WASM token: " + tok, lineNumber ); }