CVS difference for ai12s/ai12-0003-1.txt

Differences between 1.5 and version 1.6
Log of other versions for file ai12s/ai12-0003-1.txt

--- ai12s/ai12-0003-1.txt	2013/06/10 21:47:44	1.5
+++ ai12s/ai12-0003-1.txt	2014/06/19 05:04:45	1.6
@@ -1,10 +1,8 @@
-!standard 3.10.2(13.2/3)                             13-06-10    AI12-0003-1/04
-!standard 13.11.3(1/3)
-!standard 13.11.3(3.2/3)
+!standard 8.2(11)                                   15-05-25    AI12-0003-1/05
+!standard 13.11.3(3.1/3)
 !standard 13.11.3(4.1/3)
 !standard 13.11.3(4.2/3)
-!standard 13.11.3(5/3)
-!standard 13.11.3(6/3)
+!standard 13.11.3(6.2/3)
 !class Amendment 11-06-19
 !status work item 11-06-19
 !status received 11-03-21
@@ -13,7 +11,8 @@
 !subject Default storage pool for storage pools
 !summary
 
-A pragma Standard_Storage_Pool is introduced.
+The standard storage pool can be specified in a Default_Storage_Pool
+pragma.
 
 !problem
 
@@ -23,9 +22,9 @@
 
 !proposal
 
-Add a pragma to achieve the effect of returning to the "standard"
-allocation method used by the implementation, usually the use of a
-general heap.
+Add a new argument to the Default_Storage_Pool pragma to achieve the
+effect of returning to the "standard" allocation method used by the
+implementation, usually the use of a general heap.
 
 !wording
 
@@ -38,81 +37,70 @@
    to end of the pragma's nearest enclosing declarative
    region.
 
-Reinstate 13.11.3 (1/4) to read:
-Two storage pool pragmas can be used to control the setting of a
-default storage pool for access types: Default_Storage_Pool and
-Standard_Storage_Pool.
-
-
-Add after 13.11.3 (3.1/3)
- pragma Standard_Storage_Pool;
-
-
-Change 13.11.3 (3.2/3) to read:
-{A storage pool pragma} [A pragma Default_Storage_Pool]
-is allowed immediately within the visible part of a package_specification,
-immediately within a declarative_part, or as a configuration pragma.
-
-Change 13.11.3 (4.1/3) from
-  "If the pragma is used as a configuration pragma, the
-  storage_pool_indicator shall be null, and it defines the default
-  pool to be null within all applicable compilation units (see
-  10.1.5), except within the immediate scope of another pragma
-  Default_Storage_Pool. Otherwise, [the pragma occurs immediately
-  within a sequence of declarations, and] it defines the default pool
-  within the immediate scope of the pragma to be either null or the
-  pool denoted by the storage_pool_name, except within the immediate
-  scope of a later pragma Default_Storage_Pool. Redundant[Thus, an inner
-  pragma overrides an outer one.]"
-
-to
-
-  If the Default_Storage_Pool pragma is used as a
-  configuration pragma, the storage_pool_indicator shall be null, and
-  it defines the default pool to be null within all applicable
-  compilation units (see 10.1.5), except within the immediate scope of
-  another storage pool pragma. Otherwise, [the pragma occurs
-  immediately within a sequence of declarations, and] it defines the
-  default pool within the immediate scope of the pragma to be either
-  null or the pool denoted by the storage_pool_name, except within the
-  immediate scope of a later storage pool pragma. Redundant[Thus, an inner
-  pragma overrides an outer one.]
-
-Add after 13.11.3 (4.1/3)
-Except within the immediate scope of another storage pool pragma, the
-Standard_Storage_Pool pragma causes the storage pool of any access type
-to be the standard storage pool as described in 13.11.
+Modify 13.11.3(3.1/3):  
+   storage_pool_indicator ::= storage_pool_name | null {| Standard}
 
-<<< AI Note: the wording carefully ties into 13.11, so that it works for
-instances. >>>>
-
-
-Change 13.11.3 (4.2/3) to read:
+Modify 13.11.3 (4.1/3):
 
-A {storage pool} pragma [Default_Storage_Pool] shall not be used as a
- configuration pragma that applies to a compilation unit that is
- within the immediate scope of another {storage pool} pragma[
- Default_Storage_Pool].
+   If the pragma is used as a configuration pragma, the 
+   storage_pool_indicator shall be {either} null {or Standard}, and it 
+   defines the default pool to be {respectively} null {or Standard} within
+   all applicable compilation units (see 10.1.5), except within the 
+   immediate scope of another pragma Default_Storage_Pool. Otherwise, [the
+   pragma occurs immediately within a sequence of declarations, and] it 
+   defines the default pool within the immediate scope of the pragma to be 
+   either null{, Standard,} or the pool denoted by the storage_pool_name,
+   except within the immediate scope of a later pragma 
+   Default_Storage_Pool. Redundant [Thus, an inner pragma overrides an 
+   outer one.]
+
+Add after 13.11.3 (4.1/3):
+   Except within the immediate scope of another
+   Default_Storage_Pool pragma, the Standard storage_pool_indicator causes
+   the storage pool of any access type to be the standard storage pool as
+   described in 13.11.
 
-Modify 13.11.3 (5/3) to read
- This aspect overrides any {storage pool}[Default_Storage_Pool] pragma
- that might apply to the generic unit.
+<<< AI Note: the wording carefully ties into 13.11, so that it works for
+instances. >>>>
 
+Add after 13.11.3(4.2/3):
+   The Standard storage_pool_indicator is an identifier specific to a 
+   pragma (see 2.8) and does not denote any declaration.
+
+AARM Ramification: The standard storage pool is not an object of the 
+   Standard package and is not restricted to having 
+   Preelaborable_Initialization.
+
+AARM Reason: The Standard storage_pool_indicator does not resolve to the 
+   package Standard as it is an identifier specific to a pragma. Resolving 
+   to package Standard would imply that the standard pool is an object 
+   declared in that package. A storage pool object however must be a 
+   variable (see 13.11), yet preelaborable packages depend on package 
+   Standard, which would require implementers to implement the standard 
+   storage pool with Preelaborable_Initialization, which is an unnecessary
+   restriction.
 
-After 13.11.3 (9.c/3) add
-The pragma Standard_Storage_Pool is new.
+Modify 13.11.3(6.2/3): If the default pool is {neither} 
+   [non]null {nor Standard}, the Storage_Pool attribute is that pool.
 
 !discussion
 
 We do not want to give the standard storage pool a name, since it
 should remain implementation-defined whether, in the absence of
 user-provided storage pools, the storage pool model is used by the
-implementation at all. Specifically it might just go for the heap, or
+implementation at all.
+
+Specifically it might just go for the heap, or
 have a clever way of combining a general heap with pools of cached,
 equally-sized memory blocks.
 
-A pragma that causes the implementation to revert to the standard
-allocation method seemed best to achieve the desired capability.
+Specifically it might just go for the heap, or have a clever way of 
+combining a general heap with pools of cached, equally-sized memory 
+blocks.
+
+Extending the Default_Storage_Pool pragma to allow it to cause the 
+implementation to revert to the standard allocation method seemed best 
+to achieve the desired capability.
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent