implements br_table

This commit is contained in:
Volker Berlin 2018-05-05 21:39:36 +02:00
parent a7fc8e0fc6
commit 7f92d062e9
2 changed files with 16 additions and 1 deletions

View File

@ -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 );
}

View File

@ -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 );
}