Changeset 15146


Ignore:
Timestamp:
11/05/19 13:03:33 (4 years ago)
Author:
Mark Evenson
Message:

JSS read sharp expression bugfixes
(Alan Ruttenberg)

Fix the following in JSS:

1) method call expression lookup java class for jstatic.
2) maybe-class, if it isn't a class, intern in current package vs. jss

Added missing <file:contrib/jss/util.lisp> from the head as of
github.com/alanruttenberg/abcl
with commit 2dab9f16384f279afe0127ef3c540811939c5bcb
<https://github.com/alanruttenberg/abcl/commit/0ce3f7d0e8003d2ca66cf59c4cd5d32a7c8f4f40>.

Untabify all source units for sanity.

Merges <https://github.com/armedbear/abcl/pull/65>.

Via
<https://github.com/armedbear/abcl/pull/65/commits/4461941d335feb298fd246f29967766c213b0e8c>,
<https://github.com/armedbear/abcl/pull/65/commits/3a681f852f0dc0581f8d47393e0d2d5d6e58596f>.

Location:
trunk/abcl
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/contrib/jss/collections.lisp

    r15096 r15146  
    160160  (declare (optimize (speed 3) (safety 0)))
    161161  (flet ((iterator-collect (iterator)
    162      (with-constant-signature ((has-next "hasNext")
    163              (next "next"))
    164        (loop :while (has-next iterator)
    165        :collect (next iterator))))
    166   (enumeration-collect (enumeration)
    167      (with-constant-signature ((has-next "hasMoreElements")
    168              (next "nextElement"))
    169        (loop :while (has-next enumeration)
    170        :collect (next enumeration))))
    171   (map-collect (map)
    172      (with-constant-signature ((has-next "hasMoreElements")
    173              (next "nextElement"))
    174        (let ((keyiterator (#"iterator" (#"keyset" map))))
    175          (loop :while (has-next keyiterator)
    176          :for key = (next keyiterator)
     162           (with-constant-signature ((has-next "hasNext")
     163                                     (next "next"))
     164             (loop :while (has-next iterator)
     165                   :collect (next iterator))))
     166        (enumeration-collect (enumeration)
     167           (with-constant-signature ((has-next "hasMoreElements")
     168                                     (next "nextElement"))
     169             (loop :while (has-next enumeration)
     170                   :collect (next enumeration))))
     171        (map-collect (map)
     172           (with-constant-signature ((has-next "hasMoreElements")
     173                                     (next "nextElement"))
     174             (let ((keyiterator (#"iterator" (#"keyset" map))))
     175               (loop :while (has-next keyiterator)
     176                     :for key = (next keyiterator)
    177177                  :collect (cons key (#"get" map key)))))))
    178178    (let ((isinstance
  • trunk/abcl/contrib/jss/invoke.lisp

    r15134 r15146  
    257257  (when (boundp '*class-lookup-overrides*)
    258258      (let ((found (find-if (lambda(el) (#"matches" (string el) (concatenate 'string "(?i).*" (string name) "$")))
    259           *class-lookup-overrides*)))
    260   (if found
    261       (let ((*class-lookup-overrides* nil))
    262         (lookup-class-name found))))))
     259                            *class-lookup-overrides*)))
     260        (if found
     261            (let ((*class-lookup-overrides* nil))
     262              (lookup-class-name found))))))
    263263
    264264
     
    288288                      (length full)))
    289289                 (ambiguous (choices)
    290        (if return-ambiguous
    291            (return-from lookup-class-name choices)
    292            (error "Ambiguous class name: ~a can be ~{~a~^, ~}" name choices))))
     290                   (if return-ambiguous
     291                       (return-from lookup-class-name choices)
     292                       (error "Ambiguous class name: ~a can be ~{~a~^, ~}" name choices))))
    293293            (if (zerop bucket-length)
    294     (progn (unless muffle-warning (warn "can't find class named ~a" name)) nil)
     294                (progn (unless muffle-warning (warn "can't find class named ~a" name)) nil)
    295295                (let ((matches (loop for el in bucket when (matches-end name el 'char=) collect el)))
    296296                  (if (= (length matches) 1)
     
    301301                                (car matches)
    302302                                (if (= (length matches) 0)
    303             (progn (unless muffle-warning (warn "can't find class named ~a" name)) nil)
     303                                    (progn (unless muffle-warning (warn "can't find class named ~a" name)) nil)
    304304                                    (ambiguous matches))))
    305305                          (ambiguous matches))))))))))
  • trunk/abcl/contrib/jss/javaparser.lisp

    r15066 r15146  
    1010       (setf (gethash ,jclass *class-to-last-component*) ',ast-class)
    1111       (defmethod ,ast-class ((obj ,class) node &optional
    12             ,@(loop for field in fields
    13               collect `(,(intern (string-upcase field)) (get-java-field node ,field t))))
    14      ,@body))))
     12                              ,@(loop for field in fields
     13                                      collect `(,(intern (string-upcase field)) (get-java-field node ,field t))))
     14           ,@body))))
    1515
    1616(defvar *object-for-this* (new 'lang.object))
     
    4545    (setq raw (#"replaceAll" raw "_" ""))
    4646    (if (#"matches" raw ".*[dD]$")
    47   (read-from-string (#"replaceFirst" (subseq raw 0 (1- (length raw))) "e" "d"))
    48   (if (#"matches" raw ".*[fF]$")
    49       (read-from-string (subseq raw 0 (1- (length raw))))
    50       (read-from-string raw)))))
     47        (read-from-string (#"replaceFirst" (subseq raw 0 (1- (length raw))) "e" "d"))
     48        (if (#"matches" raw ".*[fF]$")
     49            (read-from-string (subseq raw 0 (1- (length raw))))
     50            (read-from-string raw)))))
    5151
    5252(def-java-read CharLiteralExpr javaparser nil
  • trunk/abcl/contrib/jss/jss.asd

    r15116 r15146  
    33  :author "Alan Ruttenberg, Mark Evenson"
    44  :long-description "<urn:abcl.org/release/1.6.0/contrib/jss#>"
    5   :version "3.5.0"
     5  :version "3.6.0"
    66  :components ((:module base :pathname "" :serial t
    77                        :components ((:file "packages")
     
    1212                                     (:file "transform-to-field")
    1313                                     (:file "compat")
    14                                      (:file "jtypecase"))))
     14                                     (:file "jtypecase")
     15                                     (:file "util"))))
    1516  :perform (asdf:test-op (op c)
    1617                         (asdf:test-system :jss-tests)))
  • trunk/abcl/contrib/jss/jtypecase.lisp

    r15116 r15146  
    66  (declare (optimize (speed 3) (safety 0)))
    77  (let ((class (or (gethash type *jtypecache*)
    8        (ignore-errors (setf (gethash type *jtypecache*) (find-java-class type)))))
    9   (method (load-time-value (jmethod "java.lang.Class" "isInstance" "java.lang.Object"))))
     8                   (ignore-errors (setf (gethash type *jtypecache*) (find-java-class type)))))
     9        (method (load-time-value (jmethod "java.lang.Class" "isInstance" "java.lang.Object"))))
    1010    (and class
    11   (jcall method class object))))
     11        (jcall method class object))))
    1212   
    1313(defmacro jtypecase (keyform &body cases)
  • trunk/abcl/contrib/jss/optimize-java-call.lisp

    r15117 r15146  
    1010    (precompiler::precompile-function-call
    1111     `(jss::invoke-restargs-macro
    12     ,(second form)
    13     ,(car args) (list ,@(cdr args)) ,(fifth form)))))
     12          ,(second form)
     13          ,(car args) (list ,@(cdr args)) ,(fifth form)))))
    1414
    1515(defmacro invoke-restargs-macro ( method object args &optional (raw? nil))
     
    1818  (if (and (consp object) (eq (car object) 'quote))
    1919      (let ((object (eval object)))
    20   (let* ((object-as-class
    21     (or (ignore-errors (let ((*muffle-warnings* t)) (find-java-class object)))
    22          `(find-java-class ',object))))
    23     (if raw?
    24         `(jstatic-raw ,method ,object-as-class ,@args)
    25         `(jstatic ,method ,object-as-class ,@args))))
     20        (let* ((object-as-class
     21                (or (ignore-errors (let ((*muffle-warnings* t)) (find-java-class object)))
     22                     `(find-java-class ',object))))
     23          (if raw?
     24              `(jstatic-raw ,method ,object-as-class ,@args)
     25              `(jstatic ,method ,object-as-class ,@args))))
    2626      (let ((objectvar (make-symbol "INVOKE-RESTARGS-ARG1")))
    27   (if raw?
    28       `(let ((,objectvar ,object))
    29          (if (symbolp ,objectvar)
    30        (jstatic-raw ,method (find-java-class ,objectvar) ,@args)
    31        (jcall-raw ,method ,objectvar ,@args)))
    32       `(let ((,objectvar ,object))
    33          (if (symbolp ,objectvar)
    34        (jstatic ,method (find-java-class ,objectvar) ,@args)
    35        (jcall ,method ,objectvar ,@args)))))))
     27        (if raw?
     28            `(let ((,objectvar ,object))
     29               (if (symbolp ,objectvar)
     30                   (jstatic-raw ,method (find-java-class ,objectvar) ,@args)
     31                   (jcall-raw ,method ,objectvar ,@args)))
     32            `(let ((,objectvar ,object))
     33               (if (symbolp ,objectvar)
     34                   (jstatic ,method (find-java-class ,objectvar) ,@args)
     35                   (jcall ,method ,objectvar ,@args)))))))
    3636
    3737
  • trunk/abcl/contrib/jss/read-sharp-quote-expression.lisp

    r15063 r15146  
    77     (with-output-to-string (s)
    88       (loop with embedded-string = nil
    9        for last = #\space then char
    10        for char = (read-char stream)
    11        until (and (char= char #\")
    12       ;; really end if: we've established embedded string and the peek is a space
    13       ;; we're not about to start embedded string. We're about to start embedded string if next character isn't #\).
    14       ;; we're not embedded-string and not about to start one
    15       (cond ((null (peek-char nil stream nil)) t) ;; eof
    16             (embedded-string (system:whitespacep (peek-char nil stream))) ; embedded " needs "<space>" to end
    17             ((find last ",(+=" :test 'char=)
    18              (setq embedded-string t)
    19              nil)
    20             (t t)))
    21        do
    22     (write-char char s)))))
     9             for last = #\space then char
     10             for char = (read-char stream)
     11             until (and (char= char #\")
     12                        ;; really end if: we've established embedded string and the peek is a space
     13                        ;; we're not about to start embedded string. We're about to start embedded string if next character isn't #\).
     14                        ;; we're not embedded-string and not about to start one
     15                        (cond ((null (peek-char nil stream nil)) t) ;; eof
     16                              (embedded-string (system:whitespacep (peek-char nil stream))) ; embedded " needs "<space>" to end
     17                              ((find last ",(+=" :test 'char=)
     18                               (setq embedded-string t)
     19                               nil)
     20                              (t t)))
     21             do
     22                (write-char char s)))))
    2323
    2424
     
    2727    (let ((read (read-java-expression (make-instance 'sharp-quote-expression-reader) de-lisped)))
    2828      (loop for (var nil) in bindings
    29       do (setq read (cl-user::tree-replace (lambda(e) (if (equalp e (string var)) var e)) read )))
     29            do (setq read (tree-replace (lambda(e) (if (equalp e (string var)) var e)) read )))
    3030      (if bindings
    31     `(let ,bindings ,read)
    32     read))))
     31          `(let ,bindings ,read)
     32          read))))
    3333
    3434(defun extract-lisp-expressions (string)
    3535  (let ((bindings nil))
    3636    (let ((de-lisped
    37       (cl-user::replace-all string "\\{(.*?)\\}"
    38           (lambda(match)
    39             (let ((replacevar (find-symbol-not-matching string (mapcar 'car bindings))))
    40               (push (list replacevar (read-from-string match)) bindings)
    41               (string replacevar)))
    42           1)))
     37            (replace-all string "\\{(.*?)\\}"
     38                                  (lambda(match)
     39                                    (let ((replacevar (find-symbol-not-matching string (mapcar 'car bindings))))
     40                                      (push (list replacevar (read-from-string match)) bindings)
     41                                      (string replacevar)))
     42                                  1)))
    4343    (values bindings de-lisped))))
    4444
    4545(defun find-symbol-not-matching (string already)
    4646  (loop for candidate = (format nil "JSS_~a" (random 10000))
    47   until (and (not (member candidate already :test 'equalp :key 'string))
    48        (not (search string already)))
    49   finally (return-from find-symbol-not-matching (intern candidate :jss))))
    50          
     47        until (and (not (member candidate already :test 'equalp :key 'string))
     48                   (not (search string already)))
     49        finally (return-from find-symbol-not-matching (intern candidate :jss))))
     50                           
    5151(defun maybe-class (el)
    5252  (if (and (symbolp el) (upper-case-p (char (string el) 0)) (not (eql (search "JSS_" (string el)) 0)))
    5353      `(find-java-class ',el)
    5454      (if (symbolp el)
    55     (intern (string-upcase el) :jss)
    56     el)))
     55          (intern (string-upcase el))
     56          el)))
    5757
    5858(def-java-read ObjectCreationExpr sharp-quote-expression-reader ()
     
    6262(def-java-read MethodCallExpr sharp-quote-expression-reader ()
    6363  (let* ((scope1 (process-node obj (process-node obj (#"getScope" node))))
    64   (how  (if (and (symbolp scope1) (not (null scope1)) (upper-case-p (char (string scope1) 0)))
    65        'jstatic
    66        'jcall)))
     64        (how  (if (and (symbolp scope1) (not (null scope1)) (upper-case-p (char (string scope1) 0)))
     65                   'jstatic
     66                   'jcall)))
    6767    (if (and (symbolp scope1) (not (null scope1)) (upper-case-p (char (string scope1) 0)))
    68   (setq scope1 `',scope1))
     68        (setq scope1 `(find-java-class ',scope1)))
    6969    `(,how ,(#"getIdentifier" (#"getName" node)) ,(or scope1 'this) ,@(mapcar 'maybe-class
    70                         (mapcar (lambda(el) (process-node obj el))
    71                           (j2list (#"getArguments" node)))))
     70                                                                              (mapcar (lambda(el) (process-node obj el))
     71                                                                                      (j2list (#"getArguments" node)))))
    7272    ))
    73 
    7473
    7574(def-java-read FieldAccessExpr sharp-quote-expression-reader ()
    7675  (let ((scope (process-node obj (#"getScope" node))))
    7776    (if (and (symbolp scope) (upper-case-p (char (string scope) 0)))
    78   `(get-java-field ',(process-node obj (#"getScope" node)) ,(#"getIdentifier" (#"getField" node)) t)
    79   `(get-java-field ,(maybe-class (process-node obj (#"getScope" node))) ,(#"getIdentifier" (#"getField" node)) t))))
     77        `(get-java-field ',(process-node obj (#"getScope" node)) ,(#"getIdentifier" (#"getField" node)) t)
     78        `(get-java-field ,(maybe-class (process-node obj (#"getScope" node))) ,(#"getIdentifier" (#"getField" node)) t))))
    8079
    8180(def-java-read ArrayAccessExpr sharp-quote-expression-reader ()
     
    8786  (let ((name (process-node obj (#"getName" (#"getType" node)))))
    8887    (if (eql (search "JSS_" (string name) :test 'equalp) 0)
    89   name
    90   `(find-java-class ',name))))
     88        name
     89        `(find-java-class ',name))))
    9190
    9291(def-java-read NameExpr sharp-quote-expression-reader ()
  • trunk/abcl/contrib/jss/t/javaparser.lisp

    r15066 r15146  
    22
    33(defparameter expanded '(let ((jss::this jss::*object-for-this*))
    4       (jcall "getLoaded"
    5        (jcall "load"
    6         (jcall "make"
    7          (jcall "intercept"
    8           (jcall "method"
    9           (jcall "subclass"
    10             (new '|ByteBuddy|)
    11             (find-java-class '|Object|)
    12             t)
    13           (jstatic "named"
    14               '|ElementMatchers|
    15               "toString"))
    16           (jstatic "value"
    17              '|FixedValue|
    18              "Hello World!")))
    19         (jcall "getClassLoader"
    20          (jcall "getClass" jss::this))))))
     4  (jcall "getLoaded"
     5         (jcall "load"
     6                (jcall "make"
     7                       (jcall "intercept"
     8                              (jcall "method"
     9                                    (jcall "subclass"
     10                                            (new '|ByteBuddy|)
     11                                            (find-java-class '|Object|)
     12                                            t)
     13                                    (jstatic "named"
     14                                              (find-java-class '|ElementMatchers|)
     15                                              "toString"))
     16                              (jstatic "value"
     17                                       (find-java-class '|FixedValue|)
     18                                       "Hello World!")))
     19                (jcall "getClassLoader"
     20                       (jcall "getClass" jss::this))))))
    2121
    2222(defparameter source '#1"new ByteBuddy().subclass(Object.class,t)
  • trunk/abcl/contrib/jss/transform-to-field.lisp

    r15087 r15146  
    2424(defun jss-transform-to-field (string sharp-arg)
    2525  (let* ((pattern (#"compile" 'java.util.regex.Pattern "((==){0,1})(.*)\\.([^.]+)$"))
    26   (matcher (#"matcher" pattern string)))
     26        (matcher (#"matcher" pattern string)))
    2727    (#"find" matcher)
    2828    (let ((parts (list (#"group" matcher 3) (#"group" matcher 4)))
    29     (scope (#"group" matcher 1)))
     29          (scope (#"group" matcher 1)))
    3030      (check-class-or-eval (first parts))
    3131      (check-field-or-eval (second parts))
     
    4141(defun check-field-or-eval (string)
    4242  (assert (or (#"matches" string "^(\\p{javaJavaIdentifierStart}(\\p{javaJavaIdentifierPart})*)+$")
    43         (#"matches" string "^\\{.+\\}$"))
    44     (string)
    45     "inside #\"..\" expected either a field name or an expression surrounded by {}. Found: #~s" string))
     43              (#"matches" string "^\\{.+\\}$"))
     44          (string)
     45          "inside #\"..\" expected either a field name or an expression surrounded by {}. Found: #~s" string))
    4646
    4747(defun field-access-expression (sharp-arg scope thing field )
     
    4949      (static-field-ref-transform thing field sharp-arg scope)
    5050      (if (and (equal scope "==") (char= (char thing 0) #\{) (not (char= (char field 0) #\{)))
    51     (always-same-signature-field-ref-transform sharp-arg thing field)
    52     `(get-java-field ,(if (char= (char thing 0) #\{)
    53         (read-from-string (subseq thing 1 (- (length thing) 1)))
    54         `(load-time-value (find-java-class ,thing)))
    55          ,(if (char= (char field 0) #\{)
    56         (read-from-string (subseq field 1 (- (length field) 1)))
    57         field)
    58          t))))
     51          (always-same-signature-field-ref-transform sharp-arg thing field)
     52          `(get-java-field ,(if (char= (char thing 0) #\{)
     53                                (read-from-string (subseq thing 1 (- (length thing) 1)))
     54                                `(load-time-value (find-java-class ,thing)))
     55                           ,(if (char= (char field 0) #\{)
     56                                (read-from-string (subseq field 1 (- (length field) 1)))
     57                                field)
     58                           t))))
    5959
    6060;; If a class name and explicit field name we can look everything up at load time
     
    6363      `(load-time-value (get-java-field (find-java-class ,class) ,field t))
    6464      `(,(if (eql sharp-arg 0) 'jcall-raw 'jcall)
    65   (load-time-value (jmethod "java.lang.reflect.Field" "get" "java.lang.Object"))
    66   (load-time-value
    67   (let ((jfield (find-declared-field ,field (find-java-class ,class))))
    68      (#"setAccessible" jfield t)
    69      jfield))
    70   (load-time-value (find-java-class ',class)))))
     65        (load-time-value (jmethod "java.lang.reflect.Field" "get" "java.lang.Object"))
     66        (load-time-value
     67        (let ((jfield (find-declared-field ,field (find-java-class ,class))))
     68           (#"setAccessible" jfield t)
     69           jfield))
     70        (load-time-value (find-java-class ',class)))))
    7171
    7272;; 1 case: =={var}.foo
     
    7474(defun always-same-signature-field-ref-transform (sharp-arg object field)
    7575  (let ((cached (make-symbol (format nil "CACHED-FIELD-field")))
    76   (object (intern (string-upcase (subseq object 1 (- (length object) 1))))))
     76        (object (intern (string-upcase (subseq object 1 (- (length object) 1))))))
    7777    `(,(if (eql sharp-arg 0) 'jcall-raw 'jcall)
    7878      (load-time-value (jmethod "java.lang.reflect.Field" "get" "java.lang.Object"))
    7979      (locally (declare (special ,cached))
    80   (if (boundp ',cached)
    81       ,cached
    82       (progn (setq ,cached
    83       (find-declared-field ,field (jcall (load-time-value (jmethod "java.lang.Object" "getClass")) ,object)))
    84        (jcall (load-time-value (jmethod "java.lang.reflect.Field" "setAccessible" "boolean")) ,cached t)
    85        ,cached)))
     80        (if (boundp ',cached)
     81            ,cached
     82            (progn (setq ,cached
     83                        (find-declared-field ,field (jcall (load-time-value (jmethod "java.lang.Object" "getClass")) ,object)))
     84                   (jcall (load-time-value (jmethod "java.lang.reflect.Field" "setAccessible" "boolean")) ,cached t)
     85                   ,cached)))
    8686      ,object)))
    8787
  • trunk/abcl/test/lisp/ansi/ansi-test-failures

    r15145 r15146  
    813813     :jvm "OpenJDK_64-Bit_Server_VM-Oracle_Corporation-11.0.5+10-1"
    814814     :id oxi-java11
    815      ((SHIFTF.7 LOOP.1.40 LOOP.1.41 LOOP.1.42 LOOP.1.43
     815     (SHIFTF.7 LOOP.1.40 LOOP.1.41 LOOP.1.42 LOOP.1.43
    816816       DEFGENERIC.ERROR.1 DEFGENERIC.ERROR.2 DEFGENERIC.ERROR.3
    817817       CALL-NEXT-METHOD.ERROR.1 CALL-NEXT-METHOD.ERROR.2
     
    831831       SYNTAX.SHARP-COLON.ERROR.1 APROPOS.ERROR.2
    832832       APROPOS-LIST.ERROR.2 DISASSEMBLE.ERROR.3 TRACE.8
    833        DECODE-UNIVERSAL-TIME.5)))
     833       DECODE-UNIVERSAL-TIME.5))
     834
    834835;;  55 out of 21836 total tests failed: 
    835 (compileit
     836(compileit abcl-1.6.0-dev-20190111a
    836837 :uname "amd64-FreeBSD-12.0-RELEASE-p10"
    837  :vm ""OpenJDK_64-Bit_Server_VM-Oracle_Corporation-1.8.0_232-b09"
     838 :vm "OpenJDK_64-Bit_Server_VM-Oracle_Corporation-1.8.0_232-b09"
    838839 :id oxi-java8
    839  ((SHIFTF.7 LOOP.1.40 LOOP.1.41 LOOP.1.42 LOOP.1.43 DEFGENERIC.ERROR.1
     840 (SHIFTF.7 LOOP.1.40 LOOP.1.41 LOOP.1.42 LOOP.1.43 DEFGENERIC.ERROR.1
    840841   DEFGENERIC.ERROR.2 DEFGENERIC.ERROR.3 CALL-NEXT-METHOD.ERROR.1
    841842   CALL-NEXT-METHOD.ERROR.2 INVOKE-DEBUGGER.1 MAKE-CONDITION.3
     
    852853   DISASSEMBLE.ERROR.3 TRACE.8 DECODE-UNIVERSAL-TIME.5))
    853854
     855(compileit abcl-1.6.0-dev-20191105a
     856  :id oxi-java8
     857  (SHIFTF.7 LOOP.1.40 LOOP.1.41 LOOP.1.42 LOOP.1.43 DEFGENERIC.ERROR.1
     858   DEFGENERIC.ERROR.2 DEFGENERIC.ERROR.3 CALL-NEXT-METHOD.ERROR.1
     859   CALL-NEXT-METHOD.ERROR.2 INVOKE-DEBUGGER.1 MAKE-CONDITION.3
     860   MAKE-CONDITION.4 DEFPACKAGE.2B EXPT.29 MAP.48 DEFSTRUCT.ERROR.3
     861   DEFSTRUCT.ERROR.4 TYPE-OF.1 TYPE-OF.4 LOGICAL-PATHNAME.3
     862   DIRECTORY.8 ENSURE-DIRECTORIES-EXIST.8 RENAME-FILE.5 DELETE-FILE.3
     863   DELETE-FILE.4 READ-BYTE.ERROR.5 WRITE-BYTE.ERROR.4 OPEN.64
     864   OPEN.OUTPUT.3 OPEN.IO.3 CLEAR-INPUT.ERROR.5 FINISH-OUTPUT.ERROR.3
     865   FORCE-OUTPUT.ERROR.3 CLEAR-OUTPUT.ERROR.3 PRINT.RANDOM-STATE.1
     866   PRINT-STRUCTURE.1 PPRINT-FILL.2 PPRINT-LINEAR.2 PPRINT-TABULAR.2
     867   PPRINT-LOGICAL-BLOCK.17 FORMAT.F.5 FORMAT.F.8 FORMAT.F.45
     868   FORMATTER.F.45 FORMAT.F.46 FORMATTER.F.46 FORMAT.F.46B
     869   FORMATTER.F.46B FORMAT.F.47 FORMATTER.F.47 FORMAT.E.1 FORMAT.E.2
     870   FORMAT.E.3 FORMAT.E.6 FORMAT.E.20 FORMAT.E.26
     871   SYNTAX.SHARP-COLON.ERROR.1 COMPILE-FILE.17 COMPILE-FILE.18 LOAD.19
     872   APROPOS.ERROR.2 APROPOS-LIST.ERROR.2 DISASSEMBLE.ERROR.3 TRACE.8
     873   DECODE-UNIVERSAL-TIME.5))
     874
Note: See TracChangeset for help on using the changeset viewer.