+ support declaring wasm globals in the WebAssembly internal object writer

This commit is contained in:
Nikolay Nikolov 2022-07-31 19:28:09 +03:00
parent 77e350b6b8
commit 65b4425672

View File

@ -752,7 +752,13 @@ implementation
procedure TWasmObjData.DeclareGlobalType(gt: tai_globaltype); procedure TWasmObjData.DeclareGlobalType(gt: tai_globaltype);
var var
ObjSymExtraData: TWasmObjSymbolExtraData; ObjSymExtraData: TWasmObjSymbolExtraData;
ObjSym: TObjSymbol;
begin begin
if not gt.is_external then
begin
ObjSym:=symboldefine(gt.sym);
ObjSym.typ:=AT_WASM_GLOBAL;
end;
ObjSymExtraData:=AddOrCreateObjSymbolExtraData(gt.globalname); ObjSymExtraData:=AddOrCreateObjSymbolExtraData(gt.globalname);
ObjSymExtraData.GlobalType:=gt.gtype; ObjSymExtraData.GlobalType:=gt.gtype;
ObjSymExtraData.GlobalIsImmutable:=gt.immutable; ObjSymExtraData.GlobalIsImmutable:=gt.immutable;
@ -1753,8 +1759,14 @@ implementation
WriteUleb(FWasmSymbolTable,objsym.GlobalIndex); WriteUleb(FWasmSymbolTable,objsym.GlobalIndex);
end end
else else
{not implemented yet} begin
internalerror(2021092705); WriteUleb(FWasmSymbolTable,0);
if (objsym.GlobalIndex<0) then
message1(asmw_e_illegal_unset_index,objsym.name)
else
WriteUleb(FWasmSymbolTable,objsym.GlobalIndex);
WriteName(FWasmSymbolTable,objsym.Name);
end;
end end
else if IsExternalFunction(objsym) then else if IsExternalFunction(objsym) then
begin begin