summaryrefslogtreecommitdiff
path: root/cpan
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-10-20 10:48:22 +0200
committerNicholas Clark <nick@ccl4.org>2010-10-21 08:42:19 +0200
commit6736a914b824405200c697cf2f2bbc6cf8807fa2 (patch)
tree9801270110f5e876aef71e2958c841ceefe4805a /cpan
parent7f39e0ae39033ab8b37028bcb877100291982e8e (diff)
downloadperl-6736a914b824405200c697cf2f2bbc6cf8807fa2.tar.gz
For PROXYSUBS error messages, generate more efficient code for -Uusethreads.
Diffstat (limited to 'cpan')
-rw-r--r--cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm25
1 files changed, 21 insertions, 4 deletions
diff --git a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm
index 4f31f8ea02..1dcfd06a25 100644
--- a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm
+++ b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm
@@ -215,7 +215,23 @@ sub WriteConstants {
my $can_do_pcs = $] >= 5.009;
my $cast_CONSTSUB = $] < 5.010 ? '(char *)' : '';
- print $c_fh $self->header(), <<"EOADD";
+ print $c_fh $self->header();
+ if ($autoload || $croak_on_error) {
+ print $c_fh <<'EOC';
+
+/* This allows slightly more efficient code on !USE_ITHREADS: */
+#ifdef USE_ITHREADS
+# define COP_FILE(c) CopFILE(c)
+# define COP_FILE_F "s"
+#else
+# define COP_FILE(c) CopFILESV(c)
+# define COP_FILE_F SVf
+#endif
+EOC
+ }
+
+ print $c_fh <<"EOADD";
+
static void
${c_subname}_add_symbol($pthx HV *hash, const char *name, I32 namelen, SV *value) {
EOADD
@@ -561,12 +577,13 @@ EOA
HV *${c_subname}_missing = get_missing_hash(aTHX);
if (hv_exists_ent(${c_subname}_missing, sv, 0)) {
sv = newSVpvf("Your vendor has not defined $package_sprintf_safe macro %" SVf
- ", used at %s line %d\\n", sv, CopFILE(cop), CopLINE(cop));
+ ", used at %" COP_FILE_F " line %d\\n", sv,
+ COP_FILE(cop), CopLINE(cop));
} else
#endif
{
- sv = newSVpvf("%"SVf" is not a valid $package_sprintf_safe macro at %s line %d\\n",
- sv, CopFILE(cop), CopLINE(cop));
+ sv = newSVpvf("%"SVf" is not a valid $package_sprintf_safe macro at %"
+ COP_FILE_F " line %d\\n", sv, COP_FILE(cop), CopLINE(cop));
}
croak_sv(sv_2mortal(sv));
EOC