Browse Source

+ support for recording an exception catching personality function for a
procdef for ABI-conformant exception handling

git-svn-id: trunk@35162 -

Jonas Maebe 8 years ago
parent
commit
6e05c78a54
1 changed files with 21 additions and 0 deletions
  1. 21 0
      compiler/symdef.pas

+ 21 - 0
compiler/symdef.pas

@@ -701,6 +701,7 @@ interface
           procstarttai,
           procendtai   : tai;
           skpara: pointer;
+          personality: tprocdef;
           forwarddef,
           interfacedef : boolean;
           hasforward  : boolean;
@@ -734,6 +735,8 @@ interface
          procedure Setprocendtai(AValue: tai);
          function Getskpara: pointer;
          procedure Setskpara(AValue: pointer);
+         function Getpersonality: tprocdef;
+         procedure Setpersonality(AValue: tprocdef);
          function Getforwarddef: boolean;
          procedure Setforwarddef(AValue: boolean);
          function Getinterfacedef: boolean;
@@ -846,6 +849,8 @@ interface
           property procendtai: tai read Getprocendtai write Setprocendtai;
           { optional parameter for the synthetic routine generation logic }
           property skpara: pointer read Getskpara write Setskpara;
+          { ABI-conformant exception handling personality function }
+          property personality: tprocdef read Getpersonality write Setpersonality;
           { true, if the procedure is only declared
             (forward procedure) }
           property forwarddef: boolean read Getforwarddef write Setforwarddef;
@@ -5331,6 +5336,22 @@ implementation
       end;
 
 
+    function tprocdef.Getpersonality: tprocdef;
+      begin
+        if not assigned(implprocdefinfo) then
+          internalerror(2016121701);
+         result:=implprocdefinfo^.personality;
+      end;
+
+
+    procedure tprocdef.Setpersonality(AValue: tprocdef);
+      begin
+        if not assigned(implprocdefinfo) then
+          internalerror(2016121702);
+        implprocdefinfo^.personality:=AValue;
+      end;
+
+
     function tprocdef.Getforwarddef: boolean;
       begin
         if not assigned(implprocdefinfo) then