I stated #4 wrong...it should be perlnum.pmc not perlint.pmc ----- Original Message ----- From: "Tanton Gibbs (via RT)" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, July 22, 2002 12:26 AM Subject: [perl #15306] [PATCH] pmc RECALL command implemented
> # New Ticket Created by "Tanton Gibbs" > # Please include the string: [perl #15306] > # in the subject line of all future correspondence about this issue. > # <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=15306 > > > > This patch does a number of things > > 1.) adds the RECALL command. This command was described in a previous > email, but basically after a CHANGE_TYPE(SELF, X), code should not be > written. > Instead the function should be relooked up in the new vtable and recalled. > The RECALL preprocessor directive automates that. This has the benefit that > a pmc's > code is not duplicated (perhaps erroneously) every time a type is changed. > It is worth noting that perlundef.pmc was already doing this, but manually > (which is error prone). > > 2.) adds POD to pmc2c.pl - this file was completely uncommented...I added > POD and comments to help describe what was happening. > > 3.) changes perlnum, perlstring, perlundef, and perlint to use RECALL when > appropriate > > 4.) a few minor style corrections to perlint.pmc > > There are two notes: > > 1.) This may run slightly slower because of the additional function calls. > However, this ensures correct semantics and I think is worth the price. > I sent out previous timings which noted a 6.5 tenth of a second > slowdown over 10,000,000 calls on a cygwin machine (which runs slow anyway). > > 2.) This will run much slower for X -> string conversions because it was > previously only doing an assign, now it is calling the set_string function > in > perlstring.pmc which does a string_copy (and thus an allocation). I'm > not sure whether an allocation should be done or not, but at least > everything > is doing it the same way and can be fixed in only one place. > > Also, I apologize for sending out multiple diff files, but everytime I did a > cvs diff it gave me the following error message: > > cvs server: failed to create lock directory for `/cvs/public/parrot/Parrot' > (/cv > s/public/parrot/Parrot/#cvs.lock): No such file or directory > cvs server: failed to obtain dir lock in repository > `/cvs/public/parrot/Parrot' > cvs [server aborted]: read lock failed - giving up > > Does anyone know why? > > Thanks! > Tanton > > > -- attachment 1 ------------------------------------------------------ > url: http://rt.perl.org/rt2/attach/30927/25904/a654bd/pmc2c.diff > > -- attachment 2 ------------------------------------------------------ > url: http://rt.perl.org/rt2/attach/30927/25905/bc9095/perlnum.diff > > -- attachment 3 ------------------------------------------------------ > url: http://rt.perl.org/rt2/attach/30927/25906/36bcdc/perlstring.diff > > -- attachment 4 ------------------------------------------------------ > url: http://rt.perl.org/rt2/attach/30927/25907/7c2d57/perlundef.diff > > -- attachment 5 ------------------------------------------------------ > url: http://rt.perl.org/rt2/attach/30927/25908/456164/perlint.diff > >