diff options
author | Jose Ruiz <ruiz@adacore.com> | 2005-11-15 14:53:05 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2005-11-15 14:53:05 +0100 |
commit | fda5d6d4ff7de017167de98a20ffc4110f766795 (patch) | |
tree | ee457e312509fbe5ce66d2926fdf9ede4463a300 | |
parent | 982f26e474453b112f6516208db854f287ace66d (diff) | |
download | gcc-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.adb | 20 |
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, |