On Wed, 2002-07-31 at 13:49, Jerome Vouillon wrote: > On Wed, Jul 31, 2002 at 11:40:39AM -0600, Jonathan Sillito wrote: > > new_pad # push this on the lexical stack > > # some constant descriptor should also be passed > > # to the new_pad op which would then know about > > # the lexical variable 'x', and would create an > > # associated pointer object > > Do you really need a stack?
A stack is how it is currently implemented. As Melvin suggested, this makes it easy to push an pop scopes as each block is entered and exited. There is an example of this in examples/assembly/lexicals.pasm Of course other approaches's are possible. > When is the pointer object created? This part is not implemented currently. Once there is a pad descriptor that the assembler understands, the pointer object could be created immediately (maybe pointing to an instance of the PerlUndef pmc?). BTW: is anyone working on or thinking about pad descriptors right now? > > > invoke # assumes sub is in P0 > > # on invoke the sub pmc fixes the current > > # context to have the correct lexicals > > Can you elaborate on this? What is done precisely to fix the current > context? This also is not implemented (unless Sean O'Rourke's recent patch does this?) However the Sub (or Coroutine, or Continuation, or ...) PMC could have the responsibility of putting the correct context in place before actually jumping to the body of the sub. Melvin's code in sub.c has a start on this, I think ... I am kind of just thinking out loud here, but does that clear up anything? -- Jonathan Sillito