Viewing File: /usr/local/cpanel/3rdparty/perl/536/cpanel-lib/x86_64-linux/B/C/OverLoad/B/SVOP.pm
package B::SVOP;
use B::C::Std;
use B qw/SVf_ROK/;
use B::C::File qw/svopsect init/;
use B::C::Debug qw/debug WARN/;
sub do_save ( $op, @ ) {
svopsect()->comment_for_op("sv");
my ( $ix, $sym ) = svopsect()->reserve( $op, "OP*" );
svopsect()->debug( $op->name, $op );
my $svsym = 'Nullsv';
if ( $op->name eq 'aelemfast' and $op->flags & 128 ) { #OPf_SPECIAL
$svsym = '&PL_sv_undef'; # pad does not need to be saved
debug( sv => "SVOP->sv aelemfast pad %d\n", $op->flags );
}
else {
$svsym = $op->sv->save( "svop " . $op->name );
}
# PL_envgv and PL_argvgv STATIC_HV: We're probably saving those wrong.
unless ( $svsym =~ m/[sg]v_list|Nullsv/ ) { # PL_sv_yes, PL_sv_no, PL_sv_zero...
init()->add("svop_list[$ix].op_sv = (SV*) $svsym;");
$svsym = 'NULL';
}
svopsect()->supdate( $ix, "%s, (SV*) %s", $op->save_baseop, $svsym );
return $sym;
}
1;
Back to Directory
File Manager