Changeset 15596


Ignore:
Timestamp:
11/26/22 08:35:27 (10 months ago)
Author:
Mark Evenson
Message:
  • Fixes the issue with the compile & loading of Fricas0 system (Github
    • Now the file compiler will always try to compile the form and it will only fallback to the interpreted form when the bytecode error is actually raised
Location:
trunk/abcl/src/org/armedbear/lisp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/autoloads-gen.lisp

    r14490 r15596  
    146146;; EXPORTS
    147147(IN-PACKAGE :SYSTEM)
    148 (EXPORT (QUOTE (CONCATENATE-FASLS AVER *COMPILER-DIAGNOSTIC* COMPILE-FILE-IF-NEEDED GROVEL-JAVA-DEFINITIONS-IN-FILE COMPILER-UNSUPPORTED INTERNAL-COMPILER-ERROR COMPILER-ERROR COMPILER-WARN COMPILER-STYLE-WARN *COMPILER-ERROR-CONTEXT* COMPILER-MACROEXPAND DEFKNOWN FUNCTION-RESULT-TYPE COMPILER-SUBTYPEP MAKE-COMPILER-TYPE JAVA-LONG-TYPE-P INTEGER-CONSTANT-VALUE FIXNUM-CONSTANT-VALUE FIXNUM-TYPE-P +INTEGER-TYPE+ +FIXNUM-TYPE+ MAKE-INTEGER-TYPE %MAKE-INTEGER-TYPE INTEGER-TYPE-P INTEGER-TYPE-HIGH INTEGER-TYPE-LOW +FALSE-TYPE+ +TRUE-TYPE+ COMPILER-DEFSTRUCT DESCRIBE-COMPILER-POLICY PARSE-BODY DUMP-UNINTERNED-SYMBOL-INDEX DUMP-FORM LOOKUP-KNOWN-SYMBOL STANDARD-INSTANCE-ACCESS SLOT-DEFINITION FORWARD-REFERENCED-CLASS LOGICAL-HOST-P *INLINE-DECLARATIONS* FTYPE-RESULT-TYPE PROCLAIMED-FTYPE PROCLAIMED-TYPE CHECK-DECLARATION-TYPE PROCESS-KILL PROCESS-EXIT-CODE PROCESS-WAIT PROCESS-ALIVE-P PROCESS-ERROR PROCESS-OUTPUT PROCESS-INPUT PROCESS-P PROCESS RUN-PROGRAM SIMPLE-SEARCH EXPAND-SOURCE-TRANSFORM DEFINE-SOURCE-TRANSFORM SOURCE-TRANSFORM UNTRACED-FUNCTION)))
     148(EXPORT (QUOTE (CONCATENATE-FASLS AVER *COMPILER-DIAGNOSTIC* COMPILE-FILE-IF-NEEDED GROVEL-JAVA-DEFINITIONS-IN-FILE COMPILER-UNSUPPORTED INTERNAL-COMPILER-ERROR COMPILER-ERROR COMPILER-BYTECODE-LENGTH-ERROR COMPILER-WARN COMPILER-STYLE-WARN *COMPILER-ERROR-CONTEXT* COMPILER-MACROEXPAND DEFKNOWN FUNCTION-RESULT-TYPE COMPILER-SUBTYPEP MAKE-COMPILER-TYPE JAVA-LONG-TYPE-P INTEGER-CONSTANT-VALUE FIXNUM-CONSTANT-VALUE FIXNUM-TYPE-P +INTEGER-TYPE+ +FIXNUM-TYPE+ MAKE-INTEGER-TYPE %MAKE-INTEGER-TYPE INTEGER-TYPE-P INTEGER-TYPE-HIGH INTEGER-TYPE-LOW +FALSE-TYPE+ +TRUE-TYPE+ COMPILER-DEFSTRUCT DESCRIBE-COMPILER-POLICY PARSE-BODY DUMP-UNINTERNED-SYMBOL-INDEX DUMP-FORM LOOKUP-KNOWN-SYMBOL STANDARD-INSTANCE-ACCESS SLOT-DEFINITION FORWARD-REFERENCED-CLASS LOGICAL-HOST-P *INLINE-DECLARATIONS* FTYPE-RESULT-TYPE PROCLAIMED-FTYPE PROCLAIMED-TYPE CHECK-DECLARATION-TYPE PROCESS-KILL PROCESS-EXIT-CODE PROCESS-WAIT PROCESS-ALIVE-P PROCESS-ERROR PROCESS-OUTPUT PROCESS-INPUT PROCESS-P PROCESS RUN-PROGRAM SIMPLE-SEARCH EXPAND-SOURCE-TRANSFORM DEFINE-SOURCE-TRANSFORM SOURCE-TRANSFORM UNTRACED-FUNCTION)))
    149149
    150150;; FUNCTIONS
  • trunk/abcl/src/org/armedbear/lisp/compile-file.lisp

    r15583 r15596  
    102102         (when args
    103103           args)))
    104          
     104
    105105
    106106(declaim (ftype (function (t) t) verify-load))
     
    881881                    (when (eq form in)
    882882                      (return))
    883                     (cond
    884                       ((>= (length (format nil "~a" form)) 65536)
    885                        ;; Following the solution propose here:
    886                        ;; see https://github.com/armedbear/abcl/issues/246#issuecomment-698854437
    887                        ;; just include the offending interpreted form in the loader
    888                        ;; using it instead of the compiled representation
    889                        (diag "Falling back to interpreted version of top-level form longer ~
     883
     884                    (handler-case (process-toplevel-form form out nil)
     885                      (compiler-bytecode-length-error ()
     886                        ;; Following the solution propose here:
     887                        ;; see https://github.com/armedbear/abcl/issues/246#issuecomment-698854437
     888                        ;; just include the offending interpreted form in the loader
     889                        ;; using it instead of the compiled representation
     890                        (diag "Falling back to interpreted version of top-level form longer ~
    890891                              than 65535 bytes")
    891                        (write (ext:macroexpand-all form *compile-file-environment*)
    892                               :stream out))
    893                       (t
    894                        (process-toplevel-form form out nil))))))
     892                        (write (ext:macroexpand-all form *compile-file-environment*)
     893                                 :stream out)))
     894                    )))
    895895              (finalize-fasl-output)
    896896              (dolist (name *fbound-names*)
  • trunk/abcl/src/org/armedbear/lisp/compiler-error.lisp

    r15004 r15596  
    3636          compiler-warn
    3737          compiler-error
     38          compiler-bytecode-length-error
    3839          internal-compiler-error
    3940          compiler-unsupported))
     
    4243
    4344(define-condition compiler-error (error) ())
     45(define-condition compiler-bytecode-length-error (error) ())
    4446(define-condition internal-compiler-error (compiler-error) ())
    4547(define-condition compiler-unsupported-feature-error (compiler-error) ())
     
    6163
    6264(defun internal-compiler-error (format-control &rest format-arguments)
    63   (cerror "Eventually use interpreted form instead" 
     65  (cerror "Eventually use interpreted form instead"
    6466          'internal-compiler-error
    6567          :format-control format-control
  • trunk/abcl/src/org/armedbear/lisp/jvm-class-file.lisp

    r15569 r15596  
    268268      (princ ret-string s))
    269269    str)
    270 ;;  (format nil "(~{~A~})~A" 
     270;;  (format nil "(~{~A~})~A"
    271271;;          (internal-field-ref return-type))
    272272  )
     
    804804  (let ((interface-refs nil))
    805805    (dolist (interface (class-file-interfaces class))
    806       (push 
     806      (push
    807807       (pool-add-class (class-file-constants class)
    808808                       interface)
     
    12761276          (c labels)
    12771277        (code-bytes c)
    1278       (assert (< 0 (length c) 65536))
     1278      (unless (< 0 (length c) 65536)
     1279        (signal 'sys:compiler-bytecode-length-error))
    12791280      (setf (code-code code) c
    12801281            (code-labels code) labels)))
     
    17351736- add code to the code attribute
    17361737- finalize the code attribute contents (blocking it for further addition)
    1737 - 
     1738-
    17381739
    17391740
Note: See TracChangeset for help on using the changeset viewer.