← Index
NYTProf Performance Profile   « line view »
For index.cgi
  Run on Sat May 9 17:18:47 2020
Reported on Sat May 9 17:19:07 2020

Filename/usr/local/share/perl/5.18.2/namespace/clean/_Util.pm
StatementsExecuted 13 statements in 328µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11116µs23µsnamespace::clean::_Util::::BEGIN@12namespace::clean::_Util::BEGIN@12
11110µs50µsnamespace::clean::_Util::::BEGIN@18namespace::clean::_Util::BEGIN@18
1119µs44µsnamespace::clean::_Util::::BEGIN@19namespace::clean::_Util::BEGIN@19
1119µs24µsnamespace::clean::_Util::::BEGIN@13namespace::clean::_Util::BEGIN@13
1118µs93µsnamespace::clean::_Util::::BEGIN@15namespace::clean::_Util::BEGIN@15
1115µs5µsnamespace::clean::_Util::::BEGIN@23namespace::clean::_Util::BEGIN@23
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1### !!!ACHTUNG!!!
2#
3# This module is to be loaded at configure time straight from the Makefile.PL
4# in order to get access to some of the constants / utils
5# None of the dependencies will be available yet at this point, so make
6# sure to never use anything beyond what the minimum supported perl came with
7# (no, relying on configure_requires is not ok)
8
9package # hide from the pauses
10 namespace::clean::_Util;
11
12230µs230µs
# spent 23µs (16+7) within namespace::clean::_Util::BEGIN@12 which was called: # once (16µs+7µs) by namespace::clean::BEGIN@38 at line 12
use warnings;
# spent 23µs making 1 call to namespace::clean::_Util::BEGIN@12 # spent 7µs making 1 call to warnings::import
13233µs239µs
# spent 24µs (9+15) within namespace::clean::_Util::BEGIN@13 which was called: # once (9µs+15µs) by namespace::clean::BEGIN@38 at line 13
use strict;
# spent 24µs making 1 call to namespace::clean::_Util::BEGIN@13 # spent 15µs making 1 call to strict::import
14
15262µs2178µs
# spent 93µs (8+85) within namespace::clean::_Util::BEGIN@15 which was called: # once (8µs+85µs) by namespace::clean::BEGIN@38 at line 15
use base 'Exporter';
# spent 93µs making 1 call to namespace::clean::_Util::BEGIN@15 # spent 85µs making 1 call to base::import
1612µsour @EXPORT_OK = qw( DEBUGGER_NEEDS_CV_RENAME DEBUGGER_NEEDS_CV_PIVOT );
17
18253µs291µs
# spent 50µs (10+41) within namespace::clean::_Util::BEGIN@18 which was called: # once (10µs+41µs) by namespace::clean::BEGIN@38 at line 18
use constant DEBUGGER_NEEDS_CV_RENAME => ( ( $] > 5.008_008 ) and ( $] < 5.013_006 ) );
# spent 50µs making 1 call to namespace::clean::_Util::BEGIN@18 # spent 41µs making 1 call to constant::import
192119µs280µs
# spent 44µs (9+35) within namespace::clean::_Util::BEGIN@19 which was called: # once (9µs+35µs) by namespace::clean::BEGIN@38 at line 19
use constant DEBUGGER_NEEDS_CV_PIVOT => ( ( ! DEBUGGER_NEEDS_CV_RENAME ) and ( $] < 5.015_005 ) );
# spent 44µs making 1 call to namespace::clean::_Util::BEGIN@19 # spent 36µs making 1 call to constant::import
20
21# FIXME - ideally this needs to be provided by some abstraction lib
22# but we don't have that yet
23
# spent 5µs within namespace::clean::_Util::BEGIN@23 which was called: # once (5µs+0s) by namespace::clean::BEGIN@38 at line 110
BEGIN {
24 #
25 # Note - both get_subname and set_subname are only called by one block
26 # which is compiled away unless CV_RENAME is true ( the 5.8.9 ~ 5.12 range ).
27 # Hence we compile/provide the definitions here only when needed
28 #
2915µs DEBUGGER_NEEDS_CV_RENAME and ( eval <<'EOS' or die $@ );
30{
31 my( $sub_name_loaded, $sub_util_loaded );
32
33 sub _namer_load_error {
34 return '' if $sub_util_loaded or $sub_name_loaded;
35
36 # if S::N is loaded first *and* so is B - then go with that, otherwise
37 # prefer Sub::Util as S::U will provide a faster get_subname and will
38 # not need further require() calls
39 # this is rather arbitrary but remember this code exists only perls
40 # between 5.8.9 ~ 5.13.5
41
42 # when changing version also change in Makefile.PL
43 my $sn_ver = 0.04;
44
45 local $@;
46 my $err = '';
47
48 (
49 ! (
50 $INC{"B.pm"}
51 and
52 $INC{"Sub/Name.pm"}
53 and
54 eval { Sub::Name->VERSION($sn_ver) }
55 )
56 and
57 eval { require Sub::Util }
58 and
59 # see https://github.com/moose/Moo/commit/dafa5118
60 defined &Sub::Util::set_subname
61 and
62 $sub_util_loaded = 1
63 )
64 or
65 (
66 eval { require Sub::Name and Sub::Name->VERSION($sn_ver) }
67 and
68 $sub_name_loaded = 1
69 )
70 or
71 $err = "When running under -d on this perl $], namespace::clean requires either Sub::Name $sn_ver or Sub::Util to be installed"
72 ;
73
74 $err;
75 }
76
77 sub set_subname {
78 if( my $err = _namer_load_error() ) {
79 die $err;
80 }
81 elsif( $sub_name_loaded ) {
82 &Sub::Name::subname;
83 }
84 elsif( $sub_util_loaded ) {
85 &Sub::Util::set_subname;
86 }
87 else {
88 die "How the fuck did we get here? Read source and debug please!";
89 }
90 }
91
92 sub get_subname {
93 if(
94 _namer_load_error()
95 or
96 ! $sub_util_loaded
97 ) {
98 require B;
99 my $gv = B::svref_2object( $_[0] )->GV;
100 join '::', $gv->STASH->NAME, $gv->NAME;
101 }
102 else {
103 &Sub::Util::subname;
104 }
105 }
106}
1071;
108EOS
109
110122µs15µs}
# spent 5µs making 1 call to namespace::clean::_Util::BEGIN@23
111
11213µs1;