From 55da53966b5c13baa2b973778bf29c9fc0ad2cba Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Tue, 2 Dec 2025 20:20:51 -0800 Subject: [PATCH] Sort the sublists in the value returned by CALLS --- library/MSANALYZE | 59 ++++---- library/MSANALYZE.DFASL | Bin 23153 -> 23260 bytes sources/ACODE | 310 +++++++++++++++++++--------------------- sources/ACODE.LCOM | Bin 19042 -> 18982 bytes 4 files changed, 184 insertions(+), 185 deletions(-) diff --git a/library/MSANALYZE b/library/MSANALYZE index bb3d2a74d..a7ea6e582 100644 --- a/library/MSANALYZE +++ b/library/MSANALYZE @@ -1,10 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Feb-2024 09:28:38" {DSK}larry>il>medley>library>MSANALYZE.;2 61022 +(FILECREATED " 2-Oct-2025 23:05:25" {WMEDLEY}MSANALYZE.;4 61409 - :EDIT-BY "lmm" + :EDIT-BY rmk - :PREVIOUS-DATE "17-Feb-2024 22:10:56" {DSK}larry>il>medley>library>MSANALYZE.;3) + :CHANGES-TO (FNS CALLS) + + :PREVIOUS-DATE "20-Feb-2024 09:28:38" {WMEDLEY}MSANALYZE.;3) (PRETTYCOMPRINT MSANALYZECOMS) @@ -72,11 +74,13 @@ (CADDR (CALLS FN USEDATABASE 'FREEVARS]) (CALLS - [LAMBDA (EXPR USEDATABASE VARSFLG) (* ; "Edited 12-Jun-90 17:25 by teruuchi") + [LAMBDA (EXPR USEDATABASE VARSFLG) (* ; "Edited 2-Oct-2025 23:01 by rmk") + (* ; "Edited 12-Jun-90 17:25 by teruuchi") (* ;  "This FNS is for the User Interface Function in MSANALYZE(MasterScope)") (* ; - "Edited by Tomoru Teruuchi(12-June-90 : for AR#10020)") + "Edited by Tomoru Teruuchi(12-June-90 : for AR#10020) ") + (* ; "Edited by TT (Date : 8-May-1990)") (PROG (FREES (GLOBALS NIL) FNDEF FLG) [COND @@ -84,19 +88,20 @@ (GETD 'UPDATEFN)) (UPDATEFN EXPR NIL 'ERROR) [SETQ FREES (GETRELATION EXPR '(USE FREELY] - [SETQ FREES (SUBSET FREES (FUNCTION (LAMBDA (VAR) + [SETQ FREES (SORT (SUBSET FREES (FUNCTION (LAMBDA (VAR) (* ;  "This Function is The Predicate whether the variable is global or not.") - (if (OR (FMEMB VAR GLOBALVARS) - (EQ (GETPROP VAR 'GLOBALVAR) - T)) - then (pushnew GLOBALS VAR) - NIL - else T](* ; "Edited by TT (Date : 8-May-1990)") + (if (OR (FMEMB VAR GLOBALVARS) + (EQ (GETPROP VAR 'GLOBALVAR) + T)) + then (pushnew GLOBALS VAR) + NIL + else T] + (SETQ GLOBALS (SORT GLOBALS)) (RETURN (LIST [AND (NOT VARSFLG) - (GETRELATION EXPR '(CALL NOTERROR] - (AND (NEQ VARSFLG 'FREEVARS) - (GETRELATION EXPR 'BIND)) + (SORT (GETRELATION EXPR '(CALL NOTERROR] + [AND (NEQ VARSFLG 'FREEVARS) + (SORT (GETRELATION EXPR 'BIND] FREES GLOBALS] GETDLP (SETQ FNDEF (COND @@ -170,11 +175,13 @@ then (pushnew GLOBALS VAR) NIL else T] - (* ; "Edited by TT (Date : 8-May-1990)") - (RETURN (LIST [COLLECTFNDATA (CONSTANT (MSVBNOTICED 'CALL + (RETURN (LIST [SORT (COLLECTFNDATA (CONSTANT (MSVBNOTICED + 'CALL 'NOTERROR] - [COLLECTFNDATA (CONSTANT (MSVBNOTICED 'BIND] - FREES GLOBALS] + [SORT (COLLECTFNDATA (CONSTANT (MSVBNOTICED + 'BIND] + (SORT FREES) + (SORT GLOBALS] (T '?]) (COLLECTFNDATA @@ -1270,11 +1277,11 @@ DONTCOPY (BLOCK%: MSFINDP MSFINDP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3487 10938 (VARS 3497 . 3636) (FREEVARS 3638 . 3789) (CALLS 3791 . 10089) ( -COLLECTFNDATA 10091 . 10462) (CALLS3 10464 . 10936)) (13187 51210 (ALLCALLS 13197 . 13797) ( -MSINITFNDATA 13799 . 14029) (MSPRGE 14031 . 21284) (MSPRGMACRO 21286 . 21997) (MSPRGCALL 21999 . 22316 -) (MSBINDVAR 22318 . 22825) (MSPRGRECORD 22827 . 29604) (MSPRGERR 29606 . 29769) (MSPRGTEMPLATE1 29771 - . 38819) (MSPRGTEMPLATE 38821 . 39424) (MSPRGLAMBDA 39426 . 48039) (MSPRGLST 48041 . 48203) (ADDTO -48205 . 48985) (NLAMBDAFNP 48987 . 49713) (MSPRGDWIM 49715 . 50554) (MSDWIMTRAN 50556 . 51208)) (60485 - 60921 (MSFINDP 60495 . 60919))))) + (FILEMAP (NIL (3482 11325 (VARS 3492 . 3631) (FREEVARS 3633 . 3784) (CALLS 3786 . 10476) ( +COLLECTFNDATA 10478 . 10849) (CALLS3 10851 . 11323)) (13574 51597 (ALLCALLS 13584 . 14184) ( +MSINITFNDATA 14186 . 14416) (MSPRGE 14418 . 21671) (MSPRGMACRO 21673 . 22384) (MSPRGCALL 22386 . 22703 +) (MSBINDVAR 22705 . 23212) (MSPRGRECORD 23214 . 29991) (MSPRGERR 29993 . 30156) (MSPRGTEMPLATE1 30158 + . 39206) (MSPRGTEMPLATE 39208 . 39811) (MSPRGLAMBDA 39813 . 48426) (MSPRGLST 48428 . 48590) (ADDTO +48592 . 49372) (NLAMBDAFNP 49374 . 50100) (MSPRGDWIM 50102 . 50941) (MSDWIMTRAN 50943 . 51595)) (60872 + 61308 (MSFINDP 60882 . 61306))))) STOP diff --git a/library/MSANALYZE.DFASL b/library/MSANALYZE.DFASL index 9798dac712790e86d9bdb36a0961f25cbd47864f..69c945fa88cb34af073817f7fc84951490c17ea5 100644 GIT binary patch delta 8926 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 EC*A=WhyVZp delta 8956 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 diff --git a/sources/ACODE b/sources/ACODE index d9923361c..b830abd43 100644 --- a/sources/ACODE +++ b/sources/ACODE @@ -1,14 +1,14 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "12-Mar-2021 11:17:48" {DSK}larry>ilisp>med>sources>ACODE.;6 71741 - changes to%: (FNS PRINTCODENT) +(FILECREATED " 2-Oct-2025 22:55:53" {DSK}kaplan>Local>medley3.5>working-medley>sources>ACODE.;2 70570 - previous date%: "12-Mar-2021 09:50:45" {DSK}larry>ilisp>med>sources>ACODE.;4) + :EDIT-BY rmk + :CHANGES-TO (FNS CALLSCCODE) + + :PREVIOUS-DATE "12-Mar-2021 11:17:48" +{DSK}kaplan>Local>medley3.5>working-medley>sources>ACODE.;1) -(* ; " -Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporation. -") (PRETTYCOMPRINT ACODECOMS) @@ -35,7 +35,7 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio LLGC LLCODE LLBASIC MODARITH RENAMEMACROS)) (ADDVARS (IGNOREFNS))) (COMS (* ; - "Maintaining ref count consistency in code") + "Maintaining ref count consistency in code") (FNS \COPYCODEBLOCK \COPYFNHEADER \RECLAIMCODEBLOCK)) (COMS (* ; "Low-level break") (FNS LLBREAK BROKENDEF)) @@ -44,8 +44,7 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (EXPANDMACROFNS NEXTBYTE PCVAR PRINJUMP CODEBASELT CODEBASELT2 CODEBASESETA CODEBASESETA2 PRINTCODEHEADERDECODE] - (COMS (* ; - "reference to opcodes symbolically") + (COMS (* ; "reference to opcodes symbolically") (FNS PRINTOPCODES) (GLOBALVARS \OPCODES)) (DECLARE%: EVAL@COMPILE DONTCOPY (LOCALVARS . T)))) @@ -397,24 +396,23 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (DECLARE%: EVAL@COMPILE DONTCOPY (DECLARE%: EVAL@COMPILE -(PUTPROPS PCVAR MACRO [(IND LST NAME) (* lmm "11-AUG-81 22:27") - (ALLOCAL (PROG NIL - (PRIN2 [CADR (OR (ASSOC IND LST) - (RETURN (printout OUTF "[" NAME IND - "]"] - OUTF]) +(PUTPROPS PCVAR MACRO [(IND LST NAME) (* lmm "11-AUG-81 22:27") + (ALLOCAL (PROG NIL + (PRIN2 [CADR (OR (ASSOC IND LST) + (RETURN (printout OUTF "[" NAME IND "]"] + OUTF]) (PUTPROPS PRINJUMP MACRO [LAMBDA (N) - (PRIN1 "->" OUTF) - (PRINTNUM I4 [SETQ N (IPLUS N (IDIFFERENCE CODELOC (ADD1 LEN] - OUTF) - (COND - (LEVEL (PUTHASH N (SELECTQ LEVADJ - ((NCJUMP JUMP) - LEVEL) - (SUB1 LEVEL)) - \PRINTCODE.LEVEL) - (PUTHASH N STK \PRINTCODE.STKSTATE]) + (PRIN1 "->" OUTF) + (PRINTNUM I4 [SETQ N (IPLUS N (IDIFFERENCE CODELOC (ADD1 LEN] + OUTF) + (COND + (LEVEL (PUTHASH N (SELECTQ LEVADJ + ((NCJUMP JUMP) + LEVEL) + (SUB1 LEVEL)) + \PRINTCODE.LEVEL) + (PUTHASH N STK \PRINTCODE.STKSTATE]) (PUTPROPS NEXTBYTE MACRO [NIL (CODEBASELT CODEBASE (PROG1 CODELOC (add CODELOC 1]) @@ -423,17 +421,16 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (INDICES I THERE) [for NAME in (CDR (RECORDFIELDNAMES 'FNHEADER T)) when (AND NAME (CL:SYMBOLP NAME)) - do - [SETQ I (EVAL `(INDEXF (fetch (FNHEADER - ,NAME] - (COND - ((EQ NAME '%#FRAMENAME) - (add I 1))) - (COND - ((SETQ THERE (ASSOC I INDICES)) - (push (CDR THERE) - NAME)) - (T (push INDICES (LIST I NAME] + do [SETQ I + (EVAL `(INDEXF (fetch (FNHEADER ,NAME] + (COND + ((EQ NAME '%#FRAMENAME) + (add I 1))) + (COND + ((SETQ THERE (ASSOC I INDICES)) + (push (CDR THERE) + NAME)) + (T (push INDICES (LIST I NAME] `(SELECTQ ,INDEX (\,@ [for PAIR in INDICES collect @@ -447,8 +444,8 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (SELECTQ NAME ((NATIVE CLOSUREP) `(AND - (fetch - (FNHEADER ,NAME) + (fetch (FNHEADER + ,NAME) of ,CODEBASE) (PRIN1 ,(CONCAT "[" NAME "]") @@ -459,14 +456,13 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (L-CASE (MKSTRING NAME)) ": ") - (fetch (FNHEADER - ,NAME) + (fetch (FNHEADER ,NAME) of ,CODEBASE] [(EQ (CADR PAIR) '%#FRAMENAME) `((printout ,OUTF " frame name: " .P2 - (1ST (fetch (FNHEADER - %#FRAMENAME) + (1ST (fetch (FNHEADER + %#FRAMENAME) of ,CODEBASE] (T `((PRIN1 @@ -491,10 +487,11 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (CALLSCCODE [LAMBDA (DEF OPTION FNAPPLY) (* DECLARATIONS%: (RECORD RESULT - (LNCALLED CALLED BOUND USEDFREE - GLOBALS))) + (LNCALLED CALLED BOUND USEDFREE + GLOBALS))) + (* ; "Edited 2-Oct-2025 22:55 by rmk") (* ; - "Edited 1-Dec-92 00:51 by sybalsky:mv:envos") + "Edited 1-Dec-92 00:51 by sybalsky:mv:envos") (* ;;; "Analyze DEF for function calls and variable references. Action depends on OPTION as follows:") @@ -517,21 +514,21 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio ((NEQ OPTION 'FNAPPLY) (* ; "Get variables out of name table") (SETQ NTSIZE (fetch (FNHEADER NTSIZE) of CODEBASE)) (for NT1 from (UNFOLD (fetch (FNHEADER OVERHEADWORDS) of T) - BYTESPERWORD) by (BYTESPERNAMEENTRY) as NT2 + BYTESPERWORD) by (BYTESPERNAMEENTRY) as NT2 from (IPLUS (CONSTANT (UNFOLD (fetch (FNHEADER OVERHEADWORDS) of T) - BYTESPERWORD)) - (UNFOLD NTSIZE BYTESPERWORD)) by (BYTESPERNTOFFSETENTRY) + BYTESPERWORD)) + (UNFOLD NTSIZE BYTESPERWORD)) by (BYTESPERNTOFFSETENTRY) until [NULL (SETQ NAME (\INDEXATOMVAL (GETNAMEENTRY CODEBASE NT1] do (SETQ TYPE (SELECTQ (NTSLOT-VARTYPE (GETNTOFFSET CODEBASE NT2)) - ((IVARCODE PVARCODE) - 'BOUND) - 'USEDFREE)) (* ; "Top two bits of the entry indicate kind of name: 00(\NT.IVARCODE) = IVAR, 10(\NT.PVARCODE) = PVAR, 11 = FVAR") - (SELECTQ OPTION - ((VARAPPLY APPLY) - (CL:FUNCALL FNAPPLY NAME TYPE)) - (SELECTQ TYPE - (BOUND (pushnew BOUND NAME)) - (pushnew USEDFREE NAME] + ((IVARCODE PVARCODE) + 'BOUND) + 'USEDFREE)) (* ; "Top two bits of the entry indicate kind of name: 00(\NT.IVARCODE) = IVAR, 10(\NT.PVARCODE) = PVAR, 11 = FVAR") + (SELECTQ OPTION + ((VARAPPLY APPLY) + (CL:FUNCALL FNAPPLY NAME TYPE)) + (SELECTQ TYPE + (BOUND (pushnew BOUND NAME)) + (pushnew USEDFREE NAME] (PROG ((CODELOC (fetch (FNHEADER STARTPC) of CODEBASE)) B B1 B2 B3 B4 B5 FN LEN) LP (SETQ B (NEXTBYTE)) @@ -651,7 +648,7 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (GO LP) COMPILED-CLOSURE (* ; - "Compiled subfunction, recursively analyze it") + "Compiled subfunction, recursively analyze it") [LET ((RESULT (CALLSCCODE FN OPTION FNAPPLY))) (AND RESULT (COND ((EQ OPTION T) (* ; "Just got free variables back") @@ -671,13 +668,13 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio ((FNAPPLY VARAPPLY APPLY) NIL) (T (* ; "All free var references") - (RUNION USEDFREE GLOBALS)) + (SORT (RUNION USEDFREE GLOBALS))) (create RESULT - LNCALLED _ (REVERSE LNCALLED) - CALLED _ (REVERSE CALLED) - BOUND _ (REVERSE BOUND) - USEDFREE _ (REVERSE USEDFREE) - GLOBALS _ (REVERSE GLOBALS]) + LNCALLED _ (SORT LNCALLED) + CALLED _ (SORT CALLED) + BOUND _ (SORT BOUND) + USEDFREE _ (SORT USEDFREE) + GLOBALS _ (SORT GLOBALS]) (RUNION (LAMBDA (L1 L2) (* bvm%: "14-Mar-86 14:27") (* ;;; "Fast UNION using EQ") (for X in L1 unless (FMEMB X L2) do (push L2 X)) L2) @@ -906,122 +903,120 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (DECLARE%: EVAL@COMPILE (PUTPROPS CODEBASELT MACRO [OPENLAMBDA (CODEBASE OFFSET) - (COND - ((fetch (FNHEADER BYTESWAPPED) of CODEBASE) - (\GETBASEBYTE CODEBASE (LOGXOR OFFSET 3))) - (T (\GETBASEBYTE CODEBASE OFFSET]) + (COND + ((fetch (FNHEADER BYTESWAPPED) of CODEBASE) + (\GETBASEBYTE CODEBASE (LOGXOR OFFSET 3))) + (T (\GETBASEBYTE CODEBASE OFFSET]) (PUTPROPS CODEBASELT2 MACRO [OPENLAMBDA (DEF LC) - (LOGOR (LLSH (CODEBASELT DEF LC) - BITSPERBYTE) - (CODEBASELT DEF (ADD1 LC]) + (LOGOR (LLSH (CODEBASELT DEF LC) + BITSPERBYTE) + (CODEBASELT DEF (ADD1 LC]) (PUTPROPS CODEBASESETA MACRO [OPENLAMBDA (CODEBASE OFFSET NEWVALUE) - (COND - ((fetch (FNHEADER BYTESWAPPED) of CODEBASE) - (\PUTBASEBYTE CODEBASE (LOGXOR OFFSET 3) - NEWVALUE)) - (T (\PUTBASEBYTE CODEBASE OFFSET NEWVALUE]) + (COND + ((fetch (FNHEADER BYTESWAPPED) of CODEBASE) + (\PUTBASEBYTE CODEBASE (LOGXOR OFFSET 3) + NEWVALUE)) + (T (\PUTBASEBYTE CODEBASE OFFSET NEWVALUE]) (PUTPROPS CODEBASESETA2 MACRO [OPENLAMBDA (DEF LC VALUE) - (CODEBASESETA DEF LC (LRSH VALUE BITSPERBYTE)) - (CODEBASESETA DEF (ADD1 LC) - (IMOD VALUE (CONSTANT (LLSH 1 BITSPERBYTE]) + (CODEBASESETA DEF LC (LRSH VALUE BITSPERBYTE)) + (CODEBASESETA DEF (ADD1 LC) + (IMOD VALUE (CONSTANT (LLSH 1 BITSPERBYTE]) (PUTPROPS CODEBASELT3 MACRO [OPENLAMBDA (DEF LC) - (BIG-VMEM-CODE [\VAG2 (LOGOR (LLSH (CODEBASELT DEF LC) - BITSPERBYTE) - (CODEBASELT DEF (ADD1 LC))) - (LOGOR (LLSH (CODEBASELT DEF - (IPLUS 2 LC)) - BITSPERBYTE) - (CODEBASELT DEF (IPLUS 3 LC] - (\VAG2 (CODEBASELT DEF LC) - (LOGOR (LLSH (CODEBASELT DEF (IPLUS 1 LC)) + (BIG-VMEM-CODE [\VAG2 (LOGOR (LLSH (CODEBASELT DEF LC) + BITSPERBYTE) + (CODEBASELT DEF (ADD1 LC))) + (LOGOR (LLSH (CODEBASELT DEF (IPLUS 2 LC)) BITSPERBYTE) - (CODEBASELT DEF (IPLUS 2 LC]) + (CODEBASELT DEF (IPLUS 3 LC] + (\VAG2 (CODEBASELT DEF LC) + (LOGOR (LLSH (CODEBASELT DEF (IPLUS 1 LC)) + BITSPERBYTE) + (CODEBASELT DEF (IPLUS 2 LC]) (PUTPROPS CODEBASELT4 MACRO [OPENLAMBDA (DEF LC) - (BIG-VMEM-CODE [\VAG2 (LOGOR (LLSH (CODEBASELT DEF LC) - BITSPERBYTE) - (CODEBASELT DEF (ADD1 LC))) - (LOGOR (LLSH (CODEBASELT DEF - (IPLUS 2 LC)) - BITSPERBYTE) - (CODEBASELT DEF (IPLUS 3 LC] - (\VAG2 (CODEBASELT DEF LC) - (LOGOR (LLSH (CODEBASELT DEF (IPLUS 1 LC)) + (BIG-VMEM-CODE [\VAG2 (LOGOR (LLSH (CODEBASELT DEF LC) BITSPERBYTE) - (CODEBASELT DEF (IPLUS 2 LC]) + (CODEBASELT DEF (ADD1 LC))) + (LOGOR (LLSH (CODEBASELT DEF (IPLUS 2 LC)) + BITSPERBYTE) + (CODEBASELT DEF (IPLUS 3 LC] + (\VAG2 (CODEBASELT DEF LC) + (LOGOR (LLSH (CODEBASELT DEF (IPLUS 1 LC)) + BITSPERBYTE) + (CODEBASELT DEF (IPLUS 2 LC]) (PUTPROPS CODEBASESETA3 MACRO [OPENLAMBDA (DEF LC VALUE) - (CODEBASESETA DEF LC (\HILOC VALUE)) - (CODEBASESETA DEF (ADD1 LC) - (LRSH (\LOLOC VALUE) - BITSPERBYTE)) - (CODEBASESETA DEF (IPLUS 2 LC) - (IMOD (\LOLOC VALUE) - (CONSTANT (LLSH 1 BITSPERBYTE]) + (CODEBASESETA DEF LC (\HILOC VALUE)) + (CODEBASESETA DEF (ADD1 LC) + (LRSH (\LOLOC VALUE) + BITSPERBYTE)) + (CODEBASESETA DEF (IPLUS 2 LC) + (IMOD (\LOLOC VALUE) + (CONSTANT (LLSH 1 BITSPERBYTE]) (PUTPROPS CODEBASESETA4 MACRO [OPENLAMBDA (DEF LC VALUE) - (CODEBASESETA DEF LC (LRSH (\HILOC VALUE) - BITSPERBYTE)) - [CODEBASESETA DEF (ADD1 LC) - (IMOD (\HILOC VALUE) - (CONSTANT (LLSH 1 BITSPERBYTE] - (CODEBASESETA DEF (IPLUS 2 LC) - (LRSH (\LOLOC VALUE) - BITSPERBYTE)) - (CODEBASESETA DEF (IPLUS 3 LC) - (IMOD (\LOLOC VALUE) - (CONSTANT (LLSH 1 BITSPERBYTE]) + (CODEBASESETA DEF LC (LRSH (\HILOC VALUE) + BITSPERBYTE)) + [CODEBASESETA DEF (ADD1 LC) + (IMOD (\HILOC VALUE) + (CONSTANT (LLSH 1 BITSPERBYTE] + (CODEBASESETA DEF (IPLUS 2 LC) + (LRSH (\LOLOC VALUE) + BITSPERBYTE)) + (CODEBASESETA DEF (IPLUS 3 LC) + (IMOD (\LOLOC VALUE) + (CONSTANT (LLSH 1 BITSPERBYTE]) ) (DEFOPTIMIZER CODEBASESETATOM (DEFINITION OFFSET SYMBOL &ENVIRONMENT ENV) - [COND - [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASESETA4 ,DEFINITION ,OFFSET ,SYMBOL] - [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASESETA3 ,DEFINITION ,OFFSET ,SYMBOL] - (T `(CODESETA2 ,DEFINITION ,OFFSET ,SYMBOL]) + [COND + [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASESETA4 ,DEFINITION ,OFFSET ,SYMBOL] + [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASESETA3 ,DEFINITION ,OFFSET ,SYMBOL] + (T `(CODESETA2 ,DEFINITION ,OFFSET ,SYMBOL]) (DEFOPTIMIZER CODEBASEGETATOM (DEFINITION OFFSET SYMBOL &ENVIRONMENT ENV) - (* ;; "Get an atom out of a compiled function definition.") + (* ;; "Get an atom out of a compiled function definition.") - [COND - [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASELT4 ,DEFINITION ,OFFSET] - [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASELT3 ,DEFINITION ,OFFSET] - (T `(CODEBASELT2 ,DEFINITION ,OFFSET ,SYMBOL]) + [COND + [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASELT4 ,DEFINITION ,OFFSET] + [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASELT3 ,DEFINITION ,OFFSET] + (T `(CODEBASELT2 ,DEFINITION ,OFFSET ,SYMBOL]) (DEFOPTIMIZER CODEBASEGETNAME (BASE OFFSET &ENVIRONMENT ENV) - [COND - [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASEGETATOM ,BASE ,OFFSET] - [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CODEBASEGETATOM ,BASE ,OFFSET] - (T `(CODEBASELT2 ,BASE ,OFFSET]) + [COND + [(FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASEGETATOM ,BASE ,OFFSET] + [(FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CODEBASEGETATOM ,BASE ,OFFSET] + (T `(CODEBASELT2 ,BASE ,OFFSET]) (DEFOPTIMIZER BYTESPERCODEATOM (&ENVIRONMENT ENV) - [COND - ((FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CONSTANT 4)) - ((FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) - `(CONSTANT 3)) - (T `(CONSTANT 2]) + [COND + ((FMEMB :4-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CONSTANT 4)) + ((FMEMB :3-BYTE (COMPILER::ENV-TARGET-ARCHITECTURE ENV)) + `(CONSTANT 3)) + (T `(CONSTANT 2]) (DEFOPTIMIZER BIG-VMEM-HOST (NEW-SYMBOL-FORM OLD-SYMBOL-FORM &ENVIRONMENT ENV) - (* ;; - "Allow for differences between 4-byte pointers and 3-byte pointers..") + (* ;; + "Allow for differences between 4-byte pointers and 3-byte pointers..") - `(COND - ((FMEMB :4-BYTE COMPILER::*HOST-ARCHITECTURE*) - ,NEW-SYMBOL-FORM) - (T ,OLD-SYMBOL-FORM))) + `(COND + ((FMEMB :4-BYTE COMPILER::*HOST-ARCHITECTURE*) + ,NEW-SYMBOL-FORM) + (T ,OLD-SYMBOL-FORM))) (FILESLOAD (LOADCOMP) @@ -1133,8 +1128,8 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (ADDTOVAR RDCOMS (FNS PRINTCODE PRINTCODENT BROKENDEF)) -(ADDTOVAR EXPANDMACROFNS NEXTBYTE PCVAR PRINJUMP CODEBASELT CODEBASELT2 CODEBASESETA - CODEBASESETA2 PRINTCODEHEADERDECODE) +(ADDTOVAR EXPANDMACROFNS NEXTBYTE PCVAR PRINJUMP CODEBASELT CODEBASELT2 CODEBASESETA CODEBASESETA2 + PRINTCODEHEADERDECODE) ) @@ -1157,14 +1152,11 @@ Copyright (c) 1982-1988, 1990-1992, 1995, 2017, 2021 by Venue & Xerox Corporatio (LOCALVARS . T) ) ) -(PUTPROPS ACODE COPYRIGHT ("Venue & Xerox Corporation" 1982 1983 1984 1985 1986 1987 1988 1990 1991 -1992 1995 2017 2021)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3011 22577 (PRINTCODE 3021 . 20376) (PRINTCODENT 20378 . 22575)) (28577 40734 ( -CALLSCCODE 28587 . 40590) (RUNION 40592 . 40732)) (40735 49443 (CHANGECCODE 40745 . 44227) (CCCSUBFN? -44229 . 44940) (\SUBFNDEF 44942 . 45204) (CCCSCAN 45206 . 47961) (\CODEBLOCKP 47963 . 49441)) (49444 -54537 (\MAP-CODE-POINTERS 49454 . 50997) (\MAP-CODE-LITERALS 50999 . 54535)) (62696 65130 ( -\COPYCODEBLOCK 62706 . 63401) (\COPYFNHEADER 63403 . 64284) (\RECLAIMCODEBLOCK 64286 . 65128)) (65163 -70492 (LLBREAK 65173 . 65672) (BROKENDEF 65674 . 70490)) (70819 71445 (PRINTOPCODES 70829 . 71443)))) -) + (FILEMAP (NIL (2919 22485 (PRINTCODE 2929 . 20284) (PRINTCODENT 20286 . 22483)) (28176 40396 ( +CALLSCCODE 28186 . 40252) (RUNION 40254 . 40394)) (40397 49105 (CHANGECCODE 40407 . 43889) (CCCSUBFN? +43891 . 44602) (\SUBFNDEF 44604 . 44866) (CCCSCAN 44868 . 47623) (\CODEBLOCKP 47625 . 49103)) (49106 +54199 (\MAP-CODE-POINTERS 49116 . 50659) (\MAP-CODE-LITERALS 50661 . 54197)) (61652 64086 ( +\COPYCODEBLOCK 61662 . 62357) (\COPYFNHEADER 62359 . 63240) (\RECLAIMCODEBLOCK 63242 . 64084)) (64119 +69448 (LLBREAK 64129 . 64628) (BROKENDEF 64630 . 69446)) (69771 70397 (PRINTOPCODES 69781 . 70395))))) STOP diff --git a/sources/ACODE.LCOM b/sources/ACODE.LCOM index c34af1c3d298544f5aa67ba7d6c2ad295a16701a..583d2431f1788d12173a6c29ae1c72617e10254a 100644 GIT binary patch delta 916 zcmb_aJ#5oZ5XPlQ%_{>8P$e6_6^y01^WeRYxSm3@k`6a88s6AvW;vz0c>n@7;Ijj~mR>4Q4&v zCxlBGrk>2|iJYzh3leXYd%P5q6p$pUC{&SI;Mj7z*{L<03bb38L~dyI$(yl!*Kxb? zda2VWwc=*GTx!IdPNm^omjxw$we8kxt&99967ROJxMimsPb4i(7nY?Uu#(F6ZKpH3 zOq6Iyq*9cHHP;#6M!>n&al4BYk_pqalYTAKu!B_IGy&@;<$@rvP$~7WLtl3iAIZup z8~m%${+~|&-57yLNQs1i>Y9<`kDmdzSqGY2No3Nx&F3uOQW<;fr;mn$Ku=}$f??%t zUc)T_D@y!o$@NA0QdSBpmiOoY82>eshDvyX9$=I=zSbig)+E-HFH9ebs|_yb}8O=4sM1#IMq4 z3~kFr%=5P8`GKW0{IAc|Fya^W1LB+LI%1I;h>z(H%zw1}z}Jl(<$c{t$EtqG`{X&q z%c(gpt*s)vr&SSu4za8kk-yZRAl^3?yxXZ5ve&8eh>K}I@6HgvrPq)bR{Y3|Aubqx c&Mm{3CtO0)a#kUc1tXoYvO4|^!Qljc0hyx*DF6Tf delta 972 zcmb7@L2DCH5XafJLM>US2V0AmVXcxJn(o`|CYwzg8g@6yYMO*iEZT#bCa*S-=7min zh9Wr#Jr`3I(UVxggCOJ+hzCJWg3zO&2fu<)1?R=8DTwIh_h#PCoA;mDc~5tRkGsN7 zsw?`FPR2G}J5jVPkccw3T=M1=Ss_4(K_Z40lE5#O*=D0!qZMFvkYLLyT)4Hc!8U2U zR`R?~yjrU^8}UtAi8oo>E7N8?VdgA57z+nLJepKCh;C?_1Zy5Gv+iNq@4B z!_vi`IdV-n(|-uV2Y0am+(GOxkBQme}95|F5_aD+Hi4vizs5#i7gQJI5)h*YMy Qt$`ww2tpx&z@YQr0pHLN7XSbN