All -- Here's the log from the infamous commit.
Changes to syntax of .ops files and refactoring of ops2c*.pl and pbc2c.pl. * Removed ops2c-prederef.pl * (unrelated) Removed vestigial Parrot/Opcode.pm file. * Added Parrot/OpTrans.pm, Parrot/OpTrans/C.pm (needed for old functionality of ops2c.pl), Parrot/OpTrans/CPrederef.pm (needed for old functionality of ops2c-prederef.pl), and Parrot/OpTrans/CGoto.pm (needed for functionality of pbc2c.pl). "OpTrans" == "Op Transformation" * Makefile.in modifications to call "ops2c.pl C" where it used to be just "ops2c.pl", and "ops2c.pl CPrederef" where it used to be "ops2c-prederef.pl". * core.ops and obscure.ops changes to syntax. Semantics are identical with previous version: return HALT --> HALT() return AUTO --> goto NEXT() return RETREL(...) --> goto OFFSET(...) return RESTART(*) --> restart NEXT() Also, pop_generic_entry() stuff (local var + 5 lines of code) for dest-less branch ops replaced with new notation "goto POP()", which uses the new pop_dest() function in stacks.c. This also allowed these ops to become 'inline' ops, since they no longer have local variables. The 'ret' op also became simplified to just "goto POP()", and also became an inline op. * interpreter.c reflects the change in type name: prederef_op_func_t --> op_func_prederef_t that occurred in include/parrot/op.h * make_vtable_ops.pl uses "goto NEXT()" where it used to use "return AUTO". * ops2c.pl is now generic. Its first argument is the last package name component of a subclass of Parrot::OpTrans. These subclasses all have full names of the form Parrot::OpTrans::*. An instance of the class is created and later consulted for various bits of information needed to generate the C code. * pbc2c.pl now uses an instance of Parrot::OpTrans::CGoto to contain its transformation rules. * stacks.c has a new function pop_dest() that pops a destination off the control stack. include/parrot/stacks.h has the prototype. * Parrot/Op.pm now supports the syntax generated by Parrot::OpsFile for the "goto POP" case. Also, the source() method now expects its second argument to be an object that ISA Parrot::OpTrans. Methods of this object are called to perform the substitutions. * Parrot/OpsFile.pm supports the change in notation mentioned above. * docs/intro.pod reflects these changes. * include/parrot/op.h: Renamed type prederef_op_func_t to op_func_prederef_t because it made the implementation of the shared ops2c.pl easier. Regards, -- Gregor ____________________________________________________________________ / Inspiration >> Innovation >> Excellence (TM) \ 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 \____________________________________________________________________/ [[EMAIL PROTECTED]]$ ping osama.taliban.af PING osama.taliban.af (68.69.65.68) from 20.1.9.11 : 56 bytes of data. >From 85.83.77.67: Time to live exceeded