Skip to content

Commit 87d0f4d

Browse files
committed
Implemented final Wasm GC binary and textual format.
1 parent 20dbc76 commit 87d0f4d

17 files changed

+37
-24
lines changed

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/Cast.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,22 @@ public class Cast implements WasmValue {
3131
@Override
3232
public void writeTo(final TextWriter writer, final ExportContext context) throws IOException {
3333
writer.opening();
34-
writer.write("ref.cast_static $");
34+
writer.write("ref.cast");
35+
writer.space();
36+
writer.opening();
37+
writer.write("ref null $");
3538
writer.write(structType.getName());
39+
writer.closing();
3640
writer.space();
3741
source.writeTo(writer, context);
3842
writer.closing();
39-
4043
}
4144

4245
@Override
4346
public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext context) throws IOException {
4447
source.writeTo(binaryWriter, context);
4548
binaryWriter.writeByte((byte) 0xfb);
46-
binaryWriter.writeByte((byte) 0x45);
49+
binaryWriter.writeByte((byte) 0x17);
4750
binaryWriter.writeSignedLeb128(structType.index());
4851
}
4952
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/ConstExpressions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ public static GetStruct get(final StructType structType, final WasmValue source,
487487
public static class array {
488488

489489
public static WasmValue newInstance(final WasmType type, final List<WasmValue> arguments) {
490-
return new NewWasmArrayStaticInit(type, arguments);
490+
return new NewWasmArrayFixed(type, arguments);
491491
}
492492

493493
public static WasmValue newInstanceDefault(final WasmType type, final WasmValue length) {

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/GetStruct.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void writeTo(final TextWriter writer, final ExportContext context) throws
3434
public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext context) throws IOException {
3535
source.writeTo(binaryWriter, context);
3636
binaryWriter.writeByte((byte) 0xfb);
37-
binaryWriter.writeByte((byte) 0x03);
37+
binaryWriter.writeByte((byte) 0x02);
3838
binaryWriter.writeUnsignedLeb128(structType.index());
3939
binaryWriter.writeUnsignedLeb128(structType.indexOfField(fieldName));
4040
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/GetWasmArray.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext
3333
array.writeTo(binaryWriter, context);
3434
index.writeTo(binaryWriter, context);
3535
binaryWriter.writeByte((byte) 0xfb);
36-
binaryWriter.writeByte((byte) 0x13);
36+
binaryWriter.writeByte((byte) 0x0b);
3737
binaryWriter.writeUnsignedLeb128(type.index());
3838
}
3939
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/GetWasmArrayLength.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ public void writeTo(final TextWriter writer, final ExportContext context) throws
2727
public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext context) throws IOException {
2828
array.writeTo(binaryWriter, context);
2929
binaryWriter.writeByte((byte) 0xfb);
30-
binaryWriter.writeByte((byte) 0x19);
30+
binaryWriter.writeByte((byte) 0x0f);
3131
}
3232
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/NewStruct.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext
3333
arg.writeTo(binaryWriter, context);
3434
}
3535
binaryWriter.writeByte((byte) 0xfb);
36-
binaryWriter.writeByte((byte) 0x07);
36+
binaryWriter.writeByte((byte) 0x00);
3737
binaryWriter.writeUnsignedLeb128(type.index());
3838
}
3939
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/NewWasmArrayDefault.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void writeTo(final TextWriter writer, final ExportContext context) throws
4343
public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext context) throws IOException {
4444
length.writeTo(binaryWriter, context);
4545
binaryWriter.writeByte((byte) 0xfb);
46-
binaryWriter.writeByte((byte) 0x1c);
46+
binaryWriter.writeByte((byte) 0x07);
4747
binaryWriter.writeUnsignedLeb128(type.index());
4848
}
4949
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/NewWasmArrayStaticInit.java renamed to core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/NewWasmArrayFixed.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
import java.io.IOException;
44
import java.util.List;
55

6-
public class NewWasmArrayStaticInit implements WasmValue {
6+
public class NewWasmArrayFixed implements WasmValue {
77

88
private final WasmType type;
99

1010
private final List<WasmValue> arguments;
1111

12-
NewWasmArrayStaticInit(final WasmType type, final List<WasmValue> arguments) {
12+
NewWasmArrayFixed(final WasmType type, final List<WasmValue> arguments) {
1313
this.type = type;
1414
this.arguments = arguments;
1515
}
1616

1717
@Override
1818
public void writeTo(final TextWriter writer, final ExportContext context) throws IOException {
1919
writer.opening();
20-
writer.write("array.init_static ");
20+
writer.write("array.new_fixed ");
2121
type.writeRefTo(writer);
2222
for (final WasmValue arg : arguments) {
2323
writer.space();
@@ -32,7 +32,7 @@ public void writeTo(final BinaryWriter.Writer binaryWriter, final ExportContext
3232
arg.writeTo(binaryWriter, context);
3333
}
3434
binaryWriter.writeByte((byte) 0xfb);
35-
binaryWriter.writeByte((byte) 0x1a);
35+
binaryWriter.writeByte((byte) 0x08);
3636
binaryWriter.writeUnsignedLeb128(type.index());
3737
binaryWriter.writeUnsignedLeb128(arguments.size());
3838
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/RefEq.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
public class RefEq extends BinaryExpression {
2020

2121
RefEq(final WasmValue left, final WasmValue right) {
22-
super(left, right, "ref.eq", (byte) 0xd5);
22+
super(left, right, "ref.eq", (byte) 0xd3);
2323
}
2424
}

core/src/main/java/de/mirkosertic/bytecoder/core/backend/wasm/ast/RefType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ public void writeRefTo(final TextWriter writer) {
6969
@Override
7070
public void writeTo(final BinaryWriter.Writer writer) throws IOException {
7171
if (nullable) {
72-
writer.writeByte((byte) 0x6c);
72+
writer.writeByte((byte) 0x63);
7373
} else {
74-
writer.writeByte((byte) 0x6b);
74+
writer.writeByte((byte) 0x64);
7575
}
7676
writer.writeSignedLeb128(type.index());
7777
}

0 commit comments

Comments
 (0)