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

⟦06110170a⟧ TextFile

    Length: 2293 (0x8f5)
    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 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;