* s-tataat.adb, a-tasatt.adb:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2005 07:48:10 +0000 (07:48 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2005 07:48:10 +0000 (07:48 +0000)
Replace calls to Defer/Undefer_Abortion by Defer/Undefer_Abort.

* s-tasini.ads, s-tasini.adb (Defer_Abortion, Undefer_Abortion): Moved
these procedures to body, and renamed Abort_Defer, Abort_Undefer.
(Get_Exc_Stack_Addr, Set_Exc_Stack_Addr): Removed, no
longer used.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103851 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/a-tasatt.adb
gcc/ada/s-tasini.adb
gcc/ada/s-tasini.ads
gcc/ada/s-tataat.adb

index b0ceb3d..5afab9e 100644 (file)
@@ -419,17 +419,18 @@ package body Ada.Task_Attributes is
 
       else
          declare
-            P : Access_Node := To_Access_Node (TT.Indirect_Attributes);
-            W : Access_Wrapper;
+            P       : Access_Node := To_Access_Node (TT.Indirect_Attributes);
+            W       : Access_Wrapper;
+            Self_Id : constant Task_Id := POP.Self;
 
          begin
-            Defer_Abortion;
+            Defer_Abort (Self_Id);
             POP.Lock_RTS;
 
             while P /= null loop
                if P.Instance = Access_Instance'(Local'Unchecked_Access) then
                   POP.Unlock_RTS;
-                  Undefer_Abortion;
+                  Undefer_Abort (Self_Id);
                   return To_Access_Wrapper (P.Wrapper).Value'Access;
                end if;
 
@@ -450,13 +451,13 @@ package body Ada.Task_Attributes is
             P.Next := To_Access_Node (TT.Indirect_Attributes);
             TT.Indirect_Attributes := To_Access_Address (P);
             POP.Unlock_RTS;
-            Undefer_Abortion;
+            Undefer_Abort (Self_Id);
             return W.Value'Access;
 
          exception
             when others =>
                POP.Unlock_RTS;
-               Undefer_Abortion;
+               Undefer_Abort (Self_Id);
                raise;
          end;
       end if;
@@ -496,10 +497,12 @@ package body Ada.Task_Attributes is
          Set_Value (Initial_Value, T);
       else
          declare
-            P, Q : Access_Node;
-            W    : Access_Wrapper;
+            P, Q    : Access_Node;
+            W       : Access_Wrapper;
+            Self_Id : constant Task_Id := POP.Self;
+
          begin
-            Defer_Abortion;
+            Defer_Abort (Self_Id);
             POP.Lock_RTS;
             Q := To_Access_Node (TT.Indirect_Attributes);
 
@@ -514,7 +517,7 @@ package body Ada.Task_Attributes is
                   W := To_Access_Wrapper (Q.Wrapper);
                   Free (W);
                   POP.Unlock_RTS;
-                  Undefer_Abortion;
+                  Undefer_Abort (Self_Id);
                   return;
                end if;
 
@@ -523,12 +526,12 @@ package body Ada.Task_Attributes is
             end loop;
 
             POP.Unlock_RTS;
-            Undefer_Abortion;
+            Undefer_Abort (Self_Id);
 
          exception
             when others =>
                POP.Unlock_RTS;
-               Undefer_Abortion;
+               Undefer_Abort (Self_Id);
                raise;
          end;
       end if;
@@ -581,11 +584,12 @@ package body Ada.Task_Attributes is
       --  Not directly addressed
 
       declare
-         P : Access_Node := To_Access_Node (TT.Indirect_Attributes);
-         W : Access_Wrapper;
+         P       : Access_Node := To_Access_Node (TT.Indirect_Attributes);
+         W       : Access_Wrapper;
+         Self_Id : constant Task_Id := POP.Self;
 
       begin
-         Defer_Abortion;
+         Defer_Abort (Self_Id);
          POP.Lock_RTS;
 
          while P /= null loop
@@ -593,7 +597,7 @@ package body Ada.Task_Attributes is
             if P.Instance = Access_Instance'(Local'Unchecked_Access) then
                To_Access_Wrapper (P.Wrapper).Value := Val;
                POP.Unlock_RTS;
-               Undefer_Abortion;
+               Undefer_Abort (Self_Id);
                return;
             end if;
 
@@ -613,12 +617,12 @@ package body Ada.Task_Attributes is
          TT.Indirect_Attributes := To_Access_Address (P);
 
          POP.Unlock_RTS;
-         Undefer_Abortion;
+         Undefer_Abort (Self_Id);
 
       exception
          when others =>
             POP.Unlock_RTS;
-            Undefer_Abortion;
+            Undefer_Abort (Self_Id);
             raise;
       end;
 
@@ -669,11 +673,12 @@ package body Ada.Task_Attributes is
       --  Not directly addressed
 
       declare
-         P      : Access_Node;
-         Result : Attribute;
+         P       : Access_Node;
+         Result  : Attribute;
+         Self_Id : constant Task_Id := POP.Self;
 
       begin
-         Defer_Abortion;
+         Defer_Abort (Self_Id);
          POP.Lock_RTS;
          P := To_Access_Node (TT.Indirect_Attributes);
 
@@ -681,7 +686,7 @@ package body Ada.Task_Attributes is
             if P.Instance = Access_Instance'(Local'Unchecked_Access) then
                Result := To_Access_Wrapper (P.Wrapper).Value;
                POP.Unlock_RTS;
-               Undefer_Abortion;
+               Undefer_Abort (Self_Id);
                return Result;
             end if;
 
@@ -689,13 +694,13 @@ package body Ada.Task_Attributes is
          end loop;
 
          POP.Unlock_RTS;
-         Undefer_Abortion;
+         Undefer_Abort (Self_Id);
          return Initial_Value;
 
       exception
          when others =>
             POP.Unlock_RTS;
-            Undefer_Abortion;
+            Undefer_Abort (Self_Id);
             raise;
       end;
 
@@ -720,8 +725,9 @@ begin
 
    declare
       Two_To_J : Direct_Index_Vector;
+      Self_Id  : constant Task_Id := POP.Self;
    begin
-      Defer_Abortion;
+      Defer_Abort (Self_Id);
 
       --  Need protection for updating links to per-task initialization and
       --  finalization routines, in case some task is being created or
@@ -798,6 +804,6 @@ begin
       end if;
 
       POP.Unlock_RTS;
-      Undefer_Abortion;
+      Undefer_Abort (Self_Id);
    end;
 end Ada.Task_Attributes;
index bd9ff83..3aff427 100644 (file)
@@ -43,10 +43,6 @@ pragma Polling (Off);
 with Ada.Exceptions;
 --  Used for Exception_Occurrence_Access
 
-with System.Tasking;
-pragma Elaborate_All (System.Tasking);
---  Ensure that the first step initializations have been performed
-
 with System.Task_Primitives;
 --  Used for Lock
 
@@ -94,6 +90,12 @@ package body System.Tasking.Initialization is
    -- Tasking versions of some services needed by non-tasking programs --
    ----------------------------------------------------------------------
 
+   procedure Abort_Defer;
+   --  NON-INLINE versions without Self_ID for soft links
+
+   procedure Abort_Undefer;
+   --  NON-INLINE versions without Self_ID for soft links
+
    procedure Task_Lock;
    --  Locks out other tasks. Preceding a section of code by Task_Lock and
    --  following it by Task_Unlock creates a critical region. This is used
@@ -107,13 +109,6 @@ package body System.Tasking.Initialization is
    --  all nested locks must be released before other tasks competing for the
    --  tasking lock are released.
 
-   function  Get_Exc_Stack_Addr return Address;
-   --  Get the exception stack for the current task
-
-   procedure Set_Exc_Stack_Addr (Self_ID : Address; Addr : Address);
-   --  Self_ID is the Task_Id of the task that gets the exception stack.
-   --  For Self_ID = Null_Address, the current task gets the exception stack.
-
    function Get_Stack_Info return Stack_Checking.Stack_Access;
    --  Get access to the current task's Stack_Info
 
@@ -237,13 +232,12 @@ package body System.Tasking.Initialization is
       Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
    end Defer_Abort_Nestable;
 
-   --------------------
-   -- Defer_Abortion --
-   --------------------
+   -----------------
+   -- Abort_Defer --
+   -----------------
 
-   procedure Defer_Abortion is
+   procedure Abort_Defer is
       Self_ID : Task_Id;
-
    begin
       if No_Abort and then not Dynamic_Priority_Support then
          return;
@@ -251,7 +245,7 @@ package body System.Tasking.Initialization is
 
       Self_ID := STPO.Self;
       Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
-   end Defer_Abortion;
+   end Abort_Defer;
 
    -----------------------
    -- Do_Pending_Action --
@@ -346,8 +340,9 @@ package body System.Tasking.Initialization is
 
    procedure Init_RTS is
       Self_Id : Task_Id;
-
    begin
+      Tasking.Initialize;
+
       --  Terminate run time (regular vs restricted) specific initialization
       --  of the environment task.
 
@@ -381,21 +376,17 @@ package body System.Tasking.Initialization is
       --  the tasking version of the soft links can be used.
 
       if not No_Abort or else Dynamic_Priority_Support then
-         SSL.Abort_Defer   := Defer_Abortion'Access;
-         SSL.Abort_Undefer := Undefer_Abortion'Access;
+         SSL.Abort_Defer   := Abort_Defer'Access;
+         SSL.Abort_Undefer := Abort_Undefer'Access;
       end if;
 
       SSL.Update_Exception   := Update_Exception'Access;
       SSL.Lock_Task          := Task_Lock'Access;
       SSL.Unlock_Task        := Task_Unlock'Access;
-      SSL.Get_Exc_Stack_Addr := Get_Exc_Stack_Addr'Access;
-      SSL.Set_Exc_Stack_Addr := Set_Exc_Stack_Addr'Access;
       SSL.Check_Abort_Status := Check_Abort_Status'Access;
       SSL.Get_Stack_Info     := Get_Stack_Info'Access;
       SSL.Task_Name          := Task_Name'Access;
 
-      SSL.Set_Exc_Stack_Addr (Null_Address, SSL.Get_Exc_Stack_Addr_NT);
-
       --  Initialize the tasking soft links (if not done yet) that are common
       --  to the full and the restricted run times.
 
@@ -757,16 +748,12 @@ package body System.Tasking.Initialization is
       end if;
    end Undefer_Abort_Nestable;
 
-   ----------------------
-   -- Undefer_Abortion --
-   ----------------------
-
-   --  Phase out RTS-internal use of Undefer_Abortion to reduce overhead due
-   --  to multiple calls to Self.
+   -------------------
+   -- Abort_Undefer --
+   -------------------
 
-   procedure Undefer_Abortion is
+   procedure Abort_Undefer is
       Self_ID : Task_Id;
-
    begin
       if No_Abort and then not Dynamic_Priority_Support then
          return;
@@ -800,7 +787,7 @@ package body System.Tasking.Initialization is
             Do_Pending_Action (Self_ID);
          end if;
       end if;
-   end Undefer_Abortion;
+   end Abort_Undefer;
 
    ----------------------
    -- Update_Exception --
@@ -908,26 +895,11 @@ package body System.Tasking.Initialization is
    -- Soft-Link Bodies --
    ----------------------
 
-   function Get_Exc_Stack_Addr return Address is
-   begin
-      return STPO.Self.Common.Compiler_Data.Exc_Stack_Addr;
-   end Get_Exc_Stack_Addr;
-
    function Get_Stack_Info return Stack_Checking.Stack_Access is
    begin
       return STPO.Self.Common.Compiler_Data.Pri_Stack_Info'Access;
    end Get_Stack_Info;
 
-   procedure Set_Exc_Stack_Addr (Self_ID : Address; Addr : Address) is
-      Me : Task_Id := To_Task_Id (Self_ID);
-   begin
-      if Me = Null_Task then
-         Me := STPO.Self;
-      end if;
-
-      Me.Common.Compiler_Data.Exc_Stack_Addr := Addr;
-   end Set_Exc_Stack_Addr;
-
    -----------------------
    -- Soft-Link Dummies --
    -----------------------
index c4928d8..bacde3c 100644 (file)
@@ -120,14 +120,6 @@ package System.Tasking.Initialization is
    procedure Undefer_Abort_Nestable (Self_ID : Task_Id);
    pragma Inline (Undefer_Abort_Nestable);
 
-   --  NON-INLINE versions without Self_ID for code generated by the
-   --  expander and for soft links
-
-   procedure Defer_Abortion;
-   procedure Undefer_Abortion;
-
-   --  Try to phase out all uses of the above versions ???
-
    procedure Do_Pending_Action (Self_ID : Task_Id);
    --  Only call with no locks, and when Self_ID.Pending_Action = True Perform
    --  necessary pending actions (e.g. abort, priority change). This procedure
index a147cd9..528de08 100644 (file)
@@ -61,9 +61,10 @@ package body System.Tasking.Task_Attributes is
 
    procedure Finalize (X : in out Instance) is
       Q, To_Be_Freed : Access_Node;
+      Self_Id        : constant Task_Id := Self;
 
    begin
-      Defer_Abortion;
+      Defer_Abort (Self_Id);
       Lock_RTS;
 
       --  Remove this instantiation from the list of all instantiations.
@@ -142,7 +143,7 @@ package body System.Tasking.Task_Attributes is
          X.Deallocate.all (Q);
       end loop;
 
-      Undefer_Abortion;
+      Undefer_Abort (Self_Id);
 
    exception
       when others =>
@@ -186,10 +187,11 @@ package body System.Tasking.Task_Attributes is
    --  This is to be called by System.Tasking.Stages.Create_Task
 
    procedure Initialize_Attributes (T : Task_Id) is
-      P : Access_Instance;
+      P       : Access_Instance;
+      Self_Id : constant Task_Id := Self;
 
    begin
-      Defer_Abortion;
+      Defer_Abort (Self_Id);
       Lock_RTS;
 
       --  Initialize all the direct-access attributes of this task
@@ -207,7 +209,7 @@ package body System.Tasking.Task_Attributes is
       end loop;
 
       Unlock_RTS;
-      Undefer_Abortion;
+      Undefer_Abort (Self_Id);
 
    exception
       when others =>