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

⟦9e6708ec8⟧ TextFile

    Length: 2377 (0x949)
    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 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;