summaryrefslogtreecommitdiff
path: root/gcc/ada/s-tassta.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-14 08:50:09 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-14 08:50:09 +0000
commit7fed94ac0039027a72ee0ef20969a8bdc739b55e (patch)
treea20a112267b3d26b76911b0e846b2fcf076bcea7 /gcc/ada/s-tassta.adb
parent8f851c16fb6604350b9c7bebb46fb661853cada4 (diff)
downloadgcc-7fed94ac0039027a72ee0ef20969a8bdc739b55e.tar.gz
2007-08-14 Arnaud Charlet <charlet@adacore.com>
* s-tpobop.ads, s-tpobop.adb, s-tasren.ads, s-tasren.adb, s-taskin.ads (Requeue_With_Abort): Rename field With_Abort. (PO_Do_Or_Queue, Task_Do_Or_Queue, Requeue_Call): Remove With_Abort parameter. * s-tassta.adb (Task_Wrapper): Increased value of the small overflow guard to 12K. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127464 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/s-tassta.adb')
-rw-r--r--gcc/ada/s-tassta.adb31
1 files changed, 18 insertions, 13 deletions
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb
index 28284322f8d..3086a69f6d2 100644
--- a/gcc/ada/s-tassta.adb
+++ b/gcc/ada/s-tassta.adb
@@ -770,7 +770,7 @@ package body System.Tasking.Stages is
pragma Assert (Self_ID = Environment_Task);
-- Set Environment_Task'Callable to false to notify library-level tasks
- -- that it is waiting for them (cf 5619-003).
+ -- that it is waiting for them.
Self_ID.Callable := False;
@@ -798,8 +798,8 @@ package body System.Tasking.Stages is
exit when Utilities.Independent_Task_Count = 0;
-- We used to yield here, but this did not take into account
- -- low priority tasks that would cause dead lock in some cases.
- -- See 8126-020.
+ -- low priority tasks that would cause dead lock in some cases
+ -- (true FIFO scheduling).
Timed_Sleep
(Self_ID, 0.01, System.OS_Primitives.Relative,
@@ -958,16 +958,22 @@ package body System.Tasking.Stages is
Secondary_Stack : aliased SSE.Storage_Array (1 .. Secondary_Stack_Size);
pragma Warnings (Off);
+ -- Why are warnings being turned off here???
+
Secondary_Stack_Address : System.Address := Secondary_Stack'Address;
- Small_Overflow_Guard : constant := 4 * 1024;
- Big_Overflow_Guard : constant := 16 * 1024;
- Small_Stack_Limit : constant := 64 * 1024;
+ Small_Overflow_Guard : constant := 12 * 1024;
+ -- Note: this used to be 4K, but was changed to 12K, since smaller
+ -- values resulted in segmentation faults from dynamic stack analysis.
+
+ Big_Overflow_Guard : constant := 16 * 1024;
+ Small_Stack_Limit : constant := 64 * 1024;
-- ??? These three values are experimental, and seems to work on most
- -- platforms. They still need to be analyzed further.
+ -- platforms. They still need to be analyzed further. They also need
+ -- documentation, what are they???
- Size :
- Natural := Natural (Self_ID.Common.Compiler_Data.Pri_Stack_Info.Size);
+ Size : Natural :=
+ Natural (Self_ID.Common.Compiler_Data.Pri_Stack_Info.Size);
Overflow_Guard : Natural;
-- Size of the overflow guard, used by dynamic stack usage analysis
@@ -975,7 +981,7 @@ package body System.Tasking.Stages is
pragma Warnings (On);
-- Address of secondary stack. In the fixed secondary stack case, this
-- value is not modified, causing a warning, hence the bracketing with
- -- Warnings (Off/On).
+ -- Warnings (Off/On). But why is so much *more* bracketed ???
SEH_Table : aliased SSE.Storage_Array (1 .. 8);
-- Structured Exception Registration table (2 words)
@@ -1145,8 +1151,7 @@ package body System.Tasking.Stages is
Cause := Abnormal;
end if;
when others =>
- -- ??? Using an E : others here causes CD2C11A to fail on
- -- DEC Unix, see 7925-005.
+ -- ??? Using an E : others here causes CD2C11A to fail on Tru64.
Initialization.Defer_Abort_Nestable (Self_ID);
@@ -1253,7 +1258,7 @@ package body System.Tasking.Stages is
-- Since GCC cannot allocate stack chunks efficiently without reordering
-- some of the allocations, we have to handle this unexpected situation
-- here. We should normally never have to call Vulnerable_Complete_Task
- -- here. See 6602-003 for more details.
+ -- here.
if Self_ID.Common.Activator /= null then
Vulnerable_Complete_Task (Self_ID);