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.
Note:
See TracTickets
for help on using tickets.
