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

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

--- ai12s/ai12-0003-1.txt	2015/01/22 02:41:26	1.9
+++ ai12s/ai12-0003-1.txt	2015/01/23 22:56:30	1.10
@@ -1,18 +1,20 @@
-!standard 8.2(11)                                   14-05-25    AI12-0003-1/05
+!standard 8.2(11)                                   15-01-23    AI12-0003-1/06
 !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.1/3)
 !standard 13.11.3(6.2/3)
 !class Amendment 11-06-19
 !status work item 11-06-19
 !status received 11-03-21
 !priority Low
 !difficulty Medium
-!subject Default storage pool for storage pools
+!subject Specifying the standard storage pool
 !summary
 
 The standard storage pool can be specified in a Default_Storage_Pool
-pragma.
+pragma or aspect.
 
 !problem
 
@@ -40,52 +42,82 @@
    region extending from immediately after the pragma
    to end of the pragma's nearest enclosing declarative
    region.
+
+Modify 13.11.3(3.1/3):
 
-Modify 13.11.3(3.1/3):  
    storage_pool_indicator ::= storage_pool_name | null {| Standard}
 
 Modify 13.11.3 (4.1/3):
 
-   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.]
+   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.
 
+   Except within the immediate scope of a later 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.
+
 <<< AI Note: the wording carefully ties into 13.11, so that it works for
 instances. >>>>
 
+   A direct_name shall not be a homograph of the package Standard that denotes a
+   declaration other than package Standard when declared within a compilation
+   unit for which the Standard default pool applies.
+
+   AARM Reason: Any use of an identifier with the name Standard resprensenting
+   anything other than the package Standard would be confusing in a compilation
+   unit with Standard specified as the default storage pool. Such a choice for
+   an identifier is not recommended and very unlikely to occur, so a simple rule
+   was chosen to prevent such confusion.
+
 Add after 13.11.3(4.2/3):
-   The Standard storage_pool_indicator is an identifier specific to a 
+
+   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 
+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.
+
+Modify 13.11.3(5/3):
+
+   The language-defined aspect Default_Storage_Pool may be specified for a
+   generic instance; it defines the default pool for access types within an
+   instance. {The Default_Storage_Pool aspect may be specified as Standard,
+   which defines the default pool to be Standard, otherwise the} [The] expected
+   type for the Default_Storage_Pool aspect is Root_Storage_Pool'Class[.
+   The]{and the} aspect_definition must be a name that denotes a variable. This
+   aspect overrides any Default_Storage_Pool pragma that might apply to the
+   generic unit; if the aspect is not specified, the default pool of the
+   instance is that defined for the generic unit.
+
+Add after 13.11.3(6.1/3):
+
+   If the default pool is Standard, the implementation chooses a standard
+   storage pool for the Storage_Pool attribute in an implementation-defined
+   manner.
 
-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.
+Modify 13.11.3(6.2/3):
 
-Modify 13.11.3(6.2/3): If the default pool is {neither} 
-   [non]null {nor Standard}, the Storage_Pool attribute is that pool.
+   If the default pool is {neither} [non]null {nor Standard}, the Storage_Pool
+   attribute is that pool.
 
 !discussion
 
@@ -93,17 +125,13 @@
 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
-have a clever way of combining a general heap with pools of cached,
-equally-sized memory blocks.
 
-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 
+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 
+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
@@ -999,5 +1027,17 @@
 Sent: Sunday, January 18, 2015 11:10 AM
 
 OK, will do.
+
+****************************************************************
+
+From: Brad Moore
+Sent: Friday, January 23, 2015 12:26 AM
+
+Here is my homework. [This is version /06 of the AI - ED]
+
+The quick summary of the change is that one is not allowed to use the name
+Standard in a compilation unit if it refers to something other than the package
+Standard, when a Default_Storage_Pool aspect or pragma within that same
+compilation unit has the default pool specified as Standard.
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent