From 7f92d062e9d465a7addf6726a32259c58816ea95 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sat, 5 May 2018 21:39:36 +0200 Subject: [PATCH] implements br_table --- .../jwebassembly/binary/BinaryModuleWriter.java | 8 ++++++++ .../inetsoftware/jwebassembly/text/TextModuleWriter.java | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java index e489173..a35f378 100644 --- a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java @@ -644,6 +644,14 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod codeStream.write( BR ); codeStream.writeVaruint32( (Integer)data ); break; + case BR_TABLE: + codeStream.write( BR_TABLE ); + int[] targets = (int[])data; + codeStream.writeVaruint32( targets.length - 1 ); + for( int i : targets ) { + codeStream.writeVaruint32( i ); + } + break; default: throw new Error( "Unknown block: " + op ); } diff --git a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java index b3a0afb..b061ba3 100644 --- a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java @@ -21,11 +21,11 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import de.inetsoftware.jwebassembly.module.WasmBlockOperator; import de.inetsoftware.jwebassembly.module.ModuleWriter; import de.inetsoftware.jwebassembly.module.NumericOperator; import de.inetsoftware.jwebassembly.module.ValueType; import de.inetsoftware.jwebassembly.module.ValueTypeConvertion; +import de.inetsoftware.jwebassembly.module.WasmBlockOperator; /** * Module Writer for text format with S-expressions. @@ -279,6 +279,13 @@ public class TextModuleWriter extends ModuleWriter { case BR: name = "br " + data; break; + case BR_TABLE: + StringBuilder builder = new StringBuilder( "br_table"); + for( int i : (int[])data ) { + builder.append( ' ' ).append( i ); + } + name = builder.toString(); + break; default: throw new Error( "Unknown block: " + op ); }