diff --git a/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java b/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java index 629f4be..d792202 100644 --- a/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java +++ b/src/de/inetsoftware/jwebassembly/binary/WasmOutputStream.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 - 2020 Volker Berlin (i-net software) + * Copyright 2017 - 2021 Volker Berlin (i-net software) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -84,6 +84,13 @@ class WasmOutputStream extends LittleEndianOutputStream { * if an I/O error occurs. */ public void writeValueType( AnyType type ) throws IOException { + if( !type.isRefType() && !options.useGC() ) { + switch( (ValueType)type ) { + case eqref: + type = ValueType.externref; + break; + } + } writeVarint( type.getCode() ); } diff --git a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java index b677868..d333eb8 100644 --- a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java @@ -362,7 +362,23 @@ public class TextModuleWriter extends ModuleWriter { */ private void writeTypeName( Appendable output, AnyType type ) throws IOException { if( !type.isRefType() ) { - String name = type == ValueType.u16 ? "i16" : type == ValueType.bool ? "i8" : type.toString(); + String name; + switch( (ValueType)type ) { + case u16: + name = "i16"; + break; + case bool: + name = "i8"; + break; + case eqref: + if( !options.useGC() ) { + name = ValueType.externref.toString(); + break; + } + //$FALL-THROUGH$ + default: + name = type.toString(); + } output.append( name ); } else if( options.useGC() ) { //output.append( ValueType.eqref.toString() );