Compiler problem with future-common-lisp:defstruct
"Patrick O'Donnell" <[email protected]> Fri, 30 Jan 2004 18:32:30 -0500 (EST)
| Newsgroups | gmane.lisp.org.slug |
|---|---|
| Message-ID | <[email protected]> |
Hello folks, We just ran into a problem compiling a structure we're defining using future-common-lisp:defstruct on Ivory. For a structure with more than 44 (VLM) or 45 (UX) slots¹, compiling the constructor evidently runs into an architectural limit on the frame size. (Using zl:defstruct works fine.) We were just wondering if anyone has run into this, or better, has a fix. - Patrick O'Donnell [email protected] ¹As you might imagine, we discovered this migrating to OpenGenera. We'd be living "on the edge", you might say, with a 45-slot structure on UX boards. ;;; Example structure with problem: (future-common-lisp:defstruct test slot-01 slot-02 slot-03 slot-04 slot-05 slot-06 slot-07 slot-08 slot-09 slot-10 slot-11 slot-12 slot-13 slot-14 slot-15 slot-16 slot-17 slot-18 slot-19 slot-20 slot-21 slot-22 slot-23 slot-24 slot-25 slot-26 slot-27 slot-28 slot-29 slot-30 slot-31 slot-32 slot-33 slot-34 slot-35 slot-36 slot-37 slot-38 slot-39 slot-40 slot-41 slot-42 slot-43 slot-44 slot-45 slot-46 ; slot-47 ; slot-48 ; slot-49 ) Error: Can't frame split this function small enough; max size 97 exceeds architectural limit 96 While in the function COMPILER:CEMENT-FUNCTION COMPILER:RUN-PHASE-2 COMPILER:COMPILE-DEFINITION-INTERNAL The condition signalled was ZL:FERROR COMPILER:CEMENT-FUNCTION (P.C. = 256) Arg 0 (FUNCTION): #<(Internal Function) 401207407> Local 1 (COMPILER:SHUFFLE-AMOUNT): 0 Local 2 (COMPILER:INTERVAL): #S(COMPILER:INTERVAL :INTERVAL-FIRST #<(No op) 401207330> :INTERVAL-LAST #<(No op) 401207670> :INTERVAL-MAX-LEVEL 97) Local 3 (MAX): 96 Special COMPILER:*LOCAL-BLOCK-OFFSET*: 1 Special COMPILER:*L-LEVEL*: 1 Special COMPILER:*MAX-L-LEVEL*: 1 Special COMPILER:*MAX-LEVEL*: 97 Special COMPILER:*FUNCTION*: #<(Internal Function) 401207407> COMPILER:RUN-PHASE-2 (P.C. = 140) COMPILER:COMPILE-DEFINITION-INTERNAL (P.C. = 216) Arg 0 (COMPILER:TYPE): DEFUN Arg 1 (COMPILER:LAMBDA-LIST): (&KEY (#:SLOT-01 NIL #:G44689) (#:SLOT-02 NIL #:G44690) (#:SLOT-03 NIL #:G44691) (#:SLOT-04 NIL #:G44692) (#:SLOT-05 NIL #:G44693) (#:SLOT-06 NIL #:G44694) (#:SLOT-07 NIL #:G44695) (#:SLOT-08 NIL #:G44696) (#:SLOT-09 NIL #:G44697) ...) Arg 2 (COMPILER:DEBUG-INFO): NIL Arg 3 (COMPILER:DEFINITION): ((DECLARE (SYS:FUNCTION-NAME USER::MAKE-TEST)) (DECLARE (LT:INLINE-FORM #S(LT:INLINE-FORM :NAME USER::MAKE-TEST :LAMBDA-LIST # :BODY # :ENV NIL :FORM ...))) (BLOCK USER::MAKE-TEST (FUNCALL (FUNCTION #) *DEFAULT-CONS-AREA* #:SLOT-01 #:G44689 #:SLOT-02 #:G44690 #:SLOT-03 #:G44691 #:SLOT-04 ...))) Arg 4 (COMPILER:FIXUP-P): T Arg 5 (COMPILER:ENVIRONMENT): (NIL NIL NIL NIL (((LT::MAPFORMS-ENVIRONMENT-TAG #<LOCATIVE 36601364551>))) NIL NIL) Special COMPILER:*LOCAL-BLOCK-SIZE-ADJUSTMENT*: 2 Special COMPILER:*N-RETRIES*: 0 COMPILER:COMPILE-LAMBDA-EXP (P.C. = 52) Arg 0 (COMPILER:LAMBDA-EXP): (LAMBDA (&KEY (#:SLOT-01 NIL #:G44689) (#:SLOT-02 NIL #:G44690) (#:SLOT-03 NIL #:G44691) (#:SLOT-04 NIL #:G44692) (#:SLOT-05 NIL #:G44693) (#:SLOT-06 NIL #:G44694) (#:SLOT-07 NIL #:G44695) (#:SLOT-08 NIL #:G44696) (#:SLOT-09 NIL #:G44697) ...) (DECLARE (SYS:FUNCTION-NAME USER::MAKE-TEST)) (DECLARE (LT:INLINE-FORM #S(LT:INLINE-FORM :NAME USER::MAKE-TEST :LAMBDA-LIST # :BODY # :ENV NIL :FORM ...))) (BLOCK USER::MAKE-TEST (FUNCALL (FUNCTION #) *DEFAULT-CONS-AREA* #:SLOT-01 #:G44689 #:SLOT-02 #:G44690 #:SLOT-03 #:G44691 #:SLOT-04 ...))) Arg 1 (COMPILER:FIXUP-P): T Arg 2 (COMPILER:DEBUG-INFO): NIL Arg 3 (COMPILER:ENVIRONMENT): (NIL NIL NIL NIL (((LT::MAPFORMS-ENVIRONMENT-TAG #<LOCATIVE 36601364551>))) NIL NIL)