From 1b09c5fd8cc2cc864cc784917e3a67b5600145ce Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Fri, 14 Dec 2018 20:47:53 +0100 Subject: [PATCH] implements ref.null --- .../binary/BinaryModuleWriter.java | 8 ++++++- .../jwebassembly/text/TextModuleWriter.java | 23 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java index 990686e..48162fe 100644 --- a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java @@ -826,10 +826,16 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod case SET: opCode = STRUCT_SET; break; + case NULL: + opCode = REF_NULL; + type = null; + break; default: throw new Error( "Unknown operator: " + op ); } codeStream.writeOpCode( opCode ); - codeStream.writeValueType( type ); + if( type != null ) { + codeStream.writeValueType( type ); + } } } diff --git a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java index 0d21e16..7bdbcf7 100644 --- a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java @@ -400,21 +400,34 @@ public class TextModuleWriter extends ModuleWriter { String operation; switch( op ) { case NEW: - operation = "new"; + operation = "struct.new"; break; case NEW_DEFAULT: - operation = "new_default"; + operation = "struct.new_default"; break; case GET: - operation = "get"; + operation = "struct.get"; break; case SET: - operation = "set"; + operation = "struct.set"; + break; + case NULL: + operation = "ref.null"; + type = null; break; default: throw new Error( "Unknown operator: " + op ); } newline( methodOutput ); - methodOutput.append( "struct." ).append( operation ).append( ' ' ).append( type ); + methodOutput.append( operation ); + if( type != null ) { + int typeCode = type.getCode(); + methodOutput.append( ' ' ); + if( typeCode < 0 ) { + methodOutput.append( type ); + } else { + methodOutput.append( typeCode ); + } + } } }