Filename | /Users/timbo/perl5/perlbrew/perls/perl-5.18.2/lib/5.18.2/overloading.pm |
Statements | Executed 14 statements in 256µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
2 | 2 | 1 | 13µs | 13µs | unimport | overloading::
1 | 1 | 1 | 13µs | 19µs | BEGIN@2 | overloading::
0 | 0 | 0 | 0s | 0s | _ops_to_nums | overloading::
0 | 0 | 0 | 0s | 0s | import | overloading::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package overloading; | ||||
2 | 2 | 226µs | 2 | 25µs | # spent 19µs (13+6) within overloading::BEGIN@2 which was called:
# once (13µs+6µs) by overload::BEGIN@83 at line 2 # spent 19µs making 1 call to overloading::BEGIN@2
# spent 6µs making 1 call to warnings::import |
3 | |||||
4 | 1 | 600ns | our $VERSION = '0.02'; | ||
5 | |||||
6 | 1 | 200ns | my $HINT_NO_AMAGIC = 0x01000000; # see perl.h | ||
7 | |||||
8 | 1 | 8µs | require 5.010001; | ||
9 | |||||
10 | sub _ops_to_nums { | ||||
11 | require overload::numbers; | ||||
12 | |||||
13 | map { exists $overload::numbers::names{"($_"} | ||||
14 | ? $overload::numbers::names{"($_"} | ||||
15 | : do { require Carp; Carp::croak("'$_' is not a valid overload") } | ||||
16 | } @_; | ||||
17 | } | ||||
18 | |||||
19 | sub import { | ||||
20 | my ( $class, @ops ) = @_; | ||||
21 | |||||
22 | if ( @ops ) { | ||||
23 | if ( $^H{overloading} ) { | ||||
24 | vec($^H{overloading} , $_, 1) = 0 for _ops_to_nums(@ops); | ||||
25 | } | ||||
26 | |||||
27 | if ( $^H{overloading} !~ /[^\0]/ ) { | ||||
28 | delete $^H{overloading}; | ||||
29 | $^H &= ~$HINT_NO_AMAGIC; | ||||
30 | } | ||||
31 | } else { | ||||
32 | delete $^H{overloading}; | ||||
33 | $^H &= ~$HINT_NO_AMAGIC; | ||||
34 | } | ||||
35 | } | ||||
36 | |||||
37 | # spent 13µs within overloading::unimport which was called 2 times, avg 7µs/call:
# once (8µs+0s) by overload::BEGIN@83 at line 83 of overload.pm
# once (6µs+0s) by overload::BEGIN@114 at line 114 of overload.pm | ||||
38 | 2 | 1µs | my ( $class, @ops ) = @_; | ||
39 | |||||
40 | 2 | 3µs | if ( exists $^H{overloading} or not $^H & $HINT_NO_AMAGIC ) { | ||
41 | if ( @ops ) { | ||||
42 | vec($^H{overloading} ||= '', $_, 1) = 1 for _ops_to_nums(@ops); | ||||
43 | } else { | ||||
44 | 2 | 5µs | delete $^H{overloading}; | ||
45 | } | ||||
46 | } | ||||
47 | |||||
48 | 2 | 10µs | $^H |= $HINT_NO_AMAGIC; | ||
49 | } | ||||
50 | |||||
51 | 1 | 3µs | 1; | ||
52 | __END__ |