[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: defclass in CLOS & 7.2
- To: Jim Kelly <jkelly@vax.bbn.com>
- Subject: Re: defclass in CLOS & 7.2
- From: kanderso@WILMA.BBN.COM
- Date: Tue, 26 Apr 88 11:38:24 -0400
- Cc: rshapiro@vax.bbn.com, kanderson@vax.bbn.com, CommonLoops.pa@Xerox.COM
- In-reply-to: Your message of Mon, 25 Apr 88 21:04:43 -0400.
- Redistributed: CommonLoops.pa
Replied: Tue, 26 Apr 88 05:23:37 -0400
Replied: "Jim Kelly <jkelly@vax.bbn.com> rshapiro@vax.bbn.com, kanderson@vax.bbn.com"
Received: from vax.bbn.com by WILMA.BBN.COM id aa11591; 25 Apr 88 21:10 EDT
Date: Mon, 25 Apr 88 21:04:43 EDT
From: Jim Kelly <jkelly@vax.bbn.com>
To: rshapiro@vax.bbn.com, kanderson@vax.bbn.com
cc: jkelly@vax.bbn.com
Subject: defclass in CLOS & 7.2
In trying to compile a defclass I got the following errror:
"Maximum stack level for this function (230) exceeds
architectural limit (224)." This compiled fine in PCL (ie: the
old version) and 7.1 - the error occurs with CLOS loaded in 7.2.
The error happens after the file is 100% read in - in the
bottom right the message "Compiling (PCL:TOP-LEVEL-FORM (DEFCLASS
SCHEDULE-D))" appears and the "completion bar" underneath
indicates that it's about half done when it dies. Perhaps the new
version can't handle as many slots as the older one (although I
don't know what the 230 in the message means - the defclass has
221 slots).
Any comments, suggestions? (The file I was trying to compile was
conger:>aiis>defclasses>taxforms>schedule-d.lisp if it's any
help).
Basically you are running into limitations of the Symbolics, and i
presume other systems have their own limitations. It is typical for
automatically generated code to run into such problems.
If you break up your class into smaller mixins it should work. Let me
know if this doesn't work.
Here's what seems to be happening:
DEFCLASS expands into a form like
(load-defclass ...
(list (list* :name slot-1 :initfunction #'false
'(:init-form nil :accessor slot-1))
... many other slots ...))
LIST can only handle about 256 arguments. If you rewrite the above
form into an nconc of smaller lists, you run into another limitation on the
number of constants you can have in a function from all the
'(:init-form ...)'s. I couldn't think of a way around that.
k