|
|
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: 2377 (0x949)
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 2
--------------------------
-- THIS TEST EVALUATES THE CODE EFFICIENCY OF REFERENCING A SECOND 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 SECOND LEVEL COMPONENT OF A LOCAL RECORD, LOCAL_01, TO
-- THE GLOBAL VARIABLE. PRIOR TO THIS ASSIGNMENT, CAMOUFLAGED ASSIGN-
-- MENTS 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 Lrr2a1 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_2;
begin
Start ("LRR2A1", "Second-level Local Record var. Ref. (control)");
for I in 1 .. 10000 loop
Let (Global, Ident (Init));
Let (Local_01.Item_2a, Ident (Init));
Let (Local_01.Item_2b.Item_1a, Ident (Init));
Let (Local_01.Item_2b.Item_1b, Ident (Init));
if Global = Init then
-- GLOBAL := LOCAL_01.ITEM_2B.ITEM_1A; -- COMMENTED OUT IN NOISE VER
Let (Local_01.Item_2a, Ident (Init));
end if;
Let (Global, Ident (Local_01.Item_2b.Item_1a));
end loop;
Stop;
end Lrr2a1;