|
|
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: 1899 (0x76b)
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
------------------
-- THIS TEST EVALUATES THE CODE EFFICIENCY OF REFERENCING A COMPONENT OF
-- A LOCAL ARRAY VARIABLE, I.E., A REFERENCE TO AN ARRAY 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 COMPONENT OF A LOCAL ARRAY, LOCAL_01, TO THE GLOBAL
-- VARIABLE. PRIOR TO THIS ASSIGNMENT, CAMOUFLAGED ASSIGNMENTS ARE
-- MADE TO BOTH THE LOCAL ARRAY 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
-- ARRAY 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 ARRAY IN THE NOISE VERSION.
-- THE NOISE VERSION IS IDENTICAL TO THE TEST VERSION EXCEPT THAT THE
-- TEST REFERENCE TO THE COMPONENT OF THE LOCAL ARRAY IS REMOVED SO THAT
-- THE CODE EFFICIENCY METRICS FOR THE LOCAL REFERENCE CAN BE DERIVED AS
-- A PART OF ASSIGNMENT.
procedure Lavra2 is
Arr_Size : constant := 1000;
package Dr_Cs is new Arr_Procs (Integer, Arr_Size);
use Dr_Cs;
Local_01 : T (Init'Range);
I : Index := Init'First;
begin
Start ("LAVRA2", "1 Local Array Var. Ref. (test)");
for I in 1 .. Arr_Size loop
Let (Global, Ident (Init));
Let (Local_01, Ident (Init));
if Global (I) = Init (I) then
Global (I) := Local_01 (I); -- COMMENTED OUT IN NOISE VERSION
Let (Local_01, Ident (Init));
end if;
Let (Global, Ident (Local_01));
end loop;
Stop;
end Lavra2;