- (1)
- An occurrence of a pragma Inspection_Point identifies a set of objects
each of whose values is to be available at the point(s) during program
execution corresponding to the position of the pragma in the compilation
unit. The purpose of such a pragma is to facilitate code validation.
- (2)
- The form of a pragma Inspection_Point is as follows:
(3)
pragma Inspection_Point[(object_name {, object_name})];
Legality Rules
- (4)
- A pragma Inspection_Point is allowed wherever a declarative_item or
statement is allowed. Each object_name shall statically denote the
declaration of an object.
Static Semantics
- (5)
- An inspection point is a point in the object code corresponding to the
occurrence of a pragma Inspection_Point in the compilation unit. An object
is inspectable at an inspection point if the corresponding pragma Inspection_Point either has an argument denoting that object, or has no arguments.
Dynamic Semantics
- (6)
- Execution of a pragma Inspection_Point has no effect.
Implementation Requirements
- (7)
- Reaching an inspection point is an external interaction with respect to
the values of the inspectable objects at that point (see
1.1.3).
Documentation Requirements
- (8)
- For each inspection point, the implementation shall identify a mapping
between each inspectable object and the machine resources (such as memory
locations or registers) from which the object's value can be obtained.
-
- (9)
(7) The implementation is not allowed to perform ``dead store
elimination'' on the last assignment to a variable prior to a point
where the variable is inspectable. Thus an inspection point has the
effect of an implicit reference to each of its inspectable objects.
- (10)
(8) Inspection points are useful in maintaining a correspondence between
the state of the program in source code terms, and the machine state
during the program's execution. Assertions about the values of program
objects can be tested in machine terms at inspection points. Object
code between inspection points can be processed by automated tools to
verify programs mechanically.
- (11)
(9) The identification of the mapping from source program objects to
machine resources is allowed to be in the form of an annotated object
listing, in human-readable or tool-processable form.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12