Filename | /usr/share/perl/5.20/overloading.pm |
Statements | Executed 14 statements in 382µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 19µs | 30µs | BEGIN@2 | overloading::
2 | 2 | 1 | 17µs | 17µs | unimport | 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 | 342µs | 2 | 41µs | # spent 30µs (19+11) within overloading::BEGIN@2 which was called:
# once (19µs+11µs) by overload::BEGIN@83 at line 2 # spent 30µs making 1 call to overloading::BEGIN@2
# spent 11µs making 1 call to warnings::import |
3 | |||||
4 | 1 | 500ns | our $VERSION = '0.02'; | ||
5 | |||||
6 | 1 | 300ns | my $HINT_NO_AMAGIC = 0x01000000; # see perl.h | ||
7 | |||||
8 | 1 | 11µ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 17µs within overloading::unimport which was called 2 times, avg 9µs/call:
# once (10µs+0s) by overload::BEGIN@83 at line 83 of overload.pm
# once (7µs+0s) by overload::BEGIN@114 at line 114 of overload.pm | ||||
38 | 2 | 2µs | my ( $class, @ops ) = @_; | ||
39 | |||||
40 | 2 | 5µ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 | 7µs | delete $^H{overloading}; | ||
45 | } | ||||
46 | } | ||||
47 | |||||
48 | 2 | 11µs | $^H |= $HINT_NO_AMAGIC; | ||
49 | } | ||||
50 | |||||
51 | 1 | 4µs | 1; | ||
52 | __END__ |