On 4/23/12 Apr 23 -3:52 PM, Erik Pearson wrote:
> Hi Robert,
> What I was thinking is that OPERATE assembles the plan via TRAVERSE,I suppose, but I don't know how you break into what PERFORM does.
> then executes it via PERFORM-PLAN, which calls PERFORM to translate the
> abstraction of operation + component into an action with side effect. It
> seems to me that it is each PERFORM (or, rather, the ones that we are
> interested in) that needs to be captured, since it is only in the body
> of the PERFORM method that the abstractions are made concrete in into
> lisp forms which carry out the desired actions.
>
> What I am referring to as "recording" is to append the lisp forms
> produced by each PERFORM into a list or other structure. At present this
> structure would need to be a global, but ideally it would be a slot in a
> session object that threads through each PERFORM. It is because the
> PERFORMS are carried out serially by PERFORM-PLAN according to the plan
> assembled by TRAVERSE that they can be "played back" to recreate the
> actions of this asdf session. Now if there were parallel executions of
> PERFORMs by PERFORM-PLAN, that would be different...
>
> I hope that makes sense.
I was thinking you would precompute and cache the plan, and then invoke
PERFORM-PLAN on that.
That assumes that the call to TRAVERSE is actually expensive enough that
this is worth the trouble. I think you could confirm or disconfirm that
claim quickly with some timing experiments.
cheers,
r