dougm 01/05/03 09:28:49
Modified: lib/ModPerl WrapXS.pm
Log:
make xsubs shared if Perl > 5.7.0
Revision Changes Path
1.15 +16 -0 modperl-2.0/lib/ModPerl/WrapXS.pm
Index: WrapXS.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- WrapXS.pm 2001/05/03 05:41:02 1.14
+++ WrapXS.pm 2001/05/03 16:28:44 1.15
@@ -103,10 +103,13 @@
my $return_type =
$name =~ /^DESTROY$/ ? 'void' : $func->{return_type};
+ my $attrs = $self->attrs($name);
+
my $code = <<EOF;
$return_type
$name($xs_parms)
$proto
+$attrs
EOF
if ($dispatch || $orig_args) {
@@ -185,6 +188,8 @@
$preinit = "STRLEN val_len;";
}
+ my $attrs = $self->attrs($name);
+
my $code = <<EOF;
$type
$name(obj, val=$default)
@@ -193,6 +198,7 @@
PREINIT:
$preinit
+$attrs
CODE:
RETVAL = ($cast) obj->$name;
@@ -386,6 +392,16 @@
$str = ' mpxs_' . $self->cname($module) . "_BOOT(aTHXo);\n";
}
+ $str;
+}
+
+my $notshared = join '|', qw(TIEHANDLE); #not sure why yet
+
+sub attrs {
+ my($self, $name) = @_;
+ my $str = "";
+ return $str if $name =~ /$notshared$/o;
+ $str = " ATTRS: shared\n" if $^V gt v5.7.0;
$str;
}