|
@@ -32,7 +32,7 @@ procedure PASCALMAIN; external 'PASCALMAIN';
|
|
{$if defined(FPC_WASM_BRANCHFUL_EXCEPTIONS) or defined(FPC_WASM_NATIVE_EXCEPTIONS)}
|
|
{$if defined(FPC_WASM_BRANCHFUL_EXCEPTIONS) or defined(FPC_WASM_NATIVE_EXCEPTIONS)}
|
|
Procedure DoUnHandledException; external name 'FPC_DOUNHANDLEDEXCEPTION';
|
|
Procedure DoUnHandledException; external name 'FPC_DOUNHANDLEDEXCEPTION';
|
|
|
|
|
|
-procedure _initialize;
|
|
|
|
|
|
+procedure _initialize_pascal;
|
|
begin
|
|
begin
|
|
try
|
|
try
|
|
PASCALMAIN;
|
|
PASCALMAIN;
|
|
@@ -41,12 +41,28 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
{$else}
|
|
{$else}
|
|
-procedure _initialize;
|
|
|
|
|
|
+procedure _initialize_pascal;
|
|
begin
|
|
begin
|
|
PASCALMAIN;
|
|
PASCALMAIN;
|
|
end;
|
|
end;
|
|
{$endif}
|
|
{$endif}
|
|
|
|
|
|
|
|
+procedure SetInitialHeapBlockStart(p: Pointer); external name 'FPC_WASM_SETINITIALHEAPBLOCKSTART';
|
|
|
|
+
|
|
|
|
+{ TODO: remove this, when calling SetInitialHeapBlockStart works directly from within inline asm }
|
|
|
|
+procedure SetInitialHeapBlockStart2(p: Pointer);
|
|
|
|
+begin
|
|
|
|
+ SetInitialHeapBlockStart(p);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure _initialize; assembler; nostackframe;
|
|
|
|
+asm
|
|
|
|
+ global.get $__stack_pointer
|
|
|
|
+ call $SetInitialHeapBlockStart2
|
|
|
|
+
|
|
|
|
+ call $_initialize_pascal
|
|
|
|
+end;
|
|
|
|
+
|
|
exports
|
|
exports
|
|
_initialize,
|
|
_initialize,
|
|
_initialize name '_initialize_promising' promising;
|
|
_initialize name '_initialize_promising' promising;
|