← Index
NYTProf Performance Profile   « line view »
For t/bug-md-11.t
  Run on Fri Mar 8 13:27:24 2024
Reported on Fri Mar 8 13:30:22 2024

Filename/home/micha/.plenv/versions/5.38.2/lib/perl5/5.38.2/warnings.pm
StatementsExecuted 5203 statements in 3.51ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
22321948µs948µswarnings::::_expand_bitswarnings::_expand_bits
12810376929µs1.50mswarnings::::unimportwarnings::unimport
949492688µs1.53mswarnings::::importwarnings::import
9511434µs809µswarnings::::_bitswarnings::_bits
51139µs61µswarnings::::register_categorieswarnings::register_categories
102122µs22µswarnings::::_mkMaskwarnings::_mkMask
0000s0swarnings::::Croakerwarnings::Croaker
0000s0swarnings::::__chkwarnings::__chk
0000s0swarnings::::_error_locwarnings::_error_loc
0000s0swarnings::::bitswarnings::bits
0000s0swarnings::::enabledwarnings::enabled
0000s0swarnings::::enabled_at_levelwarnings::enabled_at_level
0000s0swarnings::::fatal_enabledwarnings::fatal_enabled
0000s0swarnings::::fatal_enabled_at_levelwarnings::fatal_enabled_at_level
0000s0swarnings::::warnwarnings::warn
0000s0swarnings::::warn_at_levelwarnings::warn_at_level
0000s0swarnings::::warnifwarnings::warnif
0000s0swarnings::::warnif_at_levelwarnings::warnif_at_level
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# -*- mode: Perl; buffer-read-only: t -*-
2# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
3# This file is built by regen/warnings.pl.
4# Any changes made here will be lost!
5
6package warnings;
7
81600nsour $VERSION = "1.65";
9
10# Verify that we're called correctly so that warnings will work.
11# Can't use Carp, since Carp uses us!
12# String regexps because constant folding = smaller optree = less memory vs regexp literal
13# see also strict.pm.
1419µs13µsdie sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2]
# spent 3µs making 1 call to CORE::match
15 if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' )
16 && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' );
17
18114µsour %Offsets = (
19 # Warnings Categories added in Perl 5.008
20 'all' => 0,
21 'closure' => 2,
22 'deprecated' => 4,
23 'exiting' => 6,
24 'glob' => 8,
25 'io' => 10,
26 'closed' => 12,
27 'exec' => 14,
28 'layer' => 16,
29 'newline' => 18,
30 'pipe' => 20,
31 'unopened' => 22,
32 'misc' => 24,
33 'numeric' => 26,
34 'once' => 28,
35 'overflow' => 30,
36 'pack' => 32,
37 'portable' => 34,
38 'recursion' => 36,
39 'redefine' => 38,
40 'regexp' => 40,
41 'severe' => 42,
42 'debugging' => 44,
43 'inplace' => 46,
44 'internal' => 48,
45 'malloc' => 50,
46 'signal' => 52,
47 'substr' => 54,
48 'syntax' => 56,
49 'ambiguous' => 58,
50 'bareword' => 60,
51 'digit' => 62,
52 'parenthesis' => 64,
53 'precedence' => 66,
54 'printf' => 68,
55 'prototype' => 70,
56 'qw' => 72,
57 'reserved' => 74,
58 'semicolon' => 76,
59 'taint' => 78,
60 'threads' => 80,
61 'uninitialized' => 82,
62 'unpack' => 84,
63 'untie' => 86,
64 'utf8' => 88,
65 'void' => 90,
66
67 # Warnings Categories added in Perl 5.011
68 'imprecision' => 92,
69 'illegalproto' => 94,
70
71 # Warnings Categories added in Perl 5.011003
72 'deprecated::goto_construct' => 96,
73 'deprecated::unicode_property_name' => 98,
74
75 # Warnings Categories added in Perl 5.013
76 'non_unicode' => 100,
77 'nonchar' => 102,
78 'surrogate' => 104,
79
80 # Warnings Categories added in Perl 5.017
81 'experimental' => 106,
82 'experimental::regex_sets' => 108,
83
84 # Warnings Categories added in Perl 5.019
85 'syscalls' => 110,
86
87 # Warnings Categories added in Perl 5.021
88 'experimental::const_attr' => 112,
89 'experimental::re_strict' => 114,
90 'experimental::refaliasing' => 116,
91 'locale' => 118,
92 'missing' => 120,
93 'redundant' => 122,
94
95 # Warnings Categories added in Perl 5.025
96 'experimental::declared_refs' => 124,
97
98 # Warnings Categories added in Perl 5.025011
99 'deprecated::dot_in_inc' => 126,
100
101 # Warnings Categories added in Perl 5.027
102 'shadow' => 128,
103
104 # Warnings Categories added in Perl 5.029
105 'experimental::private_use' => 130,
106 'experimental::uniprop_wildcards' => 132,
107 'experimental::vlb' => 134,
108
109 # Warnings Categories added in Perl 5.033
110 'experimental::try' => 136,
111
112 # Warnings Categories added in Perl 5.035
113 'experimental::args_array_with_signatures'=> 138,
114 'experimental::builtin' => 140,
115 'experimental::defer' => 142,
116 'experimental::extra_paired_delimiters'=> 144,
117 'experimental::for_list' => 146,
118 'scalar' => 148,
119
120 # Warnings Categories added in Perl 5.035009
121 'deprecated::version_downgrade' => 150,
122
123 # Warnings Categories added in Perl 5.03501
124 'deprecated::delimiter_will_be_paired'=> 152,
125
126 # Warnings Categories added in Perl 5.037
127 'experimental::class' => 154,
128
129 # Warnings Categories added in Perl 5.037009
130 'deprecated::apostrophe_as_package_separator'=> 156,
131
132 # Warnings Categories added in Perl 5.03701
133 'deprecated::smartmatch' => 158,
134);
135
136117µsour %Bits = (
137 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..79]
138 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
139 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
140 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
141 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
142 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
143 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x40\x00\x00\x40\x51", # [2,48,49,63,75,76,78,79]
144 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78]
145 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76]
146 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63]
147 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48]
148 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79]
149 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49]
150 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75]
151 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
152 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
153 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
154 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x15\x10\x54\x55\x05\x04", # [53,54,56..58,62,65..73,77]
155 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69]
156 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70]
157 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77]
158 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56]
159 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62]
160 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71]
161 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [72]
162 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [73]
163 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [65]
164 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [57]
165 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [58]
166 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [54]
167 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [68]
168 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [66]
169 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [67]
170 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
171 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [47]
172 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [46]
173 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
174 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
175 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [5..11,55]
176 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
177 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [59]
178 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
179 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
180 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [60]
181 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
182 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [50]
183 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [51]
184 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
185 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
186 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
187 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
188 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
189 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
190 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
191 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
192 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
193 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
194 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
195 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
196 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
197 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [61]
198 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
199 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
200 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [74]
201 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
202 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
203 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [64]
204 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
205 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
206 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [52]
207 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
208 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [55]
209 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
210 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
211 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
212 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
213 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
214 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
215 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x50\x01\x00\x00\x00\x00\x00\x00", # [44,50..52]
216 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [45]
217);
218
219110µsour %DeadBits = (
220 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..79]
221 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
222 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
223 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
224 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
225 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
226 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x80\x00\x00\x80\xa2", # [2,48,49,63,75,76,78,79]
227 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78]
228 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76]
229 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63]
230 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48]
231 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79]
232 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49]
233 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75]
234 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
235 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
236 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
237 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x2a\x20\xa8\xaa\x0a\x08", # [53,54,56..58,62,65..73,77]
238 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69]
239 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70]
240 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77]
241 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56]
242 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62]
243 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71]
244 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [72]
245 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [73]
246 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [65]
247 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [57]
248 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [58]
249 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [54]
250 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [68]
251 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [66]
252 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [67]
253 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
254 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [47]
255 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [46]
256 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
257 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
258 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [5..11,55]
259 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
260 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [59]
261 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
262 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
263 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [60]
264 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
265 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [50]
266 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [51]
267 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
268 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
269 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
270 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
271 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
272 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
273 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
274 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
275 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
276 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
277 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
278 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
279 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
280 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [61]
281 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
282 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
283 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [74]
284 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
285 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
286 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [64]
287 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
288 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
289 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [52]
290 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
291 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [55]
292 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
293 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
294 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
295 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
296 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
297 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
298 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa0\x02\x00\x00\x00\x00\x00\x00", # [44,50..52]
299 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [45]
300);
301
30216µsour %NoOp = (
303 'experimental::alpha_assertions' => 1,
304 'experimental::bitwise' => 1,
305 'experimental::isa' => 1,
306 'experimental::lexical_subs' => 1,
307 'experimental::postderef' => 1,
308 'experimental::script_run' => 1,
309 'experimental::signatures' => 1,
310 'experimental::smartmatch' => 1,
311);
312
313# These are used by various things, including our own tests
3141300nsour $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
3151100nsour $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x55\x50\x54\x55\x45\x55"; # [2,4,22,23,25,48,49,56..59,62,63,65..73,75..79]
3161100nsour $LAST_BIT = 160 ;
3171100nsour $BYTES = 20 ;
318
319sub Croaker
320{
321 require Carp; # this initializes %CarpInternal
322 local $Carp::CarpInternal{'warnings'};
323 delete $Carp::CarpInternal{'warnings'};
324 Carp::croak(@_);
325}
326
327
# spent 948µs within warnings::_expand_bits which was called 223 times, avg 4µs/call: # 128 times (574µs+0s) by warnings::unimport at line 414, avg 4µs/call # 95 times (375µs+0s) by warnings::_bits at line 352, avg 4µs/call
sub _expand_bits {
32822338µs my $bits = shift;
32922374µs my $want_len = ($LAST_BIT + 7) >> 3;
33022336µs my $len = length($bits);
33122372µs if ($len != $want_len) {
33220894µs if ($bits eq "") {
333 $bits = "\x00" x $want_len;
334 } elsif ($len > $want_len) {
335 substr $bits, $want_len, $len-$want_len, "";
336 } else {
337208133µs my $x = vec($bits, $Offsets{all} >> 1, 2);
33820879µs $x |= $x << 2;
33920830µs $x |= $x << 4;
340208205µs $bits .= chr($x) x ($want_len - $len);
341 }
342 }
343223407µs return $bits;
344}
345
346
# spent 809µs (434+375) within warnings::_bits which was called 95 times, avg 9µs/call: # 95 times (434µs+375µs) by warnings::import at line 397, avg 9µs/call
sub _bits {
3479517µs my $mask = shift ;
348958µs my $catmask ;
3499515µs my $fatal = 0 ;
350957µs my $no_fatal = 0 ;
351
3529583µs95375µs $mask = _expand_bits($mask);
# spent 375µs making 95 calls to warnings::_expand_bits, avg 4µs/call
3539527µs foreach my $word ( @_ ) {
3549530µs next if $NoOp{$word};
3559578µs if ($word eq 'FATAL') {
356 $fatal = 1;
357 $no_fatal = 0;
358 }
359 elsif ($word eq 'NONFATAL') {
360 $fatal = 0;
361 $no_fatal = 1;
362 }
363 elsif ($catmask = $Bits{$word}) {
3649536µs $mask |= $catmask ;
3659511µs $mask |= $DeadBits{$word} if $fatal ;
3669510µs $mask = ~(~$mask | $DeadBits{$word}) if $no_fatal ;
367 }
368 else
369 { Croaker("Unknown warnings category '$word'")}
370 }
371
37295103µs return $mask ;
373}
374
375sub bits
376{
377 # called from B::Deparse.pm
378 push @_, 'all' unless @_ ;
379 return _bits("", @_) ;
380}
381
382sub import
383
# spent 1.53ms (688µs+838µs) within warnings::import which was called 94 times, avg 16µs/call: # once (12µs+14µs) by Test2::EventFacet::Parent::BEGIN@3 at line 3 of Test2/EventFacet/Parent.pm # once (7µs+15µs) by Test2::Event::Exception::BEGIN@3 at line 3 of Test2/Event/Exception.pm # once (12µs+9µs) by main::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/t/bug-md-11.t # once (10µs+11µs) by Test::Builder::BEGIN@693 at line 693 of Test/Builder.pm # once (9µs+12µs) by Spreadsheet::ParseXLSX::Decryptor::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX/Decryptor.pm # once (7µs+12µs) by Test::Builder::BEGIN@5 at line 5 of Test/Builder.pm # once (10µs+10µs) by Test2::API::Stack::BEGIN@3 at line 3 of Test2/API/Stack.pm # once (8µs+11µs) by Config::BEGIN@10 at line 10 of Config.pm # once (9µs+9µs) by Test2::Util::Trace::BEGIN@4 at line 4 of Test2/Util/Trace.pm # once (8µs+10µs) by Test2::API::Instance::BEGIN@3 at line 3 of Test2/API/Instance.pm # once (8µs+10µs) by Test2::EventFacet::Plan::BEGIN@3 at line 3 of Test2/EventFacet/Plan.pm # once (8µs+10µs) by Config::BEGIN@6 at line 6 of Config_heavy.pl # once (8µs+9µs) by Test2::Event::Ok::BEGIN@3 at line 3 of Test2/Event/Ok.pm # once (8µs+9µs) by Test2::Event::Diag::BEGIN@3 at line 3 of Test2/Event/Diag.pm # once (10µs+8µs) by overloading::BEGIN@2 at line 2 of overloading.pm # once (8µs+10µs) by Test2::API::Context::BEGIN@3 at line 3 of Test2/API/Context.pm # once (8µs+10µs) by Test2::API::BEGIN@3 at line 3 of Test2/API.pm # once (7µs+10µs) by Test2::Event::Note::BEGIN@3 at line 3 of Test2/Event/Note.pm # once (8µs+9µs) by Test2::Hub::Subtest::BEGIN@3 at line 3 of Test2/Hub/Subtest.pm # once (8µs+9µs) by Test2::Event::Subtest::BEGIN@3 at line 3 of Test2/Event/Subtest.pm # once (8µs+9µs) by Test::Builder::TodoDiag::BEGIN@3 at line 3 of Test/Builder/TodoDiag.pm # once (7µs+9µs) by Test::Builder::Formatter::BEGIN@3 at line 3 of Test/Builder/Formatter.pm # once (8µs+9µs) by Test2::EventFacet::Hub::BEGIN@3 at line 3 of Test2/EventFacet/Hub.pm # once (8µs+9µs) by Test2::Event::Bail::BEGIN@3 at line 3 of Test2/Event/Bail.pm # once (8µs+9µs) by Test2::Event::Fail::BEGIN@3 at line 3 of Test2/Event/Fail.pm # once (8µs+9µs) by mro::BEGIN@11 at line 11 of mro.pm # once (7µs+9µs) by Spreadsheet::ParseExcel::Workbook::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Workbook.pm # once (7µs+9µs) by File::Copy::BEGIN@12 at line 12 of File/Copy.pm # once (8µs+9µs) by Test2::Event::Waiting::BEGIN@3 at line 3 of Test2/Event/Waiting.pm # once (7µs+9µs) by Test2::Event::V2::BEGIN@3 at line 3 of Test2/Event/V2.pm # once (7µs+9µs) by Test2::EventFacet::Trace::BEGIN@3 at line 3 of Test2/EventFacet/Trace.pm # once (7µs+9µs) by Test2::EventFacet::Error::BEGIN@3 at line 3 of Test2/EventFacet/Error.pm # once (7µs+9µs) by Test2::Event::Pass::BEGIN@3 at line 3 of Test2/Event/Pass.pm # once (8µs+9µs) by Test2::Hub::BEGIN@3 at line 3 of Test2/Hub.pm # once (7µs+9µs) by File::Basename::BEGIN@52 at line 52 of File/Basename.pm # once (7µs+9µs) by Test2::EventFacet::About::BEGIN@3 at line 3 of Test2/EventFacet/About.pm # once (7µs+9µs) by File::Find::BEGIN@4 at line 4 of File/Find.pm # once (7µs+9µs) by Test2::Event::Skip::BEGIN@3 at line 3 of Test2/Event/Skip.pm # once (7µs+9µs) by Encode::Config::BEGIN@8 at line 8 of Encode/Config.pm # once (7µs+9µs) by Test2::Event::BEGIN@3 at line 3 of Test2/Event.pm # once (7µs+9µs) by Compress::Raw::Zlib::BEGIN@9 at line 9 of Compress/Raw/Zlib.pm # once (7µs+9µs) by Test2::Util::ExternalMeta::BEGIN@3 at line 3 of Test2/Util/ExternalMeta.pm # once (7µs+10µs) by Encode::BEGIN@6 at line 6 of Encode.pm # once (7µs+9µs) by Test2::EventFacet::Info::BEGIN@3 at line 3 of Test2/EventFacet/Info.pm # once (7µs+9µs) by Test2::Hub::Interceptor::BEGIN@3 at line 3 of Test2/Hub/Interceptor.pm # once (7µs+9µs) by Spreadsheet::ParseXLSX::Decryptor::Agile::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX/Decryptor/Agile.pm # once (7µs+9µs) by Digest::base::BEGIN@4 at line 4 of Digest/base.pm # once (7µs+9µs) by URI::BEGIN@4 at line 4 of URI.pm # once (7µs+9µs) by Spreadsheet::ParseXLSX::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX.pm # once (7µs+9µs) by Test2::Event::Plan::BEGIN@3 at line 3 of Test2/Event/Plan.pm # once (8µs+8µs) by Carp::BEGIN@5 at line 5 of Carp.pm # once (7µs+9µs) by Crypt::Mode::ECB::BEGIN@6 at line 6 of Crypt/Mode/ECB.pm # once (8µs+7µs) by List::Util::BEGIN@10 at line 10 of List/Util.pm # once (7µs+9µs) by Encode::MIME::Name::BEGIN@3 at line 3 of Encode/MIME/Name.pm # once (7µs+8µs) by Test2::EventFacet::Amnesty::BEGIN@3 at line 3 of Test2/EventFacet/Amnesty.pm # once (7µs+9µs) by Test2::EventFacet::Control::BEGIN@3 at line 3 of Test2/EventFacet/Control.pm # once (8µs+7µs) by Test::More::BEGIN@5 at line 5 of Test/More.pm # once (7µs+9µs) by MIME::Base64::BEGIN@4 at line 4 of MIME/Base64.pm # once (7µs+9µs) by Encode::Encoding::BEGIN@5 at line 5 of Encode/Encoding.pm # once (7µs+9µs) by Test2::Util::Facets2Legacy::BEGIN@3 at line 3 of Test2/Util/Facets2Legacy.pm # once (7µs+9µs) by JSON::PP::Boolean::BEGIN@4 at line 4 of JSON/PP/Boolean.pm # once (7µs+9µs) by Encode::Alias::BEGIN@3 at line 3 of Encode/Alias.pm # once (7µs+9µs) by Spreadsheet::ParseExcel::BEGIN@18 at line 18 of Spreadsheet/ParseExcel.pm # once (7µs+8µs) by Test2::EventFacet::Meta::BEGIN@3 at line 3 of Test2/EventFacet/Meta.pm # once (7µs+9µs) by Test2::EventFacet::BEGIN@3 at line 3 of Test2/EventFacet.pm # once (7µs+9µs) by Test2::Hub::Interceptor::Terminator::BEGIN@3 at line 3 of Test2/Hub/Interceptor/Terminator.pm # once (7µs+8µs) by Test2::EventFacet::Assert::BEGIN@3 at line 3 of Test2/EventFacet/Assert.pm # once (7µs+8µs) by Test2::Formatter::BEGIN@3 at line 3 of Test2/Formatter.pm # once (6µs+9µs) by Spreadsheet::ParseXLSX::Cell::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX/Cell.pm # once (7µs+8µs) by Symbol::BEGIN@4 at line 4 of Symbol.pm # once (7µs+9µs) by IO::BEGIN@8 at line 8 of IO.pm # once (6µs+9µs) by Graphics::ColorUtils::BEGIN@6 at line 6 of Graphics/ColorUtils.pm # once (7µs+8µs) by Spreadsheet::ParseExcel::Font::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Font.pm # once (6µs+8µs) by Test2::Util::HashBase::BEGIN@3 at line 3 of Test2/Util/HashBase.pm # once (7µs+8µs) by URI::Escape::BEGIN@4 at line 4 of URI/Escape.pm # once (6µs+9µs) by Spreadsheet::ParseXLSX::Decryptor::Standard::BEGIN@4 at line 4 of /home/micha/Projekt/spreadsheet-parsexlsx/lib/Spreadsheet/ParseXLSX/Decryptor/Standard.pm # once (7µs+8µs) by Digest::SHA::BEGIN@6 at line 6 of Digest/SHA.pm # once (8µs+7µs) by Test2::Util::BEGIN@3 at line 3 of Test2/Util.pm # once (6µs+9µs) by utf8::BEGIN@4 at line 4 of utf8.pm # once (7µs+8µs) by Spreadsheet::ParseExcel::FmtDefault::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/FmtDefault.pm # once (6µs+8µs) by Spreadsheet::ParseExcel::Worksheet::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Worksheet.pm # once (6µs+8µs) by Test2::Formatter::TAP::BEGIN@3 at line 3 of Test2/Formatter/TAP.pm # once (6µs+8µs) by Spreadsheet::ParseXLSX::BEGIN@2 at line 2 of XML/Twig.pm # once (6µs+8µs) by Crypt::Mode::CBC::BEGIN@6 at line 6 of Crypt/Mode/CBC.pm # once (6µs+8µs) by Spreadsheet::ParseExcel::Format::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Format.pm # once (7µs+7µs) by Test::Builder::BEGIN@133 at line 133 of Test/Builder.pm # once (6µs+8µs) by bytes::BEGIN@4 at line 4 of bytes.pm # once (6µs+7µs) by builtin::BEGIN@4 at line 4 of builtin.pm # once (7µs+7µs) by Scalar::Util::BEGIN@10 at line 10 of Scalar/Util.pm # once (6µs+8µs) by Spreadsheet::ParseExcel::Cell::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Cell.pm # once (7µs+7µs) by POSIX::BEGIN@3 at line 3 of POSIX.pm # once (6µs+8µs) by Crypt::Cipher::BEGIN@4 at line 4 of Crypt/Cipher.pm # once (6µs+8µs) by CryptX::BEGIN@4 at line 4 of CryptX.pm # once (6µs+7µs) by Spreadsheet::ParseExcel::Utility::BEGIN@20 at line 20 of Spreadsheet/ParseExcel/Utility.pm
{
3849426µs my $invocant = shift;
385
386 # append 'all' when implied (empty import list or after a lone
387 # "FATAL" or "NONFATAL")
3889470µs push @_, 'all'
389 if !@_ || (@_==1 && ($_[0] eq 'FATAL' || $_[0] eq 'NONFATAL'));
390
3919430µs my @fatal = ();
39294223µs foreach my $warning (@_) {
39395278µs9529µs if($warning =~ /^(NON)?FATAL$/) {
# spent 29µs making 95 calls to CORE::match, avg 309ns/call
394 @fatal = ($warning);
395 } elsif(substr($warning, 0, 1) ne '-') {
3969571µs my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
39795121µs95809µs ${^WARNING_BITS} = _bits($mask, @fatal, $warning);
# spent 809µs making 95 calls to warnings::_bits, avg 9µs/call
398 } else {
399 $invocant->unimport(substr($warning, 1));
400 }
401 }
402}
403
404sub unimport
405
# spent 1.50ms (929µs+573µs) within warnings::unimport which was called 128 times, avg 12µs/call: # 4 times (28µs+16µs) by XML::Twig::BEGIN@1.50 or XML::Twig::BEGIN@1.57 or XML::Twig::BEGIN@1.60 or XML::Twig::BEGIN@1.67 at line 1 of (eval 106)[XML/Twig.pm:1750], avg 11µs/call # 4 times (25µs+18µs) by XML::Twig::Elt::BEGIN@1.19 or XML::Twig::Elt::BEGIN@1.28 or XML::Twig::Elt::BEGIN@1.43 or XML::Twig::Elt::BEGIN@1.48 at line 1 of (eval 75)[XML/Twig.pm:5871], avg 11µs/call # 4 times (24µs+15µs) by XML::Twig::Elt::BEGIN@1.21 or XML::Twig::Elt::BEGIN@1.37 or XML::Twig::Elt::BEGIN@1.42 or XML::Twig::Elt::BEGIN@1.49 at line 1 of (eval 77)[XML/Twig.pm:5871], avg 10µs/call # 3 times (18µs+12µs) by XML::Twig::Elt::BEGIN@1.18 or XML::Twig::Elt::BEGIN@1.36 or XML::Twig::Elt::BEGIN@1.74 at line 1 of (eval 74)[XML/Twig.pm:5871], avg 10µs/call # 3 times (18µs+11µs) by XML::Twig::Elt::BEGIN@1.16 or XML::Twig::Elt::BEGIN@1.26 or XML::Twig::Elt::BEGIN@1.32 at line 1 of (eval 72)[XML/Twig.pm:5871], avg 10µs/call # 3 times (17µs+11µs) by XML::Twig::Elt::BEGIN@1.17 or XML::Twig::Elt::BEGIN@1.27 or XML::Twig::Elt::BEGIN@1.33 at line 1 of (eval 73)[XML/Twig.pm:5871], avg 9µs/call # 2 times (23µs+8µs) by XML::Twig::BEGIN@1.52 or XML::Twig::BEGIN@1.62 at line 1 of (eval 108)[XML/Twig.pm:1750], avg 15µs/call # 2 times (13µs+8µs) by XML::Twig::BEGIN@1.53 or XML::Twig::BEGIN@1.63 at line 1 of (eval 109)[XML/Twig.pm:1750], avg 11µs/call # 2 times (13µs+8µs) by XML::Twig::Elt::BEGIN@1.22 or XML::Twig::Elt::BEGIN@1.44 at line 1 of (eval 78)[XML/Twig.pm:5871], avg 11µs/call # 2 times (13µs+8µs) by XML::Twig::BEGIN@1.54 or XML::Twig::BEGIN@1.64 at line 1 of (eval 110)[XML/Twig.pm:1750], avg 11µs/call # 2 times (12µs+8µs) by XML::Twig::BEGIN@1.55 or XML::Twig::BEGIN@1.65 at line 1 of (eval 111)[XML/Twig.pm:1750], avg 10µs/call # 2 times (13µs+8µs) by XML::Twig::BEGIN@1.58 or XML::Twig::BEGIN@1.68 at line 1 of (eval 114)[XML/Twig.pm:1750], avg 10µs/call # 2 times (12µs+8µs) by XML::Twig::BEGIN@1.59 or XML::Twig::BEGIN@1.69 at line 1 of (eval 115)[XML/Twig.pm:1750], avg 10µs/call # 2 times (12µs+8µs) by XML::Twig::BEGIN@1.56 or XML::Twig::BEGIN@1.66 at line 1 of (eval 112)[XML/Twig.pm:1750], avg 10µs/call # 2 times (12µs+8µs) by XML::Twig::Elt::BEGIN@1.15 or XML::Twig::Elt::BEGIN@1.25 at line 1 of (eval 71)[XML/Twig.pm:5871], avg 10µs/call # 2 times (12µs+8µs) by XML::Twig::BEGIN@1.51 or XML::Twig::BEGIN@1.61 at line 1 of (eval 107)[XML/Twig.pm:1750], avg 10µs/call # once (9µs+19µs) by Test::More::BEGIN@1783 at line 1783 of Test/More.pm # once (20µs+4µs) by XML::Twig::Elt::BEGIN@1 at line 1 of (eval 58)[XML/Twig.pm:7113] # once (8µs+15µs) by Test2::API::Instance::BEGIN@63 at line 63 of Test2/API/Instance.pm # once (14µs+9µs) by XML::Twig::Elt::BEGIN@1.73 at line 1 of (eval 129)[XML/Twig.pm:7113] # once (9µs+14µs) by Test::More::BEGIN@1408 at line 1408 of Test/More.pm # once (9µs+11µs) by File::Glob::BEGIN@50 at line 50 of File/Glob.pm # once (10µs+7µs) by XML::Twig::Elt::BEGIN@1.70 at line 1 of (eval 126)[XML/Twig.pm:5871] # once (10µs+5µs) by Test::Builder::BEGIN@684 at line 684 of Test/Builder.pm # once (10µs+5µs) by Exporter::Heavy::BEGIN@202 at line 202 of Exporter/Heavy.pm # once (10µs+5µs) by Test2::Util::BEGIN@72 at line 72 of Test2/Util.pm # once (9µs+5µs) by Test2::API::Stack::BEGIN@81 at line 81 of Test2/API/Stack.pm # once (10µs+4µs) by JSON::PP::BEGIN@209 at line 209 of JSON/PP.pm # once (8µs+6µs) by XML::Twig::Elt::BEGIN@1.7 at line 1 of (eval 63)[XML/Twig.pm:7113] # once (9µs+5µs) by Test2::Event::Ok::BEGIN@22 at line 22 of Test2/Event/Ok.pm # once (9µs+5µs) by JSON::PP::BEGIN@493 at line 493 of JSON/PP.pm # once (9µs+5µs) by Test2::Hub::Interceptor::BEGIN@93 at line 93 of Test2/Hub/Interceptor.pm # once (9µs+5µs) by Test2::Formatter::TAP::BEGIN@89 at line 89 of Test2/Formatter/TAP.pm # once (9µs+5µs) by Test::Builder::BEGIN@1057 at line 1057 of Test/Builder.pm # once (8µs+5µs) by Test2::EventFacet::Meta::BEGIN@12 at line 12 of Test2/EventFacet/Meta.pm # once (9µs+4µs) by JSON::PP::BEGIN@1285 at line 1285 of JSON/PP.pm # once (9µs+5µs) by Test::Builder::BEGIN@1167 at line 1167 of Test/Builder.pm # once (8µs+5µs) by Test2::API::BEGIN@71 at line 71 of Test2/API.pm # once (9µs+4µs) by Test2::API::Context::BEGIN@72 at line 72 of Test2/API/Context.pm # once (8µs+5µs) by Spreadsheet::ParseExcel::BEGIN@2705 at line 2705 of Spreadsheet/ParseExcel.pm # once (9µs+4µs) by URI::Escape::BEGIN@191 at line 191 of URI/Escape.pm # once (8µs+5µs) by Spreadsheet::ParseExcel::Workbook::BEGIN@189 at line 189 of Spreadsheet/ParseExcel/Workbook.pm # once (8µs+5µs) by Test2::Hub::Subtest::BEGIN@24 at line 24 of Test2/Hub/Subtest.pm # once (8µs+5µs) by Test::Builder::BEGIN@797 at line 797 of Test/Builder.pm # once (8µs+5µs) by overload::BEGIN@102 at line 102 of overload.pm # once (8µs+5µs) by Spreadsheet::ParseExcel::Worksheet::BEGIN@625 at line 625 of Spreadsheet/ParseExcel/Worksheet.pm # once (8µs+5µs) by Test2::Event::Subtest::BEGIN@20 at line 20 of Test2/Event/Subtest.pm # once (8µs+4µs) by XML::Twig::BEGIN@812 at line 812 of XML/Twig.pm # once (7µs+5µs) by XML::Twig::Elt::BEGIN@1.8 at line 1 of (eval 64)[XML/Twig.pm:7113] # once (8µs+4µs) by Test2::Util::BEGIN@80 at line 80 of Test2/Util.pm # once (8µs+4µs) by JSON::PP::BEGIN@1471 at line 1471 of JSON/PP.pm # once (8µs+5µs) by Test2::EventFacet::Trace::BEGIN@16 at line 16 of Test2/EventFacet/Trace.pm # once (8µs+4µs) by Storable::BEGIN@66 at line 66 of Storable.pm # once (8µs+4µs) by Test2::Util::BEGIN@113 at line 113 of Test2/Util.pm # once (8µs+4µs) by Spreadsheet::ParseExcel::Cell::BEGIN@169 at line 169 of Spreadsheet/ParseExcel/Cell.pm # once (8µs+4µs) by Test::Builder::BEGIN@1519 at line 1519 of Test/Builder.pm # once (10µs+2µs) by Carp::BEGIN@744 at line 744 of Carp.pm # once (7µs+5µs) by Test2::Hub::Subtest::BEGIN@47 at line 47 of Test2/Hub/Subtest.pm # once (8µs+4µs) by Test2::Formatter::TAP::BEGIN@113 at line 113 of Test2/Formatter/TAP.pm # once (8µs+4µs) by Test::More::BEGIN@1494 at line 1494 of Test/More.pm # once (7µs+4µs) by Test2::Util::BEGIN@89 at line 89 of Test2/Util.pm # once (10µs+2µs) by Carp::BEGIN@6 at line 24 of Carp.pm # once (7µs+4µs) by Test::Builder::BEGIN@62 at line 62 of Test/Builder.pm # once (7µs+4µs) by XML::Twig::Elt::BEGIN@1.6 at line 1 of (eval 62)[XML/Twig.pm:7113] # once (7µs+4µs) by XML::Twig::Elt::BEGIN@1.3 at line 1 of (eval 59)[XML/Twig.pm:5871] # once (7µs+4µs) by XML::Twig::BEGIN@1.46 at line 1 of (eval 102)[XML/Twig.pm:1750] # once (7µs+4µs) by JSON::PP::BEGIN@515 at line 515 of JSON/PP.pm # once (7µs+4µs) by XML::Twig::Elt::BEGIN@1.5 at line 1 of (eval 61)[XML/Twig.pm:7113] # once (7µs+4µs) by Test2::Util::HashBase::BEGIN@18 at line 18 of Test2/Util/HashBase.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.4 at line 1 of (eval 60)[XML/Twig.pm:7113] # once (7µs+4µs) by Test2::Hub::Subtest::BEGIN@66 at line 66 of Test2/Hub/Subtest.pm # once (7µs+4µs) by Test::Builder::BEGIN@1540 at line 1540 of Test/Builder.pm # once (6µs+4µs) by Test::Builder::BEGIN@103 at line 103 of Test/Builder.pm # once (7µs+4µs) by XML::Twig::Elt::BEGIN@1.38 at line 1 of (eval 94)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.20 at line 1 of (eval 76)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.47 at line 1 of (eval 103)[XML/Twig.pm:7113] # once (7µs+4µs) by Test2::Util::HashBase::BEGIN@29 at line 29 of Test2/Util/HashBase.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.34 at line 1 of (eval 90)[XML/Twig.pm:5871] # once (6µs+4µs) by Test::Builder::BEGIN@131 at line 131 of Test/Builder.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.23 at line 1 of (eval 79)[XML/Twig.pm:5871] # once (6µs+4µs) by Test::Builder::BEGIN@1557 at line 1557 of Test/Builder.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.13 at line 1 of (eval 69)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.31 at line 1 of (eval 87)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.14 at line 1 of (eval 70)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.9 at line 1 of (eval 65)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.10 at line 1 of (eval 66)[XML/Twig.pm:7113] # once (6µs+4µs) by Test2::API::BEGIN@76 at line 76 of Test2/API.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.41 at line 1 of (eval 97)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.35 at line 1 of (eval 91)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.30 at line 1 of (eval 86)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.39 at line 1 of (eval 95)[XML/Twig.pm:5871] # once (6µs+4µs) by Test::Builder::BEGIN@117 at line 117 of Test/Builder.pm # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.45 at line 1 of (eval 101)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.12 at line 1 of (eval 68)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.11 at line 1 of (eval 67)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.71 at line 1 of (eval 127)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.72 at line 1 of (eval 128)[XML/Twig.pm:5871] # once (6µs+3µs) by XML::Twig::Elt::BEGIN@1.40 at line 1 of (eval 96)[XML/Twig.pm:5871] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.29 at line 1 of (eval 85)[XML/Twig.pm:7113] # once (6µs+4µs) by XML::Twig::Elt::BEGIN@1.24 at line 1 of (eval 80)[XML/Twig.pm:5871] # once (6µs+3µs) by File::Copy::BEGIN@12.1 at line 12 of File/Copy.pm # once (6µs+1µs) by Test::Builder::BEGIN@121 at line 121 of Test/Builder.pm # once (4µs+1000ns) by File::Copy::BEGIN@13 at line 13 of File/Copy.pm
{
40612816µs shift;
407
40812815µs my $catmask ;
409128104µs my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
410
411 # append 'all' when implied (empty import list or after a lone "FATAL")
41212889µs push @_, 'all' if !@_ || @_==1 && $_[0] eq 'FATAL';
413
414128107µs128574µs $mask = _expand_bits($mask);
# spent 574µs making 128 calls to warnings::_expand_bits, avg 4µs/call
41512854µs foreach my $word ( @_ ) {
41612937µs next if $NoOp{$word};
417129204µs if ($word eq 'FATAL') {
418 next;
419 }
420 elsif ($catmask = $Bits{$word}) {
421 $mask = ~(~$mask | $catmask | $DeadBits{$word});
422 }
423 else
424 { Croaker("Unknown warnings category '$word'")}
425 }
426
427128316µs ${^WARNING_BITS} = $mask ;
428}
429
43022µsmy %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = ();
431
432sub LEVEL () { 8 };
433sub MESSAGE () { 4 };
434sub FATAL () { 2 };
435sub NORMAL () { 1 };
436
437sub __chk
438{
439 my $category ;
440 my $offset ;
441 my $isobj = 0 ;
442 my $wanted = shift;
443 my $has_message = $wanted & MESSAGE;
444 my $has_level = $wanted & LEVEL ;
445
446 if ($has_level) {
447 if (@_ != ($has_message ? 3 : 2)) {
448 my $sub = (caller 1)[3];
449 my $syntax = $has_message
450 ? "category, level, 'message'"
451 : 'category, level';
452 Croaker("Usage: $sub($syntax)");
453 }
454 }
455 elsif (not @_ == 1 || @_ == ($has_message ? 2 : 0)) {
456 my $sub = (caller 1)[3];
457 my $syntax = $has_message ? "[category,] 'message'" : '[category]';
458 Croaker("Usage: $sub($syntax)");
459 }
460
461 my $message = pop if $has_message;
462
463 if (@_) {
464 # check the category supplied.
465 $category = shift ;
466 if (my $type = ref $category) {
467 Croaker("not an object")
468 if exists $builtin_type{$type};
469 $category = $type;
470 $isobj = 1 ;
471 }
472 $offset = $Offsets{$category};
473 Croaker("Unknown warnings category '$category'")
474 unless defined $offset;
475 }
476 else {
477 $category = caller(1);
478 $offset = $Offsets{$category};
479 Croaker("package '$category' not registered for warnings")
480 unless defined $offset ;
481 }
482
483 my $i;
484
485 if ($isobj) {
486 my $pkg;
487 $i = 2;
488 while (do { { package DB; $pkg = (caller($i++))[0] } } ) {
489 last unless @DB::args && $DB::args[0] =~ /^$category=/ ;
490 }
491 $i -= 2 ;
492 }
493 elsif ($has_level) {
494 $i = 2 + shift;
495 }
496 else {
497 $i = _error_loc(); # see where Carp will allocate the error
498 }
499
500 # Default to 0 if caller returns nothing. Default to $DEFAULT if it
501 # explicitly returns undef.
502 my(@callers_bitmask) = (caller($i))[9] ;
503 my $callers_bitmask =
504 @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ;
505 length($callers_bitmask) > ($offset >> 3) or $offset = $Offsets{all};
506
507 my @results;
508 foreach my $type (FATAL, NORMAL) {
509 next unless $wanted & $type;
510
511 push @results, vec($callers_bitmask, $offset + $type - 1, 1);
512 }
513
514 # &enabled and &fatal_enabled
515 return $results[0] unless $has_message;
516
517 # &warnif, and the category is neither enabled as warning nor as fatal
518 return if ($wanted & (NORMAL | FATAL | MESSAGE))
519 == (NORMAL | FATAL | MESSAGE)
520 && !($results[0] || $results[1]);
521
522 # If we have an explicit level, bypass Carp.
523 if ($has_level and @callers_bitmask) {
524 # logic copied from util.c:mess_sv
525 my $stuff = " at " . join " line ", (caller $i)[1,2];
526 $stuff .= sprintf ", <%s> %s %d",
527 *${^LAST_FH}{NAME},
528 ($/ eq "\n" ? "line" : "chunk"), $.
529 if $. && ${^LAST_FH};
530 die "$message$stuff.\n" if $results[0];
531 return warn "$message$stuff.\n";
532 }
533
534 require Carp;
535 Carp::croak($message) if $results[0];
536 # will always get here for &warn. will only get here for &warnif if the
537 # category is enabled
538 Carp::carp($message);
539}
540
541sub _mkMask
542
# spent 22µs within warnings::_mkMask which was called 10 times, avg 2µs/call: # 5 times (17µs+0s) by warnings::register_categories at line 557, avg 3µs/call # 5 times (6µs+0s) by warnings::register_categories at line 558, avg 1µs/call
{
543102µs my ($bit) = @_;
544102µs my $mask = "";
545
5461012µs vec($mask, $bit, 1) = 1;
5471017µs return $mask;
548}
549
550sub register_categories
551
# spent 61µs (39+22) within warnings::register_categories which was called 5 times, avg 12µs/call: # 5 times (39µs+22µs) by warnings::register::import at line 22 of warnings/register.pm, avg 12µs/call
{
55252µs my @names = @_;
553
55458µs for my $name (@names) {
55554µs if (! defined $Bits{$name}) {
55652µs $Offsets{$name} = $LAST_BIT;
55756µs517µs $Bits{$name} = _mkMask($LAST_BIT++);
# spent 17µs making 5 calls to warnings::_mkMask, avg 3µs/call
55854µs56µs $DeadBits{$name} = _mkMask($LAST_BIT++);
# spent 6µs making 5 calls to warnings::_mkMask, avg 1µs/call
55953µs if (length($Bits{$name}) > length($Bits{all})) {
56021µs $Bits{all} .= "\x55";
5612700ns $DeadBits{all} .= "\xaa";
562 }
563 }
564 }
565}
566
567sub _error_loc {
568 require Carp;
569 goto &Carp::short_error_loc; # don't introduce another stack frame
570}
571
572sub enabled
573{
574 return __chk(NORMAL, @_);
575}
576
577sub fatal_enabled
578{
579 return __chk(FATAL, @_);
580}
581
582sub warn
583{
584 return __chk(FATAL | MESSAGE, @_);
585}
586
587sub warnif
588{
589 return __chk(NORMAL | FATAL | MESSAGE, @_);
590}
591
592sub enabled_at_level
593{
594 return __chk(NORMAL | LEVEL, @_);
595}
596
597sub fatal_enabled_at_level
598{
599 return __chk(FATAL | LEVEL, @_);
600}
601
602sub warn_at_level
603{
604 return __chk(FATAL | MESSAGE | LEVEL, @_);
605}
606
607sub warnif_at_level
608{
609 return __chk(NORMAL | FATAL | MESSAGE | LEVEL, @_);
610}
611
612# These are not part of any public interface, so we can delete them to save
613# space.
61414µsdelete @warnings::{qw(NORMAL FATAL MESSAGE LEVEL)};
615
616126µs1;
617__END__