Contents Index Previous Next
C.4 Preelaboration Requirements
1
[This clause specifies additional implementation
and documentation requirements for the Preelaborate pragma (see
10.2.1).]
Implementation Requirements
2
The implementation shall not incur any run-time
overhead for the elaboration checks of subprograms and protected_bodies
declared in preelaborated library units.
3
The implementation shall not execute any memory
write operations after load time for the elaboration of constant objects
declared immediately within the declarative region of a preelaborated
library package, so long as the subtype and initial expression (or default
initial expressions if initialized by default) of the
object_declaration
satisfy the following restrictions.
{load time}
The meaning of
load time is implementation
defined.
3.a
Discussion: On systems
where the image of the partition is initially copied from disk to RAM,
or from ROM to RAM, prior to starting execution of the partition, the
intention is that ``load time'' consist of this initial copying step.
On other systems, load time and run time might actually be interspersed.
4
- Any subtype_mark denotes
a statically constrained subtype, with statically constrained subcomponents,
if any;
5
- any constraint is
a static constraint;
6
- any allocator is for
an access-to-constant type;
7
- any uses of predefined operators appear only within static
expressions;
8
- any primaries that
are names, other than attribute_references
for the Access or Address attributes, appear only within static expressions;
8.a
Ramification: This cuts
out attribute_references that are
not static, except for Access and Address.
9
- any name that is not
part of a static expression is an expanded name or direct_name
that statically denotes some entity;
9.a
Ramification: This cuts
out function_calls and type_conversions
that are not static, including calls on attribute functions like 'Image
and 'Value.
10
- any discrete_choice
of an array_aggregate is static;
11
- no language-defined check associated with the elaboration
of the object_declaration can fail.
11.a
Reason: The intent is that
aggregates all of whose scalar subcomponents are static, and all of whose
access subcomponents are null, allocators for access-to-constant
types, or X'Access, will be supported with no run-time code generated.
Documentation Requirements
12
The implementation shall document any circumstances
under which the elaboration of a preelaborated package causes code to
be executed at run time.
13
The implementation shall document whether the
method used for initialization of preelaborated variables allows a partition
to be restarted without reloading.
13.a
Implementation defined: Implementation-defined
aspects of preelaboration.
13.b
Discussion: This covers
the issue of the RTS itself being restartable, so that need not be a
separate Documentation Requirement.
Implementation Advice
14
It is recommended that preelaborated packages
be implemented in such a way that there should be little or no code executed
at run time for the elaboration of entities not already covered by the
Implementation Requirements.
Contents Index Previous Next Legal