[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Compilation implications



And thanks to you too, David, for putting some time into this.
[Note that I've dropped cl-compiler off the cc list.]

Some Questions.

-- Your code for the 'reconstruction-form' method never adds anything 
   to the 'allocation-args' -- did you excise some TI-specific parts? 
   or what is this ever supposed to be besides nil?

-- What is 'finalize-inheritance'?  is it to fix up "stubs" that had
   been created as "placeholder" classes merely so that some type
   dispatch could make reference to the class?

-- Why do you use 'slot-exists-p-using-class' instead of 'slot-exists-p'?
   The class argument you are passing in for 'object' is simply the 
   value obtained from (class-of object) anyway?

-- When you ran into some trouble with  the form:

    (DEFMETHOD MAKE-INSTANCE ((CLASS (EQL (FIND-CLASS 'MY-CLASS))) ...) ...)

   was it because your DEFMETHOD treats this form essentially the same as

    (DEFMETHOD MAKE-INSTANCE ((CLASS (EQL '#.(FIND-CLASS 'MY-CLASS))) ...) ...)

   Does your macro expander for DEFMETHOD call EVAL to get the object,
   rather than returning a form to be evaluated later?


I agree with you very much that the reasonable way to handle potentially
circular data is to allocate an object first (and "register" it in the 
corresponding compiler or binary-loader table) and _then_ create the 
several components.  As Moon points out, there may be some classes of
objects for which this componentwise protocol is unsatisfactory -- 
objects which must, for example, be "massaged" after creation by one or
the other initialization protocol (or both).  For these, circularities 
could be an intractable problem; but for classes for which the fasdmp-
mixin is suitable, there should be no problem.  I hope it's true that 
the vast majority of cases can be handled by fasdmp-mixin.



-- JonL --