On 3/28/07, Leopold Toetsch <[EMAIL PROTECTED]> wrote:
1) This ism't needed, these pointers are only valid and needed up to the
next
sub call/return.

The current_results member already lives in Parrot_Context; this patch
just moves the rest of them there as well.  Variables can't be global
simply because of when they're valid.  It's a hack.

2) The Context struct should be as small as possible because each sub call
needs one.

Compactness does not supersede good design.

3) Reentrancy isn't a problem as new threads get new interpreter structs
anyway.

Reentrancy isn't only a threading issue.  From src/inter_run.c, in
Parrot_runops_fromc_args_event (line 318):
   /* running code from event handlers isn't fully reentrant due to
    * these interpreter variables - mainly related to calls */
The code then has to manually save these variables, then restore them
after the PIR sub is called.  Thus, reentrancy *is* a problem.  With
this patch, the number of variables we have to do this with is reduced
to one.

Thanks,
Alek

Reply via email to