# 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.diffThread Next