CVS difference for ai05s/ai05-0045-1.txt

Differences between 1.4 and version 1.5
Log of other versions for file ai05s/ai05-0045-1.txt

--- ai05s/ai05-0045-1.txt	2007/08/07 01:16:17	1.4
+++ ai05s/ai05-0045-1.txt	2007/12/13 04:39:36	1.5
@@ -1,5 +1,6 @@
-!standard 9.2(6)                                                07-08-06    AI05-0045-1/03
+!standard 9.2(6)                                                07-11-28    AI05-0045-1/04
 !class binding interpretation 07-04-04
+!status ARG Approved  9-0-0  06-11-10
 !status work item 07-04-04
 !status received 07-04-02
 !priority Medium
@@ -35,31 +36,28 @@
 
 Replace 9.2(6) by:
 
-If a return statement is left such that the return object is not returned
-to the caller, any task that was created as part or coextension of the
-return object immediately becomes terminated and is never activated
-[irregardless of where it would have been activated]. Otherwise, if a master
-that directly encloses the point where the activation of a task T would be
-initiated begins finalization before the activation of T is initiated, T
+If the master that directly encloses the point where the activation of a task T
+would be initiated, completes before the activation of T is initiated, T becomes
+terminated and is never activated. Furthermore, if a return statement is left
+such that the return object is not returned to the caller, any task that was
+created as a part of the return object or one of its coextensions immediately
 becomes terminated and is never activated.
 
-   AARM Notes: The first case can happen with an exception being raised in a return
+   AARM Notes: The first case can only happen if the activation point of T is not
+   reached due to an exception being raised or a task or statement being aborted.
+   Note that this is exclusive; if the master is being finalized, we're already
+   past the activation point.
+
+   The second case can happen with an exception being raised in a return
    statement, by an exit or goto from an extended_return_statement, or by a
    return statement being aborted. Any tasks created for the return object of
    such a return statement are never activated.
-
-   The second case can only happen if the activation point of T is not reached
-   due to an exception being raised or the task being aborted. Note that this is
-   exclusive; if the master is being finalized, we're already past the activation
-   point and since Ada doesn't have any restart semantics, we can never get there.
    End AARM Notes.
 
-[Editor's note: The square brackets here mark redundant text.]
-
 !discussion
 
 What is important here is what happens if the master that directly encloses
-the activation point of any unactivated tasks is finalized. We don't care why the
+the activation point of any unactivated tasks is completed. We don't care why the
 tasks were never activated or where they were created. Thus, the original wording
 of 9.2(6) says too much. It also has a race condition, in that if the task is
 aborted when it reaches the activation point but before the tasks actually are
@@ -69,7 +67,7 @@
 being terminated on creation would meet the requirements of this rule. Thus, the value
 of T'Terminated is not well-defined for such tasks. That seems bad.
 
-Because of all of these reasons, we've rewritten the rule in terms of finalization of
+Because of all of these reasons, we've rewritten the rule in terms of completion of
 a master rather than "reaching the point of activation".
 
 While the most critical point is when the master of the tasks begins to finalize (because
@@ -93,12 +91,11 @@
 initiate the activations (due to an abort or the raising of an exception), the
 newly created tasks become terminated and are never activated. 
 @dby
-If a return statement is left such that the return object is not returned
-to the caller, any task that was created as part or coextension of the
-return object immediately becomes terminated and is never activated
-irregardless of where it would have been activated. Otherwise, if a master
-that directly encloses the point where the activation of a task T would be
-initiated begins finalization before the activation of T is initiated, T
+If the master that directly encloses the point where the activation of a task @i<T>
+would be initiated, completes before the activation of @i<T> is initiated, @i<T> becomes
+terminated and is never activated. Furthermore, if a return statement is left
+such that the return object is not returned to the caller, any task that was
+created as a part of the return object or one of its coextensions immediately
 becomes terminated and is never activated.
 
 !ACATS test

Questions? Ask the ACAA Technical Agent