|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 2293 (0x8f5)
Types: TextFile
Names: »B«
└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
└─⟦5cb1d1d7f⟧ »DATA«
└─⟦3b1ee7bd8⟧
└─⟦this⟧
with Instrument;
use Instrument;
--------------------------
-- LOCAL REFERENCE 01 LEVEL 1
--------------------------
-- THIS TEST EVALUATES THE CODE EFFICIENCY OF REFERENCING A FIRST LEVEL
-- COMPONENT OF A LOCAL RECORD VARIABLE, I.E., A REFERENCE TO A RECORD
-- THAT IS DECLARED IMMEDIATELY WITHIN THE DECLARATIVE REGION IN WHICH
-- THE COMPONENT IS REFERENCED.
-- THE TEST VERSION INCLUDES THE COMPONENT REFERENCE TO BE EVALUATED BY
-- ASSIGNING A FIRST LEVEL COMPONENT OF A LOCAL RECORD, LOCAL_01, TO THE
-- GLOBAL VARIABLE. PRIOR TO THIS ASSIGNMENT, CAMOUFLAGED ASSIGNMENTS
-- ARE MADE TO BOTH THE LOCAL RECORD AND THE GLOBAL VARIABLE. THE
-- GLOBAL VARIABLE IS USED IN A CONDITIONAL STATEMENT TO GUARD THE TEST
-- ASSIGNMENT FROM OPTIMIZATIONS. BECAUSE OF THIS GUARD, THE LOCAL
-- RECORD COMPONENT MUST BE UPDATED WITH ITS INITIAL VALUE SINCE THE
-- CONDITIONAL STATEMENT REQUIRES DYNAMIC EVALUATION. ADDITIONAL
-- CAMOUFLAGED ASSIGNMENTS ARE MADE TO MAINTAIN THE VALIDITY OF THE
-- CONDITIONAL STATEMENT AND TO PREVENT ELIMINATION OF THE OTHERWISE
-- UNREFERENCED LOCAL RECORD COMPONENT IN THE NOISE VERSION.
-- THE NOISE VERSION IS IDENTICAL TO THE TEST VERSION EXCEPT THAT THE
-- TEST REFERENCE TO THE COMPONENT OF THE LOCAL RECORD IS REMOVED SO
-- THAT THE CODE EFFICIENCY METRICS FOR THE LOCAL REFERENCE CAN BE
-- DERIVED AS A PART OF ASSIGNMENT.
procedure Lrr1a2 is
package Dr_Cs is new Procs (Integer);
use Dr_Cs;
type Level_1 is
record
Item_1a : T;
Item_1b : T;
end record;
type Level_2 is
record
Item_2a : T;
Item_2b : Level_1;
end record;
type Level_3 is
record
Item_3a : T;
Item_3b : Level_2;
end record;
Local_01 : Level_1;
begin
Start ("LRR1A2", "First-level Local Record var. Ref. (test)");
for I in 1 .. 10000 loop
Let (Global, Ident (Init));
Let (Local_01.Item_1a, Ident (Init));
Let (Local_01.Item_1b, Ident (Init));
if Global = Init then
Global := Local_01.Item_1a; -- COMMENTED OUT IN NOISE VERSION
Let (Local_01.Item_1b, Ident (Init));
end if;
Let (Global, Ident (Local_01.Item_1a));
end loop;
Stop;
end Lrr1a2;