Eradicate traces of 'asciirange' re subpragma.
[p5sagit/p5-mst-13.2.git] / ext / B / B / Terse.pm
index 7c9bd68..52f0549 100644 (file)
@@ -1,7 +1,7 @@
 package B::Terse;
 use strict;
-use B qw(peekop class walkoptree walkoptree_exec
-        main_start main_root cstring svref_2object);
+use B qw(peekop class walkoptree walkoptree_exec walkoptree_slow
+        main_start main_root cstring svref_2object SVf_IVisUV);
 use B::Asmdata qw(@specialsv_name);
 
 sub terse {
@@ -10,12 +10,12 @@ sub terse {
     if ($order eq "exec") {
        walkoptree_exec($cv->START, "terse");
     } else {
-       walkoptree($cv->ROOT, "terse");
+       walkoptree_slow($cv->ROOT, "terse");
     }
 }
 
 sub compile {
-    my $order = shift;
+    my $order = @_ ? shift : "";
     my @options = @_;
     B::clearsym();
     if (@options) {
@@ -31,13 +31,13 @@ sub compile {
        if ($order eq "exec") {
            return sub { walkoptree_exec(main_start, "terse") }
        } else {
-           return sub { walkoptree(main_root, "terse") }
+           return sub { walkoptree_slow(main_root, "terse") }
        }
     }
 }
 
 sub indent {
-    my $level = shift;
+    my $level = @_ ? shift : 0;
     return "    " x $level;
 }
 
@@ -102,13 +102,14 @@ sub B::GV::terse {
        $stash = $stash . "::";
     }
     print indent($level);
-    printf "%s (0x%lx) *%s%s\n", class($gv), $$gv, $stash, $gv->NAME;
+    printf "%s (0x%lx) *%s%s\n", class($gv), $$gv, $stash, $gv->SAFENAME;
 }
 
 sub B::IV::terse {
     my ($sv, $level) = @_;
     print indent($level);
-    printf "%s (0x%lx) %d\n", class($sv), $$sv, $sv->IV;
+    my $v = $sv->FLAGS & SVf_IVisUV ? "%u" : "%d";
+    printf "%s (0x%lx) $v\n", class($sv), $$sv, $sv->int_value;
 }
 
 sub B::NV::terse {