
at at altlinux
Nov 13, 2006, 6:45 PM
Views: 201
Permalink
|
|
[PATCH] ParseXS.pm: small optimization for "Usage: ..." constant strings
|
|
Hello, If you take a look at e.g. POSIX module, you can see a whole lot of similar "Usage: ..." constant strings. $ strings auto/POSIX/POSIX.so |grep ^Usage: |head Usage: POSIX::lchown(uid, gid, path) Usage: POSIX::getcwd() Usage: POSIX::ttyname(fd) Usage: POSIX::sysconf(name) Usage: POSIX::setuid(uid) Usage: POSIX::setgid(gid) Usage: POSIX::pause() Usage: POSIX::pathconf(filename, name) Usage: POSIX::fpathconf(fd, name) Usage: POSIX::cuserid(s = 0) $ strings auto/POSIX/POSIX.so |grep ^Usage: |wc -l 109 $ strings auto/POSIX/POSIX.so |grep ^Usage: |wc -c 3892 $ Those can be factored to smaller constant strings which will be optimized by the linker. I rebuilt perl with the following change and the size of POSIX.so was reduced by 2168 bytes. Note that "$pname" constant string is already used in newXS() bootstrap code, so its usage here is effectively free. --- lib/ExtUtils/ParseXS.pm | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ExtUtils/ParseXS.pm b/lib/ExtUtils/ParseXS.pm index dd05661..e9c0de8 100644 --- a/lib/ExtUtils/ParseXS.pm +++ b/lib/ExtUtils/ParseXS.pm @@ -596,12 +596,12 @@ EOF if ($ALIAS) { print Q(<<"EOF") if $cond } # if ($cond) -# Perl_croak(aTHX_ "Usage: %s($report_args)", GvNAME(CvGV(cv))); +# Perl_croak(aTHX_ "Usage: %s(%s)", GvNAME(CvGV(cv)), "$report_args"); EOF else { print Q(<<"EOF") if $cond } # if ($cond) -# Perl_croak(aTHX_ "Usage: $pname($report_args)"); +# Perl_croak(aTHX_ "Usage: %s(%s)", "$pname", "$report_args"); EOF # cv doesn't seem to be used, in most cases unless we go in -- 1.4.3.GIT
|