metaclass & recompilation issue
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
This is not an actual test case--I at least could not reproduce this just now. The symptom went away, and I'm not sure why. ...but I just spent a while scratching my headed at an odd error, and figure the way it happened must have been *something* like this:
1. BKNR.DATASTORE compiled and loaded
2. Core dumped
3. Timestamps on source files jump without actual changes
4. New SBCL instance from the saved core.
5. Reload BKNR.DATASTORE-
6. Exit SBCL.
7. Nuke core, new clean SBCL.
8. Load BKNR.DATASTORE from the compiled files.
...BOOM, trying to FIND-CLASSOID-CELL with :CREATE NIL during load of object.lisp, class PERSISTENT-
description: | updated |
Changed in sbcl: | |
status: | New → Incomplete |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
commit 993c261469bbf62 01c6fae04fcdf25 5d38cf419d
Author: Stas Boukarev <email address hidden>
Date: Thu Oct 3 20:28:05 2013 +0400
Forward referenced classoid-cells can now be loaded from FASLs.
When
(defun x (x)
(typep x 'bar))
(defclass bar ()
())
is compiled twice, the typecheck is optimized and a classoid-cell is
dumped into the FASL, but upon load in a new instance it's
reconstructed using FIND-CLASSOID-CELL with :errorp t, resulting in an
error, defeating the stated reason for indirection.