Handle global init value encoding in Assembler

This commit is contained in:
2026-03-15 13:42:02 +00:00
parent 7135eeba74
commit 72c5f64312

12
asm.js
View File

@@ -531,8 +531,7 @@ class Parser {
const value = this.integer(token) ?? console.error(
`ERROR: Unexpected token ${token} in .global: expected`
+ " initial value");
const const_opcode = const_opcodes[this.global.type];
this.global.init = [ const_opcode, value, opcodes["end"] ];
this.global.init = value;
const action = {
type: Action.GLOBAL,
global: { [this.global_name]: this.global }
@@ -1222,8 +1221,13 @@ export class Assembler {
const globals = Object.values(this.globals);
if (globals.length == 0)
return null;
const contents = globals.map(
({ type, init }) => [ type, 1, ...init ]);
const contents = globals.map(({ type, init }) => [
type,
1,
const_opcodes[type],
...this.leb128(init),
opcodes["end"],
]);
return [ globals.length ].concat(...contents);
}