File manager - Edit - /usr/local/cpanel/3rdparty/perl/542/cpanel-lib/x86_64-linux/B/C/OverLoad/B/PADNAME.pm
Back
package # do not index it B::PADNAME; use B::C::Std; use B qw/cstring/; use B::C::Debug qw/debug/; use B::C::File qw/padnamesect/; our $MAX_PADNAME_LENGTH = 1; sub do_save ( $pn, $fullname ) { return q[&PL_padname_undef] if $pn->IsUndef; my ( $ix, $sym ) = padnamesect()->reserve($pn); padnamesect()->debug( $fullname, $pn ); my $refcnt = $pn->REFCNT; my $pv = $pn->PVX; my $xpadn_str = cstring($pv) || '{0}'; my $xpadn_pv = sprintf( "((char*)%s)+STRUCT_OFFSET(struct padname_with_str, xpadn_str[0])", $sym ); # Track the largest padname length to determine the size of the struct. my $xpadn_len = $pn->LEN; $MAX_PADNAME_LENGTH = $xpadn_len if $xpadn_len > $MAX_PADNAME_LENGTH; if ( $xpadn_len > 60 ) { die "ERROR Overlong name of lexical variable $pv for $fullname. This causes all pads to have to be overly large. Please shrink the variable name's length and try again."; } # 5.22 needs the buffer to be at the end, and the pv pointing to it. # We allocate a static buffer, and for uniformity of the list pre-alloc. # We set it to the max length of the largest variable. padnamesect()->comment(" pv, ourstash, type_u, low, high, refcnt, gen, len, flags, str"); # STATIC_HV: xpadn_type_u doesn't seem to be supporting the possibility of xpadn_protocv?? # Provided in base.c.tt2 custom to deal with xpadn_str needing to be fixed in size. padnamesect()->supdatel( $ix, "%s" => $xpadn_pv, # char *xpadn_pv; "(HV*) %s" => $pn->OURSTASH->save($fullname), # HV *xpadn_ourstash; "{.xpadn_typestash=(HV*)%s}" => $pn->TYPE->save($fullname), # union { HV *xpadn_typestash; CV *xpadn_protocv; } xpadn_type_u; "%s" => 'NULL', # struct padname_fieldinfo *xpadn_fieldinfo "%u" => $pn->COP_SEQ_RANGE_LOW, # U32 xpadn_low; "%u" => $pn->COP_SEQ_RANGE_HIGH, # U32 xpadn_high; "0x%x" => $refcnt, # U32 xpadn_refcnt; "%i" => $pn->GEN, # int xpadn_gen; "%u" => $xpadn_len, # U8 xpadn_len; "0x%x" => $pn->FLAGS & 0xff, # U8 xpadn_flags; /* U8 + FAKE if OUTER. OUTER,STATE,LVALUE,TYPED,OUR */ "%s" => $xpadn_str, # char xpadn_str[60]; /* longer lexical upval names are forbidden for now */ ); padnamesect()->debug( $fullname . " " . $pv, $pn->flagspv ) if debug('flags'); return $sym; } 1;
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings