Opened 7 years ago

#178 new defect

Extraordinarily bad code in init_sst.pl1

Reported by: canthony Owned by: Eric Swenson
Priority: trivial Milestone:
Component: Hardcore Version:
Keywords: Cc:

Description

In init_sst.pl1 is the code:

          begin;
declare  1 TEMPLATE_CME aligned like cme;
               unspec (TEMPLATE_CME) = ""b;
               TEMPLATE_CME.fp, TEMPLATE_CME.bp = "777777"b3;
               CME (*) = TEMPLATE_CME;                      /* compiler is clever with these */
          end;

The comment is not at all true. The generated code for "CME(*) =" is

    for (*)
      {
         CME.fp = CME_TEMPLATE.fp;
         CME.bp = CME_TEMPLATE.bp;
....
         CME.synch_page_entryp = CME_TEMPLATE.synch_page_entryp;
      }

Each of the 19 fields in individually copied, usually with a CSL instruction, with its attendant overhead.

There should be a pl1 construct that generates a single MRL instruction to copy the entire CME_TEMPLATE.

Change History (0)

Note: See TracTickets for help on using tickets.