CVS difference for ai05s/ai05-0190-1.txt
--- ai05s/ai05-0190-1.txt 2010/10/26 02:06:54 1.6
+++ ai05s/ai05-0190-1.txt 2011/01/25 04:34:20 1.7
@@ -1,4 +1,4 @@
-!standard 13.11.3(0) 10-10-25 AI05-0190-1/05
+!standard 13.11.3(0) 11-01-23 AI05-0190-1/06
!class amendment 09-11-03
!status work item 09-11-03
!status received 09-11-03
@@ -70,10 +70,8 @@
another pragma Default_Storage_Pool. Otherwise, Redundant[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 another pragma
+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.]
-The pragma applies to all nonderived access types declared in the places
-defined here, including within an instance of a generic unit.
A pragma Default_Storage_Pool shall not be used as a configuration pragma within
the immediate scope of another such pragma.
@@ -96,14 +94,13 @@
Static Semantics
-For an access type to which neither Storage_Pool nor Storage_Size clause
-applies:
+The pragma applies to all nonderived access types declared in the places defined
+above, including within an instance of a generic unit, unless Storage_Pool or
+Storage_Size is specified for the type:
If the default pool is null, the Storage_Size attribute is defined
by the language to be zero.
Redundant[Therefore, an allocator for such a type is illegal.]
- However, this does not apply to access parameters (see Implementation
- Advice below).
If the default pool is a pool, the Storage_Pool attribute is that
pool.
@@ -111,14 +108,15 @@
Otherwise, Redundant[there is no default pool]; the Storage_Pool
attribute is implementation defined.
+
AARM Ramification: Default_Storage_Pool is the only way to specify the storage
pool for an anonymous access type.
- Implementation Advice
+ Implementation Permissions
-If the default pool is null, then an allocator passed to an access parameter
-should be allocated on the stack, and automatically reclaimed.
+An object created by an anonymous allocator may be allocated on the stack, and
+automatically reclaimed, regardless of the default pool.
!discussion
@@ -144,6 +142,11 @@
ACATS B and C tests are needed.
+!ASIS
+
+This needs an enumeration literal to be added to the type pragma_kinds for the new pragma.
+
+
!appendix
From: Bob Duff
@@ -1109,7 +1112,8 @@
> of course, if that happens in some rarely used code, you may simply not detect
> it until the system is fielded. Yuck.
-Yes, I understand all that. I even half-agree with it (as I said, I'm trying to be neutral on this point).
+Yes, I understand all that. I even half-agree with it (as I said, I'm trying to
+be neutral on this point).
To summarize, you object to a loophole in Default_Storage_Pool(null).
I think that's a fair characterization of your position.
@@ -1346,6 +1350,28 @@
needs to be written as a post-compilation check, or there needs to be an
assume-the-worst rule, or the check needs to be done on the body when it is
compiled (and not at the point of the instance).
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, January 24, 2011 9:58 PM
+
+> Implementation Permissions
+>
+> An object created by an anonymous allocator may be allocated on the
+> stack, and automatically reclaimed, regardless of the default pool.
+
+I find this wording misleading, as it seems to imply that it is OK to allow such
+allocators even when the default pool is null. That was not the intent; there is
+some support for that in that Storage_Size is zero for such a type. But since
+you can't name the type, how can you tell?
+
+Either we should have an AARM "To Be Honest" note ("This does not apply whrn the
+default pool is null; the allocator is statically illegal and where the object
+would have been created is irrelevant.") or we should add something to the
+wording:
+
+... regardless of the default pool (other than when the default pool is null).
****************************************************************
Questions? Ask the ACAA Technical Agent