summaryrefslogtreecommitdiff
path: root/dump.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-02-20 13:42:47 +0000
committerNicholas Clark <nick@ccl4.org>2006-02-20 13:42:47 +0000
commitd04ba5897acce6425e3b231fbf36336ea42f8165 (patch)
tree0300fa64efa15fc65f2c48cc2938c1fe8afa0e5a /dump.c
parentbf53b3a5f249ae2a059ca8014f7a62d301c554bc (diff)
downloadperl-d04ba5897acce6425e3b231fbf36336ea42f8165.tar.gz
xcv_root and xcv_xsub can also be merged into a union, providing a new
flag is added to denote whether the PVCV is perl or XSUB. p4raw-id: //depot/perl@27244
Diffstat (limited to 'dump.c')
-rw-r--r--dump.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/dump.c b/dump.c
index 419a54632c..64d7765713 100644
--- a/dump.c
+++ b/dump.c
@@ -1486,15 +1486,22 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
/* FALL THROUGH */
case SVt_PVFM:
do_hv_dump(level, file, " COMP_STASH", CvSTASH(sv));
- if (!CvISXSUB(sv) && CvSTART(sv))
- Perl_dump_indent(aTHX_ level, file, " START = 0x%"UVxf" ===> %"IVdf"\n", PTR2UV(CvSTART(sv)), (IV)sequence_num(CvSTART(sv)));
- Perl_dump_indent(aTHX_ level, file, " ROOT = 0x%"UVxf"\n", PTR2UV(CvROOT(sv)));
- if (CvROOT(sv) && dumpops)
- do_op_dump(level+1, file, CvROOT(sv));
- Perl_dump_indent(aTHX_ level, file, " XSUB = 0x%"UVxf"\n", PTR2UV(CvXSUB(sv)));
- if (CvISXSUB(sv)) {
+ if (!CvISXSUB(sv)) {
+ if (CvSTART(sv)) {
+ Perl_dump_indent(aTHX_ level, file,
+ " START = 0x%"UVxf" ===> %"IVdf"\n",
+ PTR2UV(CvSTART(sv)),
+ (IV)sequence_num(CvSTART(sv)));
+ }
+ Perl_dump_indent(aTHX_ level, file, " ROOT = 0x%"UVxf"\n",
+ PTR2UV(CvROOT(sv)));
+ if (CvROOT(sv) && dumpops) {
+ do_op_dump(level+1, file, CvROOT(sv));
+ }
+ } else {
SV *constant = cv_const_sv((CV *)sv);
+ Perl_dump_indent(aTHX_ level, file, " XSUB = 0x%"UVxf"\n", PTR2UV(CvXSUB(sv)));
if (constant) {
Perl_dump_indent(aTHX_ level, file, " XSUBANY = 0x%"UVxf