Filename | /usr/lib/x86_64-linux-gnu/perl-base/overloading.pm |
Statements | Executed 18 statements in 222µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
3 | 3 | 2 | 13µs | 13µs | unimport | overloading::
1 | 1 | 1 | 6µs | 24µ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 | 196µs | 2 | 41µs | # spent 24µs (6+17) within overloading::BEGIN@2 which was called:
# once (6µs+17µs) by Carp::BEGIN@168 at line 2 # spent 24µs making 1 call to overloading::BEGIN@2
# spent 17µs making 1 call to warnings::import |
3 | |||||
4 | 1 | 200ns | our $VERSION = '0.02'; | ||
5 | |||||
6 | 1 | 100ns | my $HINT_NO_AMAGIC = 0x01000000; # see perl.h | ||
7 | |||||
8 | 1 | 5µ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 3 times, avg 4µs/call:
# once (5µs+0s) by overload::BEGIN@85 at line 85 of overload.pm
# once (4µs+0s) by Carp::BEGIN@1 at line 1 of (eval 3)[Carp.pm:170]
# once (4µs+0s) by overload::BEGIN@115 at line 115 of overload.pm | ||||
38 | 3 | 1µs | my ( $class, @ops ) = @_; | ||
39 | |||||
40 | 3 | 4µ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 | 3 | 4µs | delete $^H{overloading}; | ||
45 | } | ||||
46 | } | ||||
47 | |||||
48 | 3 | 8µs | $^H |= $HINT_NO_AMAGIC; | ||
49 | } | ||||
50 | |||||
51 | 1 | 2µs | 1; | ||
52 | __END__ |