File Coverage

blib/lib/Devel/Chitin/OpTree/SVOP.pm
Criterion Covered Total %
statement 21 23 91.3
branch 9 14 64.2
condition n/a
subroutine 5 5 100.0
pod 0 2 0.0
total 35 44 79.5


line stmt bran cond sub pod time code
1             package Devel::Chitin::OpTree::SVOP;
2 35     35   185 use base 'Devel::Chitin::OpTree';
  35         65  
  35         3447  
3              
4             our $VERSION = '0.16';
5              
6 35     35   175 use strict;
  35         48  
  35         591  
7 35     35   131 use warnings;
  35         48  
  35         8589  
8              
9             sub pp_const {
10 791     791 0 1348 my $self = shift;
11 791         1301 my %params = @_;
12              
13 791         1841 my $sv = $self->op->sv;
14              
15 791 50       1958 $sv = $self->_padval_sv($self->op->targ) unless $$sv; # happens in thread-enabled perls
16              
17 791 100       4658 if ($sv->FLAGS & B::SVs_RMG) {
    100          
    100          
    50          
    0          
18             # It's a version object
19 1         19 for (my $mg = $sv->MAGIC; $mg; $mg = $mg->MOREMAGIC) {
20 1 50       31 return $mg->PTR if $mg->TYPE eq 'V';
21             }
22              
23             } elsif ($sv->isa('B::PV')) {
24 354         1120 return $self->_quote_sv($sv, %params);
25             } elsif ($sv->isa('B::NV')) {
26 2         44 return $sv->NV;
27             } elsif ($sv->isa('B::IV')) {
28 434         3231 return $sv->int_value;
29             } elsif ($sv->isa('B::SPECIAL')) {
30 0         0 '';
31              
32             } else {
33 0         0 die "Don't know how to get the value of a const from $sv";
34             }
35             }
36             *pp_method_named = \&pp_const;
37              
38             sub pp_gv {
39 239     239 0 419 my $self = shift;
40             # An 'our' varaible or subroutine
41 239         547 $self->_gv_name($self->op->gv);
42             }
43             *pp_gvsv = \&pp_gv;
44              
45             1;
46              
47             __END__