aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Ruiz <ruiz@adacore.com>2005-11-15 14:53:05 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2005-11-15 14:53:05 +0100
commitfda5d6d4ff7de017167de98a20ffc4110f766795 (patch)
treeee457e312509fbe5ce66d2926fdf9ede4463a300
parent982f26e474453b112f6516208db854f287ace66d (diff)
downloadgcc-fda5d6d4ff7de017167de98a20ffc4110f766795.zip
gcc-fda5d6d4ff7de017167de98a20ffc4110f766795.tar.gz
gcc-fda5d6d4ff7de017167de98a20ffc4110f766795.tar.bz2
s-tassta.adb (Create_Task): Move the code in charge of resetting the deferral level...
2005-11-14 Jose Ruiz <ruiz@adacore.com> * s-tassta.adb (Create_Task): Move the code in charge of resetting the deferral level, when abort is not allowed, to a later stage (the Task_Wrapper). (Task_Wrapper): If Abort is not allowed, reset the deferral level since it will not get changed by the generated code. It was previously done in Create_Task. From-SVN: r106960
-rw-r--r--gcc/ada/s-tassta.adb20
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb
index 1ac7edb..54f92eb 100644
--- a/gcc/ada/s-tassta.adb
+++ b/gcc/ada/s-tassta.adb
@@ -617,16 +617,6 @@ package body System.Tasking.Stages is
(Storage_Error'Identity, "Failed to initialize task");
end if;
- if not System.Restrictions.Abort_Allowed then
-
- -- If Abort is not allowed, reset the deferral level since it will
- -- not get changed by the generated code. Keeping a default value
- -- of one would prevent some operations (e.g. select or delay) to
- -- proceed successfully.
-
- T.Deferral_Level := 0;
- end if;
-
T.Master_of_Task := Master;
T.Master_Within := T.Master_of_Task + 1;
@@ -950,6 +940,16 @@ package body System.Tasking.Stages is
Lock_RTS;
Unlock_RTS;
+ if not System.Restrictions.Abort_Allowed then
+
+ -- If Abort is not allowed, reset the deferral level since it will
+ -- not get changed by the generated code. Keeping a default value
+ -- of one would prevent some operations (e.g. select or delay) to
+ -- proceed successfully.
+
+ Self_ID.Deferral_Level := 0;
+ end if;
+
begin
-- We are separating the following portion of the code in order to
-- place the exception handlers in a different block. In this way,