From e037de5646e344a832f1d9cbf7e1596fa1993286 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 21 Apr 2019 10:45:17 +0200 Subject: [PATCH] Also write prefix ref_type in the local variable declaration. --- .../inetsoftware/jwebassembly/binary/BinaryModuleWriter.java | 3 +++ src/de/inetsoftware/jwebassembly/binary/StructTypeEntry.java | 2 +- src/de/inetsoftware/jwebassembly/wasm/ValueType.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java index 706c2ef..eb9948c 100644 --- a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java @@ -467,6 +467,9 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod localsStream.writeVaruint32( locals.size() ); for( AnyType valueType : locals ) { localsStream.writeVaruint32( 1 ); // TODO optimize, write the count of same types. + if( valueType.getCode() >= 0 ) { + localsStream.writeValueType( ValueType.ref_type ); + } localsStream.writeValueType( valueType ); } WasmOutputStream functionsStream = function.functionsStream = new WasmOutputStream(); diff --git a/src/de/inetsoftware/jwebassembly/binary/StructTypeEntry.java b/src/de/inetsoftware/jwebassembly/binary/StructTypeEntry.java index a2ef514..bccbda3 100644 --- a/src/de/inetsoftware/jwebassembly/binary/StructTypeEntry.java +++ b/src/de/inetsoftware/jwebassembly/binary/StructTypeEntry.java @@ -60,7 +60,7 @@ class StructTypeEntry extends TypeEntry { for( NamedStorageType field : this.fields ) { stream.writeVarint( 1 ); // 0 - immutable; 1 - mutable if( field.type.getCode() > 0 ) { - stream.writeVaruint32( 0x6E ); + stream.writeValueType( ValueType.ref_type ); } stream.writeValueType( field.type ); } diff --git a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java index 91b4126..4571762 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java @@ -27,6 +27,7 @@ public enum ValueType implements AnyType { i16(-0x06), //TODO dummy value for https://github.com/WebAssembly/gc anyfunc(-0x10), anyref(-0x11), + ref_type(-0x12 ), // 0x6E https://github.com/lars-t-hansen/moz-gc-experiments/blob/master/version2.md except_ref(-0x18), // https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md func(-0x20), struct(-0x30),