From: Ronan Desplanques <[email protected]>

The only reason Suspension_Object was a tagged type before this patch was
to have finalization. This patch makes it use the Finalizable aspect,
which is more lightweight.

gcc/ada/ChangeLog:

        * libgnarl/a-sytaco.ads (Suspension_Object): Use Finalizable aspect.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/libgnarl/a-sytaco.ads | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/gcc/ada/libgnarl/a-sytaco.ads b/gcc/ada/libgnarl/a-sytaco.ads
index 24b2a8076b9..602e31a74f4 100644
--- a/gcc/ada/libgnarl/a-sytaco.ads
+++ b/gcc/ada/libgnarl/a-sytaco.ads
@@ -35,7 +35,6 @@
 
 with System.Task_Primitives;
 
-with Ada.Finalization;
 with Ada.Task_Identification;
 
 package Ada.Synchronous_Task_Control with
@@ -75,14 +74,17 @@ private
    procedure Finalize (S : in out Suspension_Object);
    --  Finalization for Suspension_Object
 
-   type Suspension_Object is
-     new Ada.Finalization.Limited_Controlled with
-   record
+   type Suspension_Object is limited record
       SO : System.Task_Primitives.Suspension_Object;
       --  Use low-level suspension objects so that the synchronization
       --  functionality provided by this object can be achieved using
       --  efficient operating system primitives.
-   end record;
+   end record
+   with
+     Finalizable =>
+       (Initialize           => Initialize,
+        Finalize             => Finalize,
+        Relaxed_Finalization => False);
 
    pragma Inline (Set_True);
    pragma Inline (Set_False);
-- 
2.51.0

Reply via email to