Contents Index Search 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 Search Previous Next Legal