Browse Source

+ added unhandled exception handling code for the branchful exceptions mode

Nikolay Nikolov 3 years ago
parent
commit
c0cec218d6
2 changed files with 18 additions and 1 deletions
  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;
 unit si_prc;
 
 
+{$ifdef FPC_WASM_BRANCHFUL_EXCEPTIONS}
+  {$MODESWITCH EXCEPTIONS}
+{$endif}
+
 interface
 interface
 
 
 procedure _start;
 procedure _start;
@@ -25,10 +29,23 @@ implementation
 
 
 procedure PASCALMAIN; external 'PASCALMAIN';
 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;
 procedure _start;
 begin
 begin
   PASCALMAIN;
   PASCALMAIN;
 end;
 end;
+{$endif}
 
 
 exports
 exports
   _start;
   _start;

+ 1 - 1
rtl/wasm32/except_branchful.inc

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