(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
(FILECREATED "26-Jan-90 11:46:56" |{DSK}/home/neptune/jds/FASTINIT.;1| 2946   

      |changes| |to:|  (VARS FASTINITCOMS)
                       (FNS FASTSETAW FASTSETA FASTELTW FASTELT))


(PRETTYCOMPRINT FASTINITCOMS)

(RPAQQ FASTINITCOMS (
                         (* |;;| 
                   "Function definitions for the \"fast\" array accessors used in making the INIT.")

                         
                         (* |;;| 
                       "<...>Library>VMEM defines these as ELT & SETA, which aren't too fast.")

                         
                         (* |;;| 
                       "This is an attempt to speed up INIT building on Suns. --JDS 1/26/90")

                         (FNS FASTELT FASTELTW FASTSETA FASTSETAW)))



(* |;;| "Function definitions for the \"fast\" array accessors used in making the INIT.")




(* |;;| "<...>Library>VMEM defines these as ELT & SETA, which aren't too fast.")




(* |;;| "This is an attempt to speed up INIT building on Suns. --JDS 1/26/90")

(DEFINEQ

(FASTELT
  (LAMBDA (A N)                                          (* \; "Edited 26-Jan-90 11:39 by jds")

    (* |;;| "Fast version of pointer-array ELT, for use in building INIT.")

    (PROG ((BASE (|ffetch| (ARRAYP BASE) |of| A))
           (N0 (IDIFFERENCE N (|ffetch| (ARRAYP ORIG) |of| A))))
          (SETQ N0 (IPLUS N0 (|ffetch| (ARRAYP OFFST) |of| A)))
          (RETURN (\\GETBASEPTR (\\ADDBASE2 BASE N0)
                         0)))))

(FASTELTW
  (LAMBDA (A N)                                          (* \; "Edited 26-Jan-90 11:40 by jds")
    (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A))
           (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A))))
          (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A)))
          (RETURN (\\GETBASE BASE N0)))))

(FASTSETA
  (LAMBDA (A N V)                                        (* \; "Edited 26-Jan-90 11:41 by jds")

    (* |;;| "Fast version of SETA for pointer arrays for the INIT building code.")

    (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A))
           (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A))))
          (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A)))
          (RETURN (\\RPLPTR (\\ADDBASE2 BASE N0)
                         0 V)))))

(FASTSETAW
  (LAMBDA (A N V)                                        (* \; "Edited 26-Jan-90 11:42 by jds")

    (* |;;| "Fast version of SETA for wrod-arrays, for INIT building code.")

    (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A))
           (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A))))
          (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A)))
          (RETURN (\\PUTBASE BASE N0 V)))))
)
(DECLARE\: DONTCOPY
  (FILEMAP (NIL (1126 2923 (FASTELT 1136 . 1622) (FASTELTW 1624 . 1983) (FASTSETA 1985 . 2474) (
FASTSETAW 2476 . 2921)))))
STOP
