X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FB%2FB%2FC.pm;h=17ca25788b05763e7f5e84a1b9487963978d3078;hb=461824dcfbc00b3c4e20590f06d6c9881e4a416b;hp=5c3c6ba84f8556ab2b2a4fa5b74d0897cbcdbb6d;hpb=a02a5408b2f199007c4dcb74559cc79066307ada;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/B/B/C.pm b/ext/B/B/C.pm index 5c3c6ba..17ca257 100644 --- a/ext/B/B/C.pm +++ b/ext/B/B/C.pm @@ -8,7 +8,7 @@ package B::C; -our $VERSION = '1.04'; +our $VERSION = '1.05'; package B::C::Section; @@ -1182,14 +1182,19 @@ sub B::AV::save { my ($av) = @_; my $sym = objsym($av); return $sym if defined $sym; - $xpvavsect->add(sprintf("0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0")); + my $line = "0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0"; + $line .= sprintf(", 0x%x", $av->AvFLAGS) if $] < 5.009; + $xpvavsect->add($line); $svsect->add(sprintf("&xpvav_list[%d], %lu, 0x%x", $xpvavsect->index, $av->REFCNT , $av->FLAGS)); my $sv_list_index = $svsect->index; my $fill = $av->FILL; $av->save_magic; - warn sprintf("saving AV 0x%x FILL=$fill", $$av) - if $debug_av; + if ($debug_av) { + $line = sprintf("saving AV 0x%x FILL=$fill", $$av); + $line .= sprintf(" AvFLAGS=0x%x", $av->AvFLAGS) if $] < 5.009; + warn $line; + } # XXX AVf_REAL is wrong test: need to save comppadlist but not stack #if ($fill > -1 && ($avflags & AVf_REAL)) { if ($fill > -1) { @@ -1411,46 +1416,11 @@ sub output_declarations { #endif /* BROKEN_STATIC_REDECL */ #ifdef BROKEN_UNION_INIT -/* - * Cribbed from cv.h with ANY (a union) replaced by void*. - * Some pre-Standard compilers can't cope with initialising unions. Ho hum. - */ -typedef struct { - STRLEN xpv_cur; /* length of xp_pv as a C string */ - STRLEN xpv_len; /* allocated size */ - IV xof_off; /* integer value */ - NV xnv_nv; /* numeric value, if any */ - MAGIC* xmg_magic; /* magic for scalar array */ - HV* xmg_stash; /* class package */ - - HV * xcv_stash; - OP * xcv_start; - OP * xcv_root; - void (*xcv_xsub) (pTHX_ CV*); - ANY xcv_xsubany; - GV * xcv_gv; - char * xcv_file; - long xcv_depth; /* >= 2 indicates recursive call */ - AV * xcv_padlist; - CV * xcv_outside; -EOT - print <<'EOT' if $] < 5.009; -#ifdef USE_5005THREADS - perl_mutex *xcv_mutexp; - struct perl_thread *xcv_owner; /* current owner thread */ -#endif /* USE_5005THREADS */ -EOT - print <<'EOT'; - cv_flags_t xcv_flags; - U32 xcv_outside_seq; /* the COP sequence (at the point of our - * compilation) in the lexically enclosing - * sub */ -} XPVCV_or_similar; -#define ANYINIT(i) i -#else +#error BROKEN_UNION_INIT no longer needed, as Perl requires an ANSI compiler +#endif + #define XPVCV_or_similar XPVCV #define ANYINIT(i) {i} -#endif /* BROKEN_UNION_INIT */ #define Nullany ANYINIT(0) #define UNUSED 0