All --

I've committed the patch after fixing it up based on my recent commit
of the simplified DO_OP work. Here's what just went in:

  * Two new ops, trace_ic and bounds_ic that twiddle bits in
    interpreter->flags and set interpreter->resume_addr.

  * Two new runops core variants, so now we cover the relevant
    flag space over {trace, notrace} x {boundscheck, noboundscheck}

  * Runops core selection that converts the flags into an index into
    a core table (runops_cores) to get the core function pointer.

  * A new trace_op variant that doesn't do bounds checking (used by
    the non-bounds-checking-but-tracing runops core).

  * PC is passed into the cores so that they can be used when
    resuming (they used to assume starting at the beginning of the
    code, which would thwart resumption).

  * runops() itself is changed to have a while() loop in it so that
    any time we drop out of the core, we'll resume if we have an
    interpreter->resume_addr set (after reselecting the core, though).

  * process_opfunc.pl has a new "macro": RESUME(), that sets up
    interpreter->resume_addr. This is used by the new ops. The new
    ops still return the new PC as the next op (which MUST be an
    'end' op to force the core loop to terminate -- *pc being false
    is the only termination condition we can count on for all cores).

  * New interpreter flag: PARROT_BOUNDS_FLAG, used to control
    bounds checking core selection.

  * test_prog now has a '-b' flag in addition to the '-t' flag. Now,
    bounds checking is off by default (I saw a performance boost:
    6.3 Mop/s with -b, 7.0 Mop/s without).

  * A new sample/test program: t/trace.pasm that twiddles the trace
    flag while it is running.


Regards,

-- Gregor
 _____________________________________________________________________ 
/     perl -e 'srand(-2091643526); print chr rand 90 for (0..4)'      \

   Gregor N. Purdy                          [EMAIL PROTECTED]
   Focus Research, Inc.                http://www.focusresearch.com/
   8080 Beckett Center Drive #203                   513-860-3570 vox
   West Chester, OH 45069                           513-860-3579 fax
\_____________________________________________________________________/

Reply via email to