On Sun, Jun 11, 2006 at 11:52:14AM -0400, Bob Rogers wrote: > I notice the following paragraph, vintage late May, in > pdd23_exceptions.pod: > > A C<.begin_eh> directive marks the beginning of a span of > opcodes which the programmer expects to throw an exception. If > an exception occurs in the execution of the given opcode span, > Parrot will transfer control to I<LABEL>. > > I assume this means that you intend to replace the current methodology > of searching for an Exception_Handler object on the control stack when > an error is thrown with a search through sub metadata.
That's the plan. The upside is that on the non-exceptional case, nothing at all needs to be done. I just couldn't see the value in making the VM allocate and free memory blocks on the control stack, over and over, when no exceptions are occurring. > How do you envision this interacting with C<pushaction>, e.g.? Currently, > it is straightforward for find_exception_handler to DTRT WRT other control > stack entries. Would the metadata also contain information about > C<pushaction> and such? I hadn't decided either way about C<pushaction>. Seems to me that either way will work though. Could you spell out a little more of what you see as being bad (or harder)? > P.S. FWIW, I am asking now because I have begun to work again on > dynamic binding -- which of course makes this problem worse. I can't see how. Dynamically bind all you want, but the code of each subroutine is fixed at compile time. Having static metadata is no sin as long as as the data that they're meta of are also static. -- Chip Salzenberg <[EMAIL PROTECTED]>