DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: B T

⟦3ec0738b2⟧ TextFile

    Length: 1906 (0x772)
    Types: TextFile
    Names: »B«

Derivation

└─⟦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⟧ 

TextFile

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 Lavra1 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 ("LAVRA1", "1 Local Array Var. Ref. (control)");
    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 Lavra1;