+ handle the import_module and import_name directives in the internal

assembler and store them as obj symbol extra data
This commit is contained in:
Nikolay Nikolov 2021-09-25 15:44:35 +03:00
parent 4ef2a88946
commit 050519f16f
2 changed files with 24 additions and 0 deletions

View File

@ -1837,6 +1837,10 @@ Implementation
{$ifdef WASM}
ait_functype:
TWasmObjData(ObjData).DeclareFuncType(tai_functype(hp));
ait_import_module:
TWasmObjData(ObjData).DeclareImportModule(tai_import_module(hp));
ait_import_name:
TWasmObjData(ObjData).DeclareImportName(tai_import_name(hp));
{$endif WASM}
else
;

View File

@ -44,6 +44,8 @@ interface
TWasmObjSymbolExtraData = class(TFPHashObject)
TypeIdx: Integer;
ImportModule: string;
ImportName: string;
constructor Create(HashObjectList: TFPHashObjectList; const s: TSymStr);
end;
@ -74,6 +76,8 @@ interface
function AddOrCreateObjSymbolExtraData(const symname:TSymStr): TWasmObjSymbolExtraData;
function AddFuncType(wft: TWasmFuncType): integer;
procedure DeclareFuncType(ft: tai_functype);
procedure DeclareImportModule(aim: tai_import_module);
procedure DeclareImportName(ain: tai_import_name);
end;
{ TWasmObjOutput }
@ -345,6 +349,22 @@ implementation
ObjSymExtraData.TypeIdx:=i;
end;
procedure TWasmObjData.DeclareImportModule(aim: tai_import_module);
var
ObjSymExtraData: TWasmObjSymbolExtraData;
begin
ObjSymExtraData:=AddOrCreateObjSymbolExtraData(aim.symname);
ObjSymExtraData.ImportModule:=aim.importmodule;
end;
procedure TWasmObjData.DeclareImportName(ain: tai_import_name);
var
ObjSymExtraData: TWasmObjSymbolExtraData;
begin
ObjSymExtraData:=AddOrCreateObjSymbolExtraData(ain.symname);
ObjSymExtraData.ImportName:=ain.importname;
end;
{****************************************************************************
TWasmObjOutput
****************************************************************************}