Procházet zdrojové kódy

+ added unhandled exception handling code for the branchful exceptions mode

Nikolay Nikolov před 3 roky
rodič
revize
c0cec218d6
2 změnil soubory, kde provedl 18 přidání a 1 odebrání
  1. 17 0
      rtl/wasi/si_prc.pp
  2. 1 1
      rtl/wasm32/except_branchful.inc

+ 17 - 0
rtl/wasi/si_prc.pp

@@ -17,6 +17,10 @@
 
 unit si_prc;
 
+{$ifdef FPC_WASM_BRANCHFUL_EXCEPTIONS}
+  {$MODESWITCH EXCEPTIONS}
+{$endif}
+
 interface
 
 procedure _start;
@@ -25,10 +29,23 @@ implementation
 
 procedure PASCALMAIN; external 'PASCALMAIN';
 
+{$ifdef FPC_WASM_BRANCHFUL_EXCEPTIONS}
+Procedure DoUnHandledException; external name 'FPC_DOUNHANDLEDEXCEPTION';
+
+procedure _start;
+begin
+  try
+    PASCALMAIN;
+  except
+    DoUnhandledException;
+  end;
+end;
+{$else}
 procedure _start;
 begin
   PASCALMAIN;
 end;
+{$endif}
 
 exports
   _start;

+ 1 - 1
rtl/wasm32/except_branchful.inc

@@ -134,7 +134,7 @@ begin
   Result:=NewObj;
 end;
 
-Procedure DoUnHandledException;
+Procedure DoUnHandledException;[Public, Alias : 'FPC_DOUNHANDLEDEXCEPTION'];
 var
   _ExceptObjectStack : PExceptObject;
 begin