nytprof run results of /variantgraph/<ID> and /relation/<ID>/relationships
[scpubgit/stemmatology.git] / stemmaweb / nytprof-runs / variantgraph-uuid / Class-MOP-Class-pm-103-line.html
CommitLineData
8e30e889 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3<!--
4This file was generated by Devel::NYTProf version 4.06
5-->
6<head>
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8 <meta http-equiv="Content-Language" content="en-us" />
9 <title>Profile of Class/MOP/Class.pm</title>
10<link rel="stylesheet" type="text/css" href="style.css" />
11 <script type="text/javascript" src="js/jquery-min.js"></script>
12
13 <script type="text/javascript" src="js/jquery-tablesorter-min.js"></script>
14 <link rel="stylesheet" type="text/css" href="js/style-tablesorter.css" />
15 <script type="text/javascript">
16 // when a column is first clicked on to sort it, use descending order
17 // XXX doesn't seem to work (and not just because the tablesorter formatSortingOrder() is broken)
18 $.tablesorter.defaults.sortInitialOrder = "desc";
19 // add parser through the tablesorter addParser method
20 $.tablesorter.addParser({
21 id: 'fmt_time', // name of this parser
22 is: function(s) {
23 return false; // return false so this parser is not auto detected
24 },
25 format: function(orig) { // format data for normalization
26 // console.log(orig);
27 val = orig.replace(/ns/,'');
28 if (val != orig) { return val / (1000*1000*1000); }
29 val = orig.replace(/µs/,''); /* XXX use &micro; ? */
30 if (val != orig) { return val / (1000*1000); }
31 var val = orig.replace(/ms/,'');
32 if (val != orig) { return val / (1000); }
33 var val = orig.replace(/s/,'');
34 if (val != orig) { return val; }
35 if (orig == '0') { return orig; }
36 console.log('no match for fmt_time of '.concat(orig));
37 return orig;
38 },
39 type: 'numeric' // set type, either numeric or text
40 });
41 </script>
42</head>
43
44<body >
45<div class="header" style="position: relative; overflow-x: hidden; overflow-y: hidden; z-index: 0; ">
46<div class="header_back">
47 <a href="index.html">&larr; Index</a>
48 </div>
49<div class="headerForeground" style="float: left">
50 <span class="siteTitle">NYTProf Performance Profile</span>
51 <span class="siteSubtitle">&emsp;&emsp;<span>&laquo;&emsp;<span class="mode_btn"><a href="Class-MOP-Class-pm-103-block.html">block view</a></span>&emsp;&bull;&emsp;<span class="mode_btn mode_btn_selected">line view</span>&emsp;&bull;&emsp;<span class="mode_btn"><a href="Class-MOP-Class-pm-103-sub.html">sub view</a></span>&emsp;&raquo;</span><br />
52 For script/nytprof.pl
53 </span>
54</div>
55<div class="headerForeground" style="float: right; text-align: right">
56 <span class="siteTitle">&nbsp;</span>
57 <span class="siteSubtitle">Run on Thu May 31 16:29:39 2012<br />Reported on Thu May 31 16:38:29 2012</span>
58</div>
59<div style="position: absolute; left: 0px; top: 0%; width: 100%; height: 101%; z-index: -1; background-color: rgb(17, 136, 255); "></div>
60<div style="position: absolute; left: 0px; top: 2%; width: 100%; height: 99%; z-index: -1; background-color: rgb(16, 134, 253); "></div>
61<div style="position: absolute; left: 0px; top: 4%; width: 100%; height: 97%; z-index: -1; background-color: rgb(16, 133, 252); "></div>
62<div style="position: absolute; left: 0px; top: 6%; width: 100%; height: 95%; z-index: -1; background-color: rgb(15, 131, 250); "></div>
63<div style="position: absolute; left: 0px; top: 8%; width: 100%; height: 93%; z-index: -1; background-color: rgb(15, 130, 249); "></div>
64<div style="position: absolute; left: 0px; top: 10%; width: 100%; height: 91%; z-index: -1; background-color: rgb(15, 129, 248); "></div>
65<div style="position: absolute; left: 0px; top: 12%; width: 100%; height: 89%; z-index: -1; background-color: rgb(14, 127, 246); "></div>
66<div style="position: absolute; left: 0px; top: 14%; width: 100%; height: 87%; z-index: -1; background-color: rgb(14, 126, 245); "></div>
67<div style="position: absolute; left: 0px; top: 16%; width: 100%; height: 85%; z-index: -1; background-color: rgb(14, 125, 244); "></div>
68<div style="position: absolute; left: 0px; top: 18%; width: 100%; height: 83%; z-index: -1; background-color: rgb(13, 123, 242); "></div>
69<div style="position: absolute; left: 0px; top: 20%; width: 100%; height: 81%; z-index: -1; background-color: rgb(13, 122, 241); "></div>
70<div style="position: absolute; left: 0px; top: 22%; width: 100%; height: 79%; z-index: -1; background-color: rgb(13, 121, 240); "></div>
71<div style="position: absolute; left: 0px; top: 24%; width: 100%; height: 77%; z-index: -1; background-color: rgb(12, 119, 238); "></div>
72<div style="position: absolute; left: 0px; top: 26%; width: 100%; height: 75%; z-index: -1; background-color: rgb(12, 118, 237); "></div>
73<div style="position: absolute; left: 0px; top: 28%; width: 100%; height: 73%; z-index: -1; background-color: rgb(12, 116, 235); "></div>
74<div style="position: absolute; left: 0px; top: 30%; width: 100%; height: 71%; z-index: -1; background-color: rgb(11, 115, 234); "></div>
75<div style="position: absolute; left: 0px; top: 32%; width: 100%; height: 69%; z-index: -1; background-color: rgb(11, 114, 233); "></div>
76<div style="position: absolute; left: 0px; top: 34%; width: 100%; height: 67%; z-index: -1; background-color: rgb(11, 112, 231); "></div>
77<div style="position: absolute; left: 0px; top: 36%; width: 100%; height: 65%; z-index: -1; background-color: rgb(10, 111, 230); "></div>
78<div style="position: absolute; left: 0px; top: 38%; width: 100%; height: 63%; z-index: -1; background-color: rgb(10, 110, 229); "></div>
79<div style="position: absolute; left: 0px; top: 40%; width: 100%; height: 61%; z-index: -1; background-color: rgb(10, 108, 227); "></div>
80<div style="position: absolute; left: 0px; top: 42%; width: 100%; height: 59%; z-index: -1; background-color: rgb(9, 107, 226); "></div>
81<div style="position: absolute; left: 0px; top: 44%; width: 100%; height: 57%; z-index: -1; background-color: rgb(9, 106, 225); "></div>
82<div style="position: absolute; left: 0px; top: 46%; width: 100%; height: 55%; z-index: -1; background-color: rgb(9, 104, 223); "></div>
83<div style="position: absolute; left: 0px; top: 48%; width: 100%; height: 53%; z-index: -1; background-color: rgb(8, 103, 222); "></div>
84<div style="position: absolute; left: 0px; top: 50%; width: 100%; height: 51%; z-index: -1; background-color: rgb(8, 102, 221); "></div>
85<div style="position: absolute; left: 0px; top: 52%; width: 100%; height: 49%; z-index: -1; background-color: rgb(8, 100, 219); "></div>
86<div style="position: absolute; left: 0px; top: 54%; width: 100%; height: 47%; z-index: -1; background-color: rgb(7, 99, 218); "></div>
87<div style="position: absolute; left: 0px; top: 56%; width: 100%; height: 45%; z-index: -1; background-color: rgb(7, 97, 216); "></div>
88<div style="position: absolute; left: 0px; top: 58%; width: 100%; height: 43%; z-index: -1; background-color: rgb(7, 96, 215); "></div>
89<div style="position: absolute; left: 0px; top: 60%; width: 100%; height: 41%; z-index: -1; background-color: rgb(6, 95, 214); "></div>
90<div style="position: absolute; left: 0px; top: 62%; width: 100%; height: 39%; z-index: -1; background-color: rgb(6, 93, 212); "></div>
91<div style="position: absolute; left: 0px; top: 64%; width: 100%; height: 37%; z-index: -1; background-color: rgb(6, 92, 211); "></div>
92<div style="position: absolute; left: 0px; top: 66%; width: 100%; height: 35%; z-index: -1; background-color: rgb(5, 91, 210); "></div>
93<div style="position: absolute; left: 0px; top: 68%; width: 100%; height: 33%; z-index: -1; background-color: rgb(5, 89, 208); "></div>
94<div style="position: absolute; left: 0px; top: 70%; width: 100%; height: 31%; z-index: -1; background-color: rgb(5, 88, 207); "></div>
95<div style="position: absolute; left: 0px; top: 72%; width: 100%; height: 29%; z-index: -1; background-color: rgb(4, 87, 206); "></div>
96<div style="position: absolute; left: 0px; top: 74%; width: 100%; height: 27%; z-index: -1; background-color: rgb(4, 85, 204); "></div>
97<div style="position: absolute; left: 0px; top: 76%; width: 100%; height: 25%; z-index: -1; background-color: rgb(4, 84, 203); "></div>
98<div style="position: absolute; left: 0px; top: 78%; width: 100%; height: 23%; z-index: -1; background-color: rgb(3, 82, 201); "></div>
99<div style="position: absolute; left: 0px; top: 80%; width: 100%; height: 21%; z-index: -1; background-color: rgb(3, 81, 200); "></div>
100<div style="position: absolute; left: 0px; top: 82%; width: 100%; height: 19%; z-index: -1; background-color: rgb(3, 80, 199); "></div>
101<div style="position: absolute; left: 0px; top: 84%; width: 100%; height: 17%; z-index: -1; background-color: rgb(2, 78, 197); "></div>
102<div style="position: absolute; left: 0px; top: 86%; width: 100%; height: 15%; z-index: -1; background-color: rgb(2, 77, 196); "></div>
103<div style="position: absolute; left: 0px; top: 88%; width: 100%; height: 13%; z-index: -1; background-color: rgb(2, 76, 195); "></div>
104<div style="position: absolute; left: 0px; top: 90%; width: 100%; height: 11%; z-index: -1; background-color: rgb(1, 74, 193); "></div>
105<div style="position: absolute; left: 0px; top: 92%; width: 100%; height: 9%; z-index: -1; background-color: rgb(1, 73, 192); "></div>
106<div style="position: absolute; left: 0px; top: 94%; width: 100%; height: 7%; z-index: -1; background-color: rgb(1, 72, 191); "></div>
107<div style="position: absolute; left: 0px; top: 96%; width: 100%; height: 5%; z-index: -1; background-color: rgb(0, 70, 189); "></div>
108<div style="position: absolute; left: 0px; top: 98%; width: 100%; height: 3%; z-index: -1; background-color: rgb(0, 69, 188); "></div>
109<div style="position: absolute; left: 0px; top: 100%; width: 100%; height: 1%; z-index: -1; background-color: rgb(0, 68, 187); "></div>
110</div>
111
112<div class="body_content"><br />
113<table class="file_summary"><tr><td class="h">Filename</td><td align="left"><a href="file:///Users/edenc/perl5/lib/perl5/darwin-multi-2level/Class/MOP/Class.pm">/Users/edenc/perl5/lib/perl5/darwin-multi-2level/Class/MOP/Class.pm</a></td></tr>
114<tr><td class="h">Statements</td><td align="left">Executed 563608 statements in 698ms</td></tr></table>
115
116 <table id="subs_table" border="1" cellpadding="0" class="tablesorter">
117 <caption>Subroutines</caption>
118 <thead>
119 <tr>
120 <th>Calls</th>
121 <th><span title="Number of Places sub is called from">P</span></th>
122 <th><span title="Number of Files sub is called from">F</span></th>
123 <th>Exclusive<br />Time</th>
124 <th>Inclusive<br />Time</th>
125 <th>Subroutine</th>
126 </tr>
127 </thead>
128 <tbody>
129<tr><td class="c0">77643</td><td class="c0">31</td><td class="c0">18</td><td class="c0"><span title="0.6%">327ms</span></td><td class="c0"><span title="1.1%">579ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::initialize</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#32">initialize</a>&nbsp;(recurses: max depth 4, inclusive time 8.12ms)</span></td></tr>
130<tr><td class="c0">1396</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.1%">65.3ms</span></td><td class="c0"><span title="0.7%">387ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_construct_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#501">_construct_instance</a>&nbsp;(recurses: max depth 1, inclusive time 847&micro;s)</span></td></tr>
131<tr><td class="c0">1709</td><td class="c0">15</td><td class="c0">6</td><td class="c0"><span title="0.1%">57.2ms</span></td><td class="c0"><span title="0.2%">111ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::get_all_attributes</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#926">get_all_attributes</a></span></td></tr>
132<tr><td class="c0">1687</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.1%">26.8ms</span></td><td class="c0"><span title="0.1%">43.9ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_single_metaclass_is_compatible</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#278">_single_metaclass_is_compatible</a></span></td></tr>
133<tr><td class="c0">1935</td><td class="c0">3</td><td class="c1">2</td><td class="c0"><span title="0.0%">24.5ms</span></td><td class="c0"><span title="0.1%">47.0ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_single_metaclass_can_be_made_compatible</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#348">_single_metaclass_can_be_made_compatible</a></span></td></tr>
134<tr><td class="c1">454</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.0%">17.0ms</span></td><td class="c0"><span title="0.4%">224ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_check_metaclass_compatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#200">_check_metaclass_compatibility</a>&nbsp;(recurses: max depth 4, inclusive time 7.09ms)</span></td></tr>
135<tr><td class="c0">3201</td><td class="c0">5</td><td class="c0">3</td><td class="c0"><span title="0.0%">16.5ms</span></td><td class="c0"><span title="0.0%">25.2ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::linearized_isa</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#998">linearized_isa</a></span></td></tr>
136<tr><td class="c2">266</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.0%">12.7ms</span></td><td class="c1"><span title="0.0%">16.4ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::CORE:sort</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#Class__MOP__Class__CORE_sort">CORE:sort</a>&nbsp;(opcode)</span></td></tr>
137<tr><td class="c0">671</td><td class="c0">7</td><td class="c0">7</td><td class="c0"><span title="0.0%">12.3ms</span></td><td class="c0"><span title="0.1%">78.1ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::find_method_by_name</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1118">find_method_by_name</a></span></td></tr>
138<tr><td class="c0">834</td><td class="c1">2</td><td class="c1">2</td><td class="c0"><span title="0.0%">11.7ms</span></td><td class="c0"><span title="0.5%">238ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_slot_initializer</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#595">_inline_slot_initializer</a></span></td></tr>
139<tr><td class="c0">1223</td><td class="c0">7</td><td class="c0">7</td><td class="c0"><span title="0.0%">10.9ms</span></td><td class="c0"><span title="0.6%">303ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::new_object</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#488">new_object</a>&nbsp;(recurses: max depth 1, inclusive time 887&micro;s)</span></td></tr>
140<tr><td class="c2">287</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">9.34ms</span></td><td class="c0"><span title="0.1%">75.7ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_can_fix_metaclass_incompatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#327">_can_fix_metaclass_incompatibility</a></span></td></tr>
141<tr><td class="c0">653</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">8.36ms</span></td><td class="c0"><span title="3.0%">1.57s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_post_add_attribute</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#883">_post_add_attribute</a></span></td></tr>
142<tr><td class="c0">597</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">7.86ms</span></td><td class="c0"><span title="0.2%">89.6ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_create_meta_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#723">_create_meta_instance</a></span></td></tr>
143<tr><td class="c0">493</td><td class="c0">4</td><td class="c0">3</td><td class="c0"><span title="0.0%">7.63ms</span></td><td class="c0"><span title="0.1%">38.7ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::find_next_method_by_name</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1164">find_next_method_by_name</a></span></td></tr>
144<tr><td class="c1">353</td><td class="c0">7</td><td class="c0">5</td><td class="c0"><span title="0.0%">6.72ms</span></td><td class="c1"><span title="0.0%">20.7ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::find_attribute_by_name</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#913">find_attribute_by_name</a></span></td></tr>
145<tr><td class="c0">1624</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">6.72ms</span></td><td class="c0"><span title="0.1%">48.7ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_check_single_metaclass_compatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#260">_check_single_metaclass_compatibility</a></span></td></tr>
146<tr><td class="c0">2982</td><td class="c0">15</td><td class="c0">5</td><td class="c0"><span title="0.0%">6.71ms</span></td><td class="c0"><span title="0.2%">96.4ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::get_meta_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#718">get_meta_instance</a></span></td></tr>
147<tr><td class="c2">254</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">6.23ms</span></td><td class="c0"><span title="0.3%">154ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_construct_class_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#76">_construct_class_instance</a>&nbsp;(recurses: max depth 4, inclusive time 5.81ms)</span></td></tr>
148<tr><td class="c3">218</td><td class="c0">3</td><td class="c0">3</td><td class="c0"><span title="0.0%">5.90ms</span></td><td class="c0"><span title="0.1%">35.1ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::find_all_methods_by_name</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1147">find_all_methods_by_name</a></span></td></tr>
149<tr><td class="c0">660</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.0%">5.68ms</span></td><td class="c3"><span title="0.0%">6.98ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::invalidate_meta_instances</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1230">invalidate_meta_instances</a></span></td></tr>
150<tr><td class="c2">320</td><td class="c0">4</td><td class="c0">3</td><td class="c0"><span title="0.0%">5.51ms</span></td><td class="c1"><span title="0.0%">23.5ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::class_precedence_list</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1002">class_precedence_list</a>&nbsp;(recurses: max depth 4, inclusive time 6.17ms)</span></td></tr>
151<tr><td class="c0">739</td><td class="c1">2</td><td class="c1">2</td><td class="c0"><span title="0.0%">5.13ms</span></td><td class="c3"><span title="0.0%">7.52ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_default_value</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#663">_inline_default_value</a></span></td></tr>
152<tr><td class="c0">1396</td><td class="c0">4</td><td class="c3">1</td><td class="c0"><span title="0.0%">4.89ms</span></td><td class="c1"><span title="0.0%">16.2ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_method_lookup_order</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1036">_method_lookup_order</a></span></td></tr>
153<tr><td class="c0">653</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">4.86ms</span></td><td class="c0"><span title="2.9%">1.54s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::__ANON__[:892]</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#889">__ANON__[:892]</a></span></td></tr>
154<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">4.77ms</span></td><td class="c0"><span title="1.1%">603ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_constructor</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1417">_inline_constructor</a></span></td></tr>
155<tr><td class="c3">202</td><td class="c0">3</td><td class="c3">1</td><td class="c1"><span title="0.0%">4.46ms</span></td><td class="c0"><span title="0.1%">62.0ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::__ANON__[:1072]</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1043">__ANON__[:1072]</a></span></td></tr>
156<tr><td class="c3">111</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">4.23ms</span></td><td class="c0"><span title="0.2%">87.2ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_destructor</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1457">_inline_destructor</a></span></td></tr>
157<tr><td class="c3">164</td><td class="c0">115</td><td class="c0">109</td><td class="c1"><span title="0.0%">3.86ms</span></td><td class="c0"><span title="1.6%">834ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::make_immutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1280">make_immutable</a>&nbsp;(recurses: max depth 1, inclusive time 1.66ms)</span></td></tr>
158<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">3.84ms</span></td><td class="c0"><span title="0.5%">276ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_slot_initializers</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#586">_inline_slot_initializers</a></span></td></tr>
159<tr><td class="c2">255</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">3.82ms</span></td><td class="c0"><span title="0.2%">117ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_fix_metaclass_incompatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#298">_fix_metaclass_incompatibility</a>&nbsp;(recurses: max depth 3, inclusive time 6.12ms)</span></td></tr>
160<tr><td class="c3">133</td><td class="c1">2</td><td class="c1">2</td><td class="c1"><span title="0.0%">3.57ms</span></td><td class="c1"><span title="0.0%">19.3ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_eval_environment</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#705">_eval_environment</a></span></td></tr>
161<tr><td class="c3">164</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">3.56ms</span></td><td class="c0"><span title="0.1%">78.0ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_immutable_metaclass</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1320">_immutable_metaclass</a>&nbsp;(recurses: max depth 1, inclusive time 334&micro;s)</span></td></tr>
162<tr><td class="c0">595</td><td class="c0">7</td><td class="c0">3</td><td class="c1"><span title="0.0%">3.37ms</span></td><td class="c3"><span title="0.0%">6.68ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_real_ref_name</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#123">_real_ref_name</a></span></td></tr>
163<tr><td class="c3">164</td><td class="c1">2</td><td class="c1">2</td><td class="c2"><span title="0.0%">2.96ms</span></td><td class="c3"><span title="0.0%">4.23ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_immutable_options</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1264">_immutable_options</a></span></td></tr>
164<tr><td class="c3">200</td><td class="c3">1</td><td class="c3">1</td><td class="c2"><span title="0.0%">2.76ms</span></td><td class="c2"><span title="0.0%">12.4ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_superclasses_updated</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#965">_superclasses_updated</a></span></td></tr>
165<tr><td class="c0">653</td><td class="c3">1</td><td class="c3">1</td><td class="c2"><span title="0.0%">2.74ms</span></td><td class="c3"><span title="0.0%">9.69ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_attach_attribute</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#878">_attach_attribute</a></span></td></tr>
166<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c2"><span title="0.0%">2.71ms</span></td><td class="c0"><span title="0.7%">353ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_new_object</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#533">_inline_new_object</a></span></td></tr>
167<tr><td class="c2">275</td><td class="c3">1</td><td class="c3">1</td><td class="c2"><span title="0.0%">2.68ms</span></td><td class="c2"><span title="0.0%">13.0ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_init_attr_from_constructor</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#626">_inline_init_attr_from_constructor</a></span></td></tr>
168<tr><td class="c3">164</td><td class="c3">1</td><td class="c3">1</td><td class="c2"><span title="0.0%">2.53ms</span></td><td class="c0"><span title="1.4%">744ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_install_inlined_code</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1392">_install_inlined_code</a></span></td></tr>
169<tr><td class="c3">164</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">2.46ms</span></td><td class="c0"><span title="1.4%">746ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_initialize_immutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1385">_initialize_immutable</a></span></td></tr>
170<tr><td class="c3">241</td><td class="c1">2</td><td class="c3">1</td><td class="c3"><span title="0.0%">2.40ms</span></td><td class="c3"><span title="0.0%">6.13ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_class_metaclass_is_compatible</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#248">_class_metaclass_is_compatible</a></span></td></tr>
171<tr><td class="c2">300</td><td class="c0">3</td><td class="c1">2</td><td class="c3"><span title="0.0%">2.29ms</span></td><td class="c3"><span title="0.0%">10.0ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_class_metaclass_can_be_made_compatible</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#341">_class_metaclass_can_be_made_compatible</a></span></td></tr>
172<tr><td class="c3">7</td><td class="c1">2</td><td class="c1">2</td><td class="c3"><span title="0.0%">2.07ms</span></td><td class="c1"><span title="0.0%">20.9ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_fixup_attributes_after_rebless</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#851">_fixup_attributes_after_rebless</a></span></td></tr>
173<tr><td class="c0">542</td><td class="c0">3</td><td class="c1">2</td><td class="c3"><span title="0.0%">1.94ms</span></td><td class="c3"><span title="0.0%">1.94ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_base_metaclasses</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#197">_base_metaclasses</a></span></td></tr>
174<tr><td class="c2">286</td><td class="c1">2</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.80ms</span></td><td class="c3"><span title="0.0%">7.24ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_init_attr_from_default</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#644">_inline_init_attr_from_default</a></span></td></tr>
175<tr><td class="c3">175</td><td class="c0">4</td><td class="c0">4</td><td class="c3"><span title="0.0%">1.73ms</span></td><td class="c0"><span title="0.1%">57.8ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::add_around_method_modifier</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1094">add_around_method_modifier</a></span></td></tr>
176<tr><td class="c3">164</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.66ms</span></td><td class="c0"><span title="0.2%">79.6ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_rebless_as_immutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1312">_rebless_as_immutable</a>&nbsp;(recurses: max depth 1, inclusive time 384&micro;s)</span></td></tr>
177<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.57ms</span></td><td class="c3"><span title="0.0%">1.80ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@13</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#13">BEGIN@13</a></span></td></tr>
178<tr><td class="c0">660</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.30ms</span></td><td class="c3"><span title="0.0%">1.30ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::invalidate_meta_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1236">invalidate_meta_instance</a></span></td></tr>
179<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.29ms</span></td><td class="c3"><span title="0.0%">1.86ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_fallback_constructor</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#549">_inline_fallback_constructor</a></span></td></tr>
180<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.28ms</span></td><td class="c3"><span title="0.0%">6.76ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@15</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#15">BEGIN@15</a></span></td></tr>
181<tr><td class="c3">44</td><td class="c1">2</td><td class="c1">2</td><td class="c3"><span title="0.0%">1.25ms</span></td><td class="c0"><span title="0.2%">99.4ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::create</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#419">create</a></span></td></tr>
182<tr><td class="c3">232</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.22ms</span></td><td class="c3"><span title="0.0%">7.10ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_check_class_metaclass_compatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#232">_check_class_metaclass_compatibility</a></span></td></tr>
183<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.04ms</span></td><td class="c3"><span title="0.0%">1.21ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@14</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#14">BEGIN@14</a></span></td></tr>
184<tr><td class="c3">81</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.03ms</span></td><td class="c3"><span title="0.0%">1.03ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_new</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#133">_new</a></span></td></tr>
185<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">1.02ms</span></td><td class="c3"><span title="0.0%">5.94ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_create_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#580">_inline_create_instance</a></span></td></tr>
186<tr><td class="c3">14</td><td class="c0">3</td><td class="c0">3</td><td class="c3"><span title="0.0%">971&micro;s</span></td><td class="c3"><span title="0.0%">8.01ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::get_all_methods</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1129">get_all_methods</a></span></td></tr>
187<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">971&micro;s</span></td><td class="c3"><span title="0.0%">1.81ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_preserve_weak_metaclasses</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#689">_inline_preserve_weak_metaclasses</a></span></td></tr>
188<tr><td class="c3">133</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">915&micro;s</span></td><td class="c3"><span title="0.0%">6.86ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_generate_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#572">_inline_generate_instance</a></span></td></tr>
189<tr><td class="c3">235</td><td class="c1">2</td><td class="c3">1</td><td class="c3"><span title="0.0%">871&micro;s</span></td><td class="c3"><span title="0.0%">871&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_add_inlined_method</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1379">_add_inlined_method</a></span></td></tr>
190<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">707&micro;s</span></td><td class="c3"><span title="0.0%">1.64ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@16</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#16">BEGIN@16</a></span></td></tr>
191<tr><td class="c3">200</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">668&micro;s</span></td><td class="c3"><span title="0.0%">668&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_superclass_metas</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#975">_superclass_metas</a></span></td></tr>
192<tr><td class="c3">33</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">604&micro;s</span></td><td class="c0"><span title="0.1%">51.1ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_accessors</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1409">_inline_accessors</a></span></td></tr>
193<tr><td class="c3">116</td><td class="c0">4</td><td class="c0">4</td><td class="c3"><span title="0.0%">491&micro;s</span></td><td class="c0"><span title="0.5%">264ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::create_anon_class</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#474">create_anon_class</a></span></td></tr>
194<tr><td class="c3">200</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">472&micro;s</span></td><td class="c3"><span title="0.0%">472&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::update_meta_instance_dependencies</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1177">update_meta_instance_dependencies</a></span></td></tr>
195<tr><td class="c1">359</td><td class="c0">3</td><td class="c0">3</td><td class="c3"><span title="0.0%">436&micro;s</span></td><td class="c3"><span title="0.0%">436&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::is_immutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1260">is_immutable</a></span></td></tr>
196<tr><td class="c3">22</td><td class="c1">2</td><td class="c3">1</td><td class="c3"><span title="0.0%">382&micro;s</span></td><td class="c3"><span title="0.0%">6.37ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::is_pristine</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1242">is_pristine</a></span></td></tr>
197<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">315&micro;s</span></td><td class="c3"><span title="0.0%">381&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@17</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#17">BEGIN@17</a></span></td></tr>
198<tr><td class="c3">21</td><td class="c0">6</td><td class="c0">5</td><td class="c3"><span title="0.0%">272&micro;s</span></td><td class="c3"><span title="0.0%">9.64ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::add_before_method_modifier</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1074">add_before_method_modifier</a></span></td></tr>
199<tr><td class="c3">15</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">265&micro;s</span></td><td class="c3"><span title="0.0%">2.92ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_fix_single_metaclass_incompatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#384">_fix_single_metaclass_incompatibility</a></span></td></tr>
200<tr><td class="c3">7</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">250&micro;s</span></td><td class="c1"><span title="0.0%">22.5ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_force_rebless_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#792">_force_rebless_instance</a></span></td></tr>
201<tr><td class="c3">197</td><td class="c0">4</td><td class="c0">3</td><td class="c3"><span title="0.0%">245&micro;s</span></td><td class="c3"><span title="0.0%">245&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::is_mutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1259">is_mutable</a></span></td></tr>
202<tr><td class="c3">7</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">160&micro;s</span></td><td class="c3"><span title="0.0%">1.70ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::remove_attribute</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#899">remove_attribute</a></span></td></tr>
203<tr><td class="c3">2</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">135&micro;s</span></td><td class="c3"><span title="0.0%">5.51ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::reinitialize</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#51">reinitialize</a></span></td></tr>
204<tr><td class="c3">7</td><td class="c1">2</td><td class="c1">2</td><td class="c3"><span title="0.0%">120&micro;s</span></td><td class="c0"><span title="0.1%">28.3ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_fix_class_metaclass_incompatibility</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#368">_fix_class_metaclass_incompatibility</a></span></td></tr>
205<tr><td class="c3">30</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">95&micro;s</span></td><td class="c3"><span title="0.0%">95&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_params</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#564">_inline_params</a></span></td></tr>
206<tr><td class="c3">26</td><td class="c0">3</td><td class="c1">2</td><td class="c3"><span title="0.0%">95&micro;s</span></td><td class="c3"><span title="0.0%">487&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::is_anon_class</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#475">is_anon_class</a></span></td></tr>
207<tr><td class="c3">30</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">75&micro;s</span></td><td class="c3"><span title="0.0%">75&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_generate_fallback_constructor</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#558">_generate_fallback_constructor</a></span></td></tr>
208<tr><td class="c3">6</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">73&micro;s</span></td><td class="c3"><span title="0.0%">1.33ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::add_after_method_modifier</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1084">add_after_method_modifier</a></span></td></tr>
209<tr><td class="c3">19</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">57&micro;s</span></td><td class="c3"><span title="0.0%">57&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::immutable_options</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1262">immutable_options</a></span></td></tr>
210<tr><td class="c3">30</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">43&micro;s</span></td><td class="c3"><span title="0.0%">43&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_extra_init</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#703">_inline_extra_init</a></span></td></tr>
211<tr><td class="c3">2</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">40&micro;s</span></td><td class="c3"><span title="0.0%">1.28ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_restore_metaobjects_from</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#401">_restore_metaobjects_from</a></span></td></tr>
212<tr><td class="c3">2</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">25&micro;s</span></td><td class="c3"><span title="0.0%">38&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_remove_generated_metaobjects</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#409">_remove_generated_metaobjects</a></span></td></tr>
213<tr><td class="c3">7</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">10&micro;s</span></td><td class="c3"><span title="0.0%">10&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::rebless_instance_away</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#847">rebless_instance_away</a></span></td></tr>
214<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">9&micro;s</span></td><td class="c3"><span title="0.0%">9&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@3</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#3">BEGIN@3</a></span></td></tr>
215<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">8&micro;s</span></td><td class="c3"><span title="0.0%">11&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@10</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#10">BEGIN@10</a></span></td></tr>
216<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">8&micro;s</span></td><td class="c3"><span title="0.0%">27&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@22</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#22">BEGIN@22</a></span></td></tr>
217<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">36&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@21</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#21">BEGIN@21</a></span></td></tr>
218<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">27&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@24</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#24">BEGIN@24</a></span></td></tr>
219<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">33&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@23</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#23">BEGIN@23</a></span></td></tr>
220<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">33&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@19</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#19">BEGIN@19</a></span></td></tr>
221<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">4.47ms</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@26</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#26">BEGIN@26</a></span></td></tr>
222<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">12&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@11</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#11">BEGIN@11</a></span></td></tr>
223<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c3"><span title="0.0%">32&micro;s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::BEGIN@20</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#20">BEGIN@20</a></span></td></tr>
224<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::__ANON__[:216]</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#213">__ANON__[:216]</a></span></td></tr>
225<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::__ANON__[:896]</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#893">__ANON__[:896]</a></span></td></tr>
226<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_anon_cache_key</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#477">_anon_cache_key</a></span></td></tr>
227<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_anon_package_prefix</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#472">_anon_package_prefix</a></span></td></tr>
228<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_clone_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#776">_clone_instance</a></span></td></tr>
229<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_clear_mop_slot</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#756">_inline_clear_mop_slot</a></span></td></tr>
230<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_get_mop_slot</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#744">_inline_get_mop_slot</a></span></td></tr>
231<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_rebless_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#738">_inline_rebless_instance</a></span></td></tr>
232<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inline_set_mop_slot</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#750">_inline_set_mop_slot</a></span></td></tr>
233<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_inlined_methods</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1377">_inlined_methods</a></span></td></tr>
234<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_rebless_as_mutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1401">_rebless_as_mutable</a></span></td></tr>
235<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::_remove_inlined_code</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1369">_remove_inlined_code</a></span></td></tr>
236<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::add_dependent_meta_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1218">add_dependent_meta_instance</a></span></td></tr>
237<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::add_meta_instance_dependencies</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1185">add_meta_instance_dependencies</a></span></td></tr>
238<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::clone_object</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#762">clone_object</a></span></td></tr>
239<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::direct_subclasses</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#987">direct_subclasses</a></span></td></tr>
240<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::get_all_method_names</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1142">get_all_method_names</a></span></td></tr>
241<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::make_mutable</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1297">make_mutable</a></span></td></tr>
242<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::rebless_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#817">rebless_instance</a></span></td></tr>
243<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::rebless_instance_back</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#830">rebless_instance_back</a></span></td></tr>
244<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::remove_dependent_meta_instance</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1223">remove_dependent_meta_instance</a></span></td></tr>
245<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::remove_meta_instance_dependencies</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#1203">remove_meta_instance_dependencies</a></span></td></tr>
246<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Class::MOP::Class::::subclasses</span>Class::MOP::Class::<a href="Class-MOP-Class-pm-103-line.html#980">subclasses</a></span></td></tr>
247</tbody></table>
248 Call graph for these subroutines as a
249 <a href="http://en.wikipedia.org/wiki/Graphviz">Graphviz</a>
250 <a href="Users-edenc-perl5-lib-perl5-darwin-multi-2level-Class-MOP-Class-pm.dot">dot language file</a>.
251
252 <table border="1" cellpadding="0">
253 <thead>
254 <tr><th>Line</th>
255 <th><span title="Number of statements executed">State<br />ments</span></th>
256 <th><span title="Time spend executing statements on the line,
257 excluding time spent executing statements in any called subroutines">Time<br />on line</span></th>
258 <th><span title="Number of subroutines calls">Calls</span></th>
259 <th><span title="Time spent in subroutines called (inclusive)">Time<br />in subs</span></th>
260 <th class="left_indent_header">Code</th>
261 </tr>
262
263 </thead>
264 <tbody>
265 <tr><td class="h"><a name="1"></a>1</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
266<tr><td class="h"><a name="2"></a>2</td><td></td><td></td><td></td><td></td><td class="s">package Class::MOP::Class;</td></tr>
267<tr><td class="h"><a name="3"></a>3</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 9&micro;s within Class::MOP::Class::BEGIN@3 which was called:
268# once (9&micro;s+0s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#5">line 5</a></div></div>BEGIN {</td></tr>
269<tr><td class="h"><a name="4"></a>4</td><td class="c3">1</td><td class="c3"><span title="Avg 5&micro;s">5&micro;s</span></td><td></td><td></td><td class="s"> $Class::MOP::Class::AUTHORITY = 'cpan:STEVAN';</td></tr>
270<tr><td class="h"><a name="5"></a>5</td><td class="c3">1</td><td class="c3"><span title="Avg 31&micro;s">31&micro;s</span></td><td class="c3">1</td><td class="c3">9&micro;s</td><td class="s">}<div class="calls"><div class="calls_out"># spent 9&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#3">Class::MOP::Class::BEGIN@3</a></div></div></td></tr>
271<tr><td class="h"><a name="6"></a>6</td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
272<tr><td class="h"><a name="7"></a>7</td><td class="c3">2</td><td class="c3"><span title="Avg 900ns">2&micro;s</span></td><td></td><td></td><td class="s"> $Class::MOP::Class::VERSION = '2.0602';</td></tr>
273<tr><td class="h"><a name="8"></a>8</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
274<tr><td class="h"><a name="9"></a>9</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
275<tr><td class="h"><a name="10"></a>10</td><td class="c3">2</td><td class="c3"><span title="Avg 10&micro;s">20&micro;s</span></td><td class="c3">2</td><td class="c3">14&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 11&micro;s (8+3) within Class::MOP::Class::BEGIN@10 which was called:
276# once (8&micro;s+3&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#10">line 10</a></div></div>use strict;<div class="calls"><div class="calls_out"># spent 11&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#10">Class::MOP::Class::BEGIN@10</a>
277# spent 3&micro;s making 1 call to <a href="strict-pm-3-line.html#34">strict::import</a></div></div></td></tr>
278<tr><td class="h"><a name="11"></a>11</td><td class="c3">2</td><td class="c3"><span title="Avg 12&micro;s">24&micro;s</span></td><td class="c3">2</td><td class="c3">18&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 12&micro;s (7+6) within Class::MOP::Class::BEGIN@11 which was called:
279# once (7&micro;s+6&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#11">line 11</a></div></div>use warnings;<div class="calls"><div class="calls_out"># spent 12&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#11">Class::MOP::Class::BEGIN@11</a>
280# spent 6&micro;s making 1 call to <a href="warnings-pm-2-line.html#386">warnings::import</a></div></div></td></tr>
281<tr><td class="h"><a name="12"></a>12</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
282<tr><td class="h"><a name="13"></a>13</td><td class="c3">2</td><td class="c3"><span title="Avg 55&micro;s">111&micro;s</span></td><td class="c3">1</td><td class="c3">1.80ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 1.80ms (1.57+233&micro;s) within Class::MOP::Class::BEGIN@13 which was called:
283# once (1.57ms+233&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#13">line 13</a></div></div>use Class::MOP::Instance;<div class="calls"><div class="calls_out"># spent 1.80ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#13">Class::MOP::Class::BEGIN@13</a></div></div></td></tr>
284<tr><td class="h"><a name="14"></a>14</td><td class="c3">2</td><td class="c3"><span title="Avg 54&micro;s">108&micro;s</span></td><td class="c3">1</td><td class="c3">1.21ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 1.21ms (1.04+167&micro;s) within Class::MOP::Class::BEGIN@14 which was called:
285# once (1.04ms+167&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#14">line 14</a></div></div>use Class::MOP::Method::Wrapped;<div class="calls"><div class="calls_out"># spent 1.21ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#14">Class::MOP::Class::BEGIN@14</a></div></div></td></tr>
286<tr><td class="h"><a name="15"></a>15</td><td class="c3">2</td><td class="c3"><span title="Avg 54&micro;s">107&micro;s</span></td><td class="c3">1</td><td class="c1">6.76ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 6.76ms (1.28+5.48) within Class::MOP::Class::BEGIN@15 which was called:
287# once (1.28ms+5.48ms) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#15">line 15</a></div></div>use Class::MOP::Method::Accessor;<div class="calls"><div class="calls_out"># spent 6.76ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#15">Class::MOP::Class::BEGIN@15</a></div></div></td></tr>
288<tr><td class="h"><a name="16"></a>16</td><td class="c3">2</td><td class="c3"><span title="Avg 61&micro;s">123&micro;s</span></td><td class="c3">1</td><td class="c3">1.64ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 1.64ms (707&micro;s+932&micro;s) within Class::MOP::Class::BEGIN@16 which was called:
289# once (707&micro;s+932&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#16">line 16</a></div></div>use Class::MOP::Method::Constructor;<div class="calls"><div class="calls_out"># spent 1.64ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#16">Class::MOP::Class::BEGIN@16</a></div></div></td></tr>
290<tr><td class="h"><a name="17"></a>17</td><td class="c3">2</td><td class="c3"><span title="Avg 55&micro;s">110&micro;s</span></td><td class="c3">1</td><td class="c3">381&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 381&micro;s (315+65) within Class::MOP::Class::BEGIN@17 which was called:
291# once (315&micro;s+65&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#17">line 17</a></div></div>use Class::MOP::MiniTrait;<div class="calls"><div class="calls_out"># spent 381&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#17">Class::MOP::Class::BEGIN@17</a></div></div></td></tr>
292<tr><td class="h"><a name="18"></a>18</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
293<tr><td class="h"><a name="19"></a>19</td><td class="c3">2</td><td class="c3"><span title="Avg 12&micro;s">25&micro;s</span></td><td class="c3">2</td><td class="c3">58&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 33&micro;s (7+25) within Class::MOP::Class::BEGIN@19 which was called:
294# once (7&micro;s+25&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#19">line 19</a></div></div>use Carp 'confess';<div class="calls"><div class="calls_out"># spent 33&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#19">Class::MOP::Class::BEGIN@19</a>
295# spent 26&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
296<tr><td class="h"><a name="20"></a>20</td><td class="c3">2</td><td class="c3"><span title="Avg 13&micro;s">26&micro;s</span></td><td class="c3">2</td><td class="c3">57&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 32&micro;s (7+25) within Class::MOP::Class::BEGIN@20 which was called:
297# once (7&micro;s+25&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#20">line 20</a></div></div>use Class::Load 'is_class_loaded', 'load_class';<div class="calls"><div class="calls_out"># spent 32&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#20">Class::MOP::Class::BEGIN@20</a>
298# spent 25&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
299<tr><td class="h"><a name="21"></a>21</td><td class="c3">2</td><td class="c3"><span title="Avg 12&micro;s">23&micro;s</span></td><td class="c3">2</td><td class="c3">65&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 36&micro;s (7+29) within Class::MOP::Class::BEGIN@21 which was called:
300# once (7&micro;s+29&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#21">line 21</a></div></div>use Scalar::Util 'blessed', 'reftype', 'weaken';<div class="calls"><div class="calls_out"># spent 36&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#21">Class::MOP::Class::BEGIN@21</a>
301# spent 29&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
302<tr><td class="h"><a name="22"></a>22</td><td class="c3">2</td><td class="c3"><span title="Avg 11&micro;s">22&micro;s</span></td><td class="c3">2</td><td class="c3">47&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 27&micro;s (8+20) within Class::MOP::Class::BEGIN@22 which was called:
303# once (8&micro;s+20&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#22">line 22</a></div></div>use Sub::Name 'subname';<div class="calls"><div class="calls_out"># spent 27&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#22">Class::MOP::Class::BEGIN@22</a>
304# spent 20&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
305<tr><td class="h"><a name="23"></a>23</td><td class="c3">2</td><td class="c3"><span title="Avg 12&micro;s">23&micro;s</span></td><td class="c3">2</td><td class="c3">59&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 33&micro;s (7+26) within Class::MOP::Class::BEGIN@23 which was called:
306# once (7&micro;s+26&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#23">line 23</a></div></div>use Try::Tiny;<div class="calls"><div class="calls_out"># spent 33&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#23">Class::MOP::Class::BEGIN@23</a>
307# spent 26&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
308<tr><td class="h"><a name="24"></a>24</td><td class="c3">2</td><td class="c3"><span title="Avg 15&micro;s">31&micro;s</span></td><td class="c3">2</td><td class="c3">47&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 27&micro;s (7+20) within Class::MOP::Class::BEGIN@24 which was called:
309# once (7&micro;s+20&micro;s) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#24">line 24</a></div></div>use List::MoreUtils 'all';<div class="calls"><div class="calls_out"># spent 27&micro;s making 1 call to <a href="Class-MOP-Class-pm-103-line.html#24">Class::MOP::Class::BEGIN@24</a>
310# spent 20&micro;s making 1 call to <a href="Exporter-pm-8-line.html#28">Exporter::import</a></div></div></td></tr>
311<tr><td class="h"><a name="25"></a>25</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
312<tr><td class="h"><a name="26"></a>26</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 4.47ms (7&micro;s+4.46) within Class::MOP::Class::BEGIN@26 which was called:
313# once (7&micro;s+4.46ms) by Class::MOP::BEGIN@26 at <a href="Class-MOP-Class-pm-103-line.html#28">line 28</a></div></div>use base 'Class::MOP::Module',</td></tr>
314<tr><td class="h"><a name="27"></a>27</td><td></td><td></td><td></td><td></td><td class="s"> 'Class::MOP::Mixin::HasAttributes',</td></tr>
315<tr><td class="h"><a name="28"></a>28</td><td class="c3">1</td><td class="c0"><span title="Avg 6.21ms">6.21ms</span></td><td class="c3">2</td><td class="c0">8.93ms</td><td class="s"> 'Class::MOP::Mixin::HasMethods';<div class="calls"><div class="calls_out"> # spent 4.47ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#26">Class::MOP::Class::BEGIN@26</a>
316 # spent 4.46ms making 1 call to <a href="base-pm-22-line.html#58">base::import</a></div></div></td></tr>
317<tr><td class="h"><a name="29"></a>29</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
318<tr><td class="h"><a name="30"></a>30</td><td></td><td></td><td></td><td></td><td class="s"># Creation</td></tr>
319<tr><td class="h"><a name="31"></a>31</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
320<tr><td class="h"><a name="32"></a>32</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 579ms (327+252) within Class::MOP::Class::initialize which was called 77643 times, avg 7&micro;s/call:
321# 32371 times (132ms+42.8ms) by Class::MOP::Attribute::has_value at <a href="Class-MOP-Attribute-pm-130-line.html#318">line 318 of Class/MOP/Attribute.pm</a>, avg 5&micro;s/call
322# 29342 times (118ms+35.9ms) by Class::MOP::Attribute::get_raw_value at <a href="Class-MOP-Attribute-pm-130-line.html#297">line 297 of Class/MOP/Attribute.pm</a>, avg 5&micro;s/call
323# 6058 times (27.3ms+6.99ms) by Class::MOP::Class::get_all_attributes at <a href="Class-MOP-Class-pm-103-line.html#928">line 928</a>, avg 6&micro;s/call
324# 3388 times (17.3ms+8.27ms) by Catalyst::Action::meta or Catalyst::ActionChain::meta or Catalyst::ActionContainer::meta or Catalyst::Component::meta or Catalyst::Controller::meta or Catalyst::DispatchType::Chained::meta or Catalyst::DispatchType::Default::meta or Catalyst::DispatchType::Index::meta or Catalyst::DispatchType::Path::meta or Catalyst::DispatchType::Regex::meta or Catalyst::DispatchType::meta or Catalyst::Dispatcher::meta or Catalyst::EngineLoader::meta or Catalyst::Exception::Base::meta or Catalyst::Exception::Detach::meta or Catalyst::Exception::Go::meta or Catalyst::Exception::meta or Catalyst::Log::meta or Catalyst::Model::KiokuDB::meta or Catalyst::Model::meta or Catalyst::Request::Upload::meta or Catalyst::Request::meta or Catalyst::Response::meta or Catalyst::Stats::meta or Catalyst::View::meta or Catalyst::meta or Class::MOP::Mixin::meta or Class::MOP::Object::meta or Data::Stream::Bulk::Array::meta or Data::Stream::Bulk::Cat::meta or Data::Stream::Bulk::Chunked::meta or Data::Stream::Bulk::DBI::meta or Data::Stream::Bulk::Filter::meta or Data::Stream::Bulk::Nil::meta or Data::Visitor::Callback::meta or Data::Visitor::meta or KiokuDB::Backend::DBI::meta or KiokuDB::Backend::Serialize::JSPON::Collapser::meta or KiokuDB::Backend::Serialize::JSPON::Expander::meta or KiokuDB::Collapser::Buffer::meta or KiokuDB::Collapser::meta or KiokuDB::Entry::Skip::meta or KiokuDB::Entry::meta or KiokuDB::Error::MissingObjects::meta or KiokuDB::Error::UnknownObjects::meta or KiokuDB::GC::Naive::Mark::Results::meta or KiokuDB::GC::Naive::Mark::meta or KiokuDB::GC::Naive::Sweep::Results::meta or KiokuDB::GC::Naive::Sweep::meta or KiokuDB::GC::Naive::meta or KiokuDB::Linker::meta or KiokuDB::LiveObjects::Scope::meta or KiokuDB::LiveObjects::TXNScope::meta or KiokuDB::LiveObjects::meta or KiokuDB::Reference::meta or KiokuDB::Serializer::JSON::meta or KiokuDB::Set::Base::meta or KiokuDB::Set::Deferred::meta or KiokuDB::Set::Loaded::meta or KiokuDB::Set::Stored::meta or KiokuDB::Stream::Objects::meta or KiokuDB::Thunk::meta or KiokuDB::TypeMap::Default::JSON::meta or KiokuDB::TypeMap::Entry::Alias::meta or KiokuDB::TypeMap::Entry::Callback::meta or KiokuDB::TypeMap::Entry::Closure::meta or KiokuDB::TypeMap::Entry::Compiled::meta or KiokuDB::TypeMap::Entry::DBIC::ResultSet::meta or KiokuDB::TypeMap::Entry::DBIC::ResultSource::meta or KiokuDB::TypeMap::Entry::DBIC::Row::meta or KiokuDB::TypeMap::Entry::DBIC::Schema::meta or KiokuDB::TypeMap::Entry::JSON::Scalar::meta or KiokuDB::TypeMap::Entry::MOP::meta or KiokuDB::TypeMap::Entry::Naive::meta or KiokuDB::TypeMap::Entry::Passthrough::meta or KiokuDB::TypeMap::Entry::Ref::meta or KiokuDB::TypeMap::Entry::Set::meta or KiokuDB::TypeMap::Entry::StorableHook::meta or KiokuDB::TypeMap::Resolver::meta or KiokuDB::TypeMap::Shadow::meta or KiokuDB::TypeMap::meta or KiokuDB::meta or KiokuX::Model::meta or Moose::Meta::Class::__ANON__::SERIAL::17::meta or Moose::Meta::Class::__ANON__::SERIAL::1::meta or Moose::Meta::Class::__ANON__::SERIAL::23::meta or Moose::Meta::Class::__ANON__::SERIAL::30::meta or Moose::Meta::Class::__ANON__::SERIAL::31::meta or Moose::Meta::Class::__ANON__::SERIAL::33::meta or Moose::Meta::Class::__ANON__::SERIAL::34::meta or Moose::Meta::Class::__ANON__::SERIAL::5::meta or Moose::Meta::Class::__ANON__::SERIAL::8::meta or Moose::Meta::Role::Application::RoleSummation::meta or Moose::Meta::Role::Application::ToClass::meta or Moose::Meta::Role::Application::ToInstance::meta or Moose::Meta::Role::Application::ToRole::meta or Moose::Meta::Role::Application::meta or Moose::Meta::Role::Composite::meta or Moose::Meta::Role::Method::Required::meta or Moose::Meta::Role::meta or Moose::Meta::TypeCoercion::Union::meta or Moose::Meta::TypeCoercion::meta or Moose::Meta::TypeConstraint::Class::meta or Moose::Meta::TypeConstraint::DuckType::meta or Moose::Meta::TypeConstraint::Enum::meta or Moose::Meta::TypeConstraint::Parameterizable::meta or Moose::Meta::TypeConstraint::Parameterized::meta or Moose::Meta::TypeConstraint::Registry::meta or Moose::Meta::TypeConstraint::Role::meta or Moose::Meta::TypeConstraint::Union::meta or Moose::Meta::TypeConstraint::meta or MooseX::Emulate::Class::Accessor::Fast::Meta::Accessor::meta or MooseX::Meta::TypeCoercion::Structured::Optional::meta or MooseX::Meta::TypeCoercion::Structured::meta or MooseX::Meta::TypeConstraint::Structured::Optional::meta or MooseX::Meta::TypeConstraint::Structured::meta or MooseX::MethodAttributes::Inheritable::meta or MooseX::Role::Parameterized::Meta::Role::Parameterizable::meta or MooseX::Role::Parameterized::Meta::Role::Parameterized::meta or MooseX::Role::Parameterized::Parameters::meta or MooseX::Traits::__ANON__::SERIAL::1::meta or MooseX::Traits::__ANON__::SERIAL::2::meta or MooseX::Traits::__ANON__::SERIAL::3::meta or MooseX::Traits::__ANON__::SERIAL::4::meta or MooseX::Traits::__ANON__::SERIAL::5::meta or MooseX::Traits::__ANON__::SERIAL::6::meta or MooseX::Traits::__ANON__::SERIAL::7::meta or MooseX::Traits::__ANON__::SERIAL::8::meta or MooseX::Types::Structured::MessageStack::meta or MooseX::Types::Structured::OverflowHandler::meta or Parse::Method::Signatures::Param::meta or Parse::Method::Signatures::Sig::meta or Parse::Method::Signatures::TypeConstraint::meta or Parse::Method::Signatures::meta or Text::Tradition::Collation::Reading::Morphology::meta or Text::Tradition::Collation::Reading::meta or Text::Tradition::Collation::Relationship::meta or Text::Tradition::Collation::RelationshipStore::meta or Text::Tradition::Collation::meta or Text::Tradition::Error::meta or Text::Tradition::Stemma::meta or Text::Tradition::TypeMap::Entry::meta or Text::Tradition::Witness::meta or Text::Tradition::meta or stemmaweb::Controller::Microservice::meta or stemmaweb::Controller::Relation::meta or stemmaweb::Controller::Root::meta or stemmaweb::Controller::Stexaminer::meta or stemmaweb::Model::Directory::meta at <a href="Class-MOP-Method-Meta-pm-92-line.html#48">line 48 of Class/MOP/Method/Meta.pm</a>, avg 8&micro;s/call
325# 1652 times (8.24ms+2.24ms) by Class::MOP::Class::find_method_by_name at <a href="Class-MOP-Class-pm-103-line.html#1123">line 1123</a>, avg 6&micro;s/call
326# 920 times (3.78ms+685&micro;s) by Class::MOP::Class::find_attribute_by_name at <a href="Class-MOP-Class-pm-103-line.html#918">line 918</a>, avg 5&micro;s/call
327# 764 times (3.62ms+1.01ms) by Class::MOP::Class::find_all_methods_by_name at <a href="Class-MOP-Class-pm-103-line.html#1154">line 1154</a>, avg 6&micro;s/call
328# 762 times (3.97ms+1.79ms) by Class::MOP::Method::Accessor::_new at <a href="Class-MOP-Method-Accessor-pm-108-line.html#50">line 50 of Class/MOP/Method/Accessor.pm</a>, avg 8&micro;s/call
329# 717 times (3.92ms+1.01ms) by Class::MOP::Class::find_next_method_by_name at <a href="Class-MOP-Class-pm-103-line.html#1171">line 1171</a>, avg 7&micro;s/call
330# 391 times (1.76ms+611&micro;s) by Moose::Meta::Attribute::_new or Moose::Meta::Method::_new or Moose::Meta::Role::Application::ToClass::_new or Moose::Meta::Role::Application::ToRole::_new or Moose::Meta::Role::_new or Moose::Meta::TypeConstraint::Parameterizable::_new or Moose::Meta::TypeConstraint::_new at <a href="(eval 83)[Eval-Closure-pm-125]-192-line.html#7">line 7 of (eval 83)[Eval/Closure.pm:125]</a>, avg 6&micro;s/call
331# 287 times (1.43ms+1.84ms) by Class::MOP::Class::_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#300">line 300</a>, avg 11&micro;s/call
332# 282 times (1.52ms+506&micro;s) by Class::MOP::Class::class_precedence_list at <a href="Class-MOP-Class-pm-103-line.html#1028">line 1028</a>, avg 7&micro;s/call
333# 173 times (1.72ms+132ms) by Moose::Meta::Class::initialize at <a href="Moose-Meta-Class-pm-136-line.html#79">line 79 of Moose/Meta/Class.pm</a>, avg 775&micro;s/call
334# 152 times (694&micro;s+231&micro;s) by Class::MOP::Attribute::set_initial_value at <a href="Class-MOP-Attribute-pm-130-line.html#261">line 261 of Class/MOP/Attribute.pm</a>, avg 6&micro;s/call
335# 109 times (574&micro;s+195&micro;s) by Moose::Object::does at <a href="Moose-Object-pm-266-line.html#122">line 122 of Moose/Object.pm</a>, avg 7&micro;s/call
336# 35 times (161&micro;s+47&micro;s) by Class::MOP::Class::get_all_methods at <a href="Class-MOP-Class-pm-103-line.html#1134">line 1134</a>, avg 6&micro;s/call
337# 33 times (182&micro;s+4.03ms) by Class::MOP::Object::meta at <a href="Class-MOP-Object-pm-96-line.html#20">line 20 of Class/MOP/Object.pm</a>, avg 128&micro;s/call
338# 32 times (119&micro;s+18&micro;s) by Class::MOP::Attribute::set_raw_value at <a href="Class-MOP-Attribute-pm-130-line.html#274">line 274 of Class/MOP/Attribute.pm</a>, avg 4&micro;s/call
339# 27 times (253&micro;s+69&micro;s) by namespace::autoclean::__ANON__[/Users/edenc/perl5/lib/perl5/namespace/autoclean.pm:57] at <a href="namespace-autoclean-pm-375-line.html#44">line 44 of namespace/autoclean.pm</a>, avg 12&micro;s/call
340# 24 times (102&micro;s+747&micro;s) by Class::MOP::Method::_new at <a href="Class-MOP-Method-pm-94-line.html#56">line 56 of Class/MOP/Method.pm</a>, avg 35&micro;s/call
341# 22 times (120&micro;s+4.63ms) by Moose::Object::new at <a href="Moose-Object-pm-266-line.html#28">line 28 of Moose/Object.pm</a>, avg 216&micro;s/call
342# 19 times (147&micro;s+1.62ms) by metaclass::import at <a href="metaclass-pm-161-line.html#48">line 48 of metaclass.pm</a>, avg 93&micro;s/call
343# 18 times (99&micro;s+1.37ms) by Class::MOP::Mixin::meta at <a href="Class-MOP-Mixin-pm-88-line.html#16">line 16 of Class/MOP/Mixin.pm</a>, avg 81&micro;s/call
344# 16 times (137&micro;s+2.24ms) by Class::MOP::MiniTrait::apply at <a href="Class-MOP-MiniTrait-pm-118-line.html#19">line 19 of Class/MOP/MiniTrait.pm</a>, avg 149&micro;s/call
345# 16 times (75&micro;s+23&micro;s) by Moose::Util::MetaRole::_make_new_class at <a href="Moose-Util-MetaRole-pm-135-line.html#128">line 128 of Moose/Util/MetaRole.pm</a>, avg 6&micro;s/call
346# 12 times (46&micro;s+14&micro;s) by Moose::Meta::Attribute::_weaken_value at <a href="Moose-Meta-Attribute-pm-164-line.html#813">line 813 of Moose/Meta/Attribute.pm</a>, avg 5&micro;s/call
347# 7 times (51&micro;s+520&micro;s) by Moose::BEGIN@47 at <a href="Moose-Meta-Attribute-Native-pm-292-line.html#15">line 15 of Moose/Meta/Attribute/Native.pm</a>, avg 82&micro;s/call
348# 6 times (27&micro;s+9&micro;s) by Class::MOP::Method::Wrapped::_new at <a href="Class-MOP-Method-Wrapped-pm-106-line.html#104">line 104 of Class/MOP/Method/Wrapped.pm</a>, avg 6&micro;s/call
349# 5 times (25&micro;s+8&micro;s) by Moose::Meta::Attribute::_find_delegate_metaclass at <a href="Moose-Meta-Attribute-pm-164-line.html#1214">line 1214 of Moose/Meta/Attribute.pm</a>, avg 6&micro;s/call
350# 2 times (15&micro;s+189&micro;s) by Class::MOP::Package::create at <a href="Class-MOP-Package-pm-122-line.html#72">line 72 of Class/MOP/Package.pm</a>, avg 102&micro;s/call
351# once (5&micro;s+1&micro;s) by Class::MOP::Attribute::_new at <a href="Class-MOP-Attribute-pm-130-line.html#64">line 64 of Class/MOP/Attribute.pm</a></div></div>sub initialize {</td></tr>
352<tr><td class="h"><a name="33"></a>33</td><td class="c0">77643</td><td class="c0"><span title="Avg 244ns">19.0ms</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
353<tr><td class="h"><a name="34"></a>34</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
354<tr><td class="h"><a name="35"></a>35</td><td class="c0">77643</td><td class="c0"><span title="Avg 88ns">6.83ms</span></td><td></td><td></td><td class="s"> my $package_name;</td></tr>
355<tr><td class="h"><a name="36"></a>36</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
356<tr><td class="h"><a name="37"></a>37</td><td class="c0">77643</td><td class="c0"><span title="Avg 408ns">31.7ms</span></td><td></td><td></td><td class="s"> if ( @_ % 2 ) {</td></tr>
357<tr><td class="h"><a name="38"></a>38</td><td></td><td></td><td></td><td></td><td class="s"> $package_name = shift;</td></tr>
358<tr><td class="h"><a name="39"></a>39</td><td></td><td></td><td></td><td></td><td class="s"> } else {</td></tr>
359<tr><td class="h"><a name="40"></a>40</td><td></td><td></td><td></td><td></td><td class="s"> my %options = @_;</td></tr>
360<tr><td class="h"><a name="41"></a>41</td><td></td><td></td><td></td><td></td><td class="s"> $package_name = $options{package};</td></tr>
361<tr><td class="h"><a name="42"></a>42</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
362<tr><td class="h"><a name="43"></a>43</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
363<tr><td class="h"><a name="44"></a>44</td><td class="c0">77643</td><td class="c0"><span title="Avg 143ns">11.1ms</span></td><td></td><td></td><td class="s"> ($package_name &amp;&amp; !ref($package_name))</td></tr>
364<tr><td class="h"><a name="45"></a>45</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass a package name and it cannot be blessed&quot;;</td></tr>
365<tr><td class="h"><a name="46"></a>46</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
366<tr><td class="h"><a name="47"></a>47</td><td class="c0">77643</td><td class="c0"><span title="Avg 3&micro;s">207ms</span></td><td class="c0">77897</td><td class="c0">254ms</td><td class="s"> return Class::MOP::get_metaclass_by_name($package_name)<div class="calls"><div class="calls_out"> # spent 160ms making 254 calls to <a href="Class-MOP-Class-pm-103-line.html#76">Class::MOP::Class::_construct_class_instance</a>, avg 629&micro;s/call, recursion: max depth 4, sum of overlapping time 5.81ms
367 # spent 100ms making 77643 calls to <a href="Class-MOP-pm-83-line.html#55">Class::MOP::get_metaclass_by_name</a>, avg 1&micro;s/call</div></div></td></tr>
368<tr><td class="h"><a name="48"></a>48</td><td></td><td></td><td></td><td></td><td class="s"> || $class-&gt;_construct_class_instance(package =&gt; $package_name, @_);</td></tr>
369<tr><td class="h"><a name="49"></a>49</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
370<tr><td class="h"><a name="50"></a>50</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
371<tr><td class="h"><a name="51"></a>51</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 5.51ms (135&micro;s+5.37) within Class::MOP::Class::reinitialize which was called 2 times, avg 2.75ms/call:
372# 2 times (135&micro;s+5.37ms) by Moose::Meta::Class::reinitialize at <a href="Moose-Meta-Class-pm-136-line.html#188">line 188 of Moose/Meta/Class.pm</a>, avg 2.75ms/call</div></div>sub reinitialize {</td></tr>
373<tr><td class="h"><a name="52"></a>52</td><td class="c3">2</td><td class="c3"><span title="Avg 5&micro;s">9&micro;s</span></td><td></td><td></td><td class="s"> my ( $class, @args ) = @_;</td></tr>
374<tr><td class="h"><a name="53"></a>53</td><td class="c3">2</td><td class="c3"><span title="Avg 2&micro;s">4&micro;s</span></td><td></td><td></td><td class="s"> unshift @args, &quot;package&quot; if @args % 2;</td></tr>
375<tr><td class="h"><a name="54"></a>54</td><td class="c3">2</td><td class="c3"><span title="Avg 4&micro;s">9&micro;s</span></td><td></td><td></td><td class="s"> my %options = @args;</td></tr>
376<tr><td class="h"><a name="55"></a>55</td><td class="c3">2</td><td class="c3"><span title="Avg 5&micro;s">11&micro;s</span></td><td class="c3">2</td><td class="c3">2&micro;s</td><td class="s"> my $old_metaclass = blessed($options{package})<div class="calls"><div class="calls_out"> # spent 2&micro;s making 2 calls to <a href="Scalar-Util-pm-63-line.html#Scalar__Util__blessed">Scalar::Util::blessed</a>, avg 1&micro;s/call</div></div></td></tr>
377<tr><td class="h"><a name="56"></a>56</td><td></td><td></td><td></td><td></td><td class="s"> ? $options{package}</td></tr>
378<tr><td class="h"><a name="57"></a>57</td><td></td><td></td><td></td><td></td><td class="s"> : Class::MOP::get_metaclass_by_name($options{package});</td></tr>
379<tr><td class="h"><a name="58"></a>58</td><td class="c3">2</td><td class="c3"><span title="Avg 14&micro;s">27&micro;s</span></td><td class="c3">8</td><td class="c3">16&micro;s</td><td class="s"> $options{weaken} = Class::MOP::metaclass_is_weak($old_metaclass-&gt;name)<div class="calls"><div class="calls_out"> # spent 11&micro;s making 2 calls to <a href="Class-MOP-pm-83-line.html#58">Class::MOP::metaclass_is_weak</a>, avg 6&micro;s/call
380 # spent 2&micro;s making 2 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 1&micro;s/call
381 # spent 2&micro;s making 2 calls to <a href="Scalar-Util-pm-63-line.html#Scalar__Util__blessed">Scalar::Util::blessed</a>, avg 850ns/call
382 # spent 2&micro;s making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 750ns/call</div></div></td></tr>
383<tr><td class="h"><a name="59"></a>59</td><td></td><td></td><td></td><td></td><td class="s"> if !exists $options{weaken}</td></tr>
384<tr><td class="h"><a name="60"></a>60</td><td></td><td></td><td></td><td></td><td class="s"> &amp;&amp; blessed($old_metaclass)</td></tr>
385<tr><td class="h"><a name="61"></a>61</td><td></td><td></td><td></td><td></td><td class="s"> &amp;&amp; $old_metaclass-&gt;isa('Class::MOP::Class');</td></tr>
386<tr><td class="h"><a name="62"></a>62</td><td class="c3">2</td><td class="c3"><span title="Avg 9&micro;s">19&micro;s</span></td><td class="c3">4</td><td class="c3">40&micro;s</td><td class="s"> $old_metaclass-&gt;_remove_generated_metaobjects<div class="calls"><div class="calls_out"> # spent 38&micro;s making 2 calls to <a href="Class-MOP-Class-pm-103-line.html#409">Class::MOP::Class::_remove_generated_metaobjects</a>, avg 19&micro;s/call
387 # spent 2&micro;s making 2 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 1&micro;s/call</div></div></td></tr>
388<tr><td class="h"><a name="63"></a>63</td><td></td><td></td><td></td><td></td><td class="s"> if $old_metaclass &amp;&amp; $old_metaclass-&gt;isa('Class::MOP::Class');</td></tr>
389<tr><td class="h"><a name="64"></a>64</td><td class="c3">2</td><td class="c3"><span title="Avg 11&micro;s">23&micro;s</span></td><td class="c3">2</td><td class="c3">3.98ms</td><td class="s"> my $new_metaclass = $class-&gt;SUPER::reinitialize(%options);<div class="calls"><div class="calls_out"> # spent 3.98ms making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#48">Class::MOP::Package::reinitialize</a>, avg 1.99ms/call</div></div></td></tr>
390<tr><td class="h"><a name="65"></a>65</td><td class="c3">2</td><td class="c3"><span title="Avg 8&micro;s">17&micro;s</span></td><td class="c3">4</td><td class="c3">1.33ms</td><td class="s"> $new_metaclass-&gt;_restore_metaobjects_from($old_metaclass)<div class="calls"><div class="calls_out"> # spent 1.33ms making 2 calls to <a href="Moose-Meta-Class-pm-136-line.html#724">Moose::Meta::Class::_restore_metaobjects_from</a>, avg 666&micro;s/call
391 # spent 2&micro;s making 2 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 1&micro;s/call</div></div></td></tr>
392<tr><td class="h"><a name="66"></a>66</td><td></td><td></td><td></td><td></td><td class="s"> if $old_metaclass &amp;&amp; $old_metaclass-&gt;isa('Class::MOP::Class');</td></tr>
393<tr><td class="h"><a name="67"></a>67</td><td class="c3">2</td><td class="c3"><span title="Avg 8&micro;s">16&micro;s</span></td><td></td><td></td><td class="s"> return $new_metaclass;</td></tr>
394<tr><td class="h"><a name="68"></a>68</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
395<tr><td class="h"><a name="69"></a>69</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
396<tr><td class="h"><a name="70"></a>70</td><td></td><td></td><td></td><td></td><td class="s"># NOTE: (meta-circularity)</td></tr>
397<tr><td class="h"><a name="71"></a>71</td><td></td><td></td><td></td><td></td><td class="s"># this is a special form of _construct_instance</td></tr>
398<tr><td class="h"><a name="72"></a>72</td><td></td><td></td><td></td><td></td><td class="s"># (see below), which is used to construct class</td></tr>
399<tr><td class="h"><a name="73"></a>73</td><td></td><td></td><td></td><td></td><td class="s"># meta-object instances for any Class::MOP::*</td></tr>
400<tr><td class="h"><a name="74"></a>74</td><td></td><td></td><td></td><td></td><td class="s"># class. All other classes will use the more</td></tr>
401<tr><td class="h"><a name="75"></a>75</td><td></td><td></td><td></td><td></td><td class="s"># normal &amp;construct_instance.</td></tr>
402<tr><td class="h"><a name="76"></a>76</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 154ms (6.23+148) within Class::MOP::Class::_construct_class_instance which was called 254 times, avg 606&micro;s/call:
403# 254 times (6.23ms+148ms) by Class::MOP::Class::initialize at <a href="Class-MOP-Class-pm-103-line.html#47">line 47</a>, avg 606&micro;s/call</div></div>sub _construct_class_instance {</td></tr>
404<tr><td class="h"><a name="77"></a>77</td><td class="c2">254</td><td class="c3"><span title="Avg 368ns">93&micro;s</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
405<tr><td class="h"><a name="78"></a>78</td><td class="c2">254</td><td class="c0"><span title="Avg 3&micro;s">850&micro;s</span></td><td></td><td></td><td class="s"> my $options = @_ == 1 ? $_[0] : {@_};</td></tr>
406<tr><td class="h"><a name="79"></a>79</td><td class="c2">254</td><td class="c3"><span title="Avg 696ns">177&micro;s</span></td><td></td><td></td><td class="s"> my $package_name = $options-&gt;{package};</td></tr>
407<tr><td class="h"><a name="80"></a>80</td><td class="c2">254</td><td class="c3"><span title="Avg 288ns">73&micro;s</span></td><td></td><td></td><td class="s"> (defined $package_name &amp;&amp; $package_name)</td></tr>
408<tr><td class="h"><a name="81"></a>81</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass a package name&quot;;</td></tr>
409<tr><td class="h"><a name="82"></a>82</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
410<tr><td class="h"><a name="83"></a>83</td><td></td><td></td><td></td><td></td><td class="s"> # return the metaclass if we have it cached,</td></tr>
411<tr><td class="h"><a name="84"></a>84</td><td></td><td></td><td></td><td></td><td class="s"> # and it is still defined (it has not been</td></tr>
412<tr><td class="h"><a name="85"></a>85</td><td></td><td></td><td></td><td></td><td class="s"> # reaped by DESTROY yet, which can happen</td></tr>
413<tr><td class="h"><a name="86"></a>86</td><td></td><td></td><td></td><td></td><td class="s"> # annoyingly enough during global destruction)</td></tr>
414<tr><td class="h"><a name="87"></a>87</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
415<tr><td class="h"><a name="88"></a>88</td><td class="c2">254</td><td class="c3"><span title="Avg 1&micro;s">304&micro;s</span></td><td class="c3">254</td><td class="c3">270&micro;s</td><td class="s"> if (defined(my $meta = Class::MOP::get_metaclass_by_name($package_name))) {<div class="calls"><div class="calls_out"> # spent 270&micro;s making 254 calls to <a href="Class-MOP-pm-83-line.html#55">Class::MOP::get_metaclass_by_name</a>, avg 1&micro;s/call</div></div></td></tr>
416<tr><td class="h"><a name="89"></a>89</td><td></td><td></td><td></td><td></td><td class="s"> return $meta;</td></tr>
417<tr><td class="h"><a name="90"></a>90</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
418<tr><td class="h"><a name="91"></a>91</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
419<tr><td class="h"><a name="92"></a>92</td><td></td><td></td><td></td><td></td><td class="s"> $class</td></tr>
420<tr><td class="h"><a name="93"></a>93</td><td class="c2">254</td><td class="c3"><span title="Avg 613ns">156&micro;s</span></td><td class="c3">21</td><td class="c3">456&micro;s</td><td class="s"> = ref $class<div class="calls"><div class="calls_out"> # spent 456&micro;s making 21 calls to <a href="Class-MOP-Class-pm-103-line.html#123">Class::MOP::Class::_real_ref_name</a>, avg 22&micro;s/call</div></div></td></tr>
421<tr><td class="h"><a name="94"></a>94</td><td></td><td></td><td></td><td></td><td class="s"> ? $class-&gt;_real_ref_name</td></tr>
422<tr><td class="h"><a name="95"></a>95</td><td></td><td></td><td></td><td></td><td class="s"> : $class;</td></tr>
423<tr><td class="h"><a name="96"></a>96</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
424<tr><td class="h"><a name="97"></a>97</td><td></td><td></td><td></td><td></td><td class="s"> # now create the metaclass</td></tr>
425<tr><td class="h"><a name="98"></a>98</td><td class="c2">254</td><td class="c3"><span title="Avg 176ns">45&micro;s</span></td><td></td><td></td><td class="s"> my $meta;</td></tr>
426<tr><td class="h"><a name="99"></a>99</td><td class="c2">254</td><td class="c3"><span title="Avg 1&micro;s">283&micro;s</span></td><td class="c3">81</td><td class="c3">1.03ms</td><td class="s"> if ($class eq 'Class::MOP::Class') {<div class="calls"><div class="calls_out"> # spent 1.03ms making 81 calls to <a href="Class-MOP-Class-pm-103-line.html#133">Class::MOP::Class::_new</a>, avg 13&micro;s/call</div></div></td></tr>
427<tr><td class="h"><a name="100"></a>100</td><td></td><td></td><td></td><td></td><td class="s"> $meta = $class-&gt;_new($options);</td></tr>
428<tr><td class="h"><a name="101"></a>101</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
429<tr><td class="h"><a name="102"></a>102</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
430<tr><td class="h"><a name="103"></a>103</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
431<tr><td class="h"><a name="104"></a>104</td><td></td><td></td><td></td><td></td><td class="s"> # it is safe to use meta here because</td></tr>
432<tr><td class="h"><a name="105"></a>105</td><td></td><td></td><td></td><td></td><td class="s"> # class will always be a subclass of</td></tr>
433<tr><td class="h"><a name="106"></a>106</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class, which defines meta</td></tr>
434<tr><td class="h"><a name="107"></a>107</td><td class="c3">173</td><td class="c0"><span title="Avg 5&micro;s">825&micro;s</span></td><td class="c1">346</td><td class="c0">102ms</td><td class="s"> $meta = $class-&gt;meta-&gt;_construct_instance($options)<div class="calls"><div class="calls_out"> # spent 99.1ms making 173 calls to <a href="Class-MOP-Class-pm-103-line.html#501">Class::MOP::Class::_construct_instance</a>, avg 573&micro;s/call
435 # spent 2.50ms making 171 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Object::meta</a>, avg 15&micro;s/call
436 # spent 16&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::5::meta</a>
437 # spent 16&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::30::meta</a></div></div></td></tr>
438<tr><td class="h"><a name="108"></a>108</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
439<tr><td class="h"><a name="109"></a>109</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
440<tr><td class="h"><a name="110"></a>110</td><td></td><td></td><td></td><td></td><td class="s"> # and check the metaclass compatibility</td></tr>
441<tr><td class="h"><a name="111"></a>111</td><td class="c2">254</td><td class="c0"><span title="Avg 3&micro;s">671&micro;s</span></td><td class="c3">254</td><td class="c0">42.3ms</td><td class="s"> $meta-&gt;_check_metaclass_compatibility();<div class="calls"><div class="calls_out"> # spent 49.4ms making 254 calls to <a href="Class-MOP-Class-pm-103-line.html#200">Class::MOP::Class::_check_metaclass_compatibility</a>, avg 194&micro;s/call, recursion: max depth 4, sum of overlapping time 7.09ms</div></div></td></tr>
442<tr><td class="h"><a name="112"></a>112</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
443<tr><td class="h"><a name="113"></a>113</td><td class="c2">254</td><td class="c1"><span title="Avg 2&micro;s">454&micro;s</span></td><td class="c3">254</td><td class="c3">725&micro;s</td><td class="s"> Class::MOP::store_metaclass_by_name($package_name, $meta);<div class="calls"><div class="calls_out"> # spent 725&micro;s making 254 calls to <a href="Class-MOP-pm-83-line.html#56">Class::MOP::store_metaclass_by_name</a>, avg 3&micro;s/call</div></div></td></tr>
444<tr><td class="h"><a name="114"></a>114</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
445<tr><td class="h"><a name="115"></a>115</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
446<tr><td class="h"><a name="116"></a>116</td><td></td><td></td><td></td><td></td><td class="s"> # we need to weaken any anon classes</td></tr>
447<tr><td class="h"><a name="117"></a>117</td><td></td><td></td><td></td><td></td><td class="s"> # so that they can call DESTROY properly</td></tr>
448<tr><td class="h"><a name="118"></a>118</td><td class="c2">254</td><td class="c3"><span title="Avg 522ns">132&micro;s</span></td><td class="c3">3</td><td class="c3">36&micro;s</td><td class="s"> Class::MOP::weaken_metaclass($package_name) if $options-&gt;{weaken};<div class="calls"><div class="calls_out"> # spent 36&micro;s making 3 calls to <a href="Class-MOP-pm-83-line.html#57">Class::MOP::weaken_metaclass</a>, avg 12&micro;s/call</div></div></td></tr>
449<tr><td class="h"><a name="119"></a>119</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
450<tr><td class="h"><a name="120"></a>120</td><td class="c2">254</td><td class="c0"><span title="Avg 4&micro;s">969&micro;s</span></td><td></td><td></td><td class="s"> $meta;</td></tr>
451<tr><td class="h"><a name="121"></a>121</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
452<tr><td class="h"><a name="122"></a>122</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
453<tr><td class="h"><a name="123"></a>123</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6.68ms (3.37+3.30) within Class::MOP::Class::_real_ref_name which was called 595 times, avg 11&micro;s/call:
454# 300 times (1.89ms+1.84ms) by Class::MOP::Class::_class_metaclass_can_be_made_compatible at <a href="Class-MOP-Class-pm-103-line.html#345">line 345</a>, avg 12&micro;s/call
455# 241 times (1.15ms+1.08ms) by Class::MOP::Class::_class_metaclass_is_compatible at <a href="Class-MOP-Class-pm-103-line.html#255">line 255</a>, avg 9&micro;s/call
456# 21 times (175&micro;s+280&micro;s) by Class::MOP::Class::_construct_class_instance at <a href="Class-MOP-Class-pm-103-line.html#93">line 93</a>, avg 22&micro;s/call
457# 21 times (80&micro;s+21&micro;s) by Class::MOP::Object::_get_compatible_metaclass_by_subclassing at <a href="Class-MOP-Object-pm-96-line.html#88">line 88 of Class/MOP/Object.pm</a>, avg 5&micro;s/call
458# 7 times (38&micro;s+64&micro;s) by Class::MOP::Class::_fix_class_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#378">line 378</a>, avg 15&micro;s/call
459# 4 times (28&micro;s+17&micro;s) by Class::MOP::Class::_immutable_metaclass at <a href="Class-MOP-Class-pm-103-line.html#1352">line 1352</a>, avg 11&micro;s/call
460# once (6&micro;s+1&micro;s) by Moose::init_meta at <a href="Moose-pm-62-line.html#182">line 182 of Moose.pm</a></div></div>sub _real_ref_name {</td></tr>
461<tr><td class="h"><a name="124"></a>124</td><td class="c0">595</td><td class="c3"><span title="Avg 205ns">122&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
462<tr><td class="h"><a name="125"></a>125</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
463<tr><td class="h"><a name="126"></a>126</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE: we need to deal with the possibility of class immutability here,</td></tr>
464<tr><td class="h"><a name="127"></a>127</td><td></td><td></td><td></td><td></td><td class="s"> # and then get the name of the class appropriately</td></tr>
465<tr><td class="h"><a name="128"></a>128</td><td class="c0">595</td><td class="c0"><span title="Avg 4&micro;s">2.66ms</span></td><td class="c0">854</td><td class="c3">3.30ms</td><td class="s"> return $self-&gt;is_immutable<div class="calls"><div class="calls_out"> # spent 959&micro;s making 120 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::is_immutable</a>, avg 8&micro;s/call
466 # spent 957&micro;s making 101 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::is_immutable</a>, avg 9&micro;s/call
467 # spent 664&micro;s making 259 calls to <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#18">Class::MOP::Class::Immutable::Trait::_get_mutable_metaclass_name</a>, avg 3&micro;s/call
468 # spent 410&micro;s making 336 calls to <a href="Class-MOP-Class-pm-103-line.html#1260">Class::MOP::Class::is_immutable</a>, avg 1&micro;s/call
469 # spent 268&micro;s making 32 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::__ANON__::SERIAL::5::is_immutable</a>, avg 8&micro;s/call
470 # spent 47&micro;s making 6 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::__ANON__::SERIAL::30::is_immutable</a>, avg 8&micro;s/call</div></div></td></tr>
471<tr><td class="h"><a name="129"></a>129</td><td></td><td></td><td></td><td></td><td class="s"> ? $self-&gt;_get_mutable_metaclass_name()</td></tr>
472<tr><td class="h"><a name="130"></a>130</td><td></td><td></td><td></td><td></td><td class="s"> : ref $self;</td></tr>
473<tr><td class="h"><a name="131"></a>131</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
474<tr><td class="h"><a name="132"></a>132</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
475<tr><td class="h"><a name="133"></a>133</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.03ms within Class::MOP::Class::_new which was called 81 times, avg 13&micro;s/call:
476# 81 times (1.03ms+0s) by Class::MOP::Class::_construct_class_instance at <a href="Class-MOP-Class-pm-103-line.html#99">line 99</a>, avg 13&micro;s/call</div></div>sub _new {</td></tr>
477<tr><td class="h"><a name="134"></a>134</td><td class="c3">81</td><td class="c3"><span title="Avg 299ns">24&micro;s</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
478<tr><td class="h"><a name="135"></a>135</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
479<tr><td class="h"><a name="136"></a>136</td><td class="c3">81</td><td class="c3"><span title="Avg 240ns">19&micro;s</span></td><td></td><td></td><td class="s"> return Class::MOP::Class-&gt;initialize($class)-&gt;new_object(@_)</td></tr>
480<tr><td class="h"><a name="137"></a>137</td><td></td><td></td><td></td><td></td><td class="s"> if $class ne __PACKAGE__;</td></tr>
481<tr><td class="h"><a name="138"></a>138</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
482<tr><td class="h"><a name="139"></a>139</td><td class="c3">81</td><td class="c3"><span title="Avg 452ns">37&micro;s</span></td><td></td><td></td><td class="s"> my $options = @_ == 1 ? $_[0] : {@_};</td></tr>
483<tr><td class="h"><a name="140"></a>140</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
484<tr><td class="h"><a name="141"></a>141</td><td class="c3">81</td><td class="c0"><span title="Avg 13&micro;s">1.01ms</span></td><td></td><td></td><td class="s"> return bless {</td></tr>
485<tr><td class="h"><a name="142"></a>142</td><td></td><td></td><td></td><td></td><td class="s"> # inherited from Class::MOP::Package</td></tr>
486<tr><td class="h"><a name="143"></a>143</td><td></td><td></td><td></td><td></td><td class="s"> 'package' =&gt; $options-&gt;{package},</td></tr>
487<tr><td class="h"><a name="144"></a>144</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
488<tr><td class="h"><a name="145"></a>145</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
489<tr><td class="h"><a name="146"></a>146</td><td></td><td></td><td></td><td></td><td class="s"> # since the following attributes will</td></tr>
490<tr><td class="h"><a name="147"></a>147</td><td></td><td></td><td></td><td></td><td class="s"> # actually be loaded from the symbol</td></tr>
491<tr><td class="h"><a name="148"></a>148</td><td></td><td></td><td></td><td></td><td class="s"> # table, and actually bypass the instance</td></tr>
492<tr><td class="h"><a name="149"></a>149</td><td></td><td></td><td></td><td></td><td class="s"> # entirely, we can just leave these things</td></tr>
493<tr><td class="h"><a name="150"></a>150</td><td></td><td></td><td></td><td></td><td class="s"> # listed here for reference, because they</td></tr>
494<tr><td class="h"><a name="151"></a>151</td><td></td><td></td><td></td><td></td><td class="s"> # should not actually have a value associated</td></tr>
495<tr><td class="h"><a name="152"></a>152</td><td></td><td></td><td></td><td></td><td class="s"> # with the slot.</td></tr>
496<tr><td class="h"><a name="153"></a>153</td><td></td><td></td><td></td><td></td><td class="s"> 'namespace' =&gt; \undef,</td></tr>
497<tr><td class="h"><a name="154"></a>154</td><td></td><td></td><td></td><td></td><td class="s"> 'methods' =&gt; {},</td></tr>
498<tr><td class="h"><a name="155"></a>155</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
499<tr><td class="h"><a name="156"></a>156</td><td></td><td></td><td></td><td></td><td class="s"> # inherited from Class::MOP::Module</td></tr>
500<tr><td class="h"><a name="157"></a>157</td><td></td><td></td><td></td><td></td><td class="s"> 'version' =&gt; \undef,</td></tr>
501<tr><td class="h"><a name="158"></a>158</td><td></td><td></td><td></td><td></td><td class="s"> 'authority' =&gt; \undef,</td></tr>
502<tr><td class="h"><a name="159"></a>159</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
503<tr><td class="h"><a name="160"></a>160</td><td></td><td></td><td></td><td></td><td class="s"> # defined in Class::MOP::Class</td></tr>
504<tr><td class="h"><a name="161"></a>161</td><td></td><td></td><td></td><td></td><td class="s"> 'superclasses' =&gt; \undef,</td></tr>
505<tr><td class="h"><a name="162"></a>162</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
506<tr><td class="h"><a name="163"></a>163</td><td></td><td></td><td></td><td></td><td class="s"> 'attributes' =&gt; {},</td></tr>
507<tr><td class="h"><a name="164"></a>164</td><td></td><td></td><td></td><td></td><td class="s"> 'attribute_metaclass' =&gt;</td></tr>
508<tr><td class="h"><a name="165"></a>165</td><td></td><td></td><td></td><td></td><td class="s"> ( $options-&gt;{'attribute_metaclass'} || 'Class::MOP::Attribute' ),</td></tr>
509<tr><td class="h"><a name="166"></a>166</td><td></td><td></td><td></td><td></td><td class="s"> 'method_metaclass' =&gt;</td></tr>
510<tr><td class="h"><a name="167"></a>167</td><td></td><td></td><td></td><td></td><td class="s"> ( $options-&gt;{'method_metaclass'} || 'Class::MOP::Method' ),</td></tr>
511<tr><td class="h"><a name="168"></a>168</td><td></td><td></td><td></td><td></td><td class="s"> 'wrapped_method_metaclass' =&gt; (</td></tr>
512<tr><td class="h"><a name="169"></a>169</td><td></td><td></td><td></td><td></td><td class="s"> $options-&gt;{'wrapped_method_metaclass'}</td></tr>
513<tr><td class="h"><a name="170"></a>170</td><td></td><td></td><td></td><td></td><td class="s"> || 'Class::MOP::Method::Wrapped'</td></tr>
514<tr><td class="h"><a name="171"></a>171</td><td></td><td></td><td></td><td></td><td class="s"> ),</td></tr>
515<tr><td class="h"><a name="172"></a>172</td><td></td><td></td><td></td><td></td><td class="s"> 'instance_metaclass' =&gt;</td></tr>
516<tr><td class="h"><a name="173"></a>173</td><td></td><td></td><td></td><td></td><td class="s"> ( $options-&gt;{'instance_metaclass'} || 'Class::MOP::Instance' ),</td></tr>
517<tr><td class="h"><a name="174"></a>174</td><td></td><td></td><td></td><td></td><td class="s"> 'immutable_trait' =&gt; (</td></tr>
518<tr><td class="h"><a name="175"></a>175</td><td></td><td></td><td></td><td></td><td class="s"> $options-&gt;{'immutable_trait'}</td></tr>
519<tr><td class="h"><a name="176"></a>176</td><td></td><td></td><td></td><td></td><td class="s"> || 'Class::MOP::Class::Immutable::Trait'</td></tr>
520<tr><td class="h"><a name="177"></a>177</td><td></td><td></td><td></td><td></td><td class="s"> ),</td></tr>
521<tr><td class="h"><a name="178"></a>178</td><td></td><td></td><td></td><td></td><td class="s"> 'constructor_name' =&gt; ( $options-&gt;{constructor_name} || 'new' ),</td></tr>
522<tr><td class="h"><a name="179"></a>179</td><td></td><td></td><td></td><td></td><td class="s"> 'constructor_class' =&gt; (</td></tr>
523<tr><td class="h"><a name="180"></a>180</td><td></td><td></td><td></td><td></td><td class="s"> $options-&gt;{constructor_class} || 'Class::MOP::Method::Constructor'</td></tr>
524<tr><td class="h"><a name="181"></a>181</td><td></td><td></td><td></td><td></td><td class="s"> ),</td></tr>
525<tr><td class="h"><a name="182"></a>182</td><td></td><td></td><td></td><td></td><td class="s"> 'destructor_class' =&gt; $options-&gt;{destructor_class},</td></tr>
526<tr><td class="h"><a name="183"></a>183</td><td></td><td></td><td></td><td></td><td class="s"> }, $class;</td></tr>
527<tr><td class="h"><a name="184"></a>184</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
528<tr><td class="h"><a name="185"></a>185</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
529<tr><td class="h"><a name="186"></a>186</td><td></td><td></td><td></td><td></td><td class="s">## Metaclass compatibility</td></tr>
530<tr><td class="h"><a name="187"></a>187</td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
531<tr><td class="h"><a name="188"></a>188</td><td class="c3">2</td><td class="c3"><span title="Avg 2&micro;s">4&micro;s</span></td><td></td><td></td><td class="s"> my %base_metaclass = (</td></tr>
532<tr><td class="h"><a name="189"></a>189</td><td></td><td></td><td></td><td></td><td class="s"> attribute_metaclass =&gt; 'Class::MOP::Attribute',</td></tr>
533<tr><td class="h"><a name="190"></a>190</td><td></td><td></td><td></td><td></td><td class="s"> method_metaclass =&gt; 'Class::MOP::Method',</td></tr>
534<tr><td class="h"><a name="191"></a>191</td><td></td><td></td><td></td><td></td><td class="s"> wrapped_method_metaclass =&gt; 'Class::MOP::Method::Wrapped',</td></tr>
535<tr><td class="h"><a name="192"></a>192</td><td></td><td></td><td></td><td></td><td class="s"> instance_metaclass =&gt; 'Class::MOP::Instance',</td></tr>
536<tr><td class="h"><a name="193"></a>193</td><td></td><td></td><td></td><td></td><td class="s"> constructor_class =&gt; 'Class::MOP::Method::Constructor',</td></tr>
537<tr><td class="h"><a name="194"></a>194</td><td></td><td></td><td></td><td></td><td class="s"> destructor_class =&gt; 'Class::MOP::Method::Destructor',</td></tr>
538<tr><td class="h"><a name="195"></a>195</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
539<tr><td class="h"><a name="196"></a>196</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
540<tr><td class="h"><a name="197"></a>197</td><td class="c0">542</td><td class="c0"><span title="Avg 5&micro;s">2.52ms</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.94ms within Class::MOP::Class::_base_metaclasses which was called 542 times, avg 4&micro;s/call:
541# 443 times (1.61ms+0s) by Moose::Meta::Class::_base_metaclasses at <a href="Moose-Meta-Class-pm-136-line.html#620">line 620 of Moose/Meta/Class.pm</a>, avg 4&micro;s/call
542# 55 times (204&micro;s+0s) by Class::MOP::Class::_can_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#333">line 333</a>, avg 4&micro;s/call
543# 44 times (127&micro;s+0s) by Class::MOP::Class::_check_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#208">line 208</a>, avg 3&micro;s/call</div></div> sub _base_metaclasses { %base_metaclass }</td></tr>
544<tr><td class="h"><a name="198"></a>198</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
545<tr><td class="h"><a name="199"></a>199</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
546<tr><td class="h"><a name="200"></a>200</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 224ms (17.0+207) within Class::MOP::Class::_check_metaclass_compatibility which was called 454 times, avg 494&micro;s/call:
547# 254 times (2.94ms+39.3ms) by Class::MOP::Class::_construct_class_instance at <a href="Class-MOP-Class-pm-103-line.html#111">line 111</a>, avg 166&micro;s/call
548# 200 times (14.1ms+168ms) by Class::MOP::Class::superclasses at <a href="Class-MOP-Class-pm-103-line.html#958">line 958</a>, avg 909&micro;s/call</div></div>sub _check_metaclass_compatibility {</td></tr>
549<tr><td class="h"><a name="201"></a>201</td><td class="c0">454</td><td class="c3"><span title="Avg 331ns">150&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
550<tr><td class="h"><a name="202"></a>202</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
551<tr><td class="h"><a name="203"></a>203</td><td class="c0">454</td><td class="c0"><span title="Avg 3&micro;s">1.53ms</span></td><td class="c1">454</td><td class="c0">13.7ms</td><td class="s"> my @superclasses = $self-&gt;superclasses<div class="calls"><div class="calls_out"> # spent 20.2ms making 371 calls to <a href="Moose-Meta-Class-pm-136-line.html#549">Moose::Meta::Class::superclasses</a>, avg 54&micro;s/call, recursion: max depth 3, sum of overlapping time 9.25ms
552 # spent 3.08ms making 83 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::superclasses</a>, avg 37&micro;s/call, recursion: max depth 1, sum of overlapping time 274&micro;s</div></div></td></tr>
553<tr><td class="h"><a name="204"></a>204</td><td></td><td></td><td></td><td></td><td class="s"> or return;</td></tr>
554<tr><td class="h"><a name="205"></a>205</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
555<tr><td class="h"><a name="206"></a>206</td><td class="c2">255</td><td class="c1"><span title="Avg 2&micro;s">580&micro;s</span></td><td class="c3">255</td><td class="c0">117ms</td><td class="s"> $self-&gt;_fix_metaclass_incompatibility(@superclasses);<div class="calls"><div class="calls_out"> # spent 124ms making 255 calls to <a href="Class-MOP-Class-pm-103-line.html#298">Class::MOP::Class::_fix_metaclass_incompatibility</a>, avg 485&micro;s/call, recursion: max depth 3, sum of overlapping time 6.12ms</div></div></td></tr>
556<tr><td class="h"><a name="207"></a>207</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
557<tr><td class="h"><a name="208"></a>208</td><td class="c2">255</td><td class="c0"><span title="Avg 3&micro;s">829&micro;s</span></td><td class="c3">255</td><td class="c1">8.62ms</td><td class="s"> my %base_metaclass = $self-&gt;_base_metaclasses;<div class="calls"><div class="calls_out"> # spent 8.50ms making 211 calls to <a href="Moose-Meta-Class-pm-136-line.html#618">Moose::Meta::Class::_base_metaclasses</a>, avg 40&micro;s/call
558 # spent 127&micro;s making 44 calls to <a href="Class-MOP-Class-pm-103-line.html#197">Class::MOP::Class::_base_metaclasses</a>, avg 3&micro;s/call</div></div></td></tr>
559<tr><td class="h"><a name="209"></a>209</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
560<tr><td class="h"><a name="210"></a>210</td><td></td><td></td><td></td><td></td><td class="s"> # this is always okay ...</td></tr>
561<tr><td class="h"><a name="211"></a>211</td><td></td><td></td><td></td><td></td><td class="s"> return</td></tr>
562<tr><td class="h"><a name="212"></a>212</td><td></td><td></td><td></td><td></td><td class="s"> if ref($self) eq 'Class::MOP::Class'</td></tr>
563<tr><td class="h"><a name="213"></a>213</td><td></td><td></td><td></td><td></td><td class="s"> &amp;&amp; all {</td></tr>
564<tr><td class="h"><a name="214"></a>214</td><td class="c2">264</td><td class="c0"><span title="Avg 3&micro;s">761&micro;s</span></td><td class="c2">264</td><td class="c3">173&micro;s</td><td class="s"> my $meta = $self-&gt;$_;<div class="calls"><div class="calls_out"> # spent 31&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 705ns/call
565 # spent 31&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 693ns/call
566 # spent 31&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 693ns/call
567 # spent 28&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 645ns/call
568 # spent 27&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 611ns/call
569 # spent 26&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__destructor_class">Class::MOP::Class::destructor_class</a>, avg 586ns/call</div></div></td></tr>
570<tr><td class="h"><a name="215"></a>215</td><td class="c2">264</td><td class="c2"><span title="Avg 1&micro;s">346&micro;s</span></td><td></td><td></td><td class="s"> !defined($meta) || $meta eq $base_metaclass{$_};</td></tr>
571<tr><td class="h"><a name="216"></a>216</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
572<tr><td class="h"><a name="217"></a>217</td><td class="c2">255</td><td class="c1"><span title="Avg 2&micro;s">422&micro;s</span></td><td class="c3">44</td><td class="c3">1.05ms</td><td class="s"> keys %base_metaclass;<div class="calls"><div class="calls_out"> # spent 1.05ms making 44 calls to <a href="List-MoreUtils-pm-81-line.html#List__MoreUtils__all">List::MoreUtils::all</a>, avg 24&micro;s/call</div></div></td></tr>
573<tr><td class="h"><a name="218"></a>218</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
574<tr><td class="h"><a name="219"></a>219</td><td class="c3">211</td><td class="c3"><span title="Avg 1&micro;s">216&micro;s</span></td><td></td><td></td><td class="s"> for my $superclass (@superclasses) {</td></tr>
575<tr><td class="h"><a name="220"></a>220</td><td class="c3">232</td><td class="c0"><span title="Avg 3&micro;s">655&micro;s</span></td><td class="c3">232</td><td class="c1">7.10ms</td><td class="s"> $self-&gt;_check_class_metaclass_compatibility($superclass);<div class="calls"><div class="calls_out"> # spent 7.10ms making 232 calls to <a href="Class-MOP-Class-pm-103-line.html#232">Class::MOP::Class::_check_class_metaclass_compatibility</a>, avg 31&micro;s/call</div></div></td></tr>
576<tr><td class="h"><a name="221"></a>221</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
577<tr><td class="h"><a name="222"></a>222</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
578<tr><td class="h"><a name="223"></a>223</td><td class="c3">211</td><td class="c0"><span title="Avg 6&micro;s">1.20ms</span></td><td></td><td></td><td class="s"> for my $metaclass_type ( keys %base_metaclass ) {</td></tr>
579<tr><td class="h"><a name="224"></a>224</td><td class="c0">1477</td><td class="c0"><span title="Avg 2&micro;s">3.61ms</span></td><td class="c0">1477</td><td class="c3">1.87ms</td><td class="s"> next unless defined $self-&gt;$metaclass_type;<div class="calls"><div class="calls_out"> # spent 416&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 2&micro;s/call
580 # spent 393&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 2&micro;s/call
581 # spent 382&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
582 # spent 179&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 850ns/call
583 # spent 169&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 802ns/call
584 # spent 167&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 791ns/call
585 # spent 162&micro;s making 211 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 767ns/call</div></div></td></tr>
586<tr><td class="h"><a name="225"></a>225</td><td class="c0">1477</td><td class="c0"><span title="Avg 687ns">1.01ms</span></td><td></td><td></td><td class="s"> for my $superclass (@superclasses) {</td></tr>
587<tr><td class="h"><a name="226"></a>226</td><td class="c0">1624</td><td class="c0"><span title="Avg 2&micro;s">3.13ms</span></td><td class="c0">1624</td><td class="c0">48.7ms</td><td class="s"> $self-&gt;_check_single_metaclass_compatibility( $metaclass_type,<div class="calls"><div class="calls_out"> # spent 48.7ms making 1624 calls to <a href="Class-MOP-Class-pm-103-line.html#260">Class::MOP::Class::_check_single_metaclass_compatibility</a>, avg 30&micro;s/call</div></div></td></tr>
588<tr><td class="h"><a name="227"></a>227</td><td></td><td></td><td></td><td></td><td class="s"> $superclass );</td></tr>
589<tr><td class="h"><a name="228"></a>228</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
590<tr><td class="h"><a name="229"></a>229</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
591<tr><td class="h"><a name="230"></a>230</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
592<tr><td class="h"><a name="231"></a>231</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
593<tr><td class="h"><a name="232"></a>232</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 7.10ms (1.22+5.89) within Class::MOP::Class::_check_class_metaclass_compatibility which was called 232 times, avg 31&micro;s/call:
594# 232 times (1.22ms+5.89ms) by Class::MOP::Class::_check_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#220">line 220</a>, avg 31&micro;s/call</div></div>sub _check_class_metaclass_compatibility {</td></tr>
595<tr><td class="h"><a name="233"></a>233</td><td class="c3">232</td><td class="c3"><span title="Avg 390ns">90&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
596<tr><td class="h"><a name="234"></a>234</td><td class="c3">232</td><td class="c3"><span title="Avg 631ns">146&micro;s</span></td><td></td><td></td><td class="s"> my ( $superclass_name ) = @_;</td></tr>
597<tr><td class="h"><a name="235"></a>235</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
598<tr><td class="h"><a name="236"></a>236</td><td class="c3">232</td><td class="c0"><span title="Avg 3&micro;s">782&micro;s</span></td><td class="c3">232</td><td class="c2">5.89ms</td><td class="s"> if (!$self-&gt;_class_metaclass_is_compatible($superclass_name)) {<div class="calls"><div class="calls_out"> # spent 5.89ms making 232 calls to <a href="Class-MOP-Class-pm-103-line.html#248">Class::MOP::Class::_class_metaclass_is_compatible</a>, avg 25&micro;s/call</div></div></td></tr>
599<tr><td class="h"><a name="237"></a>237</td><td></td><td></td><td></td><td></td><td class="s"> my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name);</td></tr>
600<tr><td class="h"><a name="238"></a>238</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
601<tr><td class="h"><a name="239"></a>239</td><td></td><td></td><td></td><td></td><td class="s"> my $super_meta_type = $super_meta-&gt;_real_ref_name;</td></tr>
602<tr><td class="h"><a name="240"></a>240</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
603<tr><td class="h"><a name="241"></a>241</td><td></td><td></td><td></td><td></td><td class="s"> confess &quot;The metaclass of &quot; . $self-&gt;name . &quot; (&quot;</td></tr>
604<tr><td class="h"><a name="242"></a>242</td><td></td><td></td><td></td><td></td><td class="s"> . (ref($self)) . &quot;)&quot; . &quot; is not compatible with &quot;</td></tr>
605<tr><td class="h"><a name="243"></a>243</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;the metaclass of its superclass, &quot;</td></tr>
606<tr><td class="h"><a name="244"></a>244</td><td></td><td></td><td></td><td></td><td class="s"> . $superclass_name . &quot; (&quot; . ($super_meta_type) . &quot;)&quot;;</td></tr>
607<tr><td class="h"><a name="245"></a>245</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
608<tr><td class="h"><a name="246"></a>246</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
609<tr><td class="h"><a name="247"></a>247</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
610<tr><td class="h"><a name="248"></a>248</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6.13ms (2.40+3.73) within Class::MOP::Class::_class_metaclass_is_compatible which was called 241 times, avg 25&micro;s/call:
611# 232 times (2.32ms+3.57ms) by Class::MOP::Class::_check_class_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#236">line 236</a>, avg 25&micro;s/call
612# 9 times (82&micro;s+163&micro;s) by Class::MOP::Class::_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#310">line 310</a>, avg 27&micro;s/call</div></div>sub _class_metaclass_is_compatible {</td></tr>
613<tr><td class="h"><a name="249"></a>249</td><td class="c2">241</td><td class="c3"><span title="Avg 308ns">74&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
614<tr><td class="h"><a name="250"></a>250</td><td class="c2">241</td><td class="c3"><span title="Avg 424ns">102&micro;s</span></td><td></td><td></td><td class="s"> my ( $superclass_name ) = @_;</td></tr>
615<tr><td class="h"><a name="251"></a>251</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
616<tr><td class="h"><a name="252"></a>252</td><td class="c2">241</td><td class="c2"><span title="Avg 1&micro;s">324&micro;s</span></td><td class="c3">241</td><td class="c3">349&micro;s</td><td class="s"> my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name)<div class="calls"><div class="calls_out"> # spent 349&micro;s making 241 calls to <a href="Class-MOP-pm-83-line.html#55">Class::MOP::get_metaclass_by_name</a>, avg 1&micro;s/call</div></div></td></tr>
617<tr><td class="h"><a name="253"></a>253</td><td></td><td></td><td></td><td></td><td class="s"> || return 1;</td></tr>
618<tr><td class="h"><a name="254"></a>254</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
619<tr><td class="h"><a name="255"></a>255</td><td class="c2">241</td><td class="c1"><span title="Avg 2&micro;s">433&micro;s</span></td><td class="c3">241</td><td class="c3">2.24ms</td><td class="s"> my $super_meta_name = $super_meta-&gt;_real_ref_name;<div class="calls"><div class="calls_out"> # spent 2.24ms making 241 calls to <a href="Class-MOP-Class-pm-103-line.html#123">Class::MOP::Class::_real_ref_name</a>, avg 9&micro;s/call</div></div></td></tr>
620<tr><td class="h"><a name="256"></a>256</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
621<tr><td class="h"><a name="257"></a>257</td><td class="c2">241</td><td class="c0"><span title="Avg 3&micro;s">784&micro;s</span></td><td class="c3">241</td><td class="c3">1.15ms</td><td class="s"> return $self-&gt;_is_compatible_with($super_meta_name);<div class="calls"><div class="calls_out"> # spent 1.15ms making 241 calls to <a href="Class-MOP-Object-pm-96-line.html#48">Class::MOP::Object::_is_compatible_with</a>, avg 5&micro;s/call</div></div></td></tr>
622<tr><td class="h"><a name="258"></a>258</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
623<tr><td class="h"><a name="259"></a>259</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
624<tr><td class="h"><a name="260"></a>260</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 48.7ms (6.72+42.0) within Class::MOP::Class::_check_single_metaclass_compatibility which was called 1624 times, avg 30&micro;s/call:
625# 1624 times (6.72ms+42.0ms) by Class::MOP::Class::_check_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#226">line 226</a>, avg 30&micro;s/call</div></div>sub _check_single_metaclass_compatibility {</td></tr>
626<tr><td class="h"><a name="261"></a>261</td><td class="c0">1624</td><td class="c2"><span title="Avg 227ns">369&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
627<tr><td class="h"><a name="262"></a>262</td><td class="c0">1624</td><td class="c0"><span title="Avg 633ns">1.03ms</span></td><td></td><td></td><td class="s"> my ( $metaclass_type, $superclass_name ) = @_;</td></tr>
628<tr><td class="h"><a name="263"></a>263</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
629<tr><td class="h"><a name="264"></a>264</td><td class="c0">1624</td><td class="c0"><span title="Avg 3&micro;s">4.44ms</span></td><td class="c0">1624</td><td class="c0">42.0ms</td><td class="s"> if (!$self-&gt;_single_metaclass_is_compatible($metaclass_type, $superclass_name)) {<div class="calls"><div class="calls_out"> # spent 42.0ms making 1624 calls to <a href="Class-MOP-Class-pm-103-line.html#278">Class::MOP::Class::_single_metaclass_is_compatible</a>, avg 26&micro;s/call</div></div></td></tr>
630<tr><td class="h"><a name="265"></a>265</td><td></td><td></td><td></td><td></td><td class="s"> my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name);</td></tr>
631<tr><td class="h"><a name="266"></a>266</td><td></td><td></td><td></td><td></td><td class="s"> my $metaclass_type_name = $metaclass_type;</td></tr>
632<tr><td class="h"><a name="267"></a>267</td><td></td><td></td><td></td><td></td><td class="s"> $metaclass_type_name =~ s/_(?:meta)?class$//;</td></tr>
633<tr><td class="h"><a name="268"></a>268</td><td></td><td></td><td></td><td></td><td class="s"> $metaclass_type_name =~ s/_/ /g;</td></tr>
634<tr><td class="h"><a name="269"></a>269</td><td></td><td></td><td></td><td></td><td class="s"> confess &quot;The $metaclass_type_name metaclass for &quot;</td></tr>
635<tr><td class="h"><a name="270"></a>270</td><td></td><td></td><td></td><td></td><td class="s"> . $self-&gt;name . &quot; (&quot; . ($self-&gt;$metaclass_type)</td></tr>
636<tr><td class="h"><a name="271"></a>271</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;)&quot; . &quot; is not compatible with the &quot;</td></tr>
637<tr><td class="h"><a name="272"></a>272</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;$metaclass_type_name metaclass of its &quot;</td></tr>
638<tr><td class="h"><a name="273"></a>273</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;superclass, $superclass_name (&quot;</td></tr>
639<tr><td class="h"><a name="274"></a>274</td><td></td><td></td><td></td><td></td><td class="s"> . ($super_meta-&gt;$metaclass_type) . &quot;)&quot;;</td></tr>
640<tr><td class="h"><a name="275"></a>275</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
641<tr><td class="h"><a name="276"></a>276</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
642<tr><td class="h"><a name="277"></a>277</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
643<tr><td class="h"><a name="278"></a>278</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 43.9ms (26.8+17.1) within Class::MOP::Class::_single_metaclass_is_compatible which was called 1687 times, avg 26&micro;s/call:
644# 1624 times (25.6ms+16.3ms) by Class::MOP::Class::_check_single_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#264">line 264</a>, avg 26&micro;s/call
645# 63 times (1.16ms+818&micro;s) by Class::MOP::Class::_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#318">line 318</a>, avg 31&micro;s/call</div></div>sub _single_metaclass_is_compatible {</td></tr>
646<tr><td class="h"><a name="279"></a>279</td><td class="c0">1687</td><td class="c3"><span title="Avg 146ns">247&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
647<tr><td class="h"><a name="280"></a>280</td><td class="c0">1687</td><td class="c0"><span title="Avg 480ns">810&micro;s</span></td><td></td><td></td><td class="s"> my ( $metaclass_type, $superclass_name ) = @_;</td></tr>
648<tr><td class="h"><a name="281"></a>281</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
649<tr><td class="h"><a name="282"></a>282</td><td class="c0">1687</td><td class="c0"><span title="Avg 966ns">1.63ms</span></td><td class="c0">1687</td><td class="c3">1.79ms</td><td class="s"> my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name)<div class="calls"><div class="calls_out"> # spent 1.79ms making 1687 calls to <a href="Class-MOP-pm-83-line.html#55">Class::MOP::get_metaclass_by_name</a>, avg 1&micro;s/call</div></div></td></tr>
650<tr><td class="h"><a name="283"></a>283</td><td></td><td></td><td></td><td></td><td class="s"> || return 1;</td></tr>
651<tr><td class="h"><a name="284"></a>284</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
652<tr><td class="h"><a name="285"></a>285</td><td></td><td></td><td></td><td></td><td class="s"> # for instance, Moose::Meta::Class has a error_class attribute, but</td></tr>
653<tr><td class="h"><a name="286"></a>286</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class doesn't - this shouldn't be an error</td></tr>
654<tr><td class="h"><a name="287"></a>287</td><td class="c0">1687</td><td class="c0"><span title="Avg 3&micro;s">4.95ms</span></td><td class="c0">1687</td><td class="c3">1.64ms</td><td class="s"> return 1 unless $super_meta-&gt;can($metaclass_type);<div class="calls"><div class="calls_out"> # spent 1.64ms making 1687 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__can">UNIVERSAL::can</a>, avg 970ns/call</div></div></td></tr>
655<tr><td class="h"><a name="288"></a>288</td><td></td><td></td><td></td><td></td><td class="s"> # for instance, Moose::Meta::Class has a destructor_class, but</td></tr>
656<tr><td class="h"><a name="289"></a>289</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class doesn't - this shouldn't be an error</td></tr>
657<tr><td class="h"><a name="290"></a>290</td><td class="c0">1635</td><td class="c0"><span title="Avg 2&micro;s">3.79ms</span></td><td class="c0">1635</td><td class="c3">1.67ms</td><td class="s"> return 1 unless defined $super_meta-&gt;$metaclass_type;<div class="calls"><div class="calls_out"> # spent 329&micro;s making 189 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 2&micro;s/call
658 # spent 317&micro;s making 189 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
659 # spent 312&micro;s making 189 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 2&micro;s/call
660 # spent 166&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 689ns/call
661 # spent 165&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 686ns/call
662 # spent 159&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 660ns/call
663 # spent 158&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 657ns/call
664 # spent 34&micro;s making 52 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 650ns/call
665 # spent 33&micro;s making 52 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__destructor_class">Class::MOP::Class::destructor_class</a>, avg 625ns/call</div></div></td></tr>
666<tr><td class="h"><a name="291"></a>291</td><td></td><td></td><td></td><td></td><td class="s"> # if metaclass is defined in superclass but not here, it's not compatible</td></tr>
667<tr><td class="h"><a name="292"></a>292</td><td></td><td></td><td></td><td></td><td class="s"> # this is a really odd case</td></tr>
668<tr><td class="h"><a name="293"></a>293</td><td class="c0">1583</td><td class="c0"><span title="Avg 2&micro;s">3.21ms</span></td><td class="c0">1583</td><td class="c3">1.46ms</td><td class="s"> return 0 unless defined $self-&gt;$metaclass_type;<div class="calls"><div class="calls_out"> # spent 367&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
669 # spent 287&micro;s making 189 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 2&micro;s/call
670 # spent 276&micro;s making 189 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 1&micro;s/call
671 # spent 138&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 571ns/call
672 # spent 136&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 565ns/call
673 # spent 131&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 544ns/call
674 # spent 129&micro;s making 241 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 537ns/call</div></div></td></tr>
675<tr><td class="h"><a name="294"></a>294</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
676<tr><td class="h"><a name="295"></a>295</td><td class="c0">1582</td><td class="c0"><span title="Avg 7&micro;s">10.6ms</span></td><td class="c0">4746</td><td class="c0">10.6ms</td><td class="s"> return $self-&gt;$metaclass_type-&gt;_is_compatible_with($super_meta-&gt;$metaclass_type);<div class="calls"><div class="calls_out"> # spent 7.81ms making 1582 calls to <a href="Class-MOP-Object-pm-96-line.html#48">Class::MOP::Object::_is_compatible_with</a>, avg 5&micro;s/call
677 # spent 621&micro;s making 430 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 1&micro;s/call
678 # spent 569&micro;s making 378 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 2&micro;s/call
679 # spent 542&micro;s making 376 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 1&micro;s/call
680 # spent 255&micro;s making 482 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 529ns/call
681 # spent 254&micro;s making 482 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 526ns/call
682 # spent 249&micro;s making 482 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 516ns/call
683 # spent 243&micro;s making 482 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 504ns/call
684 # spent 32&micro;s making 52 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 606ns/call</div></div></td></tr>
685<tr><td class="h"><a name="296"></a>296</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
686<tr><td class="h"><a name="297"></a>297</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
687<tr><td class="h"><a name="298"></a>298</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 117ms (3.82+114) within Class::MOP::Class::_fix_metaclass_incompatibility which was called 255 times, avg 461&micro;s/call:
688# 255 times (3.82ms+114ms) by Class::MOP::Class::_check_metaclass_compatibility at <a href="Class-MOP-Class-pm-103-line.html#206">line 206</a>, avg 461&micro;s/call</div></div>sub _fix_metaclass_incompatibility {</td></tr>
689<tr><td class="h"><a name="299"></a>299</td><td class="c2">255</td><td class="c3"><span title="Avg 353ns">90&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
690<tr><td class="h"><a name="300"></a>300</td><td class="c0">542</td><td class="c0"><span title="Avg 2&micro;s">843&micro;s</span></td><td class="c2">287</td><td class="c3">3.26ms</td><td class="s"> my @supers = map { Class::MOP::Class-&gt;initialize($_) } @_;<div class="calls"><div class="calls_out"> # spent 9.52ms making 287 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 33&micro;s/call, recursion: max depth 4, sum of overlapping time 6.26ms</div></div></td></tr>
691<tr><td class="h"><a name="301"></a>301</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
692<tr><td class="h"><a name="302"></a>302</td><td class="c2">255</td><td class="c3"><span title="Avg 283ns">72&micro;s</span></td><td></td><td></td><td class="s"> my $necessary = 0;</td></tr>
693<tr><td class="h"><a name="303"></a>303</td><td class="c2">255</td><td class="c3"><span title="Avg 848ns">216&micro;s</span></td><td></td><td></td><td class="s"> for my $super (@supers) {</td></tr>
694<tr><td class="h"><a name="304"></a>304</td><td class="c2">287</td><td class="c0"><span title="Avg 3&micro;s">759&micro;s</span></td><td class="c2">287</td><td class="c0">75.7ms</td><td class="s"> $necessary = 1<div class="calls"><div class="calls_out"> # spent 75.7ms making 287 calls to <a href="Class-MOP-Class-pm-103-line.html#327">Class::MOP::Class::_can_fix_metaclass_incompatibility</a>, avg 264&micro;s/call</div></div></td></tr>
695<tr><td class="h"><a name="305"></a>305</td><td></td><td></td><td></td><td></td><td class="s"> if $self-&gt;_can_fix_metaclass_incompatibility($super);</td></tr>
696<tr><td class="h"><a name="306"></a>306</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
697<tr><td class="h"><a name="307"></a>307</td><td class="c2">255</td><td class="c0"><span title="Avg 3&micro;s">689&micro;s</span></td><td></td><td></td><td class="s"> return unless $necessary;</td></tr>
698<tr><td class="h"><a name="308"></a>308</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
699<tr><td class="h"><a name="309"></a>309</td><td class="c3">7</td><td class="c3"><span title="Avg 614ns">4&micro;s</span></td><td></td><td></td><td class="s"> for my $super (@supers) {</td></tr>
700<tr><td class="h"><a name="310"></a>310</td><td class="c3">9</td><td class="c3"><span title="Avg 9&micro;s">81&micro;s</span></td><td class="c3">25</td><td class="c0">28.8ms</td><td class="s"> if (!$self-&gt;_class_metaclass_is_compatible($super-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 25.5ms making 6 calls to <a href="Moose-Meta-Class-pm-136-line.html#630">Moose::Meta::Class::_fix_class_metaclass_incompatibility</a>, avg 4.26ms/call
701 # spent 3.02ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#368">Class::MOP::Class::_fix_class_metaclass_incompatibility</a>
702 # spent 245&micro;s making 9 calls to <a href="Class-MOP-Class-pm-103-line.html#248">Class::MOP::Class::_class_metaclass_is_compatible</a>, avg 27&micro;s/call
703 # spent 8&micro;s making 9 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 889ns/call</div></div></td></tr>
704<tr><td class="h"><a name="311"></a>311</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_fix_class_metaclass_incompatibility($super);</td></tr>
705<tr><td class="h"><a name="312"></a>312</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
706<tr><td class="h"><a name="313"></a>313</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
707<tr><td class="h"><a name="314"></a>314</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
708<tr><td class="h"><a name="315"></a>315</td><td class="c3">7</td><td class="c3"><span title="Avg 4&micro;s">28&micro;s</span></td><td class="c3">7</td><td class="c3">343&micro;s</td><td class="s"> my %base_metaclass = $self-&gt;_base_metaclasses;<div class="calls"><div class="calls_out"> # spent 343&micro;s making 7 calls to <a href="Moose-Meta-Class-pm-136-line.html#618">Moose::Meta::Class::_base_metaclasses</a>, avg 49&micro;s/call</div></div></td></tr>
709<tr><td class="h"><a name="316"></a>316</td><td class="c3">7</td><td class="c3"><span title="Avg 6&micro;s">43&micro;s</span></td><td></td><td></td><td class="s"> for my $metaclass_type (keys %base_metaclass) {</td></tr>
710<tr><td class="h"><a name="317"></a>317</td><td class="c3">49</td><td class="c3"><span title="Avg 649ns">32&micro;s</span></td><td></td><td></td><td class="s"> for my $super (@supers) {</td></tr>
711<tr><td class="h"><a name="318"></a>318</td><td class="c3">63</td><td class="c3"><span title="Avg 5&micro;s">304&micro;s</span></td><td class="c3">141</td><td class="c2">5.42ms</td><td class="s"> if (!$self-&gt;_single_metaclass_is_compatible($metaclass_type, $super-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 3.41ms making 15 calls to <a href="Moose-Meta-Class-pm-136-line.html#651">Moose::Meta::Class::_fix_single_metaclass_incompatibility</a>, avg 227&micro;s/call
712 # spent 1.97ms making 63 calls to <a href="Class-MOP-Class-pm-103-line.html#278">Class::MOP::Class::_single_metaclass_is_compatible</a>, avg 31&micro;s/call
713 # spent 44&micro;s making 63 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 700ns/call</div></div></td></tr>
714<tr><td class="h"><a name="319"></a>319</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_fix_single_metaclass_incompatibility(</td></tr>
715<tr><td class="h"><a name="320"></a>320</td><td></td><td></td><td></td><td></td><td class="s"> $metaclass_type, $super</td></tr>
716<tr><td class="h"><a name="321"></a>321</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
717<tr><td class="h"><a name="322"></a>322</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
718<tr><td class="h"><a name="323"></a>323</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
719<tr><td class="h"><a name="324"></a>324</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
720<tr><td class="h"><a name="325"></a>325</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
721<tr><td class="h"><a name="326"></a>326</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
722<tr><td class="h"><a name="327"></a>327</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 75.7ms (9.34+66.3) within Class::MOP::Class::_can_fix_metaclass_incompatibility which was called 287 times, avg 264&micro;s/call:
723# 287 times (9.34ms+66.3ms) by Class::MOP::Class::_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#304">line 304</a>, avg 264&micro;s/call</div></div>sub _can_fix_metaclass_incompatibility {</td></tr>
724<tr><td class="h"><a name="328"></a>328</td><td class="c2">287</td><td class="c3"><span title="Avg 322ns">92&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
725<tr><td class="h"><a name="329"></a>329</td><td class="c2">287</td><td class="c3"><span title="Avg 627ns">180&micro;s</span></td><td></td><td></td><td class="s"> my ($super_meta) = @_;</td></tr>
726<tr><td class="h"><a name="330"></a>330</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
727<tr><td class="h"><a name="331"></a>331</td><td class="c2">287</td><td class="c0"><span title="Avg 2&micro;s">641&micro;s</span></td><td class="c2">287</td><td class="c0">9.44ms</td><td class="s"> return 1 if $self-&gt;_class_metaclass_can_be_made_compatible($super_meta);<div class="calls"><div class="calls_out"> # spent 9.44ms making 287 calls to <a href="Class-MOP-Class-pm-103-line.html#341">Class::MOP::Class::_class_metaclass_can_be_made_compatible</a>, avg 33&micro;s/call</div></div></td></tr>
728<tr><td class="h"><a name="332"></a>332</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
729<tr><td class="h"><a name="333"></a>333</td><td class="c2">280</td><td class="c0"><span title="Avg 4&micro;s">1.12ms</span></td><td class="c2">280</td><td class="c0">10.9ms</td><td class="s"> my %base_metaclass = $self-&gt;_base_metaclasses;<div class="calls"><div class="calls_out"> # spent 10.7ms making 225 calls to <a href="Moose-Meta-Class-pm-136-line.html#618">Moose::Meta::Class::_base_metaclasses</a>, avg 47&micro;s/call
730 # spent 204&micro;s making 55 calls to <a href="Class-MOP-Class-pm-103-line.html#197">Class::MOP::Class::_base_metaclasses</a>, avg 4&micro;s/call</div></div></td></tr>
731<tr><td class="h"><a name="334"></a>334</td><td class="c2">280</td><td class="c1"><span title="Avg 2&micro;s">496&micro;s</span></td><td></td><td></td><td class="s"> for my $metaclass_type (keys %base_metaclass) {</td></tr>
732<tr><td class="h"><a name="335"></a>335</td><td class="c0">1905</td><td class="c0"><span title="Avg 2&micro;s">3.27ms</span></td><td class="c0">1905</td><td class="c0">46.0ms</td><td class="s"> return 1 if $self-&gt;_single_metaclass_can_be_made_compatible($super_meta, $metaclass_type);<div class="calls"><div class="calls_out"> # spent 46.0ms making 1905 calls to <a href="Class-MOP-Class-pm-103-line.html#348">Class::MOP::Class::_single_metaclass_can_be_made_compatible</a>, avg 24&micro;s/call</div></div></td></tr>
733<tr><td class="h"><a name="336"></a>336</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
734<tr><td class="h"><a name="337"></a>337</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
735<tr><td class="h"><a name="338"></a>338</td><td class="c2">280</td><td class="c0"><span title="Avg 4&micro;s">1.00ms</span></td><td></td><td></td><td class="s"> return;</td></tr>
736<tr><td class="h"><a name="339"></a>339</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
737<tr><td class="h"><a name="340"></a>340</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
738<tr><td class="h"><a name="341"></a>341</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 10.0ms (2.29+7.75) within Class::MOP::Class::_class_metaclass_can_be_made_compatible which was called 300 times, avg 33&micro;s/call:
739# 287 times (2.22ms+7.23ms) by Class::MOP::Class::_can_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#331">line 331</a>, avg 33&micro;s/call
740# 7 times (35&micro;s+356&micro;s) by Class::MOP::Class::_fix_class_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#372">line 372</a>, avg 56&micro;s/call
741# 6 times (42&micro;s+165&micro;s) by Moose::Meta::Class::_fix_class_metaclass_incompatibility at <a href="Moose-Meta-Class-pm-136-line.html#636">line 636 of Moose/Meta/Class.pm</a>, avg 35&micro;s/call</div></div>sub _class_metaclass_can_be_made_compatible {</td></tr>
742<tr><td class="h"><a name="342"></a>342</td><td class="c2">300</td><td class="c3"><span title="Avg 270ns">81&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
743<tr><td class="h"><a name="343"></a>343</td><td class="c2">300</td><td class="c3"><span title="Avg 346ns">104&micro;s</span></td><td></td><td></td><td class="s"> my ($super_meta) = @_;</td></tr>
744<tr><td class="h"><a name="344"></a>344</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
745<tr><td class="h"><a name="345"></a>345</td><td class="c2">300</td><td class="c0"><span title="Avg 6&micro;s">1.66ms</span></td><td class="c0">600</td><td class="c1">7.75ms</td><td class="s"> return $self-&gt;_can_be_made_compatible_with($super_meta-&gt;_real_ref_name);<div class="calls"><div class="calls_out"> # spent 4.02ms making 300 calls to <a href="Class-MOP-Object-pm-96-line.html#55">Class::MOP::Object::_can_be_made_compatible_with</a>, avg 13&micro;s/call
746 # spent 3.73ms making 300 calls to <a href="Class-MOP-Class-pm-103-line.html#123">Class::MOP::Class::_real_ref_name</a>, avg 12&micro;s/call</div></div></td></tr>
747<tr><td class="h"><a name="346"></a>346</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
748<tr><td class="h"><a name="347"></a>347</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
749<tr><td class="h"><a name="348"></a>348</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 47.0ms (24.5+22.5) within Class::MOP::Class::_single_metaclass_can_be_made_compatible which was called 1935 times, avg 24&micro;s/call:
750# 1905 times (24.1ms+21.9ms) by Class::MOP::Class::_can_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#335">line 335</a>, avg 24&micro;s/call
751# 15 times (177&micro;s+517&micro;s) by Class::MOP::Class::_fix_single_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#388">line 388</a>, avg 46&micro;s/call
752# 15 times (168&micro;s+158&micro;s) by Moose::Meta::Class::_fix_single_metaclass_incompatibility at <a href="Moose-Meta-Class-pm-136-line.html#657">line 657 of Moose/Meta/Class.pm</a>, avg 22&micro;s/call</div></div>sub _single_metaclass_can_be_made_compatible {</td></tr>
753<tr><td class="h"><a name="349"></a>349</td><td class="c0">1935</td><td class="c1"><span title="Avg 217ns">420&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
754<tr><td class="h"><a name="350"></a>350</td><td class="c0">1935</td><td class="c0"><span title="Avg 578ns">1.12ms</span></td><td></td><td></td><td class="s"> my ($super_meta, $metaclass_type) = @_;</td></tr>
755<tr><td class="h"><a name="351"></a>351</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
756<tr><td class="h"><a name="352"></a>352</td><td class="c0">1935</td><td class="c0"><span title="Avg 3&micro;s">6.38ms</span></td><td class="c0">1935</td><td class="c3">2.80ms</td><td class="s"> my $specific_meta = $self-&gt;$metaclass_type;<div class="calls"><div class="calls_out"> # spent 646&micro;s making 225 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 3&micro;s/call
757 # spent 553&micro;s making 227 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 2&micro;s/call
758 # spent 531&micro;s making 227 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
759 # spent 263&micro;s making 290 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 908ns/call
760 # spent 256&micro;s making 282 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 907ns/call
761 # spent 249&micro;s making 282 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 883ns/call
762 # spent 225&micro;s making 292 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 772ns/call
763 # spent 41&micro;s making 55 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 740ns/call
764 # spent 35&micro;s making 55 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__destructor_class">Class::MOP::Class::destructor_class</a>, avg 644ns/call</div></div></td></tr>
765<tr><td class="h"><a name="353"></a>353</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
766<tr><td class="h"><a name="354"></a>354</td><td class="c0">1935</td><td class="c0"><span title="Avg 3&micro;s">5.68ms</span></td><td class="c0">1935</td><td class="c3">1.83ms</td><td class="s"> return unless $super_meta-&gt;can($metaclass_type);<div class="calls"><div class="calls_out"> # spent 1.83ms making 1935 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__can">UNIVERSAL::can</a>, avg 945ns/call</div></div></td></tr>
767<tr><td class="h"><a name="355"></a>355</td><td class="c0">1883</td><td class="c0"><span title="Avg 3&micro;s">4.74ms</span></td><td class="c0">1883</td><td class="c3">1.91ms</td><td class="s"> my $super_specific_meta = $super_meta-&gt;$metaclass_type;<div class="calls"><div class="calls_out"> # spent 313&micro;s making 175 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
768 # spent 311&micro;s making 173 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::error_class</a>, avg 2&micro;s/call
769 # spent 296&micro;s making 175 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 2&micro;s/call
770 # spent 231&micro;s making 290 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 798ns/call
771 # spent 198&micro;s making 282 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 701ns/call
772 # spent 198&micro;s making 282 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 701ns/call
773 # spent 196&micro;s making 292 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 672ns/call
774 # spent 83&micro;s making 107 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 772ns/call
775 # spent 81&micro;s making 107 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__destructor_class">Class::MOP::Class::destructor_class</a>, avg 755ns/call</div></div></td></tr>
776<tr><td class="h"><a name="356"></a>356</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
777<tr><td class="h"><a name="357"></a>357</td><td></td><td></td><td></td><td></td><td class="s"> # for instance, Moose::Meta::Class has a destructor_class, but</td></tr>
778<tr><td class="h"><a name="358"></a>358</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class doesn't - this shouldn't be an error</td></tr>
779<tr><td class="h"><a name="359"></a>359</td><td class="c0">1883</td><td class="c1"><span title="Avg 235ns">442&micro;s</span></td><td></td><td></td><td class="s"> return unless defined $super_specific_meta;</td></tr>
780<tr><td class="h"><a name="360"></a>360</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
781<tr><td class="h"><a name="361"></a>361</td><td></td><td></td><td></td><td></td><td class="s"> # if metaclass is defined in superclass but not here, it's fixable</td></tr>
782<tr><td class="h"><a name="362"></a>362</td><td></td><td></td><td></td><td></td><td class="s"> # this is a really odd case</td></tr>
783<tr><td class="h"><a name="363"></a>363</td><td class="c0">1776</td><td class="c3"><span title="Avg 22ns">40&micro;s</span></td><td></td><td></td><td class="s"> return 1 unless defined $specific_meta;</td></tr>
784<tr><td class="h"><a name="364"></a>364</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
785<tr><td class="h"><a name="365"></a>365</td><td class="c0">1775</td><td class="c0"><span title="Avg 4&micro;s">6.37ms</span></td><td class="c0">1775</td><td class="c0">16.0ms</td><td class="s"> return 1 if $specific_meta-&gt;_can_be_made_compatible_with($super_specific_meta);<div class="calls"><div class="calls_out"> # spent 16.0ms making 1775 calls to <a href="Class-MOP-Object-pm-96-line.html#55">Class::MOP::Object::_can_be_made_compatible_with</a>, avg 9&micro;s/call</div></div></td></tr>
786<tr><td class="h"><a name="366"></a>366</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
787<tr><td class="h"><a name="367"></a>367</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
788<tr><td class="h"><a name="368"></a>368</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 28.3ms (120&micro;s+28.1) within Class::MOP::Class::_fix_class_metaclass_incompatibility which was called 7 times, avg 4.04ms/call:
789# 6 times (102&micro;s+25.1ms) by Moose::Meta::Class::_fix_class_metaclass_incompatibility at <a href="Moose-Meta-Class-pm-136-line.html#634">line 634 of Moose/Meta/Class.pm</a>, avg 4.21ms/call
790# once (17&micro;s+3.00ms) by Class::MOP::Class::_fix_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#310">line 310</a></div></div>sub _fix_class_metaclass_incompatibility {</td></tr>
791<tr><td class="h"><a name="369"></a>369</td><td class="c3">7</td><td class="c3"><span title="Avg 329ns">2&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
792<tr><td class="h"><a name="370"></a>370</td><td class="c3">7</td><td class="c3"><span title="Avg 429ns">3&micro;s</span></td><td></td><td></td><td class="s"> my ( $super_meta ) = @_;</td></tr>
793<tr><td class="h"><a name="371"></a>371</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
794<tr><td class="h"><a name="372"></a>372</td><td class="c3">7</td><td class="c3"><span title="Avg 4&micro;s">26&micro;s</span></td><td class="c3">7</td><td class="c3">391&micro;s</td><td class="s"> if ($self-&gt;_class_metaclass_can_be_made_compatible($super_meta)) {<div class="calls"><div class="calls_out"> # spent 391&micro;s making 7 calls to <a href="Class-MOP-Class-pm-103-line.html#341">Class::MOP::Class::_class_metaclass_can_be_made_compatible</a>, avg 56&micro;s/call</div></div></td></tr>
795<tr><td class="h"><a name="373"></a>373</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">18&micro;s</span></td><td class="c3">7</td><td class="c2">4.69ms</td><td class="s"> ($self-&gt;is_pristine)<div class="calls"><div class="calls_out"> # spent 4.69ms making 7 calls to <a href="Class-MOP-Class-pm-103-line.html#1242">Class::MOP::Class::is_pristine</a>, avg 669&micro;s/call</div></div></td></tr>
796<tr><td class="h"><a name="374"></a>374</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;Can't fix metaclass incompatibility for &quot;</td></tr>
797<tr><td class="h"><a name="375"></a>375</td><td></td><td></td><td></td><td></td><td class="s"> . $self-&gt;name</td></tr>
798<tr><td class="h"><a name="376"></a>376</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; because it is not pristine.&quot;;</td></tr>
799<tr><td class="h"><a name="377"></a>377</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
800<tr><td class="h"><a name="378"></a>378</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">14&micro;s</span></td><td class="c3">7</td><td class="c3">102&micro;s</td><td class="s"> my $super_meta_name = $super_meta-&gt;_real_ref_name;<div class="calls"><div class="calls_out"> # spent 102&micro;s making 7 calls to <a href="Class-MOP-Class-pm-103-line.html#123">Class::MOP::Class::_real_ref_name</a>, avg 15&micro;s/call</div></div></td></tr>
801<tr><td class="h"><a name="379"></a>379</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
802<tr><td class="h"><a name="380"></a>380</td><td class="c3">7</td><td class="c3"><span title="Avg 4&micro;s">25&micro;s</span></td><td class="c3">7</td><td class="c0">23.0ms</td><td class="s"> $self-&gt;_make_compatible_with($super_meta_name);<div class="calls"><div class="calls_out"> # spent 23.0ms making 7 calls to <a href="Class-MOP-Object-pm-96-line.html#61">Class::MOP::Object::_make_compatible_with</a>, avg 3.28ms/call</div></div></td></tr>
803<tr><td class="h"><a name="381"></a>381</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
804<tr><td class="h"><a name="382"></a>382</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
805<tr><td class="h"><a name="383"></a>383</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
806<tr><td class="h"><a name="384"></a>384</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 2.92ms (265&micro;s+2.66) within Class::MOP::Class::_fix_single_metaclass_incompatibility which was called 15 times, avg 195&micro;s/call:
807# 15 times (265&micro;s+2.66ms) by Moose::Meta::Class::_fix_single_metaclass_incompatibility at <a href="Moose-Meta-Class-pm-136-line.html#655">line 655 of Moose/Meta/Class.pm</a>, avg 195&micro;s/call</div></div>sub _fix_single_metaclass_incompatibility {</td></tr>
808<tr><td class="h"><a name="385"></a>385</td><td class="c3">15</td><td class="c3"><span title="Avg 247ns">4&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
809<tr><td class="h"><a name="386"></a>386</td><td class="c3">15</td><td class="c3"><span title="Avg 647ns">10&micro;s</span></td><td></td><td></td><td class="s"> my ( $metaclass_type, $super_meta ) = @_;</td></tr>
810<tr><td class="h"><a name="387"></a>387</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
811<tr><td class="h"><a name="388"></a>388</td><td class="c3">15</td><td class="c3"><span title="Avg 4&micro;s">55&micro;s</span></td><td class="c3">15</td><td class="c3">694&micro;s</td><td class="s"> if ($self-&gt;_single_metaclass_can_be_made_compatible($super_meta, $metaclass_type)) {<div class="calls"><div class="calls_out"> # spent 694&micro;s making 15 calls to <a href="Class-MOP-Class-pm-103-line.html#348">Class::MOP::Class::_single_metaclass_can_be_made_compatible</a>, avg 46&micro;s/call</div></div></td></tr>
812<tr><td class="h"><a name="389"></a>389</td><td class="c3">15</td><td class="c3"><span title="Avg 2&micro;s">24&micro;s</span></td><td class="c3">15</td><td class="c3">1.69ms</td><td class="s"> ($self-&gt;is_pristine)<div class="calls"><div class="calls_out"> # spent 1.69ms making 15 calls to <a href="Class-MOP-Class-pm-103-line.html#1242">Class::MOP::Class::is_pristine</a>, avg 112&micro;s/call</div></div></td></tr>
813<tr><td class="h"><a name="390"></a>390</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;Can't fix metaclass incompatibility for &quot;</td></tr>
814<tr><td class="h"><a name="391"></a>391</td><td></td><td></td><td></td><td></td><td class="s"> . $self-&gt;name</td></tr>
815<tr><td class="h"><a name="392"></a>392</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; because it is not pristine.&quot;;</td></tr>
816<tr><td class="h"><a name="393"></a>393</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
817<tr><td class="h"><a name="394"></a>394</td><td class="c3">15</td><td class="c3"><span title="Avg 9&micro;s">128&micro;s</span></td><td class="c3">58</td><td class="c3">278&micro;s</td><td class="s"> my $new_metaclass = $self-&gt;$metaclass_type<div class="calls"><div class="calls_out"> # spent 137&micro;s making 9 calls to <a href="Class-MOP-Object-pm-96-line.html#78">Class::MOP::Object::_get_compatible_metaclass</a>, avg 15&micro;s/call
818 # spent 110&micro;s making 5 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Method::_get_compatible_metaclass</a>, avg 22&micro;s/call
819 # spent 10&micro;s making 18 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__method_metaclass">Class::MOP::Mixin::HasMethods::method_metaclass</a>, avg 578ns/call
820 # spent 9&micro;s making 15 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 587ns/call
821 # spent 5&micro;s making 3 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 2&micro;s/call
822 # spent 3&micro;s making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 2&micro;s/call
823 # spent 2&micro;s making 3 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 600ns/call
824 # spent 2&micro;s making 3 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes__attribute_metaclass">Class::MOP::Mixin::HasAttributes::attribute_metaclass</a>, avg 567ns/call</div></div></td></tr>
825<tr><td class="h"><a name="395"></a>395</td><td></td><td></td><td></td><td></td><td class="s"> ? $self-&gt;$metaclass_type-&gt;_get_compatible_metaclass($super_meta-&gt;$metaclass_type)</td></tr>
826<tr><td class="h"><a name="396"></a>396</td><td></td><td></td><td></td><td></td><td class="s"> : $super_meta-&gt;$metaclass_type;</td></tr>
827<tr><td class="h"><a name="397"></a>397</td><td class="c3">15</td><td class="c3"><span title="Avg 1&micro;s">16&micro;s</span></td><td></td><td></td><td class="s"> $self-&gt;{$metaclass_type} = $new_metaclass;</td></tr>
828<tr><td class="h"><a name="398"></a>398</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
829<tr><td class="h"><a name="399"></a>399</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
830<tr><td class="h"><a name="400"></a>400</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
831<tr><td class="h"><a name="401"></a>401</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.28ms (40&micro;s+1.25) within Class::MOP::Class::_restore_metaobjects_from which was called 2 times, avg 642&micro;s/call:
832# 2 times (40&micro;s+1.25ms) by Moose::Meta::Class::_restore_metaobjects_from at <a href="Moose-Meta-Class-pm-136-line.html#728">line 728 of Moose/Meta/Class.pm</a>, avg 642&micro;s/call</div></div>sub _restore_metaobjects_from {</td></tr>
833<tr><td class="h"><a name="402"></a>402</td><td class="c3">2</td><td class="c3"><span title="Avg 400ns">800ns</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
834<tr><td class="h"><a name="403"></a>403</td><td class="c3">2</td><td class="c3"><span title="Avg 500ns">1&micro;s</span></td><td></td><td></td><td class="s"> my ($old_meta) = @_;</td></tr>
835<tr><td class="h"><a name="404"></a>404</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
836<tr><td class="h"><a name="405"></a>405</td><td class="c3">2</td><td class="c3"><span title="Avg 8&micro;s">15&micro;s</span></td><td class="c3">2</td><td class="c3">1.21ms</td><td class="s"> $self-&gt;_restore_metamethods_from($old_meta);<div class="calls"><div class="calls_out"> # spent 1.21ms making 2 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#175">Class::MOP::Mixin::HasMethods::_restore_metamethods_from</a>, avg 608&micro;s/call</div></div></td></tr>
837<tr><td class="h"><a name="406"></a>406</td><td class="c3">2</td><td class="c3"><span title="Avg 9&micro;s">18&micro;s</span></td><td class="c3">2</td><td class="c3">30&micro;s</td><td class="s"> $self-&gt;_restore_metaattributes_from($old_meta);<div class="calls"><div class="calls_out"> # spent 30&micro;s making 2 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#87">Class::MOP::Mixin::HasAttributes::_restore_metaattributes_from</a>, avg 15&micro;s/call</div></div></td></tr>
838<tr><td class="h"><a name="407"></a>407</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
839<tr><td class="h"><a name="408"></a>408</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
840<tr><td class="h"><a name="409"></a>409</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 38&micro;s (25+12) within Class::MOP::Class::_remove_generated_metaobjects which was called 2 times, avg 19&micro;s/call:
841# 2 times (25&micro;s+12&micro;s) by Class::MOP::Class::reinitialize at <a href="Class-MOP-Class-pm-103-line.html#62">line 62</a>, avg 19&micro;s/call</div></div>sub _remove_generated_metaobjects {</td></tr>
842<tr><td class="h"><a name="410"></a>410</td><td class="c3">2</td><td class="c3"><span title="Avg 500ns">1&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
843<tr><td class="h"><a name="411"></a>411</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
844<tr><td class="h"><a name="412"></a>412</td><td class="c3">2</td><td class="c3"><span title="Avg 11&micro;s">22&micro;s</span></td><td class="c3">2</td><td class="c3">12&micro;s</td><td class="s"> for my $attr (map { $self-&gt;get_attribute($_) } $self-&gt;get_attribute_list) {<div class="calls"><div class="calls_out"> # spent 12&micro;s making 2 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#82">Class::MOP::Mixin::HasAttributes::get_attribute_list</a>, avg 6&micro;s/call</div></div></td></tr>
845<tr><td class="h"><a name="413"></a>413</td><td></td><td></td><td></td><td></td><td class="s"> $attr-&gt;remove_accessors;</td></tr>
846<tr><td class="h"><a name="414"></a>414</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
847<tr><td class="h"><a name="415"></a>415</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
848<tr><td class="h"><a name="416"></a>416</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
849<tr><td class="h"><a name="417"></a>417</td><td></td><td></td><td></td><td></td><td class="s"># creating classes with MOP ...</td></tr>
850<tr><td class="h"><a name="418"></a>418</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
851<tr><td class="h"><a name="419"></a>419</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 99.4ms (1.25+98.1) within Class::MOP::Class::create which was called 44 times, avg 2.26ms/call:
852# 42 times (1.18ms+96.2ms) by Moose::Meta::Class::create at <a href="Moose-Meta-Class-pm-136-line.html#102">line 102 of Moose/Meta/Class.pm</a>, avg 2.32ms/call
853# 2 times (68&micro;s+1.88ms) by Class::MOP::Class::_immutable_metaclass at <a href="Class-MOP-Class-pm-103-line.html#1354">line 1354</a>, avg 972&micro;s/call</div></div>sub create {</td></tr>
854<tr><td class="h"><a name="420"></a>420</td><td class="c3">44</td><td class="c3"><span title="Avg 430ns">19&micro;s</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
855<tr><td class="h"><a name="421"></a>421</td><td class="c3">44</td><td class="c3"><span title="Avg 1&micro;s">56&micro;s</span></td><td></td><td></td><td class="s"> my @args = @_;</td></tr>
856<tr><td class="h"><a name="422"></a>422</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
857<tr><td class="h"><a name="423"></a>423</td><td class="c3">44</td><td class="c3"><span title="Avg 1&micro;s">49&micro;s</span></td><td></td><td></td><td class="s"> unshift @args, 'package' if @args % 2 == 1;</td></tr>
858<tr><td class="h"><a name="424"></a>424</td><td class="c3">44</td><td class="c3"><span title="Avg 1&micro;s">60&micro;s</span></td><td></td><td></td><td class="s"> my %options = @args;</td></tr>
859<tr><td class="h"><a name="425"></a>425</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
860<tr><td class="h"><a name="426"></a>426</td><td class="c3">44</td><td class="c3"><span title="Avg 1&micro;s">45&micro;s</span></td><td></td><td></td><td class="s"> (ref $options{superclasses} eq 'ARRAY')</td></tr>
861<tr><td class="h"><a name="427"></a>427</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass an ARRAY ref of superclasses&quot;</td></tr>
862<tr><td class="h"><a name="428"></a>428</td><td></td><td></td><td></td><td></td><td class="s"> if exists $options{superclasses};</td></tr>
863<tr><td class="h"><a name="429"></a>429</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
864<tr><td class="h"><a name="430"></a>430</td><td class="c3">44</td><td class="c3"><span title="Avg 380ns">17&micro;s</span></td><td></td><td></td><td class="s"> (ref $options{attributes} eq 'ARRAY')</td></tr>
865<tr><td class="h"><a name="431"></a>431</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass an ARRAY ref of attributes&quot;</td></tr>
866<tr><td class="h"><a name="432"></a>432</td><td></td><td></td><td></td><td></td><td class="s"> if exists $options{attributes};</td></tr>
867<tr><td class="h"><a name="433"></a>433</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
868<tr><td class="h"><a name="434"></a>434</td><td class="c3">44</td><td class="c3"><span title="Avg 307ns">14&micro;s</span></td><td></td><td></td><td class="s"> (ref $options{methods} eq 'HASH')</td></tr>
869<tr><td class="h"><a name="435"></a>435</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass a HASH ref of methods&quot;</td></tr>
870<tr><td class="h"><a name="436"></a>436</td><td></td><td></td><td></td><td></td><td class="s"> if exists $options{methods};</td></tr>
871<tr><td class="h"><a name="437"></a>437</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
872<tr><td class="h"><a name="438"></a>438</td><td class="c3">44</td><td class="c3"><span title="Avg 834ns">37&micro;s</span></td><td></td><td></td><td class="s"> my $package = delete $options{package};</td></tr>
873<tr><td class="h"><a name="439"></a>439</td><td class="c3">44</td><td class="c3"><span title="Avg 411ns">18&micro;s</span></td><td></td><td></td><td class="s"> my $superclasses = delete $options{superclasses};</td></tr>
874<tr><td class="h"><a name="440"></a>440</td><td class="c3">44</td><td class="c3"><span title="Avg 402ns">18&micro;s</span></td><td></td><td></td><td class="s"> my $attributes = delete $options{attributes};</td></tr>
875<tr><td class="h"><a name="441"></a>441</td><td class="c3">44</td><td class="c3"><span title="Avg 298ns">13&micro;s</span></td><td></td><td></td><td class="s"> my $methods = delete $options{methods};</td></tr>
876<tr><td class="h"><a name="442"></a>442</td><td class="c3">44</td><td class="c3"><span title="Avg 452ns">20&micro;s</span></td><td></td><td></td><td class="s"> my $meta_name = exists $options{meta_name}</td></tr>
877<tr><td class="h"><a name="443"></a>443</td><td></td><td></td><td></td><td></td><td class="s"> ? delete $options{meta_name}</td></tr>
878<tr><td class="h"><a name="444"></a>444</td><td></td><td></td><td></td><td></td><td class="s"> : 'meta';</td></tr>
879<tr><td class="h"><a name="445"></a>445</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
880<tr><td class="h"><a name="446"></a>446</td><td class="c3">44</td><td class="c3"><span title="Avg 6&micro;s">263&micro;s</span></td><td class="c3">44</td><td class="c0">33.8ms</td><td class="s"> my $meta = $class-&gt;SUPER::create($package =&gt; %options);<div class="calls"><div class="calls_out"> # spent 33.8ms making 44 calls to <a href="Class-MOP-Module-pm-120-line.html#57">Class::MOP::Module::create</a>, avg 767&micro;s/call</div></div></td></tr>
881<tr><td class="h"><a name="447"></a>447</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
882<tr><td class="h"><a name="448"></a>448</td><td class="c3">44</td><td class="c3"><span title="Avg 3&micro;s">137&micro;s</span></td><td class="c3">44</td><td class="c0">22.0ms</td><td class="s"> $meta-&gt;_add_meta_method($meta_name)<div class="calls"><div class="calls_out"> # spent 22.0ms making 44 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#25">Class::MOP::Mixin::HasMethods::_add_meta_method</a>, avg 500&micro;s/call</div></div></td></tr>
883<tr><td class="h"><a name="449"></a>449</td><td></td><td></td><td></td><td></td><td class="s"> if defined $meta_name;</td></tr>
884<tr><td class="h"><a name="450"></a>450</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
885<tr><td class="h"><a name="451"></a>451</td><td class="c3">44</td><td class="c3"><span title="Avg 2&micro;s">100&micro;s</span></td><td class="c3">42</td><td class="c0">38.4ms</td><td class="s"> $meta-&gt;superclasses(@{$superclasses})<div class="calls"><div class="calls_out"> # spent 41.7ms making 40 calls to <a href="Moose-Meta-Class-pm-136-line.html#549">Moose::Meta::Class::superclasses</a>, avg 1.04ms/call, recursion: max depth 1, sum of overlapping time 3.93ms
886 # spent 704&micro;s making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::superclasses</a>, avg 352&micro;s/call</div></div></td></tr>
887<tr><td class="h"><a name="452"></a>452</td><td></td><td></td><td></td><td></td><td class="s"> if defined $superclasses;</td></tr>
888<tr><td class="h"><a name="453"></a>453</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
889<tr><td class="h"><a name="454"></a>454</td><td></td><td></td><td></td><td></td><td class="s"> # process attributes first, so that they can</td></tr>
890<tr><td class="h"><a name="455"></a>455</td><td></td><td></td><td></td><td></td><td class="s"> # install accessors, but locally defined methods</td></tr>
891<tr><td class="h"><a name="456"></a>456</td><td></td><td></td><td></td><td></td><td class="s"> # can then overwrite them. It is maybe a little odd, but</td></tr>
892<tr><td class="h"><a name="457"></a>457</td><td></td><td></td><td></td><td></td><td class="s"> # I think this should be the order of things.</td></tr>
893<tr><td class="h"><a name="458"></a>458</td><td class="c3">44</td><td class="c3"><span title="Avg 334ns">15&micro;s</span></td><td></td><td></td><td class="s"> if (defined $attributes) {</td></tr>
894<tr><td class="h"><a name="459"></a>459</td><td></td><td></td><td></td><td></td><td class="s"> foreach my $attr (@{$attributes}) {</td></tr>
895<tr><td class="h"><a name="460"></a>460</td><td></td><td></td><td></td><td></td><td class="s"> $meta-&gt;add_attribute($attr);</td></tr>
896<tr><td class="h"><a name="461"></a>461</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
897<tr><td class="h"><a name="462"></a>462</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
898<tr><td class="h"><a name="463"></a>463</td><td class="c3">44</td><td class="c3"><span title="Avg 216ns">9&micro;s</span></td><td></td><td></td><td class="s"> if (defined $methods) {</td></tr>
899<tr><td class="h"><a name="464"></a>464</td><td></td><td></td><td></td><td></td><td class="s"> foreach my $method_name (keys %{$methods}) {</td></tr>
900<tr><td class="h"><a name="465"></a>465</td><td></td><td></td><td></td><td></td><td class="s"> $meta-&gt;add_method($method_name, $methods-&gt;{$method_name});</td></tr>
901<tr><td class="h"><a name="466"></a>466</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
902<tr><td class="h"><a name="467"></a>467</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
903<tr><td class="h"><a name="468"></a>468</td><td class="c3">44</td><td class="c3"><span title="Avg 4&micro;s">186&micro;s</span></td><td></td><td></td><td class="s"> return $meta;</td></tr>
904<tr><td class="h"><a name="469"></a>469</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
905<tr><td class="h"><a name="470"></a>470</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
906<tr><td class="h"><a name="471"></a>471</td><td></td><td></td><td></td><td></td><td class="s"># XXX: something more intelligent here?</td></tr>
907<tr><td class="h"><a name="472"></a>472</td><td></td><td></td><td></td><td></td><td class="s">sub _anon_package_prefix { 'Class::MOP::Class::__ANON__::SERIAL::' }</td></tr>
908<tr><td class="h"><a name="473"></a>473</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
909<tr><td class="h"><a name="474"></a>474</td><td class="c3">116</td><td class="c1"><span title="Avg 4&micro;s">453&micro;s</span></td><td class="c3">116</td><td class="c0">264ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 264ms (491&micro;s+264) within Class::MOP::Class::create_anon_class which was called 116 times, avg 2.28ms/call:
910# 70 times (277&micro;s+124ms) by Moose::Meta::Attribute::Native::Trait::_native_accessor_class_for at <a href="Moose-Meta-Attribute-Native-Trait-pm-771-line.html#187">line 187 of Moose/Meta/Attribute/Native/Trait.pm</a>, avg 1.77ms/call
911# 31 times (139&micro;s+44.5ms) by Moose::Meta::Attribute::interpolate_class at <a href="Moose-Meta-Attribute-pm-164-line.html#173">line 173 of Moose/Meta/Attribute.pm</a>, avg 1.44ms/call
912# 12 times (54&micro;s+87.2ms) by Moose::Util::MetaRole::_make_new_class at <a href="Moose-Util-MetaRole-pm-135-line.html#134">line 134 of Moose/Util/MetaRole.pm</a>, avg 7.27ms/call
913# 3 times (21&micro;s+8.30ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::_build_parameters_metaclass at <a href="MooseX-Parameterizable-pm-830-line.html#43">line 43 of MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm</a>, avg 2.77ms/call</div></div>sub create_anon_class { shift-&gt;create_anon(@_) }<div class="calls"><div class="calls_out"># spent 264ms making 116 calls to <a href="Class-MOP-Package-pm-122-line.html#100">Class::MOP::Package::create_anon</a>, avg 2.27ms/call</div></div></td></tr>
914<tr><td class="h"><a name="475"></a>475</td><td class="c3">26</td><td class="c3"><span title="Avg 4&micro;s">93&micro;s</span></td><td class="c3">26</td><td class="c3">392&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 487&micro;s (95+392) within Class::MOP::Class::is_anon_class which was called 26 times, avg 19&micro;s/call:
915# 16 times (65&micro;s+264&micro;s) by KiokuDB::TypeMap::resolve at <a href="KiokuDB-TypeMap-pm-1440-line.html#64">line 64 of KiokuDB/TypeMap.pm</a>, avg 21&micro;s/call
916# 5 times (16&micro;s+70&micro;s) by KiokuDB::TypeMap::Entry::MOP::compile_collapse_body at <a href="KiokuDB-TypeMap-Entry-MOP-pm-1731-line.html#75">line 75 of KiokuDB/TypeMap/Entry/MOP.pm</a>, avg 17&micro;s/call
917# 5 times (14&micro;s+58&micro;s) by KiokuDB::TypeMap::Entry::MOP::compile_expand at <a href="KiokuDB-TypeMap-Entry-MOP-pm-1731-line.html#191">line 191 of KiokuDB/TypeMap/Entry/MOP.pm</a>, avg 14&micro;s/call</div></div>sub is_anon_class { shift-&gt;is_anon(@_) }<div class="calls"><div class="calls_out"># spent 392&micro;s making 26 calls to <a href="Class-MOP-Package-pm-122-line.html#93">Class::MOP::Package::is_anon</a>, avg 15&micro;s/call</div></div></td></tr>
918<tr><td class="h"><a name="476"></a>476</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
919<tr><td class="h"><a name="477"></a>477</td><td></td><td></td><td></td><td></td><td class="s">sub _anon_cache_key {</td></tr>
920<tr><td class="h"><a name="478"></a>478</td><td></td><td></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
921<tr><td class="h"><a name="479"></a>479</td><td></td><td></td><td></td><td></td><td class="s"> my %options = @_;</td></tr>
922<tr><td class="h"><a name="480"></a>480</td><td></td><td></td><td></td><td></td><td class="s"> # Makes something like Super::Class|Super::Class::2</td></tr>
923<tr><td class="h"><a name="481"></a>481</td><td></td><td></td><td></td><td></td><td class="s"> return join '=' =&gt; (</td></tr>
924<tr><td class="h"><a name="482"></a>482</td><td></td><td></td><td></td><td></td><td class="s"> join( '|', sort @{ $options{superclasses} || [] } ),</td></tr>
925<tr><td class="h"><a name="483"></a>483</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
926<tr><td class="h"><a name="484"></a>484</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
927<tr><td class="h"><a name="485"></a>485</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
928<tr><td class="h"><a name="486"></a>486</td><td></td><td></td><td></td><td></td><td class="s"># Instance Construction &amp; Cloning</td></tr>
929<tr><td class="h"><a name="487"></a>487</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
930<tr><td class="h"><a name="488"></a>488</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 303ms (10.9+292) within Class::MOP::Class::new_object which was called 1223 times, avg 248&micro;s/call:
931# 751 times (6.60ms+155ms) by Class::MOP::Method::Accessor::_new at <a href="Class-MOP-Method-Accessor-pm-108-line.html#50">line 50 of Class/MOP/Method/Accessor.pm</a>, avg 215&micro;s/call
932# 283 times (2.79ms+62.3ms) by Moose::Meta::Method::_new at <a href="(eval 83)[Eval-Closure-pm-125]-192-line.html#7">line 7 of (eval 83)[Eval/Closure.pm:125]</a>, avg 230&micro;s/call
933# 155 times (1.25ms+67.3ms) by Moose::Meta::Class::new_object at <a href="Moose-Meta-Class-pm-136-line.html#274">line 274 of Moose/Meta/Class.pm</a>, avg 442&micro;s/call
934# 24 times (200&micro;s+4.18ms) by Class::MOP::Method::_new at <a href="Class-MOP-Method-pm-94-line.html#56">line 56 of Class/MOP/Method.pm</a>, avg 182&micro;s/call
935# 8 times (88&micro;s+2.00ms) by Moose::Meta::TypeCoercion::new at <a href="Moose-Meta-TypeCoercion-pm-163-line.html#39">line 39 of Moose/Meta/TypeCoercion.pm</a>, avg 261&micro;s/call
936# once (13&micro;s+659&micro;s) by Class::MOP::Attribute::_new at <a href="Class-MOP-Attribute-pm-130-line.html#64">line 64 of Class/MOP/Attribute.pm</a>
937# once (12&micro;s+263&micro;s) by Class::MOP::Object::_new at <a href="Class-MOP-Object-pm-96-line.html#24">line 24 of Class/MOP/Object.pm</a></div></div>sub new_object {</td></tr>
938<tr><td class="h"><a name="489"></a>489</td><td class="c0">1223</td><td class="c2"><span title="Avg 272ns">333&micro;s</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
939<tr><td class="h"><a name="490"></a>490</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
940<tr><td class="h"><a name="491"></a>491</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
941<tr><td class="h"><a name="492"></a>492</td><td></td><td></td><td></td><td></td><td class="s"> # we need to protect the integrity of the</td></tr>
942<tr><td class="h"><a name="493"></a>493</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class singletons here, so we</td></tr>
943<tr><td class="h"><a name="494"></a>494</td><td></td><td></td><td></td><td></td><td class="s"> # delegate this to &amp;construct_class_instance</td></tr>
944<tr><td class="h"><a name="495"></a>495</td><td></td><td></td><td></td><td></td><td class="s"> # which will deal with the singletons</td></tr>
945<tr><td class="h"><a name="496"></a>496</td><td class="c0">1223</td><td class="c0"><span title="Avg 8&micro;s">10.1ms</span></td><td class="c0">2446</td><td class="c3">4.36ms</td><td class="s"> return $class-&gt;_construct_class_instance(@_)<div class="calls"><div class="calls_out"> # spent 3.50ms making 1223 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 3&micro;s/call
946 # spent 856&micro;s making 1223 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 700ns/call</div></div></td></tr>
947<tr><td class="h"><a name="497"></a>497</td><td></td><td></td><td></td><td></td><td class="s"> if $class-&gt;name-&gt;isa('Class::MOP::Class');</td></tr>
948<tr><td class="h"><a name="498"></a>498</td><td class="c0">1223</td><td class="c0"><span title="Avg 3&micro;s">4.24ms</span></td><td class="c0">1223</td><td class="c0">288ms</td><td class="s"> return $class-&gt;_construct_instance(@_);<div class="calls"><div class="calls_out"> # spent 289ms making 1223 calls to <a href="Class-MOP-Class-pm-103-line.html#501">Class::MOP::Class::_construct_instance</a>, avg 236&micro;s/call, recursion: max depth 1, sum of overlapping time 847&micro;s</div></div></td></tr>
949<tr><td class="h"><a name="499"></a>499</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
950<tr><td class="h"><a name="500"></a>500</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
951<tr><td class="h"><a name="501"></a>501</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 387ms (65.3+321) within Class::MOP::Class::_construct_instance which was called 1396 times, avg 277&micro;s/call:
952# 1223 times (52.6ms+235ms) by Class::MOP::Class::new_object at <a href="Class-MOP-Class-pm-103-line.html#498">line 498</a>, avg 235&micro;s/call
953# 173 times (12.8ms+86.4ms) by Class::MOP::Class::_construct_class_instance at <a href="Class-MOP-Class-pm-103-line.html#107">line 107</a>, avg 573&micro;s/call</div></div>sub _construct_instance {</td></tr>
954<tr><td class="h"><a name="502"></a>502</td><td class="c0">1396</td><td class="c2"><span title="Avg 246ns">343&micro;s</span></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
955<tr><td class="h"><a name="503"></a>503</td><td class="c0">1396</td><td class="c1"><span title="Avg 442ns">617&micro;s</span></td><td></td><td></td><td class="s"> my $params = @_ == 1 ? $_[0] : {@_};</td></tr>
956<tr><td class="h"><a name="504"></a>504</td><td class="c0">1396</td><td class="c0"><span title="Avg 2&micro;s">2.42ms</span></td><td class="c0">1396</td><td class="c0">15.5ms</td><td class="s"> my $meta_instance = $class-&gt;get_meta_instance();<div class="calls"><div class="calls_out"> # spent 10.00ms making 947 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_meta_instance</a>, avg 11&micro;s/call
957 # spent 4.81ms making 432 calls to <a href="Class-MOP-Class-pm-103-line.html#718">Class::MOP::Class::get_meta_instance</a>, avg 11&micro;s/call
958 # spent 705&micro;s making 17 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::get_meta_instance</a>, avg 41&micro;s/call</div></div></td></tr>
959<tr><td class="h"><a name="505"></a>505</td><td></td><td></td><td></td><td></td><td class="s"> # FIXME:</td></tr>
960<tr><td class="h"><a name="506"></a>506</td><td></td><td></td><td></td><td></td><td class="s"> # the code below is almost certainly incorrect</td></tr>
961<tr><td class="h"><a name="507"></a>507</td><td></td><td></td><td></td><td></td><td class="s"> # but this is foreign inheritance, so we might</td></tr>
962<tr><td class="h"><a name="508"></a>508</td><td></td><td></td><td></td><td></td><td class="s"> # have to kludge it in the end.</td></tr>
963<tr><td class="h"><a name="509"></a>509</td><td class="c0">1396</td><td class="c3"><span title="Avg 117ns">163&micro;s</span></td><td></td><td></td><td class="s"> my $instance;</td></tr>
964<tr><td class="h"><a name="510"></a>510</td><td class="c0">1396</td><td class="c0"><span title="Avg 6&micro;s">8.71ms</span></td><td class="c0">1396</td><td class="c3">1.91ms</td><td class="s"> if (my $instance_class = blessed($params-&gt;{__INSTANCE__})) {<div class="calls"><div class="calls_out"> # spent 1.91ms making 1396 calls to <a href="Scalar-Util-pm-63-line.html#Scalar__Util__blessed">Scalar::Util::blessed</a>, avg 1&micro;s/call</div></div></td></tr>
965<tr><td class="h"><a name="511"></a>511</td><td></td><td></td><td></td><td></td><td class="s"> ($instance_class eq $class-&gt;name)</td></tr>
966<tr><td class="h"><a name="512"></a>512</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;Objects passed as the __INSTANCE__ parameter must &quot;</td></tr>
967<tr><td class="h"><a name="513"></a>513</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;already be blessed into the correct class, but &quot;</td></tr>
968<tr><td class="h"><a name="514"></a>514</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;$params-&gt;{__INSTANCE__} is not a &quot; . $class-&gt;name;</td></tr>
969<tr><td class="h"><a name="515"></a>515</td><td></td><td></td><td></td><td></td><td class="s"> $instance = $params-&gt;{__INSTANCE__};</td></tr>
970<tr><td class="h"><a name="516"></a>516</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
971<tr><td class="h"><a name="517"></a>517</td><td></td><td></td><td></td><td></td><td class="s"> elsif (exists $params-&gt;{__INSTANCE__}) {</td></tr>
972<tr><td class="h"><a name="518"></a>518</td><td></td><td></td><td></td><td></td><td class="s"> confess &quot;The __INSTANCE__ parameter must be a blessed reference, not &quot;</td></tr>
973<tr><td class="h"><a name="519"></a>519</td><td></td><td></td><td></td><td></td><td class="s"> . $params-&gt;{__INSTANCE__};</td></tr>
974<tr><td class="h"><a name="520"></a>520</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
975<tr><td class="h"><a name="521"></a>521</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
976<tr><td class="h"><a name="522"></a>522</td><td class="c0">1396</td><td class="c0"><span title="Avg 2&micro;s">2.79ms</span></td><td class="c0">1396</td><td class="c0">18.5ms</td><td class="s"> $instance = $meta_instance-&gt;create_instance();<div class="calls"><div class="calls_out"> # spent 18.5ms making 1396 calls to <a href="Class-MOP-Instance-pm-104-line.html#78">Class::MOP::Instance::create_instance</a>, avg 13&micro;s/call</div></div></td></tr>
977<tr><td class="h"><a name="523"></a>523</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
978<tr><td class="h"><a name="524"></a>524</td><td class="c0">1396</td><td class="c0"><span title="Avg 3&micro;s">3.54ms</span></td><td class="c0">1396</td><td class="c0">43.7ms</td><td class="s"> foreach my $attr ($class-&gt;get_all_attributes()) {<div class="calls"><div class="calls_out"> # spent 33.2ms making 432 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 77&micro;s/call
979 # spent 9.83ms making 947 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_all_attributes</a>, avg 10&micro;s/call
980 # spent 579&micro;s making 17 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::get_all_attributes</a>, avg 34&micro;s/call</div></div></td></tr>
981<tr><td class="h"><a name="525"></a>525</td><td class="c0">13326</td><td class="c0"><span title="Avg 2&micro;s">22.0ms</span></td><td class="c0">13326</td><td class="c0">235ms</td><td class="s"> $attr-&gt;initialize_instance_slot($meta_instance, $instance, $params);<div class="calls"><div class="calls_out"> # spent 210ms making 13042 calls to <a href="Class-MOP-Attribute-pm-130-line.html#109">Class::MOP::Attribute::initialize_instance_slot</a>, avg 16&micro;s/call
982 # spent 24.9ms making 284 calls to <a href="Moose-Meta-Attribute-pm-164-line.html#499">Moose::Meta::Attribute::initialize_instance_slot</a>, avg 88&micro;s/call, recursion: max depth 1, sum of overlapping time 363&micro;s</div></div></td></tr>
983<tr><td class="h"><a name="526"></a>526</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
984<tr><td class="h"><a name="527"></a>527</td><td class="c0">1396</td><td class="c0"><span title="Avg 4&micro;s">6.15ms</span></td><td class="c0">2796</td><td class="c1">7.61ms</td><td class="s"> if (Class::MOP::metaclass_is_weak($class-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 6.51ms making 1396 calls to <a href="Class-MOP-pm-83-line.html#58">Class::MOP::metaclass_is_weak</a>, avg 5&micro;s/call
985 # spent 1.08ms making 1396 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 771ns/call
986 # spent 30&micro;s making 4 calls to <a href="Class-MOP-Instance-pm-104-line.html#198">Class::MOP::Instance::_set_mop_slot</a>, avg 7&micro;s/call</div></div></td></tr>
987<tr><td class="h"><a name="528"></a>528</td><td></td><td></td><td></td><td></td><td class="s"> $meta_instance-&gt;_set_mop_slot($instance, $class);</td></tr>
988<tr><td class="h"><a name="529"></a>529</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
989<tr><td class="h"><a name="530"></a>530</td><td class="c0">1396</td><td class="c0"><span title="Avg 2&micro;s">3.24ms</span></td><td></td><td></td><td class="s"> return $instance;</td></tr>
990<tr><td class="h"><a name="531"></a>531</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
991<tr><td class="h"><a name="532"></a>532</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
992<tr><td class="h"><a name="533"></a>533</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 353ms (2.71+350) within Class::MOP::Class::_inline_new_object which was called 133 times, avg 2.65ms/call:
993# 133 times (2.71ms+350ms) by Class::MOP::Method::Constructor::_generate_constructor_method_inline at <a href="Class-MOP-Method-Constructor-pm-114-line.html#101">line 101 of Class/MOP/Method/Constructor.pm</a>, avg 2.65ms/call</div></div>sub _inline_new_object {</td></tr>
994<tr><td class="h"><a name="534"></a>534</td><td class="c3">133</td><td class="c3"><span title="Avg 342ns">46&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
995<tr><td class="h"><a name="535"></a>535</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
996<tr><td class="h"><a name="536"></a>536</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
997<tr><td class="h"><a name="537"></a>537</td><td class="c3">133</td><td class="c0"><span title="Avg 15&micro;s">2.04ms</span></td><td class="c0">798</td><td class="c0">350ms</td><td class="s"> 'my $class = shift;',<div class="calls"><div class="calls_out"> # spent 276ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#586">Class::MOP::Class::_inline_slot_initializers</a>, avg 2.08ms/call
998 # spent 42.0ms making 103 calls to <a href="Moose-Meta-Class-pm-136-line.html#445">Moose::Meta::Class::_inline_extra_init</a>, avg 408&micro;s/call
999 # spent 21.3ms making 103 calls to <a href="Moose-Meta-Class-pm-136-line.html#311">Moose::Meta::Class::_inline_params</a>, avg 206&micro;s/call
1000 # spent 6.86ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#572">Class::MOP::Class::_inline_generate_instance</a>, avg 52&micro;s/call
1001 # spent 1.86ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#549">Class::MOP::Class::_inline_fallback_constructor</a>, avg 14&micro;s/call
1002 # spent 1.81ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#689">Class::MOP::Class::_inline_preserve_weak_metaclasses</a>, avg 14&micro;s/call
1003 # spent 95&micro;s making 30 calls to <a href="Class-MOP-Class-pm-103-line.html#564">Class::MOP::Class::_inline_params</a>, avg 3&micro;s/call
1004 # spent 43&micro;s making 30 calls to <a href="Class-MOP-Class-pm-103-line.html#703">Class::MOP::Class::_inline_extra_init</a>, avg 1&micro;s/call</div></div></td></tr>
1005<tr><td class="h"><a name="538"></a>538</td><td></td><td></td><td></td><td></td><td class="s"> '$class = Scalar::Util::blessed($class) || $class;',</td></tr>
1006<tr><td class="h"><a name="539"></a>539</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_fallback_constructor('$class'),</td></tr>
1007<tr><td class="h"><a name="540"></a>540</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_params('$params', '$class'),</td></tr>
1008<tr><td class="h"><a name="541"></a>541</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_generate_instance('$instance', '$class'),</td></tr>
1009<tr><td class="h"><a name="542"></a>542</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_slot_initializers,</td></tr>
1010<tr><td class="h"><a name="543"></a>543</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_preserve_weak_metaclasses,</td></tr>
1011<tr><td class="h"><a name="544"></a>544</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_extra_init,</td></tr>
1012<tr><td class="h"><a name="545"></a>545</td><td></td><td></td><td></td><td></td><td class="s"> 'return $instance',</td></tr>
1013<tr><td class="h"><a name="546"></a>546</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1014<tr><td class="h"><a name="547"></a>547</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1015<tr><td class="h"><a name="548"></a>548</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1016<tr><td class="h"><a name="549"></a>549</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.86ms (1.29+574&micro;s) within Class::MOP::Class::_inline_fallback_constructor which was called 133 times, avg 14&micro;s/call:
1017# 133 times (1.29ms+574&micro;s) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 14&micro;s/call</div></div>sub _inline_fallback_constructor {</td></tr>
1018<tr><td class="h"><a name="550"></a>550</td><td class="c3">133</td><td class="c3"><span title="Avg 326ns">43&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1019<tr><td class="h"><a name="551"></a>551</td><td class="c3">133</td><td class="c3"><span title="Avg 618ns">82&micro;s</span></td><td></td><td></td><td class="s"> my ($class) = @_;</td></tr>
1020<tr><td class="h"><a name="552"></a>552</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1021<tr><td class="h"><a name="553"></a>553</td><td class="c3">133</td><td class="c0"><span title="Avg 9&micro;s">1.22ms</span></td><td class="c2">266</td><td class="c3">574&micro;s</td><td class="s"> 'return ' . $self-&gt;_generate_fallback_constructor($class),<div class="calls"><div class="calls_out"> # spent 388&micro;s making 103 calls to <a href="Moose-Meta-Class-pm-136-line.html#305">Moose::Meta::Class::_generate_fallback_constructor</a>, avg 4&micro;s/call
1022 # spent 112&micro;s making 133 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 840ns/call
1023 # spent 75&micro;s making 30 calls to <a href="Class-MOP-Class-pm-103-line.html#558">Class::MOP::Class::_generate_fallback_constructor</a>, avg 2&micro;s/call</div></div></td></tr>
1024<tr><td class="h"><a name="554"></a>554</td><td></td><td></td><td></td><td></td><td class="s"> 'if ' . $class . ' ne \'' . $self-&gt;name . '\';',</td></tr>
1025<tr><td class="h"><a name="555"></a>555</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1026<tr><td class="h"><a name="556"></a>556</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1027<tr><td class="h"><a name="557"></a>557</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1028<tr><td class="h"><a name="558"></a>558</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 75&micro;s within Class::MOP::Class::_generate_fallback_constructor which was called 30 times, avg 2&micro;s/call:
1029# 30 times (75&micro;s+0s) by Class::MOP::Class::_inline_fallback_constructor at <a href="Class-MOP-Class-pm-103-line.html#553">line 553</a>, avg 2&micro;s/call</div></div>sub _generate_fallback_constructor {</td></tr>
1030<tr><td class="h"><a name="559"></a>559</td><td class="c3">30</td><td class="c3"><span title="Avg 223ns">7&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1031<tr><td class="h"><a name="560"></a>560</td><td class="c3">30</td><td class="c3"><span title="Avg 307ns">9&micro;s</span></td><td></td><td></td><td class="s"> my ($class) = @_;</td></tr>
1032<tr><td class="h"><a name="561"></a>561</td><td class="c3">30</td><td class="c3"><span title="Avg 3&micro;s">94&micro;s</span></td><td></td><td></td><td class="s"> return 'Class::MOP::Class-&gt;initialize(' . $class . ')-&gt;new_object(@_)',</td></tr>
1033<tr><td class="h"><a name="562"></a>562</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1034<tr><td class="h"><a name="563"></a>563</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1035<tr><td class="h"><a name="564"></a>564</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 95&micro;s within Class::MOP::Class::_inline_params which was called 30 times, avg 3&micro;s/call:
1036# 30 times (95&micro;s+0s) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 3&micro;s/call</div></div>sub _inline_params {</td></tr>
1037<tr><td class="h"><a name="565"></a>565</td><td class="c3">30</td><td class="c3"><span title="Avg 253ns">8&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1038<tr><td class="h"><a name="566"></a>566</td><td class="c3">30</td><td class="c3"><span title="Avg 860ns">26&micro;s</span></td><td></td><td></td><td class="s"> my ($params, $class) = @_;</td></tr>
1039<tr><td class="h"><a name="567"></a>567</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1040<tr><td class="h"><a name="568"></a>568</td><td class="c3">30</td><td class="c3"><span title="Avg 3&micro;s">84&micro;s</span></td><td></td><td></td><td class="s"> 'my ' . $params . ' = @_ == 1 ? $_[0] : {@_};',</td></tr>
1041<tr><td class="h"><a name="569"></a>569</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1042<tr><td class="h"><a name="570"></a>570</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1043<tr><td class="h"><a name="571"></a>571</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1044<tr><td class="h"><a name="572"></a>572</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6.86ms (915&micro;s+5.94) within Class::MOP::Class::_inline_generate_instance which was called 133 times, avg 52&micro;s/call:
1045# 133 times (915&micro;s+5.94ms) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 52&micro;s/call</div></div>sub _inline_generate_instance {</td></tr>
1046<tr><td class="h"><a name="573"></a>573</td><td class="c3">133</td><td class="c3"><span title="Avg 402ns">54&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1047<tr><td class="h"><a name="574"></a>574</td><td class="c3">133</td><td class="c3"><span title="Avg 683ns">91&micro;s</span></td><td></td><td></td><td class="s"> my ($inst, $class) = @_;</td></tr>
1048<tr><td class="h"><a name="575"></a>575</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1049<tr><td class="h"><a name="576"></a>576</td><td class="c3">133</td><td class="c0"><span title="Avg 5&micro;s">670&micro;s</span></td><td class="c3">133</td><td class="c1">5.94ms</td><td class="s"> 'my ' . $inst . ' = ' . $self-&gt;_inline_create_instance($class) . ';',<div class="calls"><div class="calls_out"> # spent 5.94ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#580">Class::MOP::Class::_inline_create_instance</a>, avg 45&micro;s/call</div></div></td></tr>
1050<tr><td class="h"><a name="577"></a>577</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1051<tr><td class="h"><a name="578"></a>578</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1052<tr><td class="h"><a name="579"></a>579</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1053<tr><td class="h"><a name="580"></a>580</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 5.94ms (1.02+4.92) within Class::MOP::Class::_inline_create_instance which was called 133 times, avg 45&micro;s/call:
1054# 133 times (1.02ms+4.92ms) by Class::MOP::Class::_inline_generate_instance at <a href="Class-MOP-Class-pm-103-line.html#576">line 576</a>, avg 45&micro;s/call</div></div>sub _inline_create_instance {</td></tr>
1055<tr><td class="h"><a name="581"></a>581</td><td class="c3">133</td><td class="c3"><span title="Avg 308ns">41&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1056<tr><td class="h"><a name="582"></a>582</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1057<tr><td class="h"><a name="583"></a>583</td><td class="c3">133</td><td class="c0"><span title="Avg 6&micro;s">781&micro;s</span></td><td class="c2">266</td><td class="c2">4.92ms</td><td class="s"> return $self-&gt;get_meta_instance-&gt;inline_create_instance(@_);<div class="calls"><div class="calls_out"> # spent 4.51ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#718">Class::MOP::Class::get_meta_instance</a>, avg 34&micro;s/call
1058 # spent 414&micro;s making 133 calls to <a href="Class-MOP-Instance-pm-104-line.html#212">Class::MOP::Instance::inline_create_instance</a>, avg 3&micro;s/call</div></div></td></tr>
1059<tr><td class="h"><a name="584"></a>584</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1060<tr><td class="h"><a name="585"></a>585</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1061<tr><td class="h"><a name="586"></a>586</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 276ms (3.84+272) within Class::MOP::Class::_inline_slot_initializers which was called 133 times, avg 2.08ms/call:
1062# 133 times (3.84ms+272ms) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 2.08ms/call</div></div>sub _inline_slot_initializers {</td></tr>
1063<tr><td class="h"><a name="587"></a>587</td><td class="c3">133</td><td class="c3"><span title="Avg 257ns">34&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1064<tr><td class="h"><a name="588"></a>588</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1065<tr><td class="h"><a name="589"></a>589</td><td class="c3">133</td><td class="c3"><span title="Avg 268ns">36&micro;s</span></td><td></td><td></td><td class="s"> my $idx = 0;</td></tr>
1066<tr><td class="h"><a name="590"></a>590</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1067<tr><td class="h"><a name="591"></a>591</td><td class="c0">2767</td><td class="c0"><span title="Avg 3&micro;s">9.63ms</span></td><td class="c0">4700</td><td class="c0">259ms</td><td class="s"> return map { $self-&gt;_inline_slot_initializer($_, $idx++) }<div class="calls"><div class="calls_out"> # spent 233ms making 548 calls to <a href="Moose-Meta-Class-pm-136-line.html#361">Moose::Meta::Class::_inline_slot_initializer</a>, avg 426&micro;s/call
1068 # spent 23.7ms making 286 calls to <a href="Class-MOP-Class-pm-103-line.html#595">Class::MOP::Class::_inline_slot_initializer</a>, avg 83&micro;s/call
1069 # spent 1.93ms making 3866 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__name">Class::MOP::Mixin::AttributeCore::name</a>, avg 499ns/call</div></div></td></tr>
1070<tr><td class="h"><a name="592"></a>592</td><td class="c3">133</td><td class="c0"><span title="Avg 11&micro;s">1.49ms</span></td><td class="c2">266</td><td class="c0">15.6ms</td><td class="s"> sort { $a-&gt;name cmp $b-&gt;name } $self-&gt;get_all_attributes;<div class="calls"><div class="calls_out"> # spent 8.62ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#Class__MOP__Class__CORE_sort">Class::MOP::Class::CORE:sort</a>, avg 65&micro;s/call
1071 # spent 6.94ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 52&micro;s/call</div></div></td></tr>
1072<tr><td class="h"><a name="593"></a>593</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1073<tr><td class="h"><a name="594"></a>594</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1074<tr><td class="h"><a name="595"></a>595</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 238ms (11.7+226) within Class::MOP::Class::_inline_slot_initializer which was called 834 times, avg 285&micro;s/call:
1075# 548 times (8.42ms+206ms) by Moose::Meta::Class::_inline_slot_initializer at <a href="Moose-Meta-Class-pm-136-line.html#366">line 366 of Moose/Meta/Class.pm</a>, avg 391&micro;s/call
1076# 286 times (3.25ms+20.5ms) by Class::MOP::Class::_inline_slot_initializers at <a href="Class-MOP-Class-pm-103-line.html#591">line 591</a>, avg 83&micro;s/call</div></div>sub _inline_slot_initializer {</td></tr>
1077<tr><td class="h"><a name="596"></a>596</td><td class="c0">834</td><td class="c3"><span title="Avg 227ns">189&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1078<tr><td class="h"><a name="597"></a>597</td><td class="c0">834</td><td class="c3"><span title="Avg 371ns">309&micro;s</span></td><td></td><td></td><td class="s"> my ($attr, $idx) = @_;</td></tr>
1079<tr><td class="h"><a name="598"></a>598</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1080<tr><td class="h"><a name="599"></a>599</td><td class="c0">834</td><td class="c0"><span title="Avg 3&micro;s">2.81ms</span></td><td class="c0">870</td><td class="c3">3.67ms</td><td class="s"> if (defined(my $init_arg = $attr-&gt;init_arg)) {<div class="calls"><div class="calls_out"> # spent 2.41ms making 25 calls to <a href="Moose-Meta-Class-pm-136-line.html#415">Moose::Meta::Class::_inline_init_attr_from_default</a>, avg 97&micro;s/call
1081 # spent 733&micro;s making 11 calls to <a href="Class-MOP-Class-pm-103-line.html#644">Class::MOP::Class::_inline_init_attr_from_default</a>, avg 67&micro;s/call
1082 # spent 528&micro;s making 834 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__init_arg">Class::MOP::Mixin::AttributeCore::init_arg</a>, avg 633ns/call</div></div></td></tr>
1083<tr><td class="h"><a name="600"></a>600</td><td class="c0">798</td><td class="c0"><span title="Avg 3&micro;s">2.16ms</span></td><td class="c0">798</td><td class="c0">158ms</td><td class="s"> my @source = (<div class="calls"><div class="calls_out"> # spent 145ms making 523 calls to <a href="Moose-Meta-Class-pm-136-line.html#392">Moose::Meta::Class::_inline_init_attr_from_constructor</a>, avg 276&micro;s/call
1084 # spent 13.0ms making 275 calls to <a href="Class-MOP-Class-pm-103-line.html#626">Class::MOP::Class::_inline_init_attr_from_constructor</a>, avg 47&micro;s/call</div></div></td></tr>
1085<tr><td class="h"><a name="601"></a>601</td><td></td><td></td><td></td><td></td><td class="s"> 'if (exists $params-&gt;{\'' . $init_arg . '\'}) {',</td></tr>
1086<tr><td class="h"><a name="602"></a>602</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_init_attr_from_constructor($attr, $idx),</td></tr>
1087<tr><td class="h"><a name="603"></a>603</td><td></td><td></td><td></td><td></td><td class="s"> '}',</td></tr>
1088<tr><td class="h"><a name="604"></a>604</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1089<tr><td class="h"><a name="605"></a>605</td><td class="c0">798</td><td class="c0"><span title="Avg 2&micro;s">1.75ms</span></td><td class="c0">798</td><td class="c0">64.8ms</td><td class="s"> if (my @default = $self-&gt;_inline_init_attr_from_default($attr, $idx)) {<div class="calls"><div class="calls_out"> # spent 58.3ms making 523 calls to <a href="Moose-Meta-Class-pm-136-line.html#415">Moose::Meta::Class::_inline_init_attr_from_default</a>, avg 112&micro;s/call
1090 # spent 6.51ms making 275 calls to <a href="Class-MOP-Class-pm-103-line.html#644">Class::MOP::Class::_inline_init_attr_from_default</a>, avg 24&micro;s/call</div></div></td></tr>
1091<tr><td class="h"><a name="606"></a>606</td><td></td><td></td><td></td><td></td><td class="s"> push @source, (</td></tr>
1092<tr><td class="h"><a name="607"></a>607</td><td></td><td></td><td></td><td></td><td class="s"> 'else {',</td></tr>
1093<tr><td class="h"><a name="608"></a>608</td><td></td><td></td><td></td><td></td><td class="s"> @default,</td></tr>
1094<tr><td class="h"><a name="609"></a>609</td><td></td><td></td><td></td><td></td><td class="s"> '}',</td></tr>
1095<tr><td class="h"><a name="610"></a>610</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1096<tr><td class="h"><a name="611"></a>611</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1097<tr><td class="h"><a name="612"></a>612</td><td class="c0">798</td><td class="c0"><span title="Avg 5&micro;s">3.72ms</span></td><td></td><td></td><td class="s"> return @source;</td></tr>
1098<tr><td class="h"><a name="613"></a>613</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1099<tr><td class="h"><a name="614"></a>614</td><td></td><td></td><td></td><td></td><td class="s"> elsif (my @default = $self-&gt;_inline_init_attr_from_default($attr, $idx)) {</td></tr>
1100<tr><td class="h"><a name="615"></a>615</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1101<tr><td class="h"><a name="616"></a>616</td><td></td><td></td><td></td><td></td><td class="s"> '{',</td></tr>
1102<tr><td class="h"><a name="617"></a>617</td><td></td><td></td><td></td><td></td><td class="s"> @default,</td></tr>
1103<tr><td class="h"><a name="618"></a>618</td><td></td><td></td><td></td><td></td><td class="s"> '}',</td></tr>
1104<tr><td class="h"><a name="619"></a>619</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1105<tr><td class="h"><a name="620"></a>620</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1106<tr><td class="h"><a name="621"></a>621</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1107<tr><td class="h"><a name="622"></a>622</td><td class="c3">13</td><td class="c3"><span title="Avg 3&micro;s">41&micro;s</span></td><td></td><td></td><td class="s"> return ();</td></tr>
1108<tr><td class="h"><a name="623"></a>623</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1109<tr><td class="h"><a name="624"></a>624</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1110<tr><td class="h"><a name="625"></a>625</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1111<tr><td class="h"><a name="626"></a>626</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 13.0ms (2.68+10.3) within Class::MOP::Class::_inline_init_attr_from_constructor which was called 275 times, avg 47&micro;s/call:
1112# 275 times (2.68ms+10.3ms) by Class::MOP::Class::_inline_slot_initializer at <a href="Class-MOP-Class-pm-103-line.html#600">line 600</a>, avg 47&micro;s/call</div></div>sub _inline_init_attr_from_constructor {</td></tr>
1113<tr><td class="h"><a name="627"></a>627</td><td class="c2">275</td><td class="c3"><span title="Avg 132ns">36&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1114<tr><td class="h"><a name="628"></a>628</td><td class="c2">275</td><td class="c3"><span title="Avg 255ns">70&micro;s</span></td><td></td><td></td><td class="s"> my ($attr, $idx) = @_;</td></tr>
1115<tr><td class="h"><a name="629"></a>629</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1116<tr><td class="h"><a name="630"></a>630</td><td class="c2">275</td><td class="c0"><span title="Avg 4&micro;s">1.13ms</span></td><td class="c0">550</td><td class="c0">9.90ms</td><td class="s"> my @initial_value = $attr-&gt;_inline_set_value(<div class="calls"><div class="calls_out"> # spent 9.00ms making 273 calls to <a href="Class-MOP-Attribute-pm-130-line.html#278">Class::MOP::Attribute::_inline_set_value</a>, avg 33&micro;s/call
1117 # spent 777&micro;s making 2 calls to <a href="Moose-Meta-Attribute-pm-164-line.html#597">Moose::Meta::Attribute::_inline_set_value</a>, avg 388&micro;s/call
1118 # spent 122&micro;s making 275 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__init_arg">Class::MOP::Mixin::AttributeCore::init_arg</a>, avg 444ns/call</div></div></td></tr>
1119<tr><td class="h"><a name="631"></a>631</td><td></td><td></td><td></td><td></td><td class="s"> '$instance', '$params-&gt;{\'' . $attr-&gt;init_arg . '\'}',</td></tr>
1120<tr><td class="h"><a name="632"></a>632</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1121<tr><td class="h"><a name="633"></a>633</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1122<tr><td class="h"><a name="634"></a>634</td><td class="c2">275</td><td class="c2"><span title="Avg 1&micro;s">369&micro;s</span></td><td class="c2">275</td><td class="c3">440&micro;s</td><td class="s"> push @initial_value, (<div class="calls"><div class="calls_out"> # spent 440&micro;s making 275 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Mixin::AttributeCore::has_initializer</a>, avg 2&micro;s/call</div></div></td></tr>
1123<tr><td class="h"><a name="635"></a>635</td><td></td><td></td><td></td><td></td><td class="s"> '$attrs-&gt;[' . $idx . ']-&gt;set_initial_value(',</td></tr>
1124<tr><td class="h"><a name="636"></a>636</td><td></td><td></td><td></td><td></td><td class="s"> '$instance,',</td></tr>
1125<tr><td class="h"><a name="637"></a>637</td><td></td><td></td><td></td><td></td><td class="s"> $attr-&gt;_inline_instance_get('$instance'),</td></tr>
1126<tr><td class="h"><a name="638"></a>638</td><td></td><td></td><td></td><td></td><td class="s"> ');',</td></tr>
1127<tr><td class="h"><a name="639"></a>639</td><td></td><td></td><td></td><td></td><td class="s"> ) if $attr-&gt;has_initializer;</td></tr>
1128<tr><td class="h"><a name="640"></a>640</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1129<tr><td class="h"><a name="641"></a>641</td><td class="c2">275</td><td class="c0"><span title="Avg 2&micro;s">667&micro;s</span></td><td></td><td></td><td class="s"> return @initial_value;</td></tr>
1130<tr><td class="h"><a name="642"></a>642</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1131<tr><td class="h"><a name="643"></a>643</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1132<tr><td class="h"><a name="644"></a>644</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 7.24ms (1.80+5.44) within Class::MOP::Class::_inline_init_attr_from_default which was called 286 times, avg 25&micro;s/call:
1133# 275 times (1.70ms+4.80ms) by Class::MOP::Class::_inline_slot_initializer at <a href="Class-MOP-Class-pm-103-line.html#605">line 605</a>, avg 24&micro;s/call
1134# 11 times (99&micro;s+634&micro;s) by Class::MOP::Class::_inline_slot_initializer at <a href="Class-MOP-Class-pm-103-line.html#599">line 599</a>, avg 67&micro;s/call</div></div>sub _inline_init_attr_from_default {</td></tr>
1135<tr><td class="h"><a name="645"></a>645</td><td class="c2">286</td><td class="c3"><span title="Avg 209ns">60&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1136<tr><td class="h"><a name="646"></a>646</td><td class="c2">286</td><td class="c3"><span title="Avg 290ns">83&micro;s</span></td><td></td><td></td><td class="s"> my ($attr, $idx) = @_;</td></tr>
1137<tr><td class="h"><a name="647"></a>647</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1138<tr><td class="h"><a name="648"></a>648</td><td class="c2">286</td><td class="c2"><span title="Avg 1&micro;s">366&micro;s</span></td><td class="c2">286</td><td class="c3">2.49ms</td><td class="s"> my $default = $self-&gt;_inline_default_value($attr, $idx);<div class="calls"><div class="calls_out"> # spent 2.49ms making 286 calls to <a href="Class-MOP-Class-pm-103-line.html#663">Class::MOP::Class::_inline_default_value</a>, avg 9&micro;s/call</div></div></td></tr>
1139<tr><td class="h"><a name="649"></a>649</td><td class="c2">286</td><td class="c3"><span title="Avg 1&micro;s">306&micro;s</span></td><td></td><td></td><td class="s"> return unless $default;</td></tr>
1140<tr><td class="h"><a name="650"></a>650</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1141<tr><td class="h"><a name="651"></a>651</td><td class="c3">96</td><td class="c3"><span title="Avg 2&micro;s">181&micro;s</span></td><td class="c3">96</td><td class="c3">2.80ms</td><td class="s"> my @initial_value = $attr-&gt;_inline_set_value('$instance', $default);<div class="calls"><div class="calls_out"> # spent 2.80ms making 96 calls to <a href="Class-MOP-Attribute-pm-130-line.html#278">Class::MOP::Attribute::_inline_set_value</a>, avg 29&micro;s/call</div></div></td></tr>
1142<tr><td class="h"><a name="652"></a>652</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1143<tr><td class="h"><a name="653"></a>653</td><td class="c3">96</td><td class="c3"><span title="Avg 1&micro;s">130&micro;s</span></td><td class="c3">96</td><td class="c3">149&micro;s</td><td class="s"> push @initial_value, (<div class="calls"><div class="calls_out"> # spent 149&micro;s making 96 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Mixin::AttributeCore::has_initializer</a>, avg 2&micro;s/call</div></div></td></tr>
1144<tr><td class="h"><a name="654"></a>654</td><td></td><td></td><td></td><td></td><td class="s"> '$attrs-&gt;[' . $idx . ']-&gt;set_initial_value(',</td></tr>
1145<tr><td class="h"><a name="655"></a>655</td><td></td><td></td><td></td><td></td><td class="s"> '$instance,',</td></tr>
1146<tr><td class="h"><a name="656"></a>656</td><td></td><td></td><td></td><td></td><td class="s"> $attr-&gt;_inline_instance_get('$instance'),</td></tr>
1147<tr><td class="h"><a name="657"></a>657</td><td></td><td></td><td></td><td></td><td class="s"> ');',</td></tr>
1148<tr><td class="h"><a name="658"></a>658</td><td></td><td></td><td></td><td></td><td class="s"> ) if $attr-&gt;has_initializer;</td></tr>
1149<tr><td class="h"><a name="659"></a>659</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1150<tr><td class="h"><a name="660"></a>660</td><td class="c3">96</td><td class="c3"><span title="Avg 2&micro;s">238&micro;s</span></td><td></td><td></td><td class="s"> return @initial_value;</td></tr>
1151<tr><td class="h"><a name="661"></a>661</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1152<tr><td class="h"><a name="662"></a>662</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1153<tr><td class="h"><a name="663"></a>663</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 7.52ms (5.13+2.39) within Class::MOP::Class::_inline_default_value which was called 739 times, avg 10&micro;s/call:
1154# 453 times (3.46ms+1.57ms) by Moose::Meta::Class::_inline_init_attr_from_default at <a href="Moose-Meta-Class-pm-136-line.html#420">line 420 of Moose/Meta/Class.pm</a>, avg 11&micro;s/call
1155# 286 times (1.66ms+824&micro;s) by Class::MOP::Class::_inline_init_attr_from_default at <a href="Class-MOP-Class-pm-103-line.html#648">line 648</a>, avg 9&micro;s/call</div></div>sub _inline_default_value {</td></tr>
1156<tr><td class="h"><a name="664"></a>664</td><td class="c0">739</td><td class="c3"><span title="Avg 217ns">160&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1157<tr><td class="h"><a name="665"></a>665</td><td class="c0">739</td><td class="c3"><span title="Avg 346ns">256&micro;s</span></td><td></td><td></td><td class="s"> my ($attr, $index) = @_;</td></tr>
1158<tr><td class="h"><a name="666"></a>666</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1159<tr><td class="h"><a name="667"></a>667</td><td class="c0">739</td><td class="c0"><span title="Avg 3&micro;s">2.07ms</span></td><td class="c0">1479</td><td class="c3">2.39ms</td><td class="s"> if ($attr-&gt;has_default) {<div class="calls"><div class="calls_out"> # spent 955&micro;s making 739 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Mixin::AttributeCore::has_default</a>, avg 1&micro;s/call
1160 # spent 812&micro;s making 305 calls to <a href="Class-MOP-Mixin-AttributeCore-pm-86-line.html#32">Class::MOP::Mixin::AttributeCore::is_default_a_coderef</a>, avg 3&micro;s/call
1161 # spent 624&micro;s making 434 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Mixin::AttributeCore::has_builder</a>, avg 1&micro;s/call
1162 # spent 2&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__builder">Class::MOP::Mixin::AttributeCore::builder</a></div></div></td></tr>
1163<tr><td class="h"><a name="668"></a>668</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1164<tr><td class="h"><a name="669"></a>669</td><td></td><td></td><td></td><td></td><td class="s"> # default values can either be CODE refs</td></tr>
1165<tr><td class="h"><a name="670"></a>670</td><td></td><td></td><td></td><td></td><td class="s"> # in which case we need to call them. Or</td></tr>
1166<tr><td class="h"><a name="671"></a>671</td><td></td><td></td><td></td><td></td><td class="s"> # they can be scalars (strings/numbers)</td></tr>
1167<tr><td class="h"><a name="672"></a>672</td><td></td><td></td><td></td><td></td><td class="s"> # in which case we can just deal with them</td></tr>
1168<tr><td class="h"><a name="673"></a>673</td><td></td><td></td><td></td><td></td><td class="s"> # in the code we eval.</td></tr>
1169<tr><td class="h"><a name="674"></a>674</td><td></td><td></td><td></td><td></td><td class="s"> if ($attr-&gt;is_default_a_coderef) {</td></tr>
1170<tr><td class="h"><a name="675"></a>675</td><td></td><td></td><td></td><td></td><td class="s"> return '$defaults-&gt;[' . $index . ']-&gt;($instance)';</td></tr>
1171<tr><td class="h"><a name="676"></a>676</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1172<tr><td class="h"><a name="677"></a>677</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1173<tr><td class="h"><a name="678"></a>678</td><td class="c3">149</td><td class="c2"><span title="Avg 3&micro;s">414&micro;s</span></td><td></td><td></td><td class="s"> return '$defaults-&gt;[' . $index . ']';</td></tr>
1174<tr><td class="h"><a name="679"></a>679</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1175<tr><td class="h"><a name="680"></a>680</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1176<tr><td class="h"><a name="681"></a>681</td><td></td><td></td><td></td><td></td><td class="s"> elsif ($attr-&gt;has_builder) {</td></tr>
1177<tr><td class="h"><a name="682"></a>682</td><td></td><td></td><td></td><td></td><td class="s"> return '$instance-&gt;' . $attr-&gt;builder;</td></tr>
1178<tr><td class="h"><a name="683"></a>683</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1179<tr><td class="h"><a name="684"></a>684</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1180<tr><td class="h"><a name="685"></a>685</td><td class="c1">433</td><td class="c0"><span title="Avg 2&micro;s">844&micro;s</span></td><td></td><td></td><td class="s"> return;</td></tr>
1181<tr><td class="h"><a name="686"></a>686</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1182<tr><td class="h"><a name="687"></a>687</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1183<tr><td class="h"><a name="688"></a>688</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1184<tr><td class="h"><a name="689"></a>689</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.81ms (971&micro;s+840&micro;s) within Class::MOP::Class::_inline_preserve_weak_metaclasses which was called 133 times, avg 14&micro;s/call:
1185# 133 times (971&micro;s+840&micro;s) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 14&micro;s/call</div></div>sub _inline_preserve_weak_metaclasses {</td></tr>
1186<tr><td class="h"><a name="690"></a>690</td><td class="c3">133</td><td class="c3"><span title="Avg 323ns">43&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1187<tr><td class="h"><a name="691"></a>691</td><td class="c3">133</td><td class="c0"><span title="Avg 5&micro;s">655&micro;s</span></td><td class="c2">266</td><td class="c3">840&micro;s</td><td class="s"> if (Class::MOP::metaclass_is_weak($self-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 738&micro;s making 133 calls to <a href="Class-MOP-pm-83-line.html#58">Class::MOP::metaclass_is_weak</a>, avg 6&micro;s/call
1188 # spent 102&micro;s making 133 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 765ns/call</div></div></td></tr>
1189<tr><td class="h"><a name="692"></a>692</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1190<tr><td class="h"><a name="693"></a>693</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_inline_set_mop_slot(</td></tr>
1191<tr><td class="h"><a name="694"></a>694</td><td></td><td></td><td></td><td></td><td class="s"> '$instance', 'Class::MOP::class_of($class)'</td></tr>
1192<tr><td class="h"><a name="695"></a>695</td><td></td><td></td><td></td><td></td><td class="s"> ) . ';'</td></tr>
1193<tr><td class="h"><a name="696"></a>696</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1194<tr><td class="h"><a name="697"></a>697</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1195<tr><td class="h"><a name="698"></a>698</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1196<tr><td class="h"><a name="699"></a>699</td><td class="c3">133</td><td class="c2"><span title="Avg 3&micro;s">334&micro;s</span></td><td></td><td></td><td class="s"> return ();</td></tr>
1197<tr><td class="h"><a name="700"></a>700</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1198<tr><td class="h"><a name="701"></a>701</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1199<tr><td class="h"><a name="702"></a>702</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1200<tr><td class="h"><a name="703"></a>703</td><td class="c3">30</td><td class="c3"><span title="Avg 2&micro;s">65&micro;s</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 43&micro;s within Class::MOP::Class::_inline_extra_init which was called 30 times, avg 1&micro;s/call:
1201# 30 times (43&micro;s+0s) by Class::MOP::Class::_inline_new_object at <a href="Class-MOP-Class-pm-103-line.html#537">line 537</a>, avg 1&micro;s/call</div></div>sub _inline_extra_init { }</td></tr>
1202<tr><td class="h"><a name="704"></a>704</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1203<tr><td class="h"><a name="705"></a>705</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 19.3ms (3.57+15.7) within Class::MOP::Class::_eval_environment which was called 133 times, avg 145&micro;s/call:
1204# 103 times (2.57ms+10.6ms) by Moose::Meta::Class::_eval_environment at <a href="Moose-Meta-Class-pm-136-line.html#540">line 540 of Moose/Meta/Class.pm</a>, avg 128&micro;s/call
1205# 30 times (997&micro;s+5.17ms) by Class::MOP::Method::Constructor::_eval_environment at <a href="Class-MOP-Method-Constructor-pm-114-line.html#89">line 89 of Class/MOP/Method/Constructor.pm</a>, avg 205&micro;s/call</div></div>sub _eval_environment {</td></tr>
1206<tr><td class="h"><a name="706"></a>706</td><td class="c3">133</td><td class="c3"><span title="Avg 400ns">53&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1207<tr><td class="h"><a name="707"></a>707</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1208<tr><td class="h"><a name="708"></a>708</td><td class="c0">2066</td><td class="c0"><span title="Avg 4&micro;s">8.14ms</span></td><td class="c0">4132</td><td class="c0">16.0ms</td><td class="s"> my @attrs = sort { $a-&gt;name cmp $b-&gt;name } $self-&gt;get_all_attributes;<div class="calls"><div class="calls_out"> # spent 7.83ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#Class__MOP__Class__CORE_sort">Class::MOP::Class::CORE:sort</a>, avg 59&micro;s/call
1209 # spent 6.44ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 48&micro;s/call
1210 # spent 1.78ms making 3866 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__name">Class::MOP::Mixin::AttributeCore::name</a>, avg 460ns/call</div></div></td></tr>
1211<tr><td class="h"><a name="709"></a>709</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1212<tr><td class="h"><a name="710"></a>710</td><td class="c0">967</td><td class="c0"><span title="Avg 1&micro;s">1.38ms</span></td><td class="c0">834</td><td class="c3">1.47ms</td><td class="s"> my $defaults = [map { $_-&gt;default } @attrs];<div class="calls"><div class="calls_out"> # spent 1.47ms making 834 calls to <a href="Class-MOP-Mixin-AttributeCore-pm-86-line.html#43">Class::MOP::Mixin::AttributeCore::default</a>, avg 2&micro;s/call</div></div></td></tr>
1213<tr><td class="h"><a name="711"></a>711</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1214<tr><td class="h"><a name="712"></a>712</td><td></td><td></td><td></td><td></td><td class="s"> return {</td></tr>
1215<tr><td class="h"><a name="713"></a>713</td><td class="c3">133</td><td class="c1"><span title="Avg 4&micro;s">534&micro;s</span></td><td></td><td></td><td class="s"> '$defaults' =&gt; \$defaults,</td></tr>
1216<tr><td class="h"><a name="714"></a>714</td><td></td><td></td><td></td><td></td><td class="s"> };</td></tr>
1217<tr><td class="h"><a name="715"></a>715</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1218<tr><td class="h"><a name="716"></a>716</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1219<tr><td class="h"><a name="717"></a>717</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1220<tr><td class="h"><a name="718"></a>718</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 96.4ms (6.71+89.6) within Class::MOP::Class::get_meta_instance which was called 2982 times, avg 32&micro;s/call:
1221# 1016 times (2.08ms+24.0ms) by Class::MOP::Attribute::_inline_instance_set at <a href="Class-MOP-Attribute-pm-130-line.html#287">line 287 of Class/MOP/Attribute.pm</a>, avg 26&micro;s/call
1222# 622 times (1.97ms+55.1ms) by Class::MOP::Attribute::_inline_instance_get at <a href="Class-MOP-Attribute-pm-130-line.html#310">line 310 of Class/MOP/Attribute.pm</a>, avg 92&micro;s/call
1223# 432 times (995&micro;s+3.82ms) by Class::MOP::Class::_construct_instance at <a href="Class-MOP-Class-pm-103-line.html#504">line 504</a>, avg 11&micro;s/call
1224# 230 times (374&micro;s+108&micro;s) by Class::MOP::Attribute::_inline_instance_has at <a href="Class-MOP-Attribute-pm-130-line.html#331">line 331 of Class/MOP/Attribute.pm</a>, avg 2&micro;s/call
1225# 133 times (314&micro;s+4.19ms) by Class::MOP::Class::_inline_create_instance at <a href="Class-MOP-Class-pm-103-line.html#583">line 583</a>, avg 34&micro;s/call
1226# 129 times (235&micro;s+0s) by Class::MOP::Attribute::has_value at <a href="Class-MOP-Attribute-pm-130-line.html#318">line 318 of Class/MOP/Attribute.pm</a>, avg 2&micro;s/call
1227# 122 times (184&micro;s+0s) by Class::MOP::Attribute::get_raw_value at <a href="Class-MOP-Attribute-pm-130-line.html#297">line 297 of Class/MOP/Attribute.pm</a>, avg 2&micro;s/call
1228# 108 times (186&micro;s+0s) by Class::MOP::Attribute::set_initial_value at <a href="Class-MOP-Attribute-pm-130-line.html#261">line 261 of Class/MOP/Attribute.pm</a>, avg 2&micro;s/call
1229# 85 times (153&micro;s+101&micro;s) by Class::MOP::Attribute::_inline_instance_clear at <a href="Class-MOP-Attribute-pm-130-line.html#352">line 352 of Class/MOP/Attribute.pm</a>, avg 3&micro;s/call
1230# 42 times (115&micro;s+2.23ms) by Class::MOP::Class:::around at <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#84">line 84 of Class/MOP/Class/Immutable/Trait.pm</a>, avg 56&micro;s/call
1231# 28 times (42&micro;s+0s) by Class::MOP::Attribute::set_raw_value at <a href="Class-MOP-Attribute-pm-130-line.html#274">line 274 of Class/MOP/Attribute.pm</a>, avg 2&micro;s/call
1232# 22 times (32&micro;s+0s) by Moose::Meta::Attribute::_inline_weaken_value at <a href="Moose-Meta-Attribute-pm-164-line.html#756">line 756 of Moose/Meta/Attribute.pm</a>, avg 1&micro;s/call
1233# 6 times (15&micro;s+0s) by Class::MOP::Class::_force_rebless_instance at <a href="Class-MOP-Class-pm-103-line.html#799">line 799</a>, avg 2&micro;s/call
1234# 6 times (8&micro;s+0s) by Class::MOP::Class::_fixup_attributes_after_rebless at <a href="Class-MOP-Class-pm-103-line.html#854">line 854</a>, avg 1&micro;s/call
1235# once (4&micro;s+111&micro;s) by Moose::Exporter::BEGIN@13 at <a href="Class-MOP-pm-83-line.html#672">line 672 of Class/MOP.pm</a></div></div>sub get_meta_instance {</td></tr>
1236<tr><td class="h"><a name="719"></a>719</td><td class="c0">2982</td><td class="c0"><span title="Avg 219ns">654&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1237<tr><td class="h"><a name="720"></a>720</td><td class="c0">2982</td><td class="c0"><span title="Avg 3&micro;s">7.93ms</span></td><td class="c0">597</td><td class="c0">89.6ms</td><td class="s"> $self-&gt;{'_meta_instance'} ||= $self-&gt;_create_meta_instance();<div class="calls"><div class="calls_out"> # spent 89.6ms making 597 calls to <a href="Class-MOP-Class-pm-103-line.html#723">Class::MOP::Class::_create_meta_instance</a>, avg 150&micro;s/call</div></div></td></tr>
1238<tr><td class="h"><a name="721"></a>721</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1239<tr><td class="h"><a name="722"></a>722</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1240<tr><td class="h"><a name="723"></a>723</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 89.6ms (7.86+81.8) within Class::MOP::Class::_create_meta_instance which was called 597 times, avg 150&micro;s/call:
1241# 597 times (7.86ms+81.8ms) by Class::MOP::Class::get_meta_instance at <a href="Class-MOP-Class-pm-103-line.html#720">line 720</a>, avg 150&micro;s/call</div></div>sub _create_meta_instance {</td></tr>
1242<tr><td class="h"><a name="724"></a>724</td><td class="c0">597</td><td class="c3"><span title="Avg 196ns">117&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1243<tr><td class="h"><a name="725"></a>725</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1244<tr><td class="h"><a name="726"></a>726</td><td class="c0">597</td><td class="c0"><span title="Avg 8&micro;s">4.49ms</span></td><td class="c0">1791</td><td class="c0">80.9ms</td><td class="s"> my $instance = $self-&gt;instance_metaclass-&gt;new(<div class="calls"><div class="calls_out"> # spent 50.2ms making 597 calls to <a href="Class-MOP-Instance-pm-104-line.html#39">Class::MOP::Instance::new</a>, avg 84&micro;s/call
1245 # spent 29.3ms making 584 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 50&micro;s/call
1246 # spent 796&micro;s making 11 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_all_attributes</a>, avg 72&micro;s/call
1247 # spent 433&micro;s making 597 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__instance_metaclass">Class::MOP::Class::instance_metaclass</a>, avg 725ns/call
1248 # spent 214&micro;s making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::get_all_attributes</a>, avg 107&micro;s/call</div></div></td></tr>
1249<tr><td class="h"><a name="727"></a>727</td><td></td><td></td><td></td><td></td><td class="s"> associated_metaclass =&gt; $self,</td></tr>
1250<tr><td class="h"><a name="728"></a>728</td><td></td><td></td><td></td><td></td><td class="s"> attributes =&gt; [ $self-&gt;get_all_attributes() ],</td></tr>
1251<tr><td class="h"><a name="729"></a>729</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1252<tr><td class="h"><a name="730"></a>730</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1253<tr><td class="h"><a name="731"></a>731</td><td class="c0">597</td><td class="c0"><span title="Avg 2&micro;s">1.11ms</span></td><td class="c0">597</td><td class="c3">844&micro;s</td><td class="s"> $self-&gt;add_meta_instance_dependencies()<div class="calls"><div class="calls_out"> # spent 844&micro;s making 597 calls to <a href="Class-MOP-Instance-pm-104-line.html#184">Class::MOP::Instance::is_dependent_on_superclasses</a>, avg 1&micro;s/call</div></div></td></tr>
1254<tr><td class="h"><a name="732"></a>732</td><td></td><td></td><td></td><td></td><td class="s"> if $instance-&gt;is_dependent_on_superclasses();</td></tr>
1255<tr><td class="h"><a name="733"></a>733</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1256<tr><td class="h"><a name="734"></a>734</td><td class="c0">597</td><td class="c0"><span title="Avg 2&micro;s">1.23ms</span></td><td></td><td></td><td class="s"> return $instance;</td></tr>
1257<tr><td class="h"><a name="735"></a>735</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1258<tr><td class="h"><a name="736"></a>736</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1259<tr><td class="h"><a name="737"></a>737</td><td></td><td></td><td></td><td></td><td class="s"># TODO: this is actually not being used!</td></tr>
1260<tr><td class="h"><a name="738"></a>738</td><td></td><td></td><td></td><td></td><td class="s">sub _inline_rebless_instance {</td></tr>
1261<tr><td class="h"><a name="739"></a>739</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1262<tr><td class="h"><a name="740"></a>740</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1263<tr><td class="h"><a name="741"></a>741</td><td></td><td></td><td></td><td></td><td class="s"> return $self-&gt;get_meta_instance-&gt;inline_rebless_instance_structure(@_);</td></tr>
1264<tr><td class="h"><a name="742"></a>742</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1265<tr><td class="h"><a name="743"></a>743</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1266<tr><td class="h"><a name="744"></a>744</td><td></td><td></td><td></td><td></td><td class="s">sub _inline_get_mop_slot {</td></tr>
1267<tr><td class="h"><a name="745"></a>745</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1268<tr><td class="h"><a name="746"></a>746</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1269<tr><td class="h"><a name="747"></a>747</td><td></td><td></td><td></td><td></td><td class="s"> return $self-&gt;get_meta_instance-&gt;_inline_get_mop_slot(@_);</td></tr>
1270<tr><td class="h"><a name="748"></a>748</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1271<tr><td class="h"><a name="749"></a>749</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1272<tr><td class="h"><a name="750"></a>750</td><td></td><td></td><td></td><td></td><td class="s">sub _inline_set_mop_slot {</td></tr>
1273<tr><td class="h"><a name="751"></a>751</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1274<tr><td class="h"><a name="752"></a>752</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1275<tr><td class="h"><a name="753"></a>753</td><td></td><td></td><td></td><td></td><td class="s"> return $self-&gt;get_meta_instance-&gt;_inline_set_mop_slot(@_);</td></tr>
1276<tr><td class="h"><a name="754"></a>754</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1277<tr><td class="h"><a name="755"></a>755</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1278<tr><td class="h"><a name="756"></a>756</td><td></td><td></td><td></td><td></td><td class="s">sub _inline_clear_mop_slot {</td></tr>
1279<tr><td class="h"><a name="757"></a>757</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1280<tr><td class="h"><a name="758"></a>758</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1281<tr><td class="h"><a name="759"></a>759</td><td></td><td></td><td></td><td></td><td class="s"> return $self-&gt;get_meta_instance-&gt;_inline_clear_mop_slot(@_);</td></tr>
1282<tr><td class="h"><a name="760"></a>760</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1283<tr><td class="h"><a name="761"></a>761</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1284<tr><td class="h"><a name="762"></a>762</td><td></td><td></td><td></td><td></td><td class="s">sub clone_object {</td></tr>
1285<tr><td class="h"><a name="763"></a>763</td><td></td><td></td><td></td><td></td><td class="s"> my $class = shift;</td></tr>
1286<tr><td class="h"><a name="764"></a>764</td><td></td><td></td><td></td><td></td><td class="s"> my $instance = shift;</td></tr>
1287<tr><td class="h"><a name="765"></a>765</td><td></td><td></td><td></td><td></td><td class="s"> (blessed($instance) &amp;&amp; $instance-&gt;isa($class-&gt;name))</td></tr>
1288<tr><td class="h"><a name="766"></a>766</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass an instance of the metaclass (&quot; . (ref $class ? $class-&gt;name : $class) . &quot;), not ($instance)&quot;;</td></tr>
1289<tr><td class="h"><a name="767"></a>767</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1290<tr><td class="h"><a name="768"></a>768</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1291<tr><td class="h"><a name="769"></a>769</td><td></td><td></td><td></td><td></td><td class="s"> # we need to protect the integrity of the</td></tr>
1292<tr><td class="h"><a name="770"></a>770</td><td></td><td></td><td></td><td></td><td class="s"> # Class::MOP::Class singletons here, they</td></tr>
1293<tr><td class="h"><a name="771"></a>771</td><td></td><td></td><td></td><td></td><td class="s"> # should not be cloned.</td></tr>
1294<tr><td class="h"><a name="772"></a>772</td><td></td><td></td><td></td><td></td><td class="s"> return $instance if $instance-&gt;isa('Class::MOP::Class');</td></tr>
1295<tr><td class="h"><a name="773"></a>773</td><td></td><td></td><td></td><td></td><td class="s"> $class-&gt;_clone_instance($instance, @_);</td></tr>
1296<tr><td class="h"><a name="774"></a>774</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1297<tr><td class="h"><a name="775"></a>775</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1298<tr><td class="h"><a name="776"></a>776</td><td></td><td></td><td></td><td></td><td class="s">sub _clone_instance {</td></tr>
1299<tr><td class="h"><a name="777"></a>777</td><td></td><td></td><td></td><td></td><td class="s"> my ($class, $instance, %params) = @_;</td></tr>
1300<tr><td class="h"><a name="778"></a>778</td><td></td><td></td><td></td><td></td><td class="s"> (blessed($instance))</td></tr>
1301<tr><td class="h"><a name="779"></a>779</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You can only clone instances, ($instance) is not a blessed instance&quot;;</td></tr>
1302<tr><td class="h"><a name="780"></a>780</td><td></td><td></td><td></td><td></td><td class="s"> my $meta_instance = $class-&gt;get_meta_instance();</td></tr>
1303<tr><td class="h"><a name="781"></a>781</td><td></td><td></td><td></td><td></td><td class="s"> my $clone = $meta_instance-&gt;clone_instance($instance);</td></tr>
1304<tr><td class="h"><a name="782"></a>782</td><td></td><td></td><td></td><td></td><td class="s"> foreach my $attr ($class-&gt;get_all_attributes()) {</td></tr>
1305<tr><td class="h"><a name="783"></a>783</td><td></td><td></td><td></td><td></td><td class="s"> if ( defined( my $init_arg = $attr-&gt;init_arg ) ) {</td></tr>
1306<tr><td class="h"><a name="784"></a>784</td><td></td><td></td><td></td><td></td><td class="s"> if (exists $params{$init_arg}) {</td></tr>
1307<tr><td class="h"><a name="785"></a>785</td><td></td><td></td><td></td><td></td><td class="s"> $attr-&gt;set_value($clone, $params{$init_arg});</td></tr>
1308<tr><td class="h"><a name="786"></a>786</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1309<tr><td class="h"><a name="787"></a>787</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1310<tr><td class="h"><a name="788"></a>788</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1311<tr><td class="h"><a name="789"></a>789</td><td></td><td></td><td></td><td></td><td class="s"> return $clone;</td></tr>
1312<tr><td class="h"><a name="790"></a>790</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1313<tr><td class="h"><a name="791"></a>791</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1314<tr><td class="h"><a name="792"></a>792</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 22.5ms (250&micro;s+22.3) within Class::MOP::Class::_force_rebless_instance which was called 7 times, avg 3.22ms/call:
1315# 7 times (250&micro;s+22.3ms) by Class::MOP::Object::_make_compatible_with at <a href="Class-MOP-Object-pm-96-line.html#72">line 72 of Class/MOP/Object.pm</a>, avg 3.22ms/call</div></div>sub _force_rebless_instance {</td></tr>
1316<tr><td class="h"><a name="793"></a>793</td><td class="c3">7</td><td class="c3"><span title="Avg 1&micro;s">9&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $instance, %params) = @_;</td></tr>
1317<tr><td class="h"><a name="794"></a>794</td><td class="c3">7</td><td class="c3"><span title="Avg 1&micro;s">8&micro;s</span></td><td class="c3">7</td><td class="c3">31&micro;s</td><td class="s"> my $old_metaclass = Class::MOP::class_of($instance);<div class="calls"><div class="calls_out"> # spent 31&micro;s making 7 calls to <a href="Class-MOP-pm-83-line.html#63">Class::MOP::class_of</a>, avg 4&micro;s/call</div></div></td></tr>
1318<tr><td class="h"><a name="795"></a>795</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1319<tr><td class="h"><a name="796"></a>796</td><td class="c3">7</td><td class="c3"><span title="Avg 3&micro;s">20&micro;s</span></td><td class="c3">7</td><td class="c3">10&micro;s</td><td class="s"> $old_metaclass-&gt;rebless_instance_away($instance, $self, %params)<div class="calls"><div class="calls_out"> # spent 10&micro;s making 7 calls to <a href="Class-MOP-Class-pm-103-line.html#847">Class::MOP::Class::rebless_instance_away</a>, avg 1&micro;s/call</div></div></td></tr>
1320<tr><td class="h"><a name="797"></a>797</td><td></td><td></td><td></td><td></td><td class="s"> if $old_metaclass;</td></tr>
1321<tr><td class="h"><a name="798"></a>798</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1322<tr><td class="h"><a name="799"></a>799</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">16&micro;s</span></td><td class="c3">7</td><td class="c3">26&micro;s</td><td class="s"> my $meta_instance = $self-&gt;get_meta_instance;<div class="calls"><div class="calls_out"> # spent 15&micro;s making 6 calls to <a href="Class-MOP-Class-pm-103-line.html#718">Class::MOP::Class::get_meta_instance</a>, avg 2&micro;s/call
1323 # spent 11&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_meta_instance</a></div></div></td></tr>
1324<tr><td class="h"><a name="800"></a>800</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1325<tr><td class="h"><a name="801"></a>801</td><td class="c3">7</td><td class="c3"><span title="Avg 5&micro;s">37&micro;s</span></td><td class="c3">14</td><td class="c3">43&micro;s</td><td class="s"> if (Class::MOP::metaclass_is_weak($old_metaclass-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 36&micro;s making 7 calls to <a href="Class-MOP-pm-83-line.html#58">Class::MOP::metaclass_is_weak</a>, avg 5&micro;s/call
1326 # spent 7&micro;s making 7 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 943ns/call</div></div></td></tr>
1327<tr><td class="h"><a name="802"></a>802</td><td></td><td></td><td></td><td></td><td class="s"> $meta_instance-&gt;_clear_mop_slot($instance);</td></tr>
1328<tr><td class="h"><a name="803"></a>803</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1329<tr><td class="h"><a name="804"></a>804</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1330<tr><td class="h"><a name="805"></a>805</td><td></td><td></td><td></td><td></td><td class="s"> # rebless!</td></tr>
1331<tr><td class="h"><a name="806"></a>806</td><td></td><td></td><td></td><td></td><td class="s"> # we use $_[1] here because of t/cmop/rebless_overload.t regressions</td></tr>
1332<tr><td class="h"><a name="807"></a>807</td><td></td><td></td><td></td><td></td><td class="s"> # on 5.8.8</td></tr>
1333<tr><td class="h"><a name="808"></a>808</td><td class="c3">7</td><td class="c3"><span title="Avg 3&micro;s">22&micro;s</span></td><td class="c3">7</td><td class="c3">82&micro;s</td><td class="s"> $meta_instance-&gt;rebless_instance_structure($_[1], $self);<div class="calls"><div class="calls_out"> # spent 82&micro;s making 7 calls to <a href="Class-MOP-Instance-pm-104-line.html#176">Class::MOP::Instance::rebless_instance_structure</a>, avg 12&micro;s/call</div></div></td></tr>
1334<tr><td class="h"><a name="809"></a>809</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1335<tr><td class="h"><a name="810"></a>810</td><td class="c3">7</td><td class="c3"><span title="Avg 4&micro;s">29&micro;s</span></td><td class="c3">7</td><td class="c0">22.1ms</td><td class="s"> $self-&gt;_fixup_attributes_after_rebless($instance, $old_metaclass, %params);<div class="calls"><div class="calls_out"> # spent 19.5ms making 6 calls to <a href="Moose-Meta-Class-pm-136-line.html#755">Moose::Meta::Class::_fixup_attributes_after_rebless</a>, avg 3.25ms/call
1336 # spent 2.59ms making 1 call to <a href="Class-MOP-Class-pm-103-line.html#851">Class::MOP::Class::_fixup_attributes_after_rebless</a></div></div></td></tr>
1337<tr><td class="h"><a name="811"></a>811</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1338<tr><td class="h"><a name="812"></a>812</td><td class="c3">7</td><td class="c3"><span title="Avg 8&micro;s">55&micro;s</span></td><td class="c3">14</td><td class="c3">38&micro;s</td><td class="s"> if (Class::MOP::metaclass_is_weak($self-&gt;name)) {<div class="calls"><div class="calls_out"> # spent 32&micro;s making 7 calls to <a href="Class-MOP-pm-83-line.html#58">Class::MOP::metaclass_is_weak</a>, avg 5&micro;s/call
1339 # spent 6&micro;s making 7 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 914ns/call</div></div></td></tr>
1340<tr><td class="h"><a name="813"></a>813</td><td></td><td></td><td></td><td></td><td class="s"> $meta_instance-&gt;_set_mop_slot($instance, $self);</td></tr>
1341<tr><td class="h"><a name="814"></a>814</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1342<tr><td class="h"><a name="815"></a>815</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1343<tr><td class="h"><a name="816"></a>816</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1344<tr><td class="h"><a name="817"></a>817</td><td></td><td></td><td></td><td></td><td class="s">sub rebless_instance {</td></tr>
1345<tr><td class="h"><a name="818"></a>818</td><td></td><td></td><td></td><td></td><td class="s"> my ($self, $instance, %params) = @_;</td></tr>
1346<tr><td class="h"><a name="819"></a>819</td><td></td><td></td><td></td><td></td><td class="s"> my $old_metaclass = Class::MOP::class_of($instance);</td></tr>
1347<tr><td class="h"><a name="820"></a>820</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1348<tr><td class="h"><a name="821"></a>821</td><td></td><td></td><td></td><td></td><td class="s"> my $old_class = $old_metaclass ? $old_metaclass-&gt;name : blessed($instance);</td></tr>
1349<tr><td class="h"><a name="822"></a>822</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;name-&gt;isa($old_class)</td></tr>
1350<tr><td class="h"><a name="823"></a>823</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You may rebless only into a subclass of ($old_class), of which (&quot;. $self-&gt;name .&quot;) isn't.&quot;;</td></tr>
1351<tr><td class="h"><a name="824"></a>824</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1352<tr><td class="h"><a name="825"></a>825</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_force_rebless_instance($_[1], %params);</td></tr>
1353<tr><td class="h"><a name="826"></a>826</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1354<tr><td class="h"><a name="827"></a>827</td><td></td><td></td><td></td><td></td><td class="s"> return $instance;</td></tr>
1355<tr><td class="h"><a name="828"></a>828</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1356<tr><td class="h"><a name="829"></a>829</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1357<tr><td class="h"><a name="830"></a>830</td><td></td><td></td><td></td><td></td><td class="s">sub rebless_instance_back {</td></tr>
1358<tr><td class="h"><a name="831"></a>831</td><td></td><td></td><td></td><td></td><td class="s"> my ( $self, $instance ) = @_;</td></tr>
1359<tr><td class="h"><a name="832"></a>832</td><td></td><td></td><td></td><td></td><td class="s"> my $old_metaclass = Class::MOP::class_of($instance);</td></tr>
1360<tr><td class="h"><a name="833"></a>833</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1361<tr><td class="h"><a name="834"></a>834</td><td></td><td></td><td></td><td></td><td class="s"> my $old_class</td></tr>
1362<tr><td class="h"><a name="835"></a>835</td><td></td><td></td><td></td><td></td><td class="s"> = $old_metaclass ? $old_metaclass-&gt;name : blessed($instance);</td></tr>
1363<tr><td class="h"><a name="836"></a>836</td><td></td><td></td><td></td><td></td><td class="s"> $old_class-&gt;isa( $self-&gt;name )</td></tr>
1364<tr><td class="h"><a name="837"></a>837</td><td></td><td></td><td></td><td></td><td class="s"> || confess</td></tr>
1365<tr><td class="h"><a name="838"></a>838</td><td></td><td></td><td></td><td></td><td class="s"> &quot;You may rebless only into a superclass of ($old_class), of which (&quot;</td></tr>
1366<tr><td class="h"><a name="839"></a>839</td><td></td><td></td><td></td><td></td><td class="s"> . $self-&gt;name</td></tr>
1367<tr><td class="h"><a name="840"></a>840</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;) isn't.&quot;;</td></tr>
1368<tr><td class="h"><a name="841"></a>841</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1369<tr><td class="h"><a name="842"></a>842</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_force_rebless_instance($_[1]);</td></tr>
1370<tr><td class="h"><a name="843"></a>843</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1371<tr><td class="h"><a name="844"></a>844</td><td></td><td></td><td></td><td></td><td class="s"> return $instance;</td></tr>
1372<tr><td class="h"><a name="845"></a>845</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1373<tr><td class="h"><a name="846"></a>846</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1374<tr><td class="h"><a name="847"></a>847</td><td class="c3">7</td><td class="c3"><span title="Avg 4&micro;s">29&micro;s</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 10&micro;s within Class::MOP::Class::rebless_instance_away which was called 7 times, avg 1&micro;s/call:
1375# 7 times (10&micro;s+0s) by Class::MOP::Class::_force_rebless_instance at <a href="Class-MOP-Class-pm-103-line.html#796">line 796</a>, avg 1&micro;s/call</div></div>sub rebless_instance_away {</td></tr>
1376<tr><td class="h"><a name="848"></a>848</td><td></td><td></td><td></td><td></td><td class="s"> # this intentionally does nothing, it is just a hook</td></tr>
1377<tr><td class="h"><a name="849"></a>849</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1378<tr><td class="h"><a name="850"></a>850</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1379<tr><td class="h"><a name="851"></a>851</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 20.9ms (2.07+18.8) within Class::MOP::Class::_fixup_attributes_after_rebless which was called 7 times, avg 2.98ms/call:
1380# 6 times (1.81ms+16.5ms) by Moose::Meta::Class::_fixup_attributes_after_rebless at <a href="Moose-Meta-Class-pm-136-line.html#759">line 759 of Moose/Meta/Class.pm</a>, avg 3.05ms/call
1381# once (252&micro;s+2.33ms) by Class::MOP::Class::_force_rebless_instance at <a href="Class-MOP-Class-pm-103-line.html#810">line 810</a></div></div>sub _fixup_attributes_after_rebless {</td></tr>
1382<tr><td class="h"><a name="852"></a>852</td><td class="c3">7</td><td class="c3"><span title="Avg 329ns">2&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1383<tr><td class="h"><a name="853"></a>853</td><td class="c3">7</td><td class="c3"><span title="Avg 843ns">6&micro;s</span></td><td></td><td></td><td class="s"> my ($instance, $rebless_from, %params) = @_;</td></tr>
1384<tr><td class="h"><a name="854"></a>854</td><td class="c3">7</td><td class="c3"><span title="Avg 1&micro;s">8&micro;s</span></td><td class="c3">7</td><td class="c3">15&micro;s</td><td class="s"> my $meta_instance = $self-&gt;get_meta_instance;<div class="calls"><div class="calls_out"> # spent 8&micro;s making 6 calls to <a href="Class-MOP-Class-pm-103-line.html#718">Class::MOP::Class::get_meta_instance</a>, avg 1&micro;s/call
1385 # spent 7&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_meta_instance</a></div></div></td></tr>
1386<tr><td class="h"><a name="855"></a>855</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1387<tr><td class="h"><a name="856"></a>856</td><td class="c3">7</td><td class="c3"><span title="Avg 7&micro;s">46&micro;s</span></td><td class="c3">7</td><td class="c3">86&micro;s</td><td class="s"> for my $attr ( $rebless_from-&gt;get_all_attributes ) {<div class="calls"><div class="calls_out"> # spent 86&micro;s making 7 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_all_attributes</a>, avg 12&micro;s/call</div></div></td></tr>
1388<tr><td class="h"><a name="857"></a>857</td><td class="c3">123</td><td class="c1"><span title="Avg 4&micro;s">504&micro;s</span></td><td class="c3">246</td><td class="c0">8.91ms</td><td class="s"> next if $self-&gt;find_attribute_by_name( $attr-&gt;name );<div class="calls"><div class="calls_out"> # spent 8.82ms making 123 calls to <a href="Class-MOP-Class-pm-103-line.html#913">Class::MOP::Class::find_attribute_by_name</a>, avg 72&micro;s/call
1389 # spent 93&micro;s making 123 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__name">Class::MOP::Mixin::AttributeCore::name</a>, avg 758ns/call</div></div></td></tr>
1390<tr><td class="h"><a name="858"></a>858</td><td></td><td></td><td></td><td></td><td class="s"> $meta_instance-&gt;deinitialize_slot( $instance, $_ ) for $attr-&gt;slots;</td></tr>
1391<tr><td class="h"><a name="859"></a>859</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1392<tr><td class="h"><a name="860"></a>860</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1393<tr><td class="h"><a name="861"></a>861</td><td class="c3">7</td><td class="c3"><span title="Avg 3&micro;s">20&micro;s</span></td><td class="c3">7</td><td class="c3">708&micro;s</td><td class="s"> foreach my $attr ( $self-&gt;get_all_attributes ) {<div class="calls"><div class="calls_out"> # spent 700&micro;s making 6 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 117&micro;s/call
1394 # spent 8&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_all_attributes</a></div></div></td></tr>
1395<tr><td class="h"><a name="862"></a>862</td><td class="c3">136</td><td class="c0"><span title="Avg 6&micro;s">753&micro;s</span></td><td class="c1">352</td><td class="c2">4.72ms</td><td class="s"> if ( $attr-&gt;has_value($instance) ) {<div class="calls"><div class="calls_out"> # spent 2.63ms making 136 calls to <a href="Class-MOP-Attribute-pm-130-line.html#314">Class::MOP::Attribute::has_value</a>, avg 19&micro;s/call
1396 # spent 1.99ms making 94 calls to <a href="Class-MOP-Attribute-pm-130-line.html#291">Class::MOP::Attribute::get_value</a>, avg 21&micro;s/call
1397 # spent 95&micro;s making 122 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__AttributeCore__init_arg">Class::MOP::Mixin::AttributeCore::init_arg</a>, avg 775ns/call</div></div></td></tr>
1398<tr><td class="h"><a name="863"></a>863</td><td></td><td></td><td></td><td></td><td class="s"> if ( defined( my $init_arg = $attr-&gt;init_arg ) ) {</td></tr>
1399<tr><td class="h"><a name="864"></a>864</td><td></td><td></td><td></td><td></td><td class="s"> $params{$init_arg} = $attr-&gt;get_value($instance)</td></tr>
1400<tr><td class="h"><a name="865"></a>865</td><td></td><td></td><td></td><td></td><td class="s"> unless exists $params{$init_arg};</td></tr>
1401<tr><td class="h"><a name="866"></a>866</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1402<tr><td class="h"><a name="867"></a>867</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1403<tr><td class="h"><a name="868"></a>868</td><td class="c3">28</td><td class="c3"><span title="Avg 2&micro;s">64&micro;s</span></td><td class="c3">56</td><td class="c3">1.23ms</td><td class="s"> $attr-&gt;set_value($instance, $attr-&gt;get_value($instance));<div class="calls"><div class="calls_out"> # spent 647&micro;s making 28 calls to <a href="Class-MOP-Attribute-pm-130-line.html#268">Class::MOP::Attribute::set_value</a>, avg 23&micro;s/call
1404 # spent 584&micro;s making 28 calls to <a href="Class-MOP-Attribute-pm-130-line.html#291">Class::MOP::Attribute::get_value</a>, avg 21&micro;s/call</div></div></td></tr>
1405<tr><td class="h"><a name="869"></a>869</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1406<tr><td class="h"><a name="870"></a>870</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1407<tr><td class="h"><a name="871"></a>871</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1408<tr><td class="h"><a name="872"></a>872</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1409<tr><td class="h"><a name="873"></a>873</td><td class="c3">7</td><td class="c3"><span title="Avg 7&micro;s">47&micro;s</span></td><td class="c3">7</td><td class="c3">713&micro;s</td><td class="s"> foreach my $attr ($self-&gt;get_all_attributes) {<div class="calls"><div class="calls_out"> # spent 706&micro;s making 6 calls to <a href="Class-MOP-Class-pm-103-line.html#926">Class::MOP::Class::get_all_attributes</a>, avg 118&micro;s/call
1410 # spent 8&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::get_all_attributes</a></div></div></td></tr>
1411<tr><td class="h"><a name="874"></a>874</td><td class="c3">136</td><td class="c3"><span title="Avg 2&micro;s">241&micro;s</span></td><td class="c3">136</td><td class="c3">2.45ms</td><td class="s"> $attr-&gt;initialize_instance_slot($meta_instance, $instance, \%params);<div class="calls"><div class="calls_out"> # spent 2.33ms making 126 calls to <a href="Class-MOP-Attribute-pm-130-line.html#109">Class::MOP::Attribute::initialize_instance_slot</a>, avg 18&micro;s/call
1412 # spent 116&micro;s making 10 calls to <a href="Moose-Meta-Attribute-pm-164-line.html#499">Moose::Meta::Attribute::initialize_instance_slot</a>, avg 12&micro;s/call</div></div></td></tr>
1413<tr><td class="h"><a name="875"></a>875</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1414<tr><td class="h"><a name="876"></a>876</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1415<tr><td class="h"><a name="877"></a>877</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1416<tr><td class="h"><a name="878"></a>878</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 9.69ms (2.74+6.95) within Class::MOP::Class::_attach_attribute which was called 653 times, avg 15&micro;s/call:
1417# 653 times (2.74ms+6.95ms) by Class::MOP::Mixin::HasAttributes::add_attribute at <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#27">line 27 of Class/MOP/Mixin/HasAttributes.pm</a>, avg 15&micro;s/call</div></div>sub _attach_attribute {</td></tr>
1418<tr><td class="h"><a name="879"></a>879</td><td class="c0">653</td><td class="c2"><span title="Avg 598ns">390&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $attribute) = @_;</td></tr>
1419<tr><td class="h"><a name="880"></a>880</td><td class="c0">653</td><td class="c0"><span title="Avg 3&micro;s">2.22ms</span></td><td class="c0">653</td><td class="c1">6.95ms</td><td class="s"> $attribute-&gt;attach_to_class($self);<div class="calls"><div class="calls_out"> # spent 6.95ms making 653 calls to <a href="Class-MOP-Attribute-pm-130-line.html#238">Class::MOP::Attribute::attach_to_class</a>, avg 11&micro;s/call</div></div></td></tr>
1420<tr><td class="h"><a name="881"></a>881</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1421<tr><td class="h"><a name="882"></a>882</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1422<tr><td class="h"><a name="883"></a>883</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.57s (8.36ms+1.56) within Class::MOP::Class::_post_add_attribute which was called 653 times, avg 2.41ms/call:
1423# 653 times (8.36ms+1.56s) by Class::MOP::Mixin::HasAttributes::add_attribute at <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#44">line 44 of Class/MOP/Mixin/HasAttributes.pm</a>, avg 2.41ms/call</div></div>sub _post_add_attribute {</td></tr>
1424<tr><td class="h"><a name="884"></a>884</td><td class="c0">653</td><td class="c2"><span title="Avg 579ns">378&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, $attribute ) = @_;</td></tr>
1425<tr><td class="h"><a name="885"></a>885</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1426<tr><td class="h"><a name="886"></a>886</td><td class="c0">653</td><td class="c0"><span title="Avg 2&micro;s">1.00ms</span></td><td class="c0">653</td><td class="c1">6.77ms</td><td class="s"> $self-&gt;invalidate_meta_instances;<div class="calls"><div class="calls_out"> # spent 6.77ms making 653 calls to <a href="Class-MOP-Class-pm-103-line.html#1230">Class::MOP::Class::invalidate_meta_instances</a>, avg 10&micro;s/call</div></div></td></tr>
1427<tr><td class="h"><a name="887"></a>887</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1428<tr><td class="h"><a name="888"></a>888</td><td></td><td></td><td></td><td></td><td class="s"> # invalidate package flag here</td></tr>
1429<tr><td class="h"><a name="889"></a>889</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.54s (4.86ms+1.54) within Class::MOP::Class::__ANON__[/Users/edenc/perl5/lib/perl5/darwin-multi-2level/Class/MOP/Class.pm:892] which was called 653 times, avg 2.37ms/call:
1430# 653 times (4.86ms+1.54s) by Try::Tiny::try at <a href="Try-Tiny-pm-76-line.html#76">line 76 of Try/Tiny.pm</a>, avg 2.37ms/call</div></div> try {</td></tr>
1431<tr><td class="h"><a name="890"></a>890</td><td class="c0">653</td><td class="c0"><span title="Avg 2&micro;s">1.37ms</span></td><td></td><td></td><td class="s"> local $SIG{__DIE__};</td></tr>
1432<tr><td class="h"><a name="891"></a>891</td><td class="c0">653</td><td class="c0"><span title="Avg 5&micro;s">3.15ms</span></td><td class="c0">653</td><td class="c0">1.54s</td><td class="s"> $attribute-&gt;install_accessors;<div class="calls"><div class="calls_out"> # spent 1.15s making 521 calls to <a href="Moose-Meta-Attribute-pm-164-line.html#1011">Moose::Meta::Attribute::install_accessors</a>, avg 2.20ms/call
1433 # spent 167ms making 4 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::8::install_accessors</a>, avg 41.8ms/call
1434 # spent 159ms making 5 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::17::install_accessors</a>, avg 31.8ms/call
1435 # spent 36.5ms making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::23::install_accessors</a>
1436 # spent 31.1ms making 122 calls to <a href="Class-MOP-Attribute-pm-130-line.html#419">Class::MOP::Attribute::install_accessors</a>, avg 255&micro;s/call</div></div></td></tr>
1437<tr><td class="h"><a name="892"></a>892</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1438<tr><td class="h"><a name="893"></a>893</td><td></td><td></td><td></td><td></td><td class="s"> catch {</td></tr>
1439<tr><td class="h"><a name="894"></a>894</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;remove_attribute( $attribute-&gt;name );</td></tr>
1440<tr><td class="h"><a name="895"></a>895</td><td></td><td></td><td></td><td></td><td class="s"> die $_;</td></tr>
1441<tr><td class="h"><a name="896"></a>896</td><td class="c0">653</td><td class="c0"><span title="Avg 9&micro;s">5.68ms</span></td><td class="c0">1306</td><td class="c0">811ms</td><td class="s"> };<div class="calls"><div class="calls_out"> # spent 1.55s making 653 calls to <a href="Try-Tiny-pm-76-line.html#25">Try::Tiny::try</a>, avg 2.38ms/call, recursion: max depth 4, sum of overlapping time 746ms
1442 # spent 2.55ms making 653 calls to <a href="Try-Tiny-pm-76-line.html#114">Try::Tiny::catch</a>, avg 4&micro;s/call</div></div></td></tr>
1443<tr><td class="h"><a name="897"></a>897</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1444<tr><td class="h"><a name="898"></a>898</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1445<tr><td class="h"><a name="899"></a>899</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.70ms (160&micro;s+1.53) within Class::MOP::Class::remove_attribute which was called 7 times, avg 242&micro;s/call:
1446# 7 times (160&micro;s+1.53ms) by Class::MOP::Mixin::HasAttributes::add_attribute at <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#31">line 31 of Class/MOP/Mixin/HasAttributes.pm</a>, avg 242&micro;s/call</div></div>sub remove_attribute {</td></tr>
1447<tr><td class="h"><a name="900"></a>900</td><td class="c3">7</td><td class="c3"><span title="Avg 429ns">3&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1448<tr><td class="h"><a name="901"></a>901</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1449<tr><td class="h"><a name="902"></a>902</td><td class="c3">7</td><td class="c3"><span title="Avg 7&micro;s">46&micro;s</span></td><td class="c3">7</td><td class="c3">70&micro;s</td><td class="s"> my $removed_attribute = $self-&gt;SUPER::remove_attribute(@_)<div class="calls"><div class="calls_out"> # spent 70&micro;s making 7 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#68">Class::MOP::Mixin::HasAttributes::remove_attribute</a>, avg 10&micro;s/call</div></div></td></tr>
1450<tr><td class="h"><a name="903"></a>903</td><td></td><td></td><td></td><td></td><td class="s"> or return;</td></tr>
1451<tr><td class="h"><a name="904"></a>904</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1452<tr><td class="h"><a name="905"></a>905</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">16&micro;s</span></td><td class="c3">7</td><td class="c3">212&micro;s</td><td class="s"> $self-&gt;invalidate_meta_instances;<div class="calls"><div class="calls_out"> # spent 212&micro;s making 7 calls to <a href="Class-MOP-Class-pm-103-line.html#1230">Class::MOP::Class::invalidate_meta_instances</a>, avg 30&micro;s/call</div></div></td></tr>
1453<tr><td class="h"><a name="906"></a>906</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1454<tr><td class="h"><a name="907"></a>907</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">16&micro;s</span></td><td class="c3">7</td><td class="c3">1.24ms</td><td class="s"> $removed_attribute-&gt;remove_accessors;<div class="calls"><div class="calls_out"> # spent 1.24ms making 7 calls to <a href="Moose-Meta-Attribute-pm-164-line.html#1077">Moose::Meta::Attribute::remove_accessors</a>, avg 177&micro;s/call</div></div></td></tr>
1455<tr><td class="h"><a name="908"></a>908</td><td class="c3">7</td><td class="c3"><span title="Avg 2&micro;s">15&micro;s</span></td><td class="c3">7</td><td class="c3">17&micro;s</td><td class="s"> $removed_attribute-&gt;detach_from_class;<div class="calls"><div class="calls_out"> # spent 17&micro;s making 7 calls to <a href="Class-MOP-Attribute-pm-130-line.html#245">Class::MOP::Attribute::detach_from_class</a>, avg 2&micro;s/call</div></div></td></tr>
1456<tr><td class="h"><a name="909"></a>909</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1457<tr><td class="h"><a name="910"></a>910</td><td class="c3">7</td><td class="c3"><span title="Avg 5&micro;s">32&micro;s</span></td><td></td><td></td><td class="s"> return$removed_attribute;</td></tr>
1458<tr><td class="h"><a name="911"></a>911</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1459<tr><td class="h"><a name="912"></a>912</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1460<tr><td class="h"><a name="913"></a>913</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 20.7ms (6.72+14.0) within Class::MOP::Class::find_attribute_by_name which was called 353 times, avg 59&micro;s/call:
1461# 164 times (2.43ms+5.22ms) by Class::MOP::Class::_immutable_metaclass at <a href="Class-MOP-Class-pm-103-line.html#1331">line 1331</a>, avg 47&micro;s/call
1462# 123 times (2.88ms+5.94ms) by Class::MOP::Class::_fixup_attributes_after_rebless at <a href="Class-MOP-Class-pm-103-line.html#857">line 857</a>, avg 72&micro;s/call
1463# 22 times (620&micro;s+1.29ms) by Moose::Util::MetaRole::_make_new_metaclass at <a href="Moose-Util-MetaRole-pm-135-line.html#88">line 88 of Moose/Util/MetaRole.pm</a>, avg 87&micro;s/call
1464# 16 times (232&micro;s+507&micro;s) by MooseX::Traits::Util::transform_trait at <a href="MooseX-Traits-Util-pm-1267-line.html#27">line 27 of MooseX/Traits/Util.pm</a>, avg 46&micro;s/call
1465# 10 times (159&micro;s+301&micro;s) by Moose::Meta::Class::_process_inherited_attribute at <a href="Moose-Meta-Class-pm-136-line.html#709">line 709 of Moose/Meta/Class.pm</a>, avg 46&micro;s/call
1466# 9 times (218&micro;s+406&micro;s) by MooseX::Emulate::Class::Accessor::Fast::mk_accessors at <a href="MooseX-Emulate-Class-Accessor-Fast-pm-474-line.html#111">line 111 of MooseX/Emulate/Class/Accessor/Fast.pm</a>, avg 69&micro;s/call
1467# 9 times (192&micro;s+366&micro;s) by MooseX::Emulate::Class::Accessor::Fast::mk_accessors at <a href="MooseX-Emulate-Class-Accessor-Fast-pm-474-line.html#119">line 119 of MooseX/Emulate/Class/Accessor/Fast.pm</a>, avg 62&micro;s/call</div></div>sub find_attribute_by_name {</td></tr>
1468<tr><td class="h"><a name="914"></a>914</td><td class="c1">353</td><td class="c3"><span title="Avg 631ns">223&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, $attr_name ) = @_;</td></tr>
1469<tr><td class="h"><a name="915"></a>915</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1470<tr><td class="h"><a name="916"></a>916</td><td class="c1">353</td><td class="c0"><span title="Avg 2&micro;s">664&micro;s</span></td><td class="c1">353</td><td class="c3">3.49ms</td><td class="s"> foreach my $class ( $self-&gt;linearized_isa ) {<div class="calls"><div class="calls_out"> # spent 2.32ms making 185 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::linearized_isa</a>, avg 13&micro;s/call
1471 # spent 994&micro;s making 152 calls to <a href="Class-MOP-Class-pm-103-line.html#998">Class::MOP::Class::linearized_isa</a>, avg 7&micro;s/call
1472 # spent 182&micro;s making 16 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::linearized_isa</a>, avg 11&micro;s/call</div></div></td></tr>
1473<tr><td class="h"><a name="917"></a>917</td><td></td><td></td><td></td><td></td><td class="s"> # fetch the meta-class ...</td></tr>
1474<tr><td class="h"><a name="918"></a>918</td><td class="c0">920</td><td class="c0"><span title="Avg 1&micro;s">1.14ms</span></td><td class="c0">920</td><td class="c2">4.47ms</td><td class="s"> my $meta = Class::MOP::Class-&gt;initialize($class);<div class="calls"><div class="calls_out"> # spent 4.75ms making 920 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 5&micro;s/call, recursion: max depth 1, sum of overlapping time 285&micro;s</div></div></td></tr>
1475<tr><td class="h"><a name="919"></a>919</td><td class="c0">920</td><td class="c0"><span title="Avg 3&micro;s">2.59ms</span></td><td class="c0">1244</td><td class="c2">5.78ms</td><td class="s"> return $meta-&gt;get_attribute($attr_name)<div class="calls"><div class="calls_out"> # spent 4.20ms making 920 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#50">Class::MOP::Mixin::HasAttributes::has_attribute</a>, avg 5&micro;s/call
1476 # spent 1.57ms making 324 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#59">Class::MOP::Mixin::HasAttributes::get_attribute</a>, avg 5&micro;s/call</div></div></td></tr>
1477<tr><td class="h"><a name="920"></a>920</td><td></td><td></td><td></td><td></td><td class="s"> if $meta-&gt;has_attribute($attr_name);</td></tr>
1478<tr><td class="h"><a name="921"></a>921</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1479<tr><td class="h"><a name="922"></a>922</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1480<tr><td class="h"><a name="923"></a>923</td><td class="c3">29</td><td class="c3"><span title="Avg 2&micro;s">56&micro;s</span></td><td></td><td></td><td class="s"> return;</td></tr>
1481<tr><td class="h"><a name="924"></a>924</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1482<tr><td class="h"><a name="925"></a>925</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1483<tr><td class="h"><a name="926"></a>926</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 111ms (57.2+53.6) within Class::MOP::Class::get_all_attributes which was called 1709 times, avg 65&micro;s/call:
1484# 584 times (14.3ms+15.0ms) by Class::MOP::Class::_create_meta_instance at <a href="Class-MOP-Class-pm-103-line.html#726">line 726</a>, avg 50&micro;s/call
1485# 432 times (16.0ms+17.2ms) by Class::MOP::Class::_construct_instance at <a href="Class-MOP-Class-pm-103-line.html#524">line 524</a>, avg 77&micro;s/call
1486# 144 times (5.13ms+5.60ms) by Moose::Meta::Class::_call_all_triggers at <a href="Moose-Meta-Class-pm-136-line.html#286">line 286 of Moose/Meta/Class.pm</a>, avg 75&micro;s/call
1487# 133 times (3.42ms+3.52ms) by Class::MOP::Class::_inline_slot_initializers at <a href="Class-MOP-Class-pm-103-line.html#592">line 592</a>, avg 52&micro;s/call
1488# 133 times (2.98ms+3.46ms) by Class::MOP::Class::_eval_environment at <a href="Class-MOP-Class-pm-103-line.html#708">line 708</a>, avg 48&micro;s/call
1489# 103 times (9.40ms+2.67ms) by Moose::Meta::Class::_inline_triggers at <a href="Moose-Meta-Class-pm-136-line.html#457">line 457 of Moose/Meta/Class.pm</a>, avg 117&micro;s/call
1490# 103 times (2.17ms+2.40ms) by Moose::Meta::Class::_eval_environment at <a href="Moose-Meta-Class-pm-136-line.html#495">line 495 of Moose/Meta/Class.pm</a>, avg 44&micro;s/call
1491# 32 times (1.92ms+1.64ms) by Moose::Meta::Attribute::new at <a href="Moose-Meta-Attribute-pm-164-line.html#95">line 95 of Moose/Meta/Attribute.pm</a>, avg 111&micro;s/call
1492# 29 times (1.02ms+1.27ms) by Class::MOP::Class:::around at <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#78">line 78 of Class/MOP/Class/Immutable/Trait.pm</a>, avg 79&micro;s/call
1493# 6 times (351&micro;s+355&micro;s) by Class::MOP::Class::_fixup_attributes_after_rebless at <a href="Class-MOP-Class-pm-103-line.html#873">line 873</a>, avg 118&micro;s/call
1494# 6 times (367&micro;s+333&micro;s) by Class::MOP::Class::_fixup_attributes_after_rebless at <a href="Class-MOP-Class-pm-103-line.html#861">line 861</a>, avg 117&micro;s/call
1495# once (34&micro;s+36&micro;s) by Catalyst::Model::KiokuDB::BUILD at <a href="Catalyst-Model-KiokuDB-pm-2055-line.html#94">line 94 of Catalyst/Model/KiokuDB.pm</a>
1496# once (30&micro;s+30&micro;s) by Class::MOP::Class:::around at <a href="MooseX-StrictConstructor-Trait-Class-pm-1515-line.html#23">line 23 of MooseX/StrictConstructor/Trait/Class.pm</a>
1497# once (16&micro;s+18&micro;s) by Class::MOP::Class:::around at <a href="MooseX-StrictConstructor-Trait-Class-pm-1515-line.html#68">line 68 of MooseX/StrictConstructor/Trait/Class.pm</a>
1498# once (17&micro;s+17&micro;s) by Class::MOP::Class:::around at <a href="MooseX-StrictConstructor-Trait-Class-pm-1515-line.html#48">line 48 of MooseX/StrictConstructor/Trait/Class.pm</a></div></div>sub get_all_attributes {</td></tr>
1499<tr><td class="h"><a name="927"></a>927</td><td class="c0">1709</td><td class="c2"><span title="Avg 222ns">380&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1500<tr><td class="h"><a name="928"></a>928</td><td class="c0">13825</td><td class="c0"><span title="Avg 3&micro;s">46.6ms</span></td><td class="c0">13825</td><td class="c0">53.3ms</td><td class="s"> my %attrs = map { %{ Class::MOP::Class-&gt;initialize($_)-&gt;_attribute_map } }<div class="calls"><div class="calls_out"> # spent 34.6ms making 6058 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 6&micro;s/call, recursion: max depth 1, sum of overlapping time 298&micro;s
1501 # spent 13.3ms making 1680 calls to <a href="Class-MOP-Class-pm-103-line.html#998">Class::MOP::Class::linearized_isa</a>, avg 8&micro;s/call
1502 # spent 5.18ms making 6058 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasAttributes___attribute_map">Class::MOP::Mixin::HasAttributes::_attribute_map</a>, avg 856ns/call
1503 # spent 320&micro;s making 16 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::linearized_isa</a>, avg 20&micro;s/call
1504 # spent 232&micro;s making 13 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::linearized_isa</a>, avg 18&micro;s/call</div></div></td></tr>
1505<tr><td class="h"><a name="929"></a>929</td><td></td><td></td><td></td><td></td><td class="s"> reverse $self-&gt;linearized_isa;</td></tr>
1506<tr><td class="h"><a name="930"></a>930</td><td class="c0">1709</td><td class="c0"><span title="Avg 4&micro;s">6.73ms</span></td><td></td><td></td><td class="s"> return values %attrs;</td></tr>
1507<tr><td class="h"><a name="931"></a>931</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1508<tr><td class="h"><a name="932"></a>932</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1509<tr><td class="h"><a name="933"></a>933</td><td></td><td></td><td></td><td></td><td class="s"># Inheritance</td></tr>
1510<tr><td class="h"><a name="934"></a>934</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1511<tr><td class="h"><a name="935"></a>935</td><td></td><td></td><td></td><td></td><td class="s">sub superclasses {</td></tr>
1512<tr><td class="h"><a name="936"></a>936</td><td class="c0">1299</td><td class="c2"><span title="Avg 262ns">340&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1513<tr><td class="h"><a name="937"></a>937</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1514<tr><td class="h"><a name="938"></a>938</td><td class="c0">1299</td><td class="c0"><span title="Avg 2&micro;s">2.58ms</span></td><td class="c0">1299</td><td class="c0">22.5ms</td><td class="s"> my $isa = $self-&gt;get_or_add_package_symbol('@ISA');<div class="calls"><div class="calls_out"> # spent 22.5ms making 1299 calls to <a href="Class-MOP-Package-pm-122-line.html#241">Class::MOP::Package::get_or_add_package_symbol</a>, avg 17&micro;s/call</div></div></td></tr>
1515<tr><td class="h"><a name="939"></a>939</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1516<tr><td class="h"><a name="940"></a>940</td><td class="c0">1299</td><td class="c1"><span title="Avg 343ns">445&micro;s</span></td><td></td><td></td><td class="s"> if (@_) {</td></tr>
1517<tr><td class="h"><a name="941"></a>941</td><td class="c3">200</td><td class="c3"><span title="Avg 1&micro;s">205&micro;s</span></td><td></td><td></td><td class="s"> my @supers = @_;</td></tr>
1518<tr><td class="h"><a name="942"></a>942</td><td class="c3">200</td><td class="c0"><span title="Avg 11&micro;s">2.20ms</span></td><td></td><td></td><td class="s"> @{$isa} = @supers;</td></tr>
1519<tr><td class="h"><a name="943"></a>943</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1520<tr><td class="h"><a name="944"></a>944</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1521<tr><td class="h"><a name="945"></a>945</td><td></td><td></td><td></td><td></td><td class="s"> # on 5.8 and below, we need to call</td></tr>
1522<tr><td class="h"><a name="946"></a>946</td><td></td><td></td><td></td><td></td><td class="s"> # a method to get Perl to detect</td></tr>
1523<tr><td class="h"><a name="947"></a>947</td><td></td><td></td><td></td><td></td><td class="s"> # a cycle in the class hierarchy</td></tr>
1524<tr><td class="h"><a name="948"></a>948</td><td class="c3">200</td><td class="c0"><span title="Avg 4&micro;s">767&micro;s</span></td><td class="c3">200</td><td class="c3">200&micro;s</td><td class="s"> my $class = $self-&gt;name;<div class="calls"><div class="calls_out"> # spent 200&micro;s making 200 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 999ns/call</div></div></td></tr>
1525<tr><td class="h"><a name="949"></a>949</td><td class="c3">200</td><td class="c0"><span title="Avg 9&micro;s">1.79ms</span></td><td class="c3">200</td><td class="c3">266&micro;s</td><td class="s"> $class-&gt;isa($class);<div class="calls"><div class="calls_out"> # spent 266&micro;s making 200 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 1&micro;s/call</div></div></td></tr>
1526<tr><td class="h"><a name="950"></a>950</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1527<tr><td class="h"><a name="951"></a>951</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1528<tr><td class="h"><a name="952"></a>952</td><td></td><td></td><td></td><td></td><td class="s"> # we need to check the metaclass</td></tr>
1529<tr><td class="h"><a name="953"></a>953</td><td></td><td></td><td></td><td></td><td class="s"> # compatibility here so that we can</td></tr>
1530<tr><td class="h"><a name="954"></a>954</td><td></td><td></td><td></td><td></td><td class="s"> # be sure that the superclass is</td></tr>
1531<tr><td class="h"><a name="955"></a>955</td><td></td><td></td><td></td><td></td><td class="s"> # not potentially creating an issues</td></tr>
1532<tr><td class="h"><a name="956"></a>956</td><td></td><td></td><td></td><td></td><td class="s"> # we don't know about</td></tr>
1533<tr><td class="h"><a name="957"></a>957</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1534<tr><td class="h"><a name="958"></a>958</td><td class="c3">200</td><td class="c2"><span title="Avg 2&micro;s">401&micro;s</span></td><td class="c3">200</td><td class="c0">182ms</td><td class="s"> $self-&gt;_check_metaclass_compatibility();<div class="calls"><div class="calls_out"> # spent 182ms making 200 calls to <a href="Class-MOP-Class-pm-103-line.html#200">Class::MOP::Class::_check_metaclass_compatibility</a>, avg 909&micro;s/call</div></div></td></tr>
1535<tr><td class="h"><a name="959"></a>959</td><td class="c3">200</td><td class="c1"><span title="Avg 2&micro;s">480&micro;s</span></td><td class="c3">200</td><td class="c0">12.4ms</td><td class="s"> $self-&gt;_superclasses_updated();<div class="calls"><div class="calls_out"> # spent 12.4ms making 200 calls to <a href="Class-MOP-Class-pm-103-line.html#965">Class::MOP::Class::_superclasses_updated</a>, avg 62&micro;s/call</div></div></td></tr>
1536<tr><td class="h"><a name="960"></a>960</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1537<tr><td class="h"><a name="961"></a>961</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1538<tr><td class="h"><a name="962"></a>962</td><td class="c0">1299</td><td class="c0"><span title="Avg 3&micro;s">3.38ms</span></td><td></td><td></td><td class="s"> return @{$isa};</td></tr>
1539<tr><td class="h"><a name="963"></a>963</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1540<tr><td class="h"><a name="964"></a>964</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1541<tr><td class="h"><a name="965"></a>965</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 12.4ms (2.76+9.62) within Class::MOP::Class::_superclasses_updated which was called 200 times, avg 62&micro;s/call:
1542# 200 times (2.76ms+9.62ms) by Class::MOP::Class::superclasses at <a href="Class-MOP-Class-pm-103-line.html#959">line 959</a>, avg 62&micro;s/call</div></div>sub _superclasses_updated {</td></tr>
1543<tr><td class="h"><a name="966"></a>966</td><td class="c3">200</td><td class="c3"><span title="Avg 337ns">67&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1544<tr><td class="h"><a name="967"></a>967</td><td class="c3">200</td><td class="c2"><span title="Avg 2&micro;s">366&micro;s</span></td><td class="c3">200</td><td class="c3">472&micro;s</td><td class="s"> $self-&gt;update_meta_instance_dependencies();<div class="calls"><div class="calls_out"> # spent 472&micro;s making 200 calls to <a href="Class-MOP-Class-pm-103-line.html#1177">Class::MOP::Class::update_meta_instance_dependencies</a>, avg 2&micro;s/call</div></div></td></tr>
1545<tr><td class="h"><a name="968"></a>968</td><td></td><td></td><td></td><td></td><td class="s"> # keep strong references to all our parents, so they don't disappear if</td></tr>
1546<tr><td class="h"><a name="969"></a>969</td><td></td><td></td><td></td><td></td><td class="s"> # they are anon classes and don't have any direct instances</td></tr>
1547<tr><td class="h"><a name="970"></a>970</td><td class="c3">220</td><td class="c2"><span title="Avg 1&micro;s">329&micro;s</span></td><td class="c3">220</td><td class="c3">1.09ms</td><td class="s"> $self-&gt;_superclass_metas(<div class="calls"><div class="calls_out"> # spent 1.09ms making 220 calls to <a href="Class-MOP-pm-83-line.html#63">Class::MOP::class_of</a>, avg 5&micro;s/call</div></div></td></tr>
1548<tr><td class="h"><a name="971"></a>971</td><td class="c3">200</td><td class="c0"><span title="Avg 6&micro;s">1.21ms</span></td><td class="c1">400</td><td class="c3">668&micro;s</td><td class="s"> map { Class::MOP::class_of($_) } $self-&gt;superclasses<div class="calls"><div class="calls_out"> # spent 668&micro;s making 200 calls to <a href="Class-MOP-Class-pm-103-line.html#975">Class::MOP::Class::_superclass_metas</a>, avg 3&micro;s/call
1549 # spent 28&micro;s making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::superclasses</a>, avg 14&micro;s/call, recursion: max depth 1, sum of overlapping time 28&micro;s
1550 # spent 7.36ms making 198 calls to <a href="Moose-Meta-Class-pm-136-line.html#549">Moose::Meta::Class::superclasses</a>, avg 37&micro;s/call, recursion: max depth 3, sum of overlapping time 7.36ms</div></div></td></tr>
1551<tr><td class="h"><a name="972"></a>972</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1552<tr><td class="h"><a name="973"></a>973</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1553<tr><td class="h"><a name="974"></a>974</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1554<tr><td class="h"><a name="975"></a>975</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 668&micro;s within Class::MOP::Class::_superclass_metas which was called 200 times, avg 3&micro;s/call:
1555# 200 times (668&micro;s+0s) by Class::MOP::Class::_superclasses_updated at <a href="Class-MOP-Class-pm-103-line.html#971">line 971</a>, avg 3&micro;s/call</div></div>sub _superclass_metas {</td></tr>
1556<tr><td class="h"><a name="976"></a>976</td><td class="c3">200</td><td class="c3"><span title="Avg 341ns">68&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1557<tr><td class="h"><a name="977"></a>977</td><td class="c3">200</td><td class="c0"><span title="Avg 3&micro;s">692&micro;s</span></td><td></td><td></td><td class="s"> $self-&gt;{_superclass_metas} = [@_];</td></tr>
1558<tr><td class="h"><a name="978"></a>978</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1559<tr><td class="h"><a name="979"></a>979</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1560<tr><td class="h"><a name="980"></a>980</td><td></td><td></td><td></td><td></td><td class="s">sub subclasses {</td></tr>
1561<tr><td class="h"><a name="981"></a>981</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1562<tr><td class="h"><a name="982"></a>982</td><td></td><td></td><td></td><td></td><td class="s"> my $super_class = $self-&gt;name;</td></tr>
1563<tr><td class="h"><a name="983"></a>983</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1564<tr><td class="h"><a name="984"></a>984</td><td></td><td></td><td></td><td></td><td class="s"> return @{ $super_class-&gt;mro::get_isarev() };</td></tr>
1565<tr><td class="h"><a name="985"></a>985</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1566<tr><td class="h"><a name="986"></a>986</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1567<tr><td class="h"><a name="987"></a>987</td><td></td><td></td><td></td><td></td><td class="s">sub direct_subclasses {</td></tr>
1568<tr><td class="h"><a name="988"></a>988</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1569<tr><td class="h"><a name="989"></a>989</td><td></td><td></td><td></td><td></td><td class="s"> my $super_class = $self-&gt;name;</td></tr>
1570<tr><td class="h"><a name="990"></a>990</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1571<tr><td class="h"><a name="991"></a>991</td><td></td><td></td><td></td><td></td><td class="s"> return grep {</td></tr>
1572<tr><td class="h"><a name="992"></a>992</td><td></td><td></td><td></td><td></td><td class="s"> grep {</td></tr>
1573<tr><td class="h"><a name="993"></a>993</td><td></td><td></td><td></td><td></td><td class="s"> $_ eq $super_class</td></tr>
1574<tr><td class="h"><a name="994"></a>994</td><td></td><td></td><td></td><td></td><td class="s"> } Class::MOP::Class-&gt;initialize($_)-&gt;superclasses</td></tr>
1575<tr><td class="h"><a name="995"></a>995</td><td></td><td></td><td></td><td></td><td class="s"> } $self-&gt;subclasses;</td></tr>
1576<tr><td class="h"><a name="996"></a>996</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1577<tr><td class="h"><a name="997"></a>997</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1578<tr><td class="h"><a name="998"></a>998</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 25.2ms (16.5+8.64) within Class::MOP::Class::linearized_isa which was called 3201 times, avg 8&micro;s/call:
1579# 1680 times (8.72ms+4.56ms) by Class::MOP::Class::get_all_attributes at <a href="Class-MOP-Class-pm-103-line.html#928">line 928</a>, avg 8&micro;s/call
1580# 1290 times (6.63ms+3.55ms) by Class::MOP::Class::_method_lookup_order at <a href="Class-MOP-Class-pm-103-line.html#1037">line 1037</a>, avg 8&micro;s/call
1581# 152 times (687&micro;s+308&micro;s) by Class::MOP::Class::find_attribute_by_name at <a href="Class-MOP-Class-pm-103-line.html#916">line 916</a>, avg 7&micro;s/call
1582# 54 times (323&micro;s+160&micro;s) by Class::MOP::Class:::around at <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#60">line 60 of Class/MOP/Class/Immutable/Trait.pm</a>, avg 9&micro;s/call
1583# 25 times (160&micro;s+66&micro;s) by Catalyst::Component::__config_accessor or Catalyst::Component::__plugins_accessor or Catalyst::_context_class_accessor or Catalyst::_dispatcher_class_accessor or Catalyst::_engine_loader_accessor or Catalyst::_loading_psgi_file_accessor or Catalyst::_log_accessor or Catalyst::_request_class_accessor or Catalyst::_response_class_accessor or Catalyst::_setup_finished_accessor or Catalyst::_stats_class_accessor at <a href="Catalyst-ClassData-pm-586-line.html#32">line 32 of Catalyst/ClassData.pm</a>, avg 9&micro;s/call</div></div>sub linearized_isa {</td></tr>
1584<tr><td class="h"><a name="999"></a>999</td><td class="c0">3201</td><td class="c0"><span title="Avg 9&micro;s">27.9ms</span></td><td class="c0">6402</td><td class="c1">8.64ms</td><td class="s"> return @{ mro::get_linear_isa( (shift)-&gt;name ) };<div class="calls"><div class="calls_out"> # spent 6.79ms making 3201 calls to <a href="mro-pm-85-line.html#mro__get_linear_isa">mro::get_linear_isa</a>, avg 2&micro;s/call
1585 # spent 1.85ms making 3201 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 578ns/call</div></div></td></tr>
1586<tr><td class="h"><a name="1000"></a>1000</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1587<tr><td class="h"><a name="1001"></a>1001</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1588<tr><td class="h"><a name="1002"></a>1002</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 23.5ms (5.51+18.0) within Class::MOP::Class::class_precedence_list which was called 320 times, avg 74&micro;s/call:
1589# 137 times (2.17ms+8.11ms) by Moose::Meta::Class::does_role at <a href="Moose-Meta-Class-pm-136-line.html#237">line 237 of Moose/Meta/Class.pm</a>, avg 75&micro;s/call
1590# 93 times (2.20ms+11.0ms) by Moose::Meta::Class::excludes_role at <a href="Moose-Meta-Class-pm-136-line.html#257">line 257 of Moose/Meta/Class.pm</a>, avg 142&micro;s/call
1591# 60 times (642&micro;s+-642&micro;s) by Class::MOP::Class::class_precedence_list at <a href="Class-MOP-Class-pm-103-line.html#1028">line 1028</a>, avg 0s/call
1592# 30 times (490&micro;s+-490&micro;s) by Class::MOP::Class:::around at <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#53">line 53 of Class/MOP/Class/Immutable/Trait.pm</a>, avg 0s/call</div></div>sub class_precedence_list {</td></tr>
1593<tr><td class="h"><a name="1003"></a>1003</td><td class="c1">320</td><td class="c3"><span title="Avg 279ns">89&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1594<tr><td class="h"><a name="1004"></a>1004</td><td class="c1">320</td><td class="c0"><span title="Avg 3&micro;s">977&micro;s</span></td><td class="c2">320</td><td class="c3">236&micro;s</td><td class="s"> my $name = $self-&gt;name;<div class="calls"><div class="calls_out"> # spent 236&micro;s making 320 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 736ns/call</div></div></td></tr>
1595<tr><td class="h"><a name="1005"></a>1005</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1596<tr><td class="h"><a name="1006"></a>1006</td><td class="c1">320</td><td class="c0"><span title="Avg 3&micro;s">868&micro;s</span></td><td class="c2">320</td><td class="c3">260&micro;s</td><td class="s"> unless (Class::MOP::IS_RUNNING_ON_5_10()) {<div class="calls"><div class="calls_out"> # spent 260&micro;s making 320 calls to <a href="Class-MOP-pm-83-line.html#Class__MOP____ANON__">Class::MOP::__ANON__</a>, avg 812ns/call</div></div></td></tr>
1597<tr><td class="h"><a name="1007"></a>1007</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1598<tr><td class="h"><a name="1008"></a>1008</td><td></td><td></td><td></td><td></td><td class="s"> # We need to check for circular inheritance here</td></tr>
1599<tr><td class="h"><a name="1009"></a>1009</td><td></td><td></td><td></td><td></td><td class="s"> # if we are are not on 5.10, cause 5.8 detects it</td></tr>
1600<tr><td class="h"><a name="1010"></a>1010</td><td></td><td></td><td></td><td></td><td class="s"> # late. This will do nothing if all is well, and</td></tr>
1601<tr><td class="h"><a name="1011"></a>1011</td><td></td><td></td><td></td><td></td><td class="s"> # blow up otherwise. Yes, it's an ugly hack, better</td></tr>
1602<tr><td class="h"><a name="1012"></a>1012</td><td></td><td></td><td></td><td></td><td class="s"> # suggestions are welcome.</td></tr>
1603<tr><td class="h"><a name="1013"></a>1013</td><td></td><td></td><td></td><td></td><td class="s"> # - SL</td></tr>
1604<tr><td class="h"><a name="1014"></a>1014</td><td></td><td></td><td></td><td></td><td class="s"> ($name || return)-&gt;isa('This is a test for circular inheritance')</td></tr>
1605<tr><td class="h"><a name="1015"></a>1015</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1606<tr><td class="h"><a name="1016"></a>1016</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1607<tr><td class="h"><a name="1017"></a>1017</td><td></td><td></td><td></td><td></td><td class="s"> # if our mro is c3, we can</td></tr>
1608<tr><td class="h"><a name="1018"></a>1018</td><td></td><td></td><td></td><td></td><td class="s"> # just grab the linear_isa</td></tr>
1609<tr><td class="h"><a name="1019"></a>1019</td><td class="c1">320</td><td class="c0"><span title="Avg 4&micro;s">1.43ms</span></td><td class="c2">323</td><td class="c3">748&micro;s</td><td class="s"> if (mro::get_mro($name) eq 'c3') {<div class="calls"><div class="calls_out"> # spent 730&micro;s making 320 calls to <a href="mro-pm-85-line.html#mro__get_mro">mro::get_mro</a>, avg 2&micro;s/call
1610 # spent 18&micro;s making 3 calls to <a href="mro-pm-85-line.html#mro__get_linear_isa">mro::get_linear_isa</a>, avg 6&micro;s/call</div></div></td></tr>
1611<tr><td class="h"><a name="1020"></a>1020</td><td></td><td></td><td></td><td></td><td class="s"> return @{ mro::get_linear_isa($name) }</td></tr>
1612<tr><td class="h"><a name="1021"></a>1021</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1613<tr><td class="h"><a name="1022"></a>1022</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1614<tr><td class="h"><a name="1023"></a>1023</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1615<tr><td class="h"><a name="1024"></a>1024</td><td></td><td></td><td></td><td></td><td class="s"> # we can't grab the linear_isa for dfs</td></tr>
1616<tr><td class="h"><a name="1025"></a>1025</td><td></td><td></td><td></td><td></td><td class="s"> # since it has all the duplicates</td></tr>
1617<tr><td class="h"><a name="1026"></a>1026</td><td></td><td></td><td></td><td></td><td class="s"> # already removed.</td></tr>
1618<tr><td class="h"><a name="1027"></a>1027</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1619<tr><td class="h"><a name="1028"></a>1028</td><td class="c2">282</td><td class="c0"><span title="Avg 3&micro;s">968&micro;s</span></td><td class="c0">564</td><td class="c1">6.45ms</td><td class="s"> $name,<div class="calls"><div class="calls_out"> # spent 4.99ms making 206 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::class_precedence_list</a>, avg 24&micro;s/call, recursion: max depth 3, sum of overlapping time 1.36ms
1620 # spent 2.03ms making 282 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 7&micro;s/call
1621 # spent 807&micro;s making 16 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::class_precedence_list</a>, avg 50&micro;s/call, recursion: max depth 1, sum of overlapping time 14&micro;s
1622 # spent 3.00ms making 60 calls to <a href="Class-MOP-Class-pm-103-line.html#1002">Class::MOP::Class::class_precedence_list</a>, avg 50&micro;s/call, recursion: max depth 2, sum of overlapping time 3.00ms</div></div></td></tr>
1623<tr><td class="h"><a name="1029"></a>1029</td><td></td><td></td><td></td><td></td><td class="s"> map {</td></tr>
1624<tr><td class="h"><a name="1030"></a>1030</td><td class="c1">317</td><td class="c0"><span title="Avg 5&micro;s">1.60ms</span></td><td class="c2">317</td><td class="c0">10.9ms</td><td class="s"> Class::MOP::Class-&gt;initialize($_)-&gt;class_precedence_list()<div class="calls"><div class="calls_out"> # spent 11.3ms making 287 calls to <a href="Moose-Meta-Class-pm-136-line.html#549">Moose::Meta::Class::superclasses</a>, avg 39&micro;s/call, recursion: max depth 1, sum of overlapping time 1.25ms
1625 # spent 606&micro;s making 24 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Class::MOP::Class::superclasses</a>, avg 25&micro;s/call
1626 # spent 242&micro;s making 5 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::superclasses</a>, avg 48&micro;s/call
1627 # spent 13&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::superclasses</a></div></div></td></tr>
1628<tr><td class="h"><a name="1031"></a>1031</td><td></td><td></td><td></td><td></td><td class="s"> } $self-&gt;superclasses()</td></tr>
1629<tr><td class="h"><a name="1032"></a>1032</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1630<tr><td class="h"><a name="1033"></a>1033</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1631<tr><td class="h"><a name="1034"></a>1034</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1632<tr><td class="h"><a name="1035"></a>1035</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1633<tr><td class="h"><a name="1036"></a>1036</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 16.2ms (4.89+11.3) within Class::MOP::Class::_method_lookup_order which was called 1396 times, avg 12&micro;s/call:
1634# 671 times (2.45ms+5.34ms) by Class::MOP::Class::find_method_by_name at <a href="Class-MOP-Class-pm-103-line.html#1122">line 1122</a>, avg 12&micro;s/call
1635# 493 times (1.69ms+4.30ms) by Class::MOP::Class::find_next_method_by_name at <a href="Class-MOP-Class-pm-103-line.html#1168">line 1168</a>, avg 12&micro;s/call
1636# 218 times (695&micro;s+1.48ms) by Class::MOP::Class::find_all_methods_by_name at <a href="Class-MOP-Class-pm-103-line.html#1152">line 1152</a>, avg 10&micro;s/call
1637# 14 times (60&micro;s+158&micro;s) by Class::MOP::Class::get_all_methods at <a href="Class-MOP-Class-pm-103-line.html#1133">line 1133</a>, avg 16&micro;s/call</div></div>sub _method_lookup_order {</td></tr>
1638<tr><td class="h"><a name="1037"></a>1037</td><td class="c0">1396</td><td class="c0"><span title="Avg 3&micro;s">4.31ms</span></td><td class="c0">1396</td><td class="c0">11.3ms</td><td class="s"> return (shift-&gt;linearized_isa, 'UNIVERSAL');<div class="calls"><div class="calls_out"> # spent 10.2ms making 1290 calls to <a href="Class-MOP-Class-pm-103-line.html#998">Class::MOP::Class::linearized_isa</a>, avg 8&micro;s/call
1639 # spent 643&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::linearized_isa</a>, avg 12&micro;s/call
1640 # spent 453&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Class::Immutable::Moose::Meta::Class::__ANON__::SERIAL::5::linearized_isa</a>, avg 9&micro;s/call</div></div></td></tr>
1641<tr><td class="h"><a name="1038"></a>1038</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1642<tr><td class="h"><a name="1039"></a>1039</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1643<tr><td class="h"><a name="1040"></a>1040</td><td></td><td></td><td></td><td></td><td class="s">## Methods</td></tr>
1644<tr><td class="h"><a name="1041"></a>1041</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1645<tr><td class="h"><a name="1042"></a>1042</td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
1646<tr><td class="h"><a name="1043"></a>1043</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 62.0ms (4.46+57.5) within Class::MOP::Class::__ANON__[/Users/edenc/perl5/lib/perl5/darwin-multi-2level/Class/MOP/Class.pm:1072] which was called 202 times, avg 307&micro;s/call:
1647# 175 times (3.67ms+48.2ms) by Class::MOP::Class::add_around_method_modifier at <a href="Class-MOP-Class-pm-103-line.html#1098">line 1098</a>, avg 296&micro;s/call
1648# 21 times (681&micro;s+8.28ms) by Class::MOP::Class::add_before_method_modifier at <a href="Class-MOP-Class-pm-103-line.html#1078">line 1078</a>, avg 427&micro;s/call
1649# 6 times (110&micro;s+1.04ms) by Class::MOP::Class::add_after_method_modifier at <a href="Class-MOP-Class-pm-103-line.html#1088">line 1088</a>, avg 192&micro;s/call</div></div> my $fetch_and_prepare_method = sub {</td></tr>
1650<tr><td class="h"><a name="1044"></a>1044</td><td class="c3">202</td><td class="c3"><span title="Avg 610ns">123&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name) = @_;</td></tr>
1651<tr><td class="h"><a name="1045"></a>1045</td><td class="c3">202</td><td class="c0"><span title="Avg 4&micro;s">804&micro;s</span></td><td class="c3">202</td><td class="c3">172&micro;s</td><td class="s"> my $wrapped_metaclass = $self-&gt;wrapped_method_metaclass;<div class="calls"><div class="calls_out"> # spent 172&micro;s making 202 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Mixin__HasMethods__wrapped_method_metaclass">Class::MOP::Mixin::HasMethods::wrapped_method_metaclass</a>, avg 853ns/call</div></div></td></tr>
1652<tr><td class="h"><a name="1046"></a>1046</td><td></td><td></td><td></td><td></td><td class="s"> # fetch it locally</td></tr>
1653<tr><td class="h"><a name="1047"></a>1047</td><td class="c3">202</td><td class="c3"><span title="Avg 1&micro;s">270&micro;s</span></td><td class="c3">202</td><td class="c2">5.34ms</td><td class="s"> my $method = $self-&gt;get_method($method_name);<div class="calls"><div class="calls_out"> # spent 5.34ms making 202 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#113">Class::MOP::Mixin::HasMethods::get_method</a>, avg 26&micro;s/call</div></div></td></tr>
1654<tr><td class="h"><a name="1048"></a>1048</td><td></td><td></td><td></td><td></td><td class="s"> # if we dont have local ...</td></tr>
1655<tr><td class="h"><a name="1049"></a>1049</td><td class="c3">202</td><td class="c3"><span title="Avg 811ns">164&micro;s</span></td><td></td><td></td><td class="s"> unless ($method) {</td></tr>
1656<tr><td class="h"><a name="1050"></a>1050</td><td></td><td></td><td></td><td></td><td class="s"> # try to find the next method</td></tr>
1657<tr><td class="h"><a name="1051"></a>1051</td><td class="c3">155</td><td class="c3"><span title="Avg 2&micro;s">288&micro;s</span></td><td class="c3">155</td><td class="c0">19.0ms</td><td class="s"> $method = $self-&gt;find_next_method_by_name($method_name);<div class="calls"><div class="calls_out"> # spent 19.0ms making 155 calls to <a href="Class-MOP-Class-pm-103-line.html#1164">Class::MOP::Class::find_next_method_by_name</a>, avg 123&micro;s/call</div></div></td></tr>
1658<tr><td class="h"><a name="1052"></a>1052</td><td></td><td></td><td></td><td></td><td class="s"> # die if it does not exist</td></tr>
1659<tr><td class="h"><a name="1053"></a>1053</td><td class="c3">155</td><td class="c3"><span title="Avg 191ns">30&micro;s</span></td><td></td><td></td><td class="s"> (defined $method)</td></tr>
1660<tr><td class="h"><a name="1054"></a>1054</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;The method '$method_name' was not found in the inheritance hierarchy for &quot; . $self-&gt;name;</td></tr>
1661<tr><td class="h"><a name="1055"></a>1055</td><td></td><td></td><td></td><td></td><td class="s"> # and now make sure to wrap it</td></tr>
1662<tr><td class="h"><a name="1056"></a>1056</td><td></td><td></td><td></td><td></td><td class="s"> # even if it is already wrapped</td></tr>
1663<tr><td class="h"><a name="1057"></a>1057</td><td></td><td></td><td></td><td></td><td class="s"> # because we need a new sub ref</td></tr>
1664<tr><td class="h"><a name="1058"></a>1058</td><td class="c3">155</td><td class="c0"><span title="Avg 5&micro;s">812&micro;s</span></td><td class="c2">310</td><td class="c0">12.4ms</td><td class="s"> $method = $wrapped_metaclass-&gt;wrap($method,<div class="calls"><div class="calls_out"> # spent 10.3ms making 151 calls to <a href="Class-MOP-Method-Wrapped-pm-106-line.html#73">Class::MOP::Method::Wrapped::wrap</a>, avg 68&micro;s/call
1665 # spent 1.91ms making 4 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::6::wrap</a>, avg 479&micro;s/call
1666 # spent 134&micro;s making 155 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 867ns/call</div></div></td></tr>
1667<tr><td class="h"><a name="1059"></a>1059</td><td></td><td></td><td></td><td></td><td class="s"> package_name =&gt; $self-&gt;name,</td></tr>
1668<tr><td class="h"><a name="1060"></a>1060</td><td></td><td></td><td></td><td></td><td class="s"> name =&gt; $method_name,</td></tr>
1669<tr><td class="h"><a name="1061"></a>1061</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1670<tr><td class="h"><a name="1062"></a>1062</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1671<tr><td class="h"><a name="1063"></a>1063</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
1672<tr><td class="h"><a name="1064"></a>1064</td><td></td><td></td><td></td><td></td><td class="s"> # now make sure we wrap it properly</td></tr>
1673<tr><td class="h"><a name="1065"></a>1065</td><td class="c3">47</td><td class="c0"><span title="Avg 15&micro;s">706&micro;s</span></td><td class="c3">135</td><td class="c2">5.10ms</td><td class="s"> $method = $wrapped_metaclass-&gt;wrap($method,<div class="calls"><div class="calls_out"> # spent 3.79ms making 42 calls to <a href="Class-MOP-Method-Wrapped-pm-106-line.html#73">Class::MOP::Method::Wrapped::wrap</a>, avg 90&micro;s/call
1674 # spent 1.14ms making 2 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::6::wrap</a>, avg 568&micro;s/call
1675 # spent 141&micro;s making 47 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 3&micro;s/call
1676 # spent 37&micro;s making 44 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 845ns/call</div></div></td></tr>
1677<tr><td class="h"><a name="1066"></a>1066</td><td></td><td></td><td></td><td></td><td class="s"> package_name =&gt; $self-&gt;name,</td></tr>
1678<tr><td class="h"><a name="1067"></a>1067</td><td></td><td></td><td></td><td></td><td class="s"> name =&gt; $method_name,</td></tr>
1679<tr><td class="h"><a name="1068"></a>1068</td><td></td><td></td><td></td><td></td><td class="s"> ) unless $method-&gt;isa($wrapped_metaclass);</td></tr>
1680<tr><td class="h"><a name="1069"></a>1069</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1681<tr><td class="h"><a name="1070"></a>1070</td><td class="c3">202</td><td class="c2"><span title="Avg 2&micro;s">378&micro;s</span></td><td class="c3">202</td><td class="c0">15.5ms</td><td class="s"> $self-&gt;add_method($method_name =&gt; $method);<div class="calls"><div class="calls_out"> # spent 15.5ms making 202 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#54">Class::MOP::Mixin::HasMethods::add_method</a>, avg 77&micro;s/call</div></div></td></tr>
1682<tr><td class="h"><a name="1071"></a>1071</td><td class="c3">202</td><td class="c1"><span title="Avg 3&micro;s">559&micro;s</span></td><td></td><td></td><td class="s"> return $method;</td></tr>
1683<tr><td class="h"><a name="1072"></a>1072</td><td class="c3">1</td><td class="c3"><span title="Avg 3&micro;s">3&micro;s</span></td><td></td><td></td><td class="s"> };</td></tr>
1684<tr><td class="h"><a name="1073"></a>1073</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1685<tr><td class="h"><a name="1074"></a>1074</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 9.64ms (272&micro;s+9.37) within Class::MOP::Class::add_before_method_modifier which was called 21 times, avg 459&micro;s/call:
1686# 7 times (91&micro;s+2.87ms) by Moose::Meta::Role::Application::ToClass::apply_method_modifiers at <a href="Moose-Meta-Role-Application-ToClass-pm-286-line.html#231">line 231 of Moose/Meta/Role/Application/ToClass.pm</a>, avg 422&micro;s/call
1687# 5 times (93&micro;s+2.22ms) by Module::Runtime::require_module at <a href="Catalyst-Dispatcher-pm-1877-line.html#743">line 743 of Catalyst/Dispatcher.pm</a>, avg 462&micro;s/call
1688# 4 times (34&micro;s+808&micro;s) by Moose::Util::add_method_modifier at <a href="Moose-Util-pm-158-line.html#254">line 254 of Moose/Util.pm</a>, avg 210&micro;s/call
1689# 3 times (30&micro;s+2.84ms) by Class::MOP::Class:::around at <a href="MooseX-MethodAttributes-Role-Meta-Class-pm-611-line.html#78">line 78 of MooseX/MethodAttributes/Role/Meta/Class.pm</a>, avg 958&micro;s/call
1690# once (12&micro;s+483&micro;s) by Moose::Util::add_method_modifier at <a href="Moose-Util-pm-158-line.html#267">line 267 of Moose/Util.pm</a>
1691# once (13&micro;s+151&micro;s) by Catalyst::BEGIN@11 at <a href="Catalyst-Log-pm-469-line.html#128">line 128 of Catalyst/Log.pm</a></div></div> sub add_before_method_modifier {</td></tr>
1692<tr><td class="h"><a name="1075"></a>1075</td><td class="c3">21</td><td class="c3"><span title="Avg 962ns">20&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name, $method_modifier) = @_;</td></tr>
1693<tr><td class="h"><a name="1076"></a>1076</td><td class="c3">21</td><td class="c3"><span title="Avg 452ns">9&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1694<tr><td class="h"><a name="1077"></a>1077</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass in a method name&quot;;</td></tr>
1695<tr><td class="h"><a name="1078"></a>1078</td><td class="c3">21</td><td class="c3"><span title="Avg 2&micro;s">42&micro;s</span></td><td class="c3">21</td><td class="c0">8.96ms</td><td class="s"> my $method = $fetch_and_prepare_method-&gt;($self, $method_name);<div class="calls"><div class="calls_out"> # spent 8.96ms making 21 calls to <a href="Class-MOP-Class-pm-103-line.html#1043">Class::MOP::Class::__ANON__[Class/MOP/Class.pm:1072]</a>, avg 427&micro;s/call</div></div></td></tr>
1696<tr><td class="h"><a name="1079"></a>1079</td><td class="c3">21</td><td class="c3"><span title="Avg 11&micro;s">235&micro;s</span></td><td class="c3">42</td><td class="c3">411&micro;s</td><td class="s"> $method-&gt;add_before_modifier(<div class="calls"><div class="calls_out"> # spent 343&micro;s making 21 calls to <a href="Class-MOP-Method-Wrapped-pm-106-line.html#127">Class::MOP::Method::Wrapped::add_before_modifier</a>, avg 16&micro;s/call
1697 # spent 68&micro;s making 21 calls to <a href="Sub-Name-pm-99-line.html#Sub__Name__subname">Sub::Name::subname</a>, avg 3&micro;s/call</div></div></td></tr>
1698<tr><td class="h"><a name="1080"></a>1080</td><td></td><td></td><td></td><td></td><td class="s"> subname(':before' =&gt; $method_modifier)</td></tr>
1699<tr><td class="h"><a name="1081"></a>1081</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1700<tr><td class="h"><a name="1082"></a>1082</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1701<tr><td class="h"><a name="1083"></a>1083</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1702<tr><td class="h"><a name="1084"></a>1084</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.33ms (73&micro;s+1.25) within Class::MOP::Class::add_after_method_modifier which was called 6 times, avg 221&micro;s/call:
1703# 6 times (73&micro;s+1.25ms) by Moose::Meta::Role::Application::ToClass::apply_method_modifiers at <a href="Moose-Meta-Role-Application-ToClass-pm-286-line.html#231">line 231 of Moose/Meta/Role/Application/ToClass.pm</a>, avg 221&micro;s/call</div></div> sub add_after_method_modifier {</td></tr>
1704<tr><td class="h"><a name="1085"></a>1085</td><td class="c3">6</td><td class="c3"><span title="Avg 933ns">6&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name, $method_modifier) = @_;</td></tr>
1705<tr><td class="h"><a name="1086"></a>1086</td><td class="c3">6</td><td class="c3"><span title="Avg 567ns">3&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1706<tr><td class="h"><a name="1087"></a>1087</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass in a method name&quot;;</td></tr>
1707<tr><td class="h"><a name="1088"></a>1088</td><td class="c3">6</td><td class="c3"><span title="Avg 2&micro;s">11&micro;s</span></td><td class="c3">6</td><td class="c3">1.15ms</td><td class="s"> my $method = $fetch_and_prepare_method-&gt;($self, $method_name);<div class="calls"><div class="calls_out"> # spent 1.15ms making 6 calls to <a href="Class-MOP-Class-pm-103-line.html#1043">Class::MOP::Class::__ANON__[Class/MOP/Class.pm:1072]</a>, avg 192&micro;s/call</div></div></td></tr>
1708<tr><td class="h"><a name="1089"></a>1089</td><td class="c3">6</td><td class="c3"><span title="Avg 9&micro;s">57&micro;s</span></td><td class="c3">12</td><td class="c3">100&micro;s</td><td class="s"> $method-&gt;add_after_modifier(<div class="calls"><div class="calls_out"> # spent 84&micro;s making 6 calls to <a href="Class-MOP-Method-Wrapped-pm-106-line.html#139">Class::MOP::Method::Wrapped::add_after_modifier</a>, avg 14&micro;s/call
1709 # spent 16&micro;s making 6 calls to <a href="Sub-Name-pm-99-line.html#Sub__Name__subname">Sub::Name::subname</a>, avg 3&micro;s/call</div></div></td></tr>
1710<tr><td class="h"><a name="1090"></a>1090</td><td></td><td></td><td></td><td></td><td class="s"> subname(':after' =&gt; $method_modifier)</td></tr>
1711<tr><td class="h"><a name="1091"></a>1091</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1712<tr><td class="h"><a name="1092"></a>1092</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1713<tr><td class="h"><a name="1093"></a>1093</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1714<tr><td class="h"><a name="1094"></a>1094</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 57.8ms (1.73+56.1) within Class::MOP::Class::add_around_method_modifier which was called 175 times, avg 330&micro;s/call:
1715# 86 times (732&micro;s+27.4ms) by Class::MOP::MiniTrait::apply at <a href="Class-MOP-MiniTrait-pm-118-line.html#25">line 25 of Class/MOP/MiniTrait.pm</a>, avg 327&micro;s/call
1716# 60 times (678&micro;s+19.1ms) by Moose::Meta::Role::Application::ToClass::apply_method_modifiers at <a href="Moose-Meta-Role-Application-ToClass-pm-286-line.html#231">line 231 of Moose/Meta/Role/Application/ToClass.pm</a>, avg 329&micro;s/call
1717# 26 times (283&micro;s+7.43ms) by Moose::Util::add_method_modifier at <a href="Moose-Util-pm-158-line.html#267">line 267 of Moose/Util.pm</a>, avg 297&micro;s/call
1718# 3 times (33&micro;s+2.15ms) by Class::MOP::Class:::around at <a href="MooseX-MethodAttributes-Role-Meta-Class-pm-611-line.html#78">line 78 of MooseX/MethodAttributes/Role/Meta/Class.pm</a>, avg 729&micro;s/call</div></div> sub add_around_method_modifier {</td></tr>
1719<tr><td class="h"><a name="1095"></a>1095</td><td class="c3">175</td><td class="c3"><span title="Avg 858ns">150&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name, $method_modifier) = @_;</td></tr>
1720<tr><td class="h"><a name="1096"></a>1096</td><td class="c3">175</td><td class="c3"><span title="Avg 377ns">66&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1721<tr><td class="h"><a name="1097"></a>1097</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must pass in a method name&quot;;</td></tr>
1722<tr><td class="h"><a name="1098"></a>1098</td><td class="c3">175</td><td class="c3"><span title="Avg 2&micro;s">295&micro;s</span></td><td class="c3">175</td><td class="c0">51.9ms</td><td class="s"> my $method = $fetch_and_prepare_method-&gt;($self, $method_name);<div class="calls"><div class="calls_out"> # spent 51.9ms making 175 calls to <a href="Class-MOP-Class-pm-103-line.html#1043">Class::MOP::Class::__ANON__[Class/MOP/Class.pm:1072]</a>, avg 296&micro;s/call</div></div></td></tr>
1723<tr><td class="h"><a name="1099"></a>1099</td><td class="c3">175</td><td class="c0"><span title="Avg 8&micro;s">1.48ms</span></td><td class="c1">350</td><td class="c3">4.24ms</td><td class="s"> $method-&gt;add_around_modifier(<div class="calls"><div class="calls_out"> # spent 3.77ms making 175 calls to <a href="Class-MOP-Method-Wrapped-pm-106-line.html#166">Class::MOP::Method::Wrapped::add_around_modifier</a>, avg 22&micro;s/call
1724 # spent 464&micro;s making 175 calls to <a href="Sub-Name-pm-99-line.html#Sub__Name__subname">Sub::Name::subname</a>, avg 3&micro;s/call</div></div></td></tr>
1725<tr><td class="h"><a name="1100"></a>1100</td><td></td><td></td><td></td><td></td><td class="s"> subname(':around' =&gt; $method_modifier)</td></tr>
1726<tr><td class="h"><a name="1101"></a>1101</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1727<tr><td class="h"><a name="1102"></a>1102</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1728<tr><td class="h"><a name="1103"></a>1103</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1729<tr><td class="h"><a name="1104"></a>1104</td><td></td><td></td><td></td><td></td><td class="s"> # NOTE:</td></tr>
1730<tr><td class="h"><a name="1105"></a>1105</td><td></td><td></td><td></td><td></td><td class="s"> # the methods above used to be named like this:</td></tr>
1731<tr><td class="h"><a name="1106"></a>1106</td><td></td><td></td><td></td><td></td><td class="s"> # ${pkg}::${method}:(before|after|around)</td></tr>
1732<tr><td class="h"><a name="1107"></a>1107</td><td></td><td></td><td></td><td></td><td class="s"> # but this proved problematic when using one modifier</td></tr>
1733<tr><td class="h"><a name="1108"></a>1108</td><td></td><td></td><td></td><td></td><td class="s"> # to wrap multiple methods (something which is likely</td></tr>
1734<tr><td class="h"><a name="1109"></a>1109</td><td></td><td></td><td></td><td></td><td class="s"> # to happen pretty regularly IMO). So instead of naming</td></tr>
1735<tr><td class="h"><a name="1110"></a>1110</td><td></td><td></td><td></td><td></td><td class="s"> # it like this, I have chosen to just name them purely</td></tr>
1736<tr><td class="h"><a name="1111"></a>1111</td><td></td><td></td><td></td><td></td><td class="s"> # with their modifier names, like so:</td></tr>
1737<tr><td class="h"><a name="1112"></a>1112</td><td></td><td></td><td></td><td></td><td class="s"> # :(before|after|around)</td></tr>
1738<tr><td class="h"><a name="1113"></a>1113</td><td></td><td></td><td></td><td></td><td class="s"> # The fact is that in a stack trace, it will be fairly</td></tr>
1739<tr><td class="h"><a name="1114"></a>1114</td><td></td><td></td><td></td><td></td><td class="s"> # evident from the context what method they are attached</td></tr>
1740<tr><td class="h"><a name="1115"></a>1115</td><td></td><td></td><td></td><td></td><td class="s"> # to, and so don't need the fully qualified name.</td></tr>
1741<tr><td class="h"><a name="1116"></a>1116</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1742<tr><td class="h"><a name="1117"></a>1117</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1743<tr><td class="h"><a name="1118"></a>1118</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 78.1ms (12.3+65.8) within Class::MOP::Class::find_method_by_name which was called 671 times, avg 116&micro;s/call:
1744# 189 times (3.44ms+14.0ms) by Class::MOP::Mixin::HasMethods::_add_meta_method at <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#28">line 28 of Class/MOP/Mixin/HasMethods.pm</a>, avg 92&micro;s/call
1745# 111 times (2.05ms+9.04ms) by Moose::Meta::Method::Destructor::is_needed at <a href="Moose-Meta-Method-Destructor-pm-152-line.html#65">line 65 of Moose/Meta/Method/Destructor.pm</a>, avg 100&micro;s/call
1746# 108 times (3.11ms+20.0ms) by Class::MOP::MiniTrait::apply at <a href="Class-MOP-MiniTrait-pm-118-line.html#25">line 25 of Class/MOP/MiniTrait.pm</a>, avg 214&micro;s/call
1747# 108 times (1.13ms+11.5ms) by Moose::Meta::Role::Application::ToClass::check_required_methods at <a href="Moose-Meta-Role-Application-ToClass-pm-286-line.html#69">line 69 of Moose/Meta/Role/Application/ToClass.pm</a>, avg 117&micro;s/call
1748# 103 times (1.98ms+8.53ms) by Moose::Meta::Class::_inline_BUILDARGS at <a href="Moose-Meta-Class-pm-136-line.html#325">line 325 of Moose/Meta/Class.pm</a>, avg 102&micro;s/call
1749# 45 times (486&micro;s+2.22ms) by MooseX::MethodAttributes::Role::Meta::Class::get_nearest_methods_with_attributes at <a href="MooseX-MethodAttributes-Role-Meta-Class-pm-611-line.html#63">line 63 of MooseX/MethodAttributes/Role/Meta/Class.pm</a>, avg 60&micro;s/call
1750# 7 times (107&micro;s+492&micro;s) by Moose::BEGIN@47 at <a href="Moose-Meta-Attribute-Native-pm-292-line.html#18">line 18 of Moose/Meta/Attribute/Native.pm</a>, avg 86&micro;s/call</div></div>sub find_method_by_name {</td></tr>
1751<tr><td class="h"><a name="1119"></a>1119</td><td class="c0">671</td><td class="c1"><span title="Avg 632ns">424&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name) = @_;</td></tr>
1752<tr><td class="h"><a name="1120"></a>1120</td><td class="c0">671</td><td class="c3"><span title="Avg 390ns">262&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1753<tr><td class="h"><a name="1121"></a>1121</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must define a method name to find&quot;;</td></tr>
1754<tr><td class="h"><a name="1122"></a>1122</td><td class="c0">671</td><td class="c0"><span title="Avg 2&micro;s">1.40ms</span></td><td class="c0">671</td><td class="c1">7.78ms</td><td class="s"> foreach my $class ($self-&gt;_method_lookup_order) {<div class="calls"><div class="calls_out"> # spent 7.78ms making 671 calls to <a href="Class-MOP-Class-pm-103-line.html#1036">Class::MOP::Class::_method_lookup_order</a>, avg 12&micro;s/call</div></div></td></tr>
1755<tr><td class="h"><a name="1123"></a>1123</td><td class="c0">1652</td><td class="c0"><span title="Avg 3&micro;s">4.45ms</span></td><td class="c0">3304</td><td class="c0">58.0ms</td><td class="s"> my $method = Class::MOP::Class-&gt;initialize($class)-&gt;get_method($method_name);<div class="calls"><div class="calls_out"> # spent 47.5ms making 1652 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#113">Class::MOP::Mixin::HasMethods::get_method</a>, avg 29&micro;s/call
1756 # spent 10.5ms making 1652 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 6&micro;s/call</div></div></td></tr>
1757<tr><td class="h"><a name="1124"></a>1124</td><td class="c0">1652</td><td class="c0"><span title="Avg 1&micro;s">1.84ms</span></td><td></td><td></td><td class="s"> return $method if defined $method;</td></tr>
1758<tr><td class="h"><a name="1125"></a>1125</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1759<tr><td class="h"><a name="1126"></a>1126</td><td class="c3">226</td><td class="c1"><span title="Avg 2&micro;s">536&micro;s</span></td><td></td><td></td><td class="s"> return;</td></tr>
1760<tr><td class="h"><a name="1127"></a>1127</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1761<tr><td class="h"><a name="1128"></a>1128</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1762<tr><td class="h"><a name="1129"></a>1129</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 8.01ms (971&micro;s+7.04) within Class::MOP::Class::get_all_methods which was called 14 times, avg 572&micro;s/call:
1763# 10 times (642&micro;s+3.80ms) by Class::MOP::MiniTrait::apply at <a href="Class-MOP-MiniTrait-pm-118-line.html#22">line 22 of Class/MOP/MiniTrait.pm</a>, avg 444&micro;s/call
1764# 2 times (155&micro;s+1.89ms) by Moose::Meta::Attribute::_get_delegate_method_list at <a href="Moose-Meta-Attribute-pm-164-line.html#1189">line 1189 of Moose/Meta/Attribute.pm</a>, avg 1.02ms/call
1765# 2 times (174&micro;s+1.35ms) by Class::MOP::Class:::around at <a href="Class-MOP-Class-Immutable-Trait-pm-134-line.html#66">line 66 of Class/MOP/Class/Immutable/Trait.pm</a>, avg 761&micro;s/call</div></div>sub get_all_methods {</td></tr>
1766<tr><td class="h"><a name="1130"></a>1130</td><td class="c3">14</td><td class="c3"><span title="Avg 407ns">6&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1767<tr><td class="h"><a name="1131"></a>1131</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1768<tr><td class="h"><a name="1132"></a>1132</td><td class="c3">14</td><td class="c3"><span title="Avg 229ns">3&micro;s</span></td><td></td><td></td><td class="s"> my %methods;</td></tr>
1769<tr><td class="h"><a name="1133"></a>1133</td><td class="c3">14</td><td class="c3"><span title="Avg 3&micro;s">46&micro;s</span></td><td class="c3">14</td><td class="c3">218&micro;s</td><td class="s"> for my $class ( reverse $self-&gt;_method_lookup_order ) {<div class="calls"><div class="calls_out"> # spent 218&micro;s making 14 calls to <a href="Class-MOP-Class-pm-103-line.html#1036">Class::MOP::Class::_method_lookup_order</a>, avg 16&micro;s/call</div></div></td></tr>
1770<tr><td class="h"><a name="1134"></a>1134</td><td class="c3">35</td><td class="c3"><span title="Avg 1&micro;s">52&micro;s</span></td><td class="c3">35</td><td class="c3">207&micro;s</td><td class="s"> my $meta = Class::MOP::Class-&gt;initialize($class);<div class="calls"><div class="calls_out"> # spent 207&micro;s making 35 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 6&micro;s/call</div></div></td></tr>
1771<tr><td class="h"><a name="1135"></a>1135</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1772<tr><td class="h"><a name="1136"></a>1136</td><td class="c3">35</td><td class="c0"><span title="Avg 24&micro;s">837&micro;s</span></td><td class="c3">251</td><td class="c1">6.62ms</td><td class="s"> $methods{ $_-&gt;name } = $_ for $meta-&gt;_get_local_methods;<div class="calls"><div class="calls_out"> # spent 6.46ms making 35 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#169">Class::MOP::Mixin::HasMethods::_get_local_methods</a>, avg 185&micro;s/call
1773 # spent 153&micro;s making 216 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Method__name">Class::MOP::Method::name</a>, avg 709ns/call</div></div></td></tr>
1774<tr><td class="h"><a name="1137"></a>1137</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1775<tr><td class="h"><a name="1138"></a>1138</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1776<tr><td class="h"><a name="1139"></a>1139</td><td class="c3">14</td><td class="c3"><span title="Avg 6&micro;s">78&micro;s</span></td><td></td><td></td><td class="s"> return values %methods;</td></tr>
1777<tr><td class="h"><a name="1140"></a>1140</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1778<tr><td class="h"><a name="1141"></a>1141</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1779<tr><td class="h"><a name="1142"></a>1142</td><td></td><td></td><td></td><td></td><td class="s">sub get_all_method_names {</td></tr>
1780<tr><td class="h"><a name="1143"></a>1143</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1781<tr><td class="h"><a name="1144"></a>1144</td><td></td><td></td><td></td><td></td><td class="s"> map { $_-&gt;name } $self-&gt;get_all_methods;</td></tr>
1782<tr><td class="h"><a name="1145"></a>1145</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1783<tr><td class="h"><a name="1146"></a>1146</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1784<tr><td class="h"><a name="1147"></a>1147</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 35.1ms (5.90+29.2) within Class::MOP::Class::find_all_methods_by_name which was called 218 times, avg 161&micro;s/call:
1785# 103 times (2.96ms+14.9ms) by Moose::Meta::Class::_inline_BUILDALL at <a href="Moose-Meta-Class-pm-136-line.html#481">line 481 of Moose/Meta/Class.pm</a>, avg 174&micro;s/call
1786# 102 times (2.41ms+11.2ms) by Moose::Meta::Method::Destructor::_generate_DEMOLISHALL at <a href="Moose-Meta-Method-Destructor-pm-152-line.html#123">line 123 of Moose/Meta/Method/Destructor.pm</a>, avg 133&micro;s/call
1787# 13 times (529&micro;s+3.04ms) by Moose::Object::BUILDALL at <a href="Moose-Object-pm-266-line.html#58">line 58 of Moose/Object.pm</a>, avg 274&micro;s/call</div></div>sub find_all_methods_by_name {</td></tr>
1788<tr><td class="h"><a name="1148"></a>1148</td><td class="c3">218</td><td class="c3"><span title="Avg 688ns">150&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name) = @_;</td></tr>
1789<tr><td class="h"><a name="1149"></a>1149</td><td class="c3">218</td><td class="c3"><span title="Avg 378ns">82&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1790<tr><td class="h"><a name="1150"></a>1150</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must define a method name to find&quot;;</td></tr>
1791<tr><td class="h"><a name="1151"></a>1151</td><td class="c3">218</td><td class="c3"><span title="Avg 147ns">32&micro;s</span></td><td></td><td></td><td class="s"> my @methods;</td></tr>
1792<tr><td class="h"><a name="1152"></a>1152</td><td class="c3">218</td><td class="c1"><span title="Avg 2&micro;s">513&micro;s</span></td><td class="c3">218</td><td class="c3">2.17ms</td><td class="s"> foreach my $class ($self-&gt;_method_lookup_order) {<div class="calls"><div class="calls_out"> # spent 2.17ms making 218 calls to <a href="Class-MOP-Class-pm-103-line.html#1036">Class::MOP::Class::_method_lookup_order</a>, avg 10&micro;s/call</div></div></td></tr>
1793<tr><td class="h"><a name="1153"></a>1153</td><td></td><td></td><td></td><td></td><td class="s"> # fetch the meta-class ...</td></tr>
1794<tr><td class="h"><a name="1154"></a>1154</td><td class="c0">764</td><td class="c0"><span title="Avg 1&micro;s">1.14ms</span></td><td class="c0">764</td><td class="c2">4.63ms</td><td class="s"> my $meta = Class::MOP::Class-&gt;initialize($class);<div class="calls"><div class="calls_out"> # spent 4.63ms making 764 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 6&micro;s/call</div></div></td></tr>
1795<tr><td class="h"><a name="1155"></a>1155</td><td class="c0">764</td><td class="c0"><span title="Avg 2&micro;s">1.71ms</span></td><td class="c0">825</td><td class="c0">22.4ms</td><td class="s"> push @methods =&gt; {<div class="calls"><div class="calls_out"> # spent 19.3ms making 764 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#101">Class::MOP::Mixin::HasMethods::has_method</a>, avg 25&micro;s/call
1796 # spent 3.08ms making 61 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#113">Class::MOP::Mixin::HasMethods::get_method</a>, avg 50&micro;s/call</div></div></td></tr>
1797<tr><td class="h"><a name="1156"></a>1156</td><td></td><td></td><td></td><td></td><td class="s"> name =&gt; $method_name,</td></tr>
1798<tr><td class="h"><a name="1157"></a>1157</td><td></td><td></td><td></td><td></td><td class="s"> class =&gt; $class,</td></tr>
1799<tr><td class="h"><a name="1158"></a>1158</td><td></td><td></td><td></td><td></td><td class="s"> code =&gt; $meta-&gt;get_method($method_name)</td></tr>
1800<tr><td class="h"><a name="1159"></a>1159</td><td></td><td></td><td></td><td></td><td class="s"> } if $meta-&gt;has_method($method_name);</td></tr>
1801<tr><td class="h"><a name="1160"></a>1160</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1802<tr><td class="h"><a name="1161"></a>1161</td><td class="c3">218</td><td class="c0"><span title="Avg 3&micro;s">748&micro;s</span></td><td></td><td></td><td class="s"> return @methods;</td></tr>
1803<tr><td class="h"><a name="1162"></a>1162</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1804<tr><td class="h"><a name="1163"></a>1163</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1805<tr><td class="h"><a name="1164"></a>1164</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 38.7ms (7.63+31.1) within Class::MOP::Class::find_next_method_by_name which was called 493 times, avg 79&micro;s/call:
1806# 234 times (3.32ms+10.0ms) by Class::MOP::Method::Inlined::can_be_inlined at <a href="Class-MOP-Method-Inlined-pm-116-line.html#40">line 40 of Class/MOP/Method/Inlined.pm</a>, avg 57&micro;s/call
1807# 155 times (2.98ms+16.0ms) by Class::MOP::Class::__ANON__[/Users/edenc/perl5/lib/perl5/darwin-multi-2level/Class/MOP/Class.pm:1072] at <a href="Class-MOP-Class-pm-103-line.html#1051">line 1051</a>, avg 123&micro;s/call
1808# 58 times (614&micro;s+2.08ms) by Class::MOP::Method::Inlined::_uninlined_body at <a href="Class-MOP-Method-Inlined-pm-116-line.html#20">line 20 of Class/MOP/Method/Inlined.pm</a>, avg 46&micro;s/call
1809# 46 times (710&micro;s+2.94ms) by Moose::Meta::Method::Overridden::new at <a href="Moose-Meta-Method-Overridden-pm-137-line.html#25">line 25 of Moose/Meta/Method/Overridden.pm</a>, avg 79&micro;s/call</div></div>sub find_next_method_by_name {</td></tr>
1810<tr><td class="h"><a name="1165"></a>1165</td><td class="c0">493</td><td class="c2"><span title="Avg 694ns">342&micro;s</span></td><td></td><td></td><td class="s"> my ($self, $method_name) = @_;</td></tr>
1811<tr><td class="h"><a name="1166"></a>1166</td><td class="c0">493</td><td class="c3"><span title="Avg 409ns">202&micro;s</span></td><td></td><td></td><td class="s"> (defined $method_name &amp;&amp; length $method_name)</td></tr>
1812<tr><td class="h"><a name="1167"></a>1167</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;You must define a method name to find&quot;;</td></tr>
1813<tr><td class="h"><a name="1168"></a>1168</td><td class="c0">493</td><td class="c0"><span title="Avg 2&micro;s">1.22ms</span></td><td class="c1">493</td><td class="c1">5.99ms</td><td class="s"> my @cpl = ($self-&gt;_method_lookup_order);<div class="calls"><div class="calls_out"> # spent 5.99ms making 493 calls to <a href="Class-MOP-Class-pm-103-line.html#1036">Class::MOP::Class::_method_lookup_order</a>, avg 12&micro;s/call</div></div></td></tr>
1814<tr><td class="h"><a name="1169"></a>1169</td><td class="c0">493</td><td class="c3"><span title="Avg 343ns">169&micro;s</span></td><td></td><td></td><td class="s"> shift @cpl; # discard ourselves</td></tr>
1815<tr><td class="h"><a name="1170"></a>1170</td><td class="c0">493</td><td class="c3"><span title="Avg 613ns">302&micro;s</span></td><td></td><td></td><td class="s"> foreach my $class (@cpl) {</td></tr>
1816<tr><td class="h"><a name="1171"></a>1171</td><td class="c0">717</td><td class="c0"><span title="Avg 3&micro;s">2.19ms</span></td><td class="c0">1434</td><td class="c0">25.1ms</td><td class="s"> my $method = Class::MOP::Class-&gt;initialize($class)-&gt;get_method($method_name);<div class="calls"><div class="calls_out"> # spent 20.2ms making 717 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#113">Class::MOP::Mixin::HasMethods::get_method</a>, avg 28&micro;s/call
1817 # spent 4.93ms making 717 calls to <a href="Class-MOP-Class-pm-103-line.html#32">Class::MOP::Class::initialize</a>, avg 7&micro;s/call</div></div></td></tr>
1818<tr><td class="h"><a name="1172"></a>1172</td><td class="c0">717</td><td class="c0"><span title="Avg 2&micro;s">1.68ms</span></td><td></td><td></td><td class="s"> return $method if defined $method;</td></tr>
1819<tr><td class="h"><a name="1173"></a>1173</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1820<tr><td class="h"><a name="1174"></a>1174</td><td class="c3">4</td><td class="c3"><span title="Avg 3&micro;s">12&micro;s</span></td><td></td><td></td><td class="s"> return;</td></tr>
1821<tr><td class="h"><a name="1175"></a>1175</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1822<tr><td class="h"><a name="1176"></a>1176</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1823<tr><td class="h"><a name="1177"></a>1177</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 472&micro;s within Class::MOP::Class::update_meta_instance_dependencies which was called 200 times, avg 2&micro;s/call:
1824# 200 times (472&micro;s+0s) by Class::MOP::Class::_superclasses_updated at <a href="Class-MOP-Class-pm-103-line.html#967">line 967</a>, avg 2&micro;s/call</div></div>sub update_meta_instance_dependencies {</td></tr>
1825<tr><td class="h"><a name="1178"></a>1178</td><td class="c3">200</td><td class="c3"><span title="Avg 313ns">63&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1826<tr><td class="h"><a name="1179"></a>1179</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1827<tr><td class="h"><a name="1180"></a>1180</td><td class="c3">200</td><td class="c1"><span title="Avg 3&micro;s">544&micro;s</span></td><td></td><td></td><td class="s"> if ( $self-&gt;{meta_instance_dependencies} ) {</td></tr>
1828<tr><td class="h"><a name="1181"></a>1181</td><td></td><td></td><td></td><td></td><td class="s"> return $self-&gt;add_meta_instance_dependencies;</td></tr>
1829<tr><td class="h"><a name="1182"></a>1182</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1830<tr><td class="h"><a name="1183"></a>1183</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1831<tr><td class="h"><a name="1184"></a>1184</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1832<tr><td class="h"><a name="1185"></a>1185</td><td></td><td></td><td></td><td></td><td class="s">sub add_meta_instance_dependencies {</td></tr>
1833<tr><td class="h"><a name="1186"></a>1186</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1834<tr><td class="h"><a name="1187"></a>1187</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1835<tr><td class="h"><a name="1188"></a>1188</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;remove_meta_instance_dependencies;</td></tr>
1836<tr><td class="h"><a name="1189"></a>1189</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1837<tr><td class="h"><a name="1190"></a>1190</td><td></td><td></td><td></td><td></td><td class="s"> my @attrs = $self-&gt;get_all_attributes();</td></tr>
1838<tr><td class="h"><a name="1191"></a>1191</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1839<tr><td class="h"><a name="1192"></a>1192</td><td></td><td></td><td></td><td></td><td class="s"> my %seen;</td></tr>
1840<tr><td class="h"><a name="1193"></a>1193</td><td></td><td></td><td></td><td></td><td class="s"> my @classes = grep { not $seen{ $_-&gt;name }++ }</td></tr>
1841<tr><td class="h"><a name="1194"></a>1194</td><td></td><td></td><td></td><td></td><td class="s"> map { $_-&gt;associated_class } @attrs;</td></tr>
1842<tr><td class="h"><a name="1195"></a>1195</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1843<tr><td class="h"><a name="1196"></a>1196</td><td></td><td></td><td></td><td></td><td class="s"> foreach my $class (@classes) {</td></tr>
1844<tr><td class="h"><a name="1197"></a>1197</td><td></td><td></td><td></td><td></td><td class="s"> $class-&gt;add_dependent_meta_instance($self);</td></tr>
1845<tr><td class="h"><a name="1198"></a>1198</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1846<tr><td class="h"><a name="1199"></a>1199</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1847<tr><td class="h"><a name="1200"></a>1200</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;{meta_instance_dependencies} = \@classes;</td></tr>
1848<tr><td class="h"><a name="1201"></a>1201</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1849<tr><td class="h"><a name="1202"></a>1202</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1850<tr><td class="h"><a name="1203"></a>1203</td><td></td><td></td><td></td><td></td><td class="s">sub remove_meta_instance_dependencies {</td></tr>
1851<tr><td class="h"><a name="1204"></a>1204</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1852<tr><td class="h"><a name="1205"></a>1205</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1853<tr><td class="h"><a name="1206"></a>1206</td><td></td><td></td><td></td><td></td><td class="s"> if ( my $classes = delete $self-&gt;{meta_instance_dependencies} ) {</td></tr>
1854<tr><td class="h"><a name="1207"></a>1207</td><td></td><td></td><td></td><td></td><td class="s"> foreach my $class (@$classes) {</td></tr>
1855<tr><td class="h"><a name="1208"></a>1208</td><td></td><td></td><td></td><td></td><td class="s"> $class-&gt;remove_dependent_meta_instance($self);</td></tr>
1856<tr><td class="h"><a name="1209"></a>1209</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1857<tr><td class="h"><a name="1210"></a>1210</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1858<tr><td class="h"><a name="1211"></a>1211</td><td></td><td></td><td></td><td></td><td class="s"> return $classes;</td></tr>
1859<tr><td class="h"><a name="1212"></a>1212</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1860<tr><td class="h"><a name="1213"></a>1213</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1861<tr><td class="h"><a name="1214"></a>1214</td><td></td><td></td><td></td><td></td><td class="s"> return;</td></tr>
1862<tr><td class="h"><a name="1215"></a>1215</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1863<tr><td class="h"><a name="1216"></a>1216</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1864<tr><td class="h"><a name="1217"></a>1217</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1865<tr><td class="h"><a name="1218"></a>1218</td><td></td><td></td><td></td><td></td><td class="s">sub add_dependent_meta_instance {</td></tr>
1866<tr><td class="h"><a name="1219"></a>1219</td><td></td><td></td><td></td><td></td><td class="s"> my ( $self, $metaclass ) = @_;</td></tr>
1867<tr><td class="h"><a name="1220"></a>1220</td><td></td><td></td><td></td><td></td><td class="s"> push @{ $self-&gt;{dependent_meta_instances} }, $metaclass;</td></tr>
1868<tr><td class="h"><a name="1221"></a>1221</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1869<tr><td class="h"><a name="1222"></a>1222</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1870<tr><td class="h"><a name="1223"></a>1223</td><td></td><td></td><td></td><td></td><td class="s">sub remove_dependent_meta_instance {</td></tr>
1871<tr><td class="h"><a name="1224"></a>1224</td><td></td><td></td><td></td><td></td><td class="s"> my ( $self, $metaclass ) = @_;</td></tr>
1872<tr><td class="h"><a name="1225"></a>1225</td><td></td><td></td><td></td><td></td><td class="s"> my $name = $metaclass-&gt;name;</td></tr>
1873<tr><td class="h"><a name="1226"></a>1226</td><td></td><td></td><td></td><td></td><td class="s"> @$_ = grep { $_-&gt;name ne $name } @$_</td></tr>
1874<tr><td class="h"><a name="1227"></a>1227</td><td></td><td></td><td></td><td></td><td class="s"> for $self-&gt;{dependent_meta_instances};</td></tr>
1875<tr><td class="h"><a name="1228"></a>1228</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1876<tr><td class="h"><a name="1229"></a>1229</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1877<tr><td class="h"><a name="1230"></a>1230</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6.98ms (5.68+1.30) within Class::MOP::Class::invalidate_meta_instances which was called 660 times, avg 11&micro;s/call:
1878# 653 times (5.49ms+1.28ms) by Class::MOP::Class::_post_add_attribute at <a href="Class-MOP-Class-pm-103-line.html#886">line 886</a>, avg 10&micro;s/call
1879# 7 times (191&micro;s+21&micro;s) by Class::MOP::Class::remove_attribute at <a href="Class-MOP-Class-pm-103-line.html#905">line 905</a>, avg 30&micro;s/call</div></div>sub invalidate_meta_instances {</td></tr>
1880<tr><td class="h"><a name="1231"></a>1231</td><td class="c0">660</td><td class="c3"><span title="Avg 242ns">159&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1881<tr><td class="h"><a name="1232"></a>1232</td><td></td><td></td><td></td><td></td><td class="s"> $_-&gt;invalidate_meta_instance()</td></tr>
1882<tr><td class="h"><a name="1233"></a>1233</td><td class="c0">660</td><td class="c0"><span title="Avg 8&micro;s">5.09ms</span></td><td class="c0">660</td><td class="c3">1.30ms</td><td class="s"> for $self, @{ $self-&gt;{dependent_meta_instances} };<div class="calls"><div class="calls_out"> # spent 1.30ms making 660 calls to <a href="Class-MOP-Class-pm-103-line.html#1236">Class::MOP::Class::invalidate_meta_instance</a>, avg 2&micro;s/call</div></div></td></tr>
1883<tr><td class="h"><a name="1234"></a>1234</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1884<tr><td class="h"><a name="1235"></a>1235</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1885<tr><td class="h"><a name="1236"></a>1236</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.30ms within Class::MOP::Class::invalidate_meta_instance which was called 660 times, avg 2&micro;s/call:
1886# 660 times (1.30ms+0s) by Class::MOP::Class::invalidate_meta_instances at <a href="Class-MOP-Class-pm-103-line.html#1233">line 1233</a>, avg 2&micro;s/call</div></div>sub invalidate_meta_instance {</td></tr>
1887<tr><td class="h"><a name="1237"></a>1237</td><td class="c0">660</td><td class="c3"><span title="Avg 212ns">140&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1888<tr><td class="h"><a name="1238"></a>1238</td><td class="c0">660</td><td class="c0"><span title="Avg 3&micro;s">1.71ms</span></td><td></td><td></td><td class="s"> undef $self-&gt;{_meta_instance};</td></tr>
1889<tr><td class="h"><a name="1239"></a>1239</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1890<tr><td class="h"><a name="1240"></a>1240</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1891<tr><td class="h"><a name="1241"></a>1241</td><td></td><td></td><td></td><td></td><td class="s"># check if we can reinitialize</td></tr>
1892<tr><td class="h"><a name="1242"></a>1242</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6.37ms (382&micro;s+5.99) within Class::MOP::Class::is_pristine which was called 22 times, avg 290&micro;s/call:
1893# 15 times (225&micro;s+1.46ms) by Class::MOP::Class::_fix_single_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#389">line 389</a>, avg 112&micro;s/call
1894# 7 times (157&micro;s+4.53ms) by Class::MOP::Class::_fix_class_metaclass_incompatibility at <a href="Class-MOP-Class-pm-103-line.html#373">line 373</a>, avg 669&micro;s/call</div></div>sub is_pristine {</td></tr>
1895<tr><td class="h"><a name="1243"></a>1243</td><td class="c3">22</td><td class="c3"><span title="Avg 245ns">5&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
1896<tr><td class="h"><a name="1244"></a>1244</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1897<tr><td class="h"><a name="1245"></a>1245</td><td></td><td></td><td></td><td></td><td class="s"> # if any local attr is defined</td></tr>
1898<tr><td class="h"><a name="1246"></a>1246</td><td class="c3">22</td><td class="c3"><span title="Avg 2&micro;s">41&micro;s</span></td><td class="c3">22</td><td class="c3">109&micro;s</td><td class="s"> return if $self-&gt;get_attribute_list;<div class="calls"><div class="calls_out"> # spent 109&micro;s making 22 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#82">Class::MOP::Mixin::HasAttributes::get_attribute_list</a>, avg 5&micro;s/call</div></div></td></tr>
1899<tr><td class="h"><a name="1247"></a>1247</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1900<tr><td class="h"><a name="1248"></a>1248</td><td></td><td></td><td></td><td></td><td class="s"> # or any non-declared methods</td></tr>
1901<tr><td class="h"><a name="1249"></a>1249</td><td class="c3">57</td><td class="c3"><span title="Avg 2&micro;s">128&micro;s</span></td><td class="c3">57</td><td class="c2">5.83ms</td><td class="s"> for my $method ( map { $self-&gt;get_method($_) } $self-&gt;get_method_list ) {<div class="calls"><div class="calls_out"> # spent 5.41ms making 22 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#163">Class::MOP::Mixin::HasMethods::get_method_list</a>, avg 246&micro;s/call
1902 # spent 417&micro;s making 35 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#113">Class::MOP::Mixin::HasMethods::get_method</a>, avg 12&micro;s/call</div></div></td></tr>
1903<tr><td class="h"><a name="1250"></a>1250</td><td class="c3">35</td><td class="c3"><span title="Avg 4&micro;s">132&micro;s</span></td><td class="c3">35</td><td class="c3">54&micro;s</td><td class="s"> return if $method-&gt;isa(&quot;Class::MOP::Method::Generated&quot;);<div class="calls"><div class="calls_out"> # spent 54&micro;s making 35 calls to <a href="UNIVERSAL-pm-738-line.html#UNIVERSAL__isa">UNIVERSAL::isa</a>, avg 2&micro;s/call</div></div></td></tr>
1904<tr><td class="h"><a name="1251"></a>1251</td><td></td><td></td><td></td><td></td><td class="s"> # FIXME do we need to enforce this too? return unless $method-&gt;isa( $self-&gt;method_metaclass );</td></tr>
1905<tr><td class="h"><a name="1252"></a>1252</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
1906<tr><td class="h"><a name="1253"></a>1253</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1907<tr><td class="h"><a name="1254"></a>1254</td><td class="c3">22</td><td class="c3"><span title="Avg 2&micro;s">52&micro;s</span></td><td></td><td></td><td class="s"> return 1;</td></tr>
1908<tr><td class="h"><a name="1255"></a>1255</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1909<tr><td class="h"><a name="1256"></a>1256</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1910<tr><td class="h"><a name="1257"></a>1257</td><td></td><td></td><td></td><td></td><td class="s">## Class closing</td></tr>
1911<tr><td class="h"><a name="1258"></a>1258</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1912<tr><td class="h"><a name="1259"></a>1259</td><td class="c3">197</td><td class="c1"><span title="Avg 2&micro;s">483&micro;s</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 245&micro;s within Class::MOP::Class::is_mutable which was called 197 times, avg 1&micro;s/call:
1913# 164 times (220&micro;s+0s) by Class::MOP::Class::make_immutable at <a href="Class-MOP-Class-pm-103-line.html#1283">line 1283</a>, avg 1&micro;s/call
1914# 21 times (16&micro;s+0s) by stemmaweb::BEGIN@2 at <a href="Moose-pm-62-line.html#228">line 228 of Moose.pm</a>, avg 738ns/call
1915# 9 times (7&micro;s+0s) by Moose::Meta::Attribute::BEGIN@24 at <a href="Moose-Util-TypeConstraints-pm-172-line.html#707">line 707 of Moose/Util/TypeConstraints.pm</a>, avg 789ns/call
1916# 3 times (3&micro;s+0s) by stemmaweb::BEGIN@2 at <a href="Moose-pm-62-line.html#264">line 264 of Moose.pm</a>, avg 1&micro;s/call</div></div>sub is_mutable { 1 }</td></tr>
1917<tr><td class="h"><a name="1260"></a>1260</td><td class="c1">359</td><td class="c0"><span title="Avg 2&micro;s">842&micro;s</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 436&micro;s within Class::MOP::Class::is_immutable which was called 359 times, avg 1&micro;s/call:
1918# 336 times (410&micro;s+0s) by Class::MOP::Class::_real_ref_name at <a href="Class-MOP-Class-pm-103-line.html#128">line 128</a>, avg 1&micro;s/call
1919# 19 times (20&micro;s+0s) by Catalyst::ClassData::mk_classdata at <a href="Catalyst-ClassData-pm-586-line.html#51">line 51 of Catalyst/ClassData.pm</a>, avg 1&micro;s/call
1920# 4 times (7&micro;s+0s) by MooseX::Emulate::Class::Accessor::Fast::mk_accessors at <a href="MooseX-Emulate-Class-Accessor-Fast-pm-474-line.html#106">line 106 of MooseX/Emulate/Class/Accessor/Fast.pm</a>, avg 2&micro;s/call</div></div>sub is_immutable { 0 }</td></tr>
1921<tr><td class="h"><a name="1261"></a>1261</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1922<tr><td class="h"><a name="1262"></a>1262</td><td class="c3">19</td><td class="c3"><span title="Avg 4&micro;s">72&micro;s</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 57&micro;s within Class::MOP::Class::immutable_options which was called 19 times, avg 3&micro;s/call:
1923# 19 times (57&micro;s+0s) by Catalyst::ClassData::mk_classdata at <a href="Catalyst-ClassData-pm-586-line.html#52">line 52 of Catalyst/ClassData.pm</a>, avg 3&micro;s/call</div></div>sub immutable_options { %{ $_[0]{__immutable}{options} || {} } }</td></tr>
1924<tr><td class="h"><a name="1263"></a>1263</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1925<tr><td class="h"><a name="1264"></a>1264</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 4.23ms (2.96+1.27) within Class::MOP::Class::_immutable_options which was called 164 times, avg 26&micro;s/call:
1926# 111 times (2.21ms+1.12ms) by Moose::Meta::Class::_immutable_options at <a href="Moose-Meta-Class-pm-136-line.html#745">line 745 of Moose/Meta/Class.pm</a>, avg 30&micro;s/call
1927# 53 times (742&micro;s+150&micro;s) by Class::MOP::Class::make_immutable at <a href="Class-MOP-Class-pm-103-line.html#1287">line 1287</a>, avg 17&micro;s/call</div></div>sub _immutable_options {</td></tr>
1928<tr><td class="h"><a name="1265"></a>1265</td><td class="c3">164</td><td class="c3"><span title="Avg 2&micro;s">256&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, @args ) = @_;</td></tr>
1929<tr><td class="h"><a name="1266"></a>1266</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1930<tr><td class="h"><a name="1267"></a>1267</td><td></td><td></td><td></td><td></td><td class="s"> return (</td></tr>
1931<tr><td class="h"><a name="1268"></a>1268</td><td class="c3">164</td><td class="c0"><span title="Avg 17&micro;s">2.72ms</span></td><td class="c0">656</td><td class="c3">1.27ms</td><td class="s"> inline_accessors =&gt; 1,<div class="calls"><div class="calls_out"> # spent 374&micro;s making 111 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::immutable_trait</a>, avg 3&micro;s/call
1932 # spent 302&micro;s making 111 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::destructor_class</a>, avg 3&micro;s/call
1933 # spent 291&micro;s making 111 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::constructor_class</a>, avg 3&micro;s/call
1934 # spent 193&micro;s making 164 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_name">Class::MOP::Class::constructor_name</a>, avg 1&micro;s/call
1935 # spent 44&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__immutable_trait">Class::MOP::Class::immutable_trait</a>, avg 830ns/call
1936 # spent 35&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__constructor_class">Class::MOP::Class::constructor_class</a>, avg 651ns/call
1937 # spent 31&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__destructor_class">Class::MOP::Class::destructor_class</a>, avg 579ns/call</div></div></td></tr>
1938<tr><td class="h"><a name="1269"></a>1269</td><td></td><td></td><td></td><td></td><td class="s"> inline_constructor =&gt; 1,</td></tr>
1939<tr><td class="h"><a name="1270"></a>1270</td><td></td><td></td><td></td><td></td><td class="s"> inline_destructor =&gt; 0,</td></tr>
1940<tr><td class="h"><a name="1271"></a>1271</td><td></td><td></td><td></td><td></td><td class="s"> debug =&gt; 0,</td></tr>
1941<tr><td class="h"><a name="1272"></a>1272</td><td></td><td></td><td></td><td></td><td class="s"> immutable_trait =&gt; $self-&gt;immutable_trait,</td></tr>
1942<tr><td class="h"><a name="1273"></a>1273</td><td></td><td></td><td></td><td></td><td class="s"> constructor_name =&gt; $self-&gt;constructor_name,</td></tr>
1943<tr><td class="h"><a name="1274"></a>1274</td><td></td><td></td><td></td><td></td><td class="s"> constructor_class =&gt; $self-&gt;constructor_class,</td></tr>
1944<tr><td class="h"><a name="1275"></a>1275</td><td></td><td></td><td></td><td></td><td class="s"> destructor_class =&gt; $self-&gt;destructor_class,</td></tr>
1945<tr><td class="h"><a name="1276"></a>1276</td><td></td><td></td><td></td><td></td><td class="s"> @args,</td></tr>
1946<tr><td class="h"><a name="1277"></a>1277</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
1947<tr><td class="h"><a name="1278"></a>1278</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
1948<tr><td class="h"><a name="1279"></a>1279</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
1949<tr><td class="h"><a name="1280"></a>1280</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 834ms (3.86+830) within Class::MOP::Class::make_immutable which was called 164 times, avg 5.09ms/call:
1950# 21 times (429&micro;s+72.9ms) by stemmaweb::BEGIN@2 at <a href="Moose-pm-62-line.html#233">line 233 of Moose.pm</a>, avg 3.49ms/call
1951# 14 times (248&micro;s+15.0ms) by Moose::Exporter::BEGIN@13 at <a href="Class-MOP-pm-83-line.html#687">line 687 of Class/MOP.pm</a>, avg 1.09ms/call
1952# 9 times (172&micro;s+37.9ms) by Moose::Meta::Attribute::BEGIN@24 at <a href="Moose-Util-TypeConstraints-pm-172-line.html#712">line 712 of Moose/Util/TypeConstraints.pm</a>, avg 4.23ms/call
1953# 4 times (60&micro;s+392&micro;s) by Moose::Exporter::BEGIN@13 at <a href="Class-MOP-pm-83-line.html#713">line 713 of Class/MOP.pm</a>, avg 113&micro;s/call
1954# 4 times (95&micro;s+-95&micro;s) by Class::MOP::Class::_immutable_metaclass at <a href="Class-MOP-Class-pm-103-line.html#1361">line 1361</a>, avg 0s/call
1955# 3 times (62&micro;s+9.32ms) by stemmaweb::BEGIN@2 at <a href="Moose-pm-62-line.html#269">line 269 of Moose.pm</a>, avg 3.13ms/call
1956# once (40&micro;s+28.6ms) by Catalyst::BEGIN@16 at <a href="Catalyst-Controller-pm-576-line.html#457">line 457 of Catalyst/Controller.pm</a>
1957# once (26&micro;s+27.3ms) by Module::Runtime::require_module at <a href="KiokuDB-Backend-DBI-pm-2149-line.html#1017">line 1017 of KiokuDB/Backend/DBI.pm</a>
1958# once (24&micro;s+21.7ms) by TryCatch::BEGIN@11 at <a href="Parse-Method-Signatures-pm-911-line.html#825">line 825 of Parse/Method/Signatures.pm</a>
1959# once (37&micro;s+21.3ms) by Module::Runtime::require_module at <a href="KiokuX-Model-pm-1511-line.html#82">line 82 of KiokuX/Model.pm</a>
1960# once (26&micro;s+18.0ms) by Module::Runtime::require_module at <a href="KiokuDB-Serializer-JSON-pm-2327-line.html#15">line 15 of KiokuDB/Serializer/JSON.pm</a>
1961# once (28&micro;s+17.6ms) by Catalyst::BEGIN@8 at <a href="Catalyst-Exception-pm-384-line.html#52">line 52 of Catalyst/Exception.pm</a>
1962# once (25&micro;s+15.5ms) by Module::Runtime::require_module at <a href="Parse-Method-Signatures-Param-pm-1199-line.html#96">line 96 of Parse/Method/Signatures/Param.pm</a>
1963# once (39&micro;s+15.0ms) by KiokuDB::Backend::TypeMap::Default::JSON::BEGIN@6 at <a href="KiokuDB-TypeMap-Default-JSON-pm-2384-line.html#44">line 44 of KiokuDB/TypeMap/Default/JSON.pm</a>
1964# once (24&micro;s+14.9ms) by KiokuDB::GC::Naive::BEGIN@6 at <a href="KiokuDB-GC-Naive-Mark-pm-1363-line.html#76">line 76 of KiokuDB/GC/Naive/Mark.pm</a>
1965# once (25&micro;s+14.1ms) by Text::Tradition::BEGIN@6 at <a href="lib-Text-Tradition-Collation-pm-686-line.html#1801">line 1801 of lib/Text/Tradition/Collation.pm</a>
1966# once (26&micro;s+13.5ms) by KiokuDB::Backend::Serialize::JSPON::BEGIN@7 at <a href="KiokuDB-Backend-Serialize-JSPON-Collapser-pm-2360-line.html#78">line 78 of KiokuDB/Backend/Serialize/JSPON/Collapser.pm</a>
1967# once (23&micro;s+13.2ms) by KiokuDB::Backend::Serialize::JSPON::BEGIN@6 at <a href="KiokuDB-Backend-Serialize-JSPON-Expander-pm-2336-line.html#154">line 154 of KiokuDB/Backend/Serialize/JSPON/Expander.pm</a>
1968# once (29&micro;s+12.9ms) by Text::Tradition::Collation::BEGIN@9 at <a href="lib-Text-Tradition-Collation-Reading-pm-747-line.html#332">line 332 of lib/Text/Tradition/Collation/Reading.pm</a>
1969# once (23&micro;s+12.4ms) by Text::Tradition::BEGIN@8 at <a href="lib-Text-Tradition-Witness-pm-1180-line.html#784">line 784 of lib/Text/Tradition/Witness.pm</a>
1970# once (25&micro;s+12.0ms) by KiokuX::Model::BEGIN@7 at <a href="KiokuDB-pm-1519-line.html#657">line 657 of KiokuDB.pm</a>
1971# once (49&micro;s+10.7ms) by Catalyst::BEGIN@14 at <a href="Catalyst-Response-pm-553-line.html#290">line 290 of Catalyst/Response.pm</a>
1972# once (35&micro;s+10.5ms) by Text::Tradition::Collation::BEGIN@10 at <a href="lib-Text-Tradition-Collation-RelationshipStore-pm-811-line.html#1074">line 1074 of lib/Text/Tradition/Collation/RelationshipStore.pm</a>
1973# once (24&micro;s+10.2ms) by MooseX::Role::Parameterized::BEGIN@7 at <a href="MooseX-Parameterizable-pm-830-line.html#118">line 118 of MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm</a>
1974# once (28&micro;s+10.2ms) by Catalyst::BEGIN@12 at <a href="Catalyst-Request-pm-483-line.html#890">line 890 of Catalyst/Request.pm</a>
1975# once (37&micro;s+9.55ms) by Catalyst::Utils::ensure_class_loaded at <a href="lib-stemmaweb-Controller-Root-pm-2077-line.html#181">line 181 of lib/stemmaweb/Controller/Root.pm</a>
1976# once (38&micro;s+9.12ms) by KiokuDB::TypeMap::Entry::Set::BEGIN@9 at <a href="KiokuDB-Set-Deferred-pm-2579-line.html#170">line 170 of KiokuDB/Set/Deferred.pm</a>
1977# once (24&micro;s+9.00ms) by Module::Runtime::require_module at <a href="Parse-Method-Signatures-TypeConstraint-pm-1283-line.html#137">line 137 of Parse/Method/Signatures/TypeConstraint.pm</a>
1978# once (25&micro;s+8.96ms) by KiokuDB::Collapser::BEGIN@17 at <a href="KiokuDB-Collapser-Buffer-pm-1606-line.html#233">line 233 of KiokuDB/Collapser/Buffer.pm</a>
1979# once (22&micro;s+8.67ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 at <a href="MooseX-Parameterized-pm-833-line.html#8">line 8 of MooseX/Role/Parameterized/Meta/Role/Parameterized.pm</a>
1980# once (22&micro;s+8.37ms) by Module::Runtime::require_module at <a href="Catalyst-Model-KiokuDB-pm-2055-line.html#201">line 201 of Catalyst/Model/KiokuDB.pm</a>
1981# once (38&micro;s+8.29ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-Callback-pm-2528-line.html#131">line 131 of KiokuDB/TypeMap/Entry/Callback.pm</a>
1982# once (28&micro;s+8.19ms) by KiokuDB::BEGIN@13 at <a href="KiokuDB-LiveObjects-pm-1680-line.html#535">line 535 of KiokuDB/LiveObjects.pm</a>
1983# once (23&micro;s+7.98ms) by KiokuDB::GC::Naive::BEGIN@7 at <a href="KiokuDB-GC-Naive-Sweep-pm-1400-line.html#46">line 46 of KiokuDB/GC/Naive/Sweep.pm</a>
1984# once (24&micro;s+7.95ms) by KiokuDB::TypeMap::Resolver::BEGIN@9 at <a href="KiokuDB-TypeMap-Entry-MOP-pm-1731-line.html#484">line 484 of KiokuDB/TypeMap/Entry/MOP.pm</a>
1985# once (24&micro;s+7.58ms) by KiokuDB::Collapser::BEGIN@14 at <a href="KiokuDB-Entry-pm-1529-line.html#304">line 304 of KiokuDB/Entry.pm</a>
1986# once (24&micro;s+7.48ms) by KiokuDB::BEGIN@11 at <a href="KiokuDB-Collapser-pm-1524-line.html#406">line 406 of KiokuDB/Collapser.pm</a>
1987# once (24&micro;s+7.23ms) by Module::Runtime::require_module at <a href="Parse-Method-Signatures-Sig-pm-1184-line.html#106">line 106 of Parse/Method/Signatures/Sig.pm</a>
1988# once (40&micro;s+7.18ms) by Module::Runtime::require_module at <a href="Catalyst-Dispatcher-pm-1877-line.html#748">line 748 of Catalyst/Dispatcher.pm</a>
1989# once (22&micro;s+7.17ms) by Text::Tradition::Collation::RelationshipStore::BEGIN@6 at <a href="lib-Text-Tradition-Collation-Relationship-pm-888-line.html#149">line 149 of lib/Text/Tradition/Collation/Relationship.pm</a>
1990# once (36&micro;s+7.14ms) by main::BEGIN@10 at <a href="lib-Text-Tradition-pm-673-line.html#371">line 371 of lib/Text/Tradition.pm</a>
1991# once (42&micro;s+6.91ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-Set-pm-2565-line.html#130">line 130 of KiokuDB/TypeMap/Entry/Set.pm</a>
1992# once (31&micro;s+6.73ms) by KiokuDB::TypeMap::Entry::Std::BEGIN@6 at <a href="KiokuDB-TypeMap-Entry-Compiled-pm-1479-line.html#26">line 26 of KiokuDB/TypeMap/Entry/Compiled.pm</a>
1993# once (26&micro;s+6.49ms) by stemmaweb::BEGIN@19 at <a href="Catalyst-pm-381-line.html#3429">line 3429 of Catalyst.pm</a>
1994# once (22&micro;s+6.21ms) by KiokuDB::BEGIN@12 at <a href="KiokuDB-Linker-pm-1662-line.html#381">line 381 of KiokuDB/Linker.pm</a>
1995# once (26&micro;s+6.12ms) by Catalyst::Utils::ensure_class_loaded at <a href="lib-stemmaweb-Controller-Microservice-pm-2113-line.html#253">line 253 of lib/stemmaweb/Controller/Microservice.pm</a>
1996# once (22&micro;s+6.08ms) by Catalyst::Plugin::ConfigLoader::BEGIN@8 at <a href="Data-Visitor-Callback-pm-1863-line.html#288">line 288 of Data/Visitor/Callback.pm</a>
1997# once (29&micro;s+5.93ms) by Catalyst::BEGIN@13 at <a href="Catalyst-Request-Upload-pm-537-line.html#188">line 188 of Catalyst/Request/Upload.pm</a>
1998# once (26&micro;s+5.37ms) by KiokuDB::Backend::DBI::BEGIN@21 at <a href="Data-Stream-Bulk-DBI-pm-2152-line.html#48">line 48 of Data/Stream/Bulk/DBI.pm</a>
1999# once (24&micro;s+5.37ms) by KiokuDB::BEGIN@17 at <a href="KiokuDB-Stream-Objects-pm-1765-line.html#84">line 84 of KiokuDB/Stream/Objects.pm</a>
2000# once (23&micro;s+4.97ms) by Catalyst::Utils::ensure_class_loaded at <a href="lib-stemmaweb-Controller-Stexaminer-pm-2108-line.html#82">line 82 of lib/stemmaweb/Controller/Stexaminer.pm</a>
2001# once (25&micro;s+4.94ms) by Catalyst::Utils::ensure_class_loaded at <a href="lib-stemmaweb-Controller-Relation-pm-2093-line.html#223">line 223 of lib/stemmaweb/Controller/Relation.pm</a>
2002# once (24&micro;s+4.77ms) by Text::Tradition::Directory::BEGIN@8 at <a href="KiokuDB-GC-Naive-pm-1360-line.html#75">line 75 of KiokuDB/GC/Naive.pm</a>
2003# once (26&micro;s+4.69ms) by Module::Runtime::require_module at <a href="Catalyst-DispatchType-Regex-pm-2487-line.html#183">line 183 of Catalyst/DispatchType/Regex.pm</a>
2004# once (21&micro;s+4.65ms) by Module::Runtime::require_module at <a href="Catalyst-DispatchType-Chained-pm-2498-line.html#410">line 410 of Catalyst/DispatchType/Chained.pm</a>
2005# once (41&micro;s+4.62ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-Closure-pm-2546-line.html#186">line 186 of KiokuDB/TypeMap/Entry/Closure.pm</a>
2006# once (23&micro;s+4.56ms) by KiokuDB::LiveObjects::BEGIN@14 at <a href="KiokuDB-LiveObjects-TXNScope-pm-1695-line.html#55">line 55 of KiokuDB/LiveObjects/TXNScope.pm</a>
2007# once (23&micro;s+4.55ms) by KiokuDB::TypeMap::Entry::MOP::BEGIN@9 at <a href="KiokuDB-Thunk-pm-1734-line.html#51">line 51 of KiokuDB/Thunk.pm</a>
2008# once (20&micro;s+4.53ms) by Catalyst::DispatchType::Chained::BEGIN@7 at <a href="Catalyst-ActionChain-pm-2501-line.html#56">line 56 of Catalyst/ActionChain.pm</a>
2009# once (23&micro;s+4.44ms) by Text::Tradition::Directory::BEGIN@9 at <a href="KiokuDB-TypeMap-pm-1440-line.html#171">line 171 of KiokuDB/TypeMap.pm</a>
2010# once (24&micro;s+4.21ms) by KiokuDB::Set::Deferred::BEGIN@8 at <a href="KiokuDB-Set-Loaded-pm-2582-line.html#36">line 36 of KiokuDB/Set/Loaded.pm</a>
2011# once (23&micro;s+4.19ms) by Module::Runtime::require_module at <a href="Data-Stream-Bulk-Chunked-pm-1787-line.html#41">line 41 of Data/Stream/Bulk/Chunked.pm</a>
2012# once (23&micro;s+4.19ms) by KiokuDB::LiveObjects::BEGIN@13 at <a href="KiokuDB-LiveObjects-Scope-pm-1683-line.html#60">line 60 of KiokuDB/LiveObjects/Scope.pm</a>
2013# once (30&micro;s+4.18ms) by Text::Tradition::BEGIN@7 at <a href="lib-Text-Tradition-Stemma-pm-1135-line.html#394">line 394 of lib/Text/Tradition/Stemma.pm</a>
2014# once (22&micro;s+4.18ms) by MooseX::Types::Structured::BEGIN@16 at <a href="MooseX-Types-Structured-MessageStack-pm-1241-line.html#44">line 44 of MooseX/Types/Structured/MessageStack.pm</a>
2015# once (21&micro;s+4.14ms) by Catalyst::Dispatcher::BEGIN@9 at <a href="Catalyst-Action-pm-1880-line.html#104">line 104 of Catalyst/Action.pm</a>
2016# once (22&micro;s+4.07ms) by KiokuDB::BEGIN@16 at <a href="KiokuDB-TypeMap-Resolver-pm-1730-line.html#117">line 117 of KiokuDB/TypeMap/Resolver.pm</a>
2017# once (28&micro;s+4.04ms) by Text::Tradition::Collation::BEGIN@9 at <a href="lib-Text-Tradition-Collation-Reading-pm-747-line.html#414">line 414 of lib/Text/Tradition/Collation/Reading.pm</a>
2018# once (22&micro;s+3.99ms) by KiokuDB::GC::Naive::BEGIN@6 at <a href="KiokuDB-GC-Naive-Mark-pm-1363-line.html#22">line 22 of KiokuDB/GC/Naive/Mark.pm</a>
2019# once (34&micro;s+3.95ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-JSON-Scalar-pm-2558-line.html#54">line 54 of KiokuDB/TypeMap/Entry/JSON/Scalar.pm</a>
2020# once (26&micro;s+3.87ms) by Catalyst::BEGIN@32 at <a href="Catalyst-EngineLoader-pm-643-line.html#123">line 123 of Catalyst/EngineLoader.pm</a>
2021# once (23&micro;s+3.77ms) by KiokuDB::Backend::DBI::BEGIN@28 at <a href="KiokuDB-TypeMap-Entry-DBIC-Row-pm-2211-line.html#73">line 73 of KiokuDB/TypeMap/Entry/DBIC/Row.pm</a>
2022# once (36&micro;s+3.70ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-Passthrough-pm-2609-line.html#71">line 71 of KiokuDB/TypeMap/Entry/Passthrough.pm</a>
2023# once (22&micro;s+3.67ms) by KiokuDB::Collapser::BEGIN@18 at <a href="KiokuDB-Error-UnknownObjects-pm-1626-line.html#25">line 25 of KiokuDB/Error/UnknownObjects.pm</a>
2024# once (24&micro;s+3.59ms) by Module::Runtime::require_module at <a href="Catalyst-DispatchType-Path-pm-2481-line.html#169">line 169 of Catalyst/DispatchType/Path.pm</a>
2025# once (17&micro;s+3.57ms) by Catalyst::BEGIN@8 at <a href="Catalyst-Exception-pm-384-line.html#67">line 67 of Catalyst/Exception.pm</a>
2026# once (22&micro;s+3.52ms) by Module::Runtime::require_module at <a href="Data-Stream-Bulk-Filter-pm-1803-line.html#37">line 37 of Data/Stream/Bulk/Filter.pm</a>
2027# once (22&micro;s+3.51ms) by KiokuDB::Collapser::BEGIN@15 at <a href="KiokuDB-Entry-Skip-pm-1589-line.html#27">line 27 of KiokuDB/Entry/Skip.pm</a>
2028# once (23&micro;s+3.48ms) by KiokuDB::Backend::DBI::BEGIN@30 at <a href="KiokuDB-TypeMap-Entry-DBIC-ResultSet-pm-2222-line.html#36">line 36 of KiokuDB/TypeMap/Entry/DBIC/ResultSet.pm</a>
2029# once (24&micro;s+3.47ms) by Catalyst::BEGIN@9 at <a href="Catalyst-Exception-Detach-pm-455-line.html#12">line 12 of Catalyst/Exception/Detach.pm</a>
2030# once (23&micro;s+3.40ms) by KiokuDB::Collapser::BEGIN@20 at <a href="Data-Visitor-pm-1636-line.html#452">line 452 of Data/Visitor.pm</a>
2031# once (22&micro;s+3.38ms) by KiokuDB::Linker::BEGIN@18 at <a href="KiokuDB-Error-MissingObjects-pm-1665-line.html#37">line 37 of KiokuDB/Error/MissingObjects.pm</a>
2032# once (23&micro;s+3.33ms) by Catalyst::Dispatcher::BEGIN@12 at <a href="Catalyst-DispatchType-Index-pm-1909-line.html#105">line 105 of Catalyst/DispatchType/Index.pm</a>
2033# once (25&micro;s+3.31ms) by KiokuDB::TypeMap::Entry::Set::BEGIN@8 at <a href="KiokuDB-Set-Stored-pm-2568-line.html#12">line 12 of KiokuDB/Set/Stored.pm</a>
2034# once (21&micro;s+3.26ms) by Catalyst::Utils::ensure_class_loaded at <a href="Catalyst-Stats-pm-1947-line.html#163">line 163 of Catalyst/Stats.pm</a>
2035# once (25&micro;s+3.24ms) by base::import at <a href="Catalyst-View-pm-2019-line.html#61">line 61 of Catalyst/View.pm</a>
2036# once (22&micro;s+3.22ms) by KiokuDB::Collapser::BEGIN@16 at <a href="KiokuDB-Reference-pm-1599-line.html#39">line 39 of KiokuDB/Reference.pm</a>
2037# once (21&micro;s+3.12ms) by Catalyst::BEGIN@10 at <a href="Catalyst-Exception-Go-pm-462-line.html#12">line 12 of Catalyst/Exception/Go.pm</a>
2038# once (24&micro;s+3.10ms) by KiokuDB::GC::Naive::BEGIN@7 at <a href="KiokuDB-GC-Naive-Sweep-pm-1400-line.html#22">line 22 of KiokuDB/GC/Naive/Sweep.pm</a>
2039# once (24&micro;s+3.08ms) by KiokuDB::TypeMap::BEGIN@10 at <a href="KiokuDB-TypeMap-Entry-Alias-pm-1445-line.html#14">line 14 of KiokuDB/TypeMap/Entry/Alias.pm</a>
2040# once (22&micro;s+3.05ms) by MooseX::Types::Structured::BEGIN@15 at <a href="MooseX-Types-Structured-OverflowHandler-pm-1235-line.html#23">line 23 of MooseX/Types/Structured/OverflowHandler.pm</a>
2041# once (29&micro;s+3.00ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-StorableHook-pm-2539-line.html#221">line 221 of KiokuDB/TypeMap/Entry/StorableHook.pm</a>
2042# once (22&micro;s+2.96ms) by Module::Runtime::require_module at <a href="Catalyst-Model-pm-2058-line.html#36">line 36 of Catalyst/Model.pm</a>
2043# once (21&micro;s+2.92ms) by Module::Runtime::require_module at <a href="Data-Stream-Bulk-Cat-pm-1780-line.html#50">line 50 of Data/Stream/Bulk/Cat.pm</a>
2044# once (25&micro;s+2.88ms) by Data::Stream::Bulk::Util::BEGIN@14 at <a href="Data-Stream-Bulk-Array-pm-2252-line.html#72">line 72 of Data/Stream/Bulk/Array.pm</a>
2045# once (21&micro;s+2.84ms) by KiokuDB::BEGIN@15 at <a href="KiokuDB-TypeMap-Shadow-pm-1723-line.html#28">line 28 of KiokuDB/TypeMap/Shadow.pm</a>
2046# once (22&micro;s+2.82ms) by Catalyst::Dispatcher::BEGIN@10 at <a href="Catalyst-ActionContainer-pm-1892-line.html#49">line 49 of Catalyst/ActionContainer.pm</a>
2047# once (23&micro;s+2.77ms) by Text::Tradition::Directory::BEGIN@154 at <a href="lib-Text-Tradition-TypeMap-Entry-pm-1500-line.html#40">line 40 of lib/Text/Tradition/TypeMap/Entry.pm</a>
2048# once (24&micro;s+2.72ms) by Text::Tradition::Directory::BEGIN@10 at <a href="KiokuDB-TypeMap-Entry-Naive-pm-1474-line.html#41">line 41 of KiokuDB/TypeMap/Entry/Naive.pm</a>
2049# once (25&micro;s+2.60ms) by Module::Runtime::require_module at <a href="MooseX-MethodAttributes-Inheritable-pm-591-line.html#20">line 20 of MooseX/MethodAttributes/Inheritable.pm</a>
2050# once (28&micro;s+2.54ms) by Module::Runtime::require_module at <a href="Data-Stream-Bulk-Nil-pm-1798-line.html#34">line 34 of Data/Stream/Bulk/Nil.pm</a>
2051# once (21&micro;s+2.54ms) by Catalyst::Dispatcher::BEGIN@11 at <a href="Catalyst-DispatchType-Default-pm-1899-line.html#74">line 74 of Catalyst/DispatchType/Default.pm</a>
2052# once (25&micro;s+2.52ms) by Module::Runtime::require_module at <a href="KiokuDB-Set-Base-pm-2571-line.html#8">line 8 of KiokuDB/Set/Base.pm</a>
2053# once (25&micro;s+2.49ms) by KiokuDB::Backend::DBI::BEGIN@29 at <a href="KiokuDB-TypeMap-Entry-DBIC-ResultSource-pm-2217-line.html#71">line 71 of KiokuDB/TypeMap/Entry/DBIC/ResultSource.pm</a>
2054# once (21&micro;s+2.46ms) by MooseX::Role::Parameterized::Meta::Trait::Parameterized::BEGIN@6 at <a href="MooseX-Role-Parameterized-Parameters-pm-838-line.html#6">line 6 of MooseX/Role/Parameterized/Parameters.pm</a>
2055# once (23&micro;s+2.45ms) by Module::Runtime::require_module at <a href="KiokuDB-TypeMap-Entry-Ref-pm-2553-line.html#41">line 41 of KiokuDB/TypeMap/Entry/Ref.pm</a>
2056# once (24&micro;s+2.37ms) by Module::Runtime::require_module at <a href="Catalyst-Component-pm-579-line.html#167">line 167 of Catalyst/Component.pm</a>
2057# once (22&micro;s+2.31ms) by Module::Runtime::require_module at <a href="Catalyst-DispatchType-pm-1902-line.html#89">line 89 of Catalyst/DispatchType.pm</a>
2058# once (21&micro;s+2.25ms) by KiokuDB::Backend::DBI::BEGIN@31 at <a href="KiokuDB-TypeMap-Entry-DBIC-Schema-pm-2227-line.html#62">line 62 of KiokuDB/TypeMap/Entry/DBIC/Schema.pm</a>
2059# once (21&micro;s+962&micro;s) by Text::Tradition::Collation::RelationshipStore::BEGIN@5 at <a href="lib-Text-Tradition-Error-pm-812-line.html#18">line 18 of lib/Text/Tradition/Error.pm</a>
2060# once (20&micro;s+908&micro;s) by Catalyst::BEGIN@11 at <a href="Catalyst-Log-pm-469-line.html#132">line 132 of Catalyst/Log.pm</a>
2061# once (22&micro;s+421&micro;s) by MooseX::Types::Structured::BEGIN@13 at <a href="MooseX-Meta-TypeConstraint-Structured-pm-1203-line.html#265">line 265 of MooseX/Meta/TypeConstraint/Structured.pm</a>
2062# once (22&micro;s+399&micro;s) by MooseX::Meta::TypeConstraint::Structured::BEGIN@8 at <a href="MooseX-Meta-TypeCoercion-Structured-pm-1221-line.html#9">line 9 of MooseX/Meta/TypeCoercion/Structured.pm</a>
2063# once (20&micro;s+371&micro;s) by MooseX::Types::Structured::BEGIN@14 at <a href="MooseX-Meta-TypeConstraint-Structured-Optional-pm-1229-line.html#20">line 20 of MooseX/Meta/TypeConstraint/Structured/Optional.pm</a>
2064# once (21&micro;s+358&micro;s) by MooseX::Meta::TypeConstraint::Structured::Optional::BEGIN@5 at <a href="MooseX-Meta-TypeCoercion-Structured-Optional-pm-1232-line.html#25">line 25 of MooseX/Meta/TypeCoercion/Structured/Optional.pm</a></div></div>sub make_immutable {</td></tr>
2065<tr><td class="h"><a name="1281"></a>1281</td><td class="c3">164</td><td class="c3"><span title="Avg 1&micro;s">209&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, @args ) = @_;</td></tr>
2066<tr><td class="h"><a name="1282"></a>1282</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2067<tr><td class="h"><a name="1283"></a>1283</td><td class="c3">164</td><td class="c2"><span title="Avg 2&micro;s">327&micro;s</span></td><td class="c3">164</td><td class="c3">220&micro;s</td><td class="s"> return $self unless $self-&gt;is_mutable;<div class="calls"><div class="calls_out"> # spent 220&micro;s making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#1259">Class::MOP::Class::is_mutable</a>, avg 1&micro;s/call</div></div></td></tr>
2068<tr><td class="h"><a name="1284"></a>1284</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2069<tr><td class="h"><a name="1285"></a>1285</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">431&micro;s</span></td><td></td><td></td><td class="s"> my ($file, $line) = (caller)[1..2];</td></tr>
2070<tr><td class="h"><a name="1286"></a>1286</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2071<tr><td class="h"><a name="1287"></a>1287</td><td class="c3">164</td><td class="c0"><span title="Avg 8&micro;s">1.35ms</span></td><td class="c2">328</td><td class="c0">752ms</td><td class="s"> $self-&gt;_initialize_immutable(<div class="calls"><div class="calls_out"> # spent 746ms making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#1385">Class::MOP::Class::_initialize_immutable</a>, avg 4.55ms/call
2072 # spent 4.37ms making 111 calls to <a href="Moose-Meta-Class-pm-136-line.html#742">Moose::Meta::Class::_immutable_options</a>, avg 39&micro;s/call
2073 # spent 893&micro;s making 53 calls to <a href="Class-MOP-Class-pm-103-line.html#1264">Class::MOP::Class::_immutable_options</a>, avg 17&micro;s/call</div></div></td></tr>
2074<tr><td class="h"><a name="1288"></a>1288</td><td></td><td></td><td></td><td></td><td class="s"> file =&gt; $file,</td></tr>
2075<tr><td class="h"><a name="1289"></a>1289</td><td></td><td></td><td></td><td></td><td class="s"> line =&gt; $line,</td></tr>
2076<tr><td class="h"><a name="1290"></a>1290</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_immutable_options(@args),</td></tr>
2077<tr><td class="h"><a name="1291"></a>1291</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2078<tr><td class="h"><a name="1292"></a>1292</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">433&micro;s</span></td><td class="c3">164</td><td class="c0">79.6ms</td><td class="s"> $self-&gt;_rebless_as_immutable(@args);<div class="calls"><div class="calls_out"> # spent 80.0ms making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#1312">Class::MOP::Class::_rebless_as_immutable</a>, avg 488&micro;s/call, recursion: max depth 1, sum of overlapping time 384&micro;s</div></div></td></tr>
2079<tr><td class="h"><a name="1293"></a>1293</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2080<tr><td class="h"><a name="1294"></a>1294</td><td class="c3">164</td><td class="c0"><span title="Avg 4&micro;s">643&micro;s</span></td><td></td><td></td><td class="s"> return $self;</td></tr>
2081<tr><td class="h"><a name="1295"></a>1295</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2082<tr><td class="h"><a name="1296"></a>1296</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2083<tr><td class="h"><a name="1297"></a>1297</td><td></td><td></td><td></td><td></td><td class="s">sub make_mutable {</td></tr>
2084<tr><td class="h"><a name="1298"></a>1298</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
2085<tr><td class="h"><a name="1299"></a>1299</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2086<tr><td class="h"><a name="1300"></a>1300</td><td></td><td></td><td></td><td></td><td class="s"> if ( $self-&gt;is_immutable ) {</td></tr>
2087<tr><td class="h"><a name="1301"></a>1301</td><td></td><td></td><td></td><td></td><td class="s"> my @args = $self-&gt;immutable_options;</td></tr>
2088<tr><td class="h"><a name="1302"></a>1302</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_rebless_as_mutable();</td></tr>
2089<tr><td class="h"><a name="1303"></a>1303</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;_remove_inlined_code(@args);</td></tr>
2090<tr><td class="h"><a name="1304"></a>1304</td><td></td><td></td><td></td><td></td><td class="s"> delete $self-&gt;{__immutable};</td></tr>
2091<tr><td class="h"><a name="1305"></a>1305</td><td></td><td></td><td></td><td></td><td class="s"> return $self;</td></tr>
2092<tr><td class="h"><a name="1306"></a>1306</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2093<tr><td class="h"><a name="1307"></a>1307</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
2094<tr><td class="h"><a name="1308"></a>1308</td><td></td><td></td><td></td><td></td><td class="s"> return;</td></tr>
2095<tr><td class="h"><a name="1309"></a>1309</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2096<tr><td class="h"><a name="1310"></a>1310</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2097<tr><td class="h"><a name="1311"></a>1311</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2098<tr><td class="h"><a name="1312"></a>1312</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 79.6ms (1.66+78.0) within Class::MOP::Class::_rebless_as_immutable which was called 164 times, avg 486&micro;s/call:
2099# 164 times (1.66ms+78.0ms) by Class::MOP::Class::make_immutable at <a href="Class-MOP-Class-pm-103-line.html#1292">line 1292</a>, avg 486&micro;s/call</div></div>sub _rebless_as_immutable {</td></tr>
2100<tr><td class="h"><a name="1313"></a>1313</td><td class="c3">164</td><td class="c3"><span title="Avg 1&micro;s">180&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, @args ) = @_;</td></tr>
2101<tr><td class="h"><a name="1314"></a>1314</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2102<tr><td class="h"><a name="1315"></a>1315</td><td class="c3">164</td><td class="c3"><span title="Avg 1&micro;s">216&micro;s</span></td><td></td><td></td><td class="s"> $self-&gt;{__immutable}{original_class} = ref $self;</td></tr>
2103<tr><td class="h"><a name="1316"></a>1316</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2104<tr><td class="h"><a name="1317"></a>1317</td><td class="c3">164</td><td class="c0"><span title="Avg 7&micro;s">1.18ms</span></td><td class="c3">164</td><td class="c0">78.0ms</td><td class="s"> bless $self =&gt; $self-&gt;_immutable_metaclass(@args);<div class="calls"><div class="calls_out"> # spent 78.4ms making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#1320">Class::MOP::Class::_immutable_metaclass</a>, avg 478&micro;s/call, recursion: max depth 1, sum of overlapping time 334&micro;s</div></div></td></tr>
2105<tr><td class="h"><a name="1318"></a>1318</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2106<tr><td class="h"><a name="1319"></a>1319</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2107<tr><td class="h"><a name="1320"></a>1320</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 78.0ms (3.56+74.5) within Class::MOP::Class::_immutable_metaclass which was called 164 times, avg 476&micro;s/call:
2108# 164 times (3.56ms+74.5ms) by Class::MOP::Class::_rebless_as_immutable at <a href="Class-MOP-Class-pm-103-line.html#1317">line 1317</a>, avg 476&micro;s/call</div></div>sub _immutable_metaclass {</td></tr>
2109<tr><td class="h"><a name="1321"></a>1321</td><td class="c3">164</td><td class="c3"><span title="Avg 979ns">160&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, %args ) = @_;</td></tr>
2110<tr><td class="h"><a name="1322"></a>1322</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2111<tr><td class="h"><a name="1323"></a>1323</td><td class="c3">164</td><td class="c3"><span title="Avg 574ns">94&micro;s</span></td><td></td><td></td><td class="s"> if ( my $class = $args{immutable_metaclass} ) {</td></tr>
2112<tr><td class="h"><a name="1324"></a>1324</td><td></td><td></td><td></td><td></td><td class="s"> return $class;</td></tr>
2113<tr><td class="h"><a name="1325"></a>1325</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2114<tr><td class="h"><a name="1326"></a>1326</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2115<tr><td class="h"><a name="1327"></a>1327</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">539&micro;s</span></td><td class="c3">164</td><td class="c3">376&micro;s</td><td class="s"> my $trait = $args{immutable_trait} = $self-&gt;immutable_trait<div class="calls"><div class="calls_out"> # spent 339&micro;s making 111 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::immutable_trait</a>, avg 3&micro;s/call
2116 # spent 38&micro;s making 53 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Class__immutable_trait">Class::MOP::Class::immutable_trait</a>, avg 708ns/call</div></div></td></tr>
2117<tr><td class="h"><a name="1328"></a>1328</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;no immutable trait specified for $self&quot;;</td></tr>
2118<tr><td class="h"><a name="1329"></a>1329</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2119<tr><td class="h"><a name="1330"></a>1330</td><td class="c3">164</td><td class="c3"><span title="Avg 2&micro;s">316&micro;s</span></td><td class="c3">164</td><td class="c3">2.26ms</td><td class="s"> my $meta = $self-&gt;meta;<div class="calls"><div class="calls_out"> # spent 2.16ms making 158 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Class::MOP::Object::meta</a>, avg 14&micro;s/call
2120 # spent 83&micro;s making 5 calls to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::5::meta</a>, avg 17&micro;s/call
2121 # spent 14&micro;s making 1 call to <a href="Class-MOP-Package-pm-122-line.html#221">Moose::Meta::Class::__ANON__::SERIAL::30::meta</a></div></div></td></tr>
2122<tr><td class="h"><a name="1331"></a>1331</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">438&micro;s</span></td><td class="c3">164</td><td class="c1">7.65ms</td><td class="s"> my $meta_attr = $meta-&gt;find_attribute_by_name(&quot;immutable_trait&quot;);<div class="calls"><div class="calls_out"> # spent 7.65ms making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#913">Class::MOP::Class::find_attribute_by_name</a>, avg 47&micro;s/call</div></div></td></tr>
2123<tr><td class="h"><a name="1332"></a>1332</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2124<tr><td class="h"><a name="1333"></a>1333</td><td class="c3">164</td><td class="c3"><span title="Avg 119ns">20&micro;s</span></td><td></td><td></td><td class="s"> my $class_name;</td></tr>
2125<tr><td class="h"><a name="1334"></a>1334</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2126<tr><td class="h"><a name="1335"></a>1335</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">527&micro;s</span></td><td class="c3">164</td><td class="c3">537&micro;s</td><td class="s"> if ( $meta_attr and $trait eq $meta_attr-&gt;default ) {<div class="calls"><div class="calls_out"> # spent 537&micro;s making 164 calls to <a href="Class-MOP-Mixin-AttributeCore-pm-86-line.html#43">Class::MOP::Mixin::AttributeCore::default</a>, avg 3&micro;s/call</div></div></td></tr>
2127<tr><td class="h"><a name="1336"></a>1336</td><td></td><td></td><td></td><td></td><td class="s"> # if the trait is the same as the default we try and pick a</td></tr>
2128<tr><td class="h"><a name="1337"></a>1337</td><td></td><td></td><td></td><td></td><td class="s"> # predictable name for the immutable metaclass</td></tr>
2129<tr><td class="h"><a name="1338"></a>1338</td><td></td><td></td><td></td><td></td><td class="s"> $class_name = 'Class::MOP::Class::Immutable::' . ref($self);</td></tr>
2130<tr><td class="h"><a name="1339"></a>1339</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2131<tr><td class="h"><a name="1340"></a>1340</td><td></td><td></td><td></td><td></td><td class="s"> else {</td></tr>
2132<tr><td class="h"><a name="1341"></a>1341</td><td></td><td></td><td></td><td></td><td class="s"> $class_name = join '::', 'Class::MOP::Class::Immutable::CustomTrait',</td></tr>
2133<tr><td class="h"><a name="1342"></a>1342</td><td></td><td></td><td></td><td></td><td class="s"> $trait, 'ForMetaClass', ref($self);</td></tr>
2134<tr><td class="h"><a name="1343"></a>1343</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2135<tr><td class="h"><a name="1344"></a>1344</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2136<tr><td class="h"><a name="1345"></a>1345</td><td class="c3">164</td><td class="c0"><span title="Avg 10&micro;s">1.58ms</span></td><td class="c3">164</td><td class="c3">684&micro;s</td><td class="s"> return $class_name<div class="calls"><div class="calls_out"> # spent 684&micro;s making 164 calls to <a href="Class-Load-XS-pm-78-line.html#Class__Load__XS__is_class_loaded">Class::Load::XS::is_class_loaded</a>, avg 4&micro;s/call</div></div></td></tr>
2137<tr><td class="h"><a name="1346"></a>1346</td><td></td><td></td><td></td><td></td><td class="s"> if is_class_loaded($class_name);</td></tr>
2138<tr><td class="h"><a name="1347"></a>1347</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2139<tr><td class="h"><a name="1348"></a>1348</td><td></td><td></td><td></td><td></td><td class="s"> # If the metaclass is a subclass of CMOP::Class which has had</td></tr>
2140<tr><td class="h"><a name="1349"></a>1349</td><td></td><td></td><td></td><td></td><td class="s"> # metaclass roles applied (via Moose), then we want to make sure</td></tr>
2141<tr><td class="h"><a name="1350"></a>1350</td><td></td><td></td><td></td><td></td><td class="s"> # that we preserve that anonymous class (see Fey::ORM for an</td></tr>
2142<tr><td class="h"><a name="1351"></a>1351</td><td></td><td></td><td></td><td></td><td class="s"> # example of where this matters).</td></tr>
2143<tr><td class="h"><a name="1352"></a>1352</td><td class="c3">4</td><td class="c3"><span title="Avg 3&micro;s">12&micro;s</span></td><td class="c3">4</td><td class="c3">45&micro;s</td><td class="s"> my $meta_name = $meta-&gt;_real_ref_name;<div class="calls"><div class="calls_out"> # spent 45&micro;s making 4 calls to <a href="Class-MOP-Class-pm-103-line.html#123">Class::MOP::Class::_real_ref_name</a>, avg 11&micro;s/call</div></div></td></tr>
2144<tr><td class="h"><a name="1353"></a>1353</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2145<tr><td class="h"><a name="1354"></a>1354</td><td class="c3">4</td><td class="c3"><span title="Avg 5&micro;s">19&micro;s</span></td><td class="c3">4</td><td class="c1">7.21ms</td><td class="s"> my $immutable_meta = $meta_name-&gt;create(<div class="calls"><div class="calls_out"> # spent 5.26ms making 2 calls to <a href="Moose-Meta-Class-pm-136-line.html#88">Moose::Meta::Class::create</a>, avg 2.63ms/call
2146 # spent 1.94ms making 2 calls to <a href="Class-MOP-Class-pm-103-line.html#419">Class::MOP::Class::create</a>, avg 972&micro;s/call</div></div></td></tr>
2147<tr><td class="h"><a name="1355"></a>1355</td><td></td><td></td><td></td><td></td><td class="s"> $class_name,</td></tr>
2148<tr><td class="h"><a name="1356"></a>1356</td><td></td><td></td><td></td><td></td><td class="s"> superclasses =&gt; [ ref $self ],</td></tr>
2149<tr><td class="h"><a name="1357"></a>1357</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2150<tr><td class="h"><a name="1358"></a>1358</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2151<tr><td class="h"><a name="1359"></a>1359</td><td class="c3">4</td><td class="c3"><span title="Avg 4&micro;s">17&micro;s</span></td><td class="c3">4</td><td class="c0">54.4ms</td><td class="s"> Class::MOP::MiniTrait::apply( $immutable_meta, $trait );<div class="calls"><div class="calls_out"> # spent 54.4ms making 4 calls to <a href="Class-MOP-MiniTrait-pm-118-line.html#14">Class::MOP::MiniTrait::apply</a>, avg 13.6ms/call</div></div></td></tr>
2152<tr><td class="h"><a name="1360"></a>1360</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2153<tr><td class="h"><a name="1361"></a>1361</td><td class="c3">4</td><td class="c3"><span title="Avg 4&micro;s">15&micro;s</span></td><td class="c3">4</td><td class="c3">0s</td><td class="s"> $immutable_meta-&gt;make_immutable(<div class="calls"><div class="calls_out"> # spent 1.66ms making 4 calls to <a href="Class-MOP-Class-pm-103-line.html#1280">Class::MOP::Class::make_immutable</a>, avg 414&micro;s/call, recursion: max depth 1, sum of overlapping time 1.66ms</div></div></td></tr>
2154<tr><td class="h"><a name="1362"></a>1362</td><td></td><td></td><td></td><td></td><td class="s"> inline_constructor =&gt; 0,</td></tr>
2155<tr><td class="h"><a name="1363"></a>1363</td><td></td><td></td><td></td><td></td><td class="s"> inline_accessors =&gt; 0,</td></tr>
2156<tr><td class="h"><a name="1364"></a>1364</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2157<tr><td class="h"><a name="1365"></a>1365</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2158<tr><td class="h"><a name="1366"></a>1366</td><td class="c3">4</td><td class="c3"><span title="Avg 4&micro;s">14&micro;s</span></td><td></td><td></td><td class="s"> return $class_name;</td></tr>
2159<tr><td class="h"><a name="1367"></a>1367</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2160<tr><td class="h"><a name="1368"></a>1368</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2161<tr><td class="h"><a name="1369"></a>1369</td><td></td><td></td><td></td><td></td><td class="s">sub _remove_inlined_code {</td></tr>
2162<tr><td class="h"><a name="1370"></a>1370</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
2163<tr><td class="h"><a name="1371"></a>1371</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2164<tr><td class="h"><a name="1372"></a>1372</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;remove_method( $_-&gt;name ) for $self-&gt;_inlined_methods;</td></tr>
2165<tr><td class="h"><a name="1373"></a>1373</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2166<tr><td class="h"><a name="1374"></a>1374</td><td></td><td></td><td></td><td></td><td class="s"> delete $self-&gt;{__immutable}{inlined_methods};</td></tr>
2167<tr><td class="h"><a name="1375"></a>1375</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2168<tr><td class="h"><a name="1376"></a>1376</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2169<tr><td class="h"><a name="1377"></a>1377</td><td></td><td></td><td></td><td></td><td class="s">sub _inlined_methods { @{ $_[0]{__immutable}{inlined_methods} || [] } }</td></tr>
2170<tr><td class="h"><a name="1378"></a>1378</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2171<tr><td class="h"><a name="1379"></a>1379</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 871&micro;s within Class::MOP::Class::_add_inlined_method which was called 235 times, avg 4&micro;s/call:
2172# 133 times (597&micro;s+0s) by Class::MOP::Class::_inline_constructor at <a href="Class-MOP-Class-pm-103-line.html#1453">line 1453</a>, avg 4&micro;s/call
2173# 102 times (274&micro;s+0s) by Class::MOP::Class::_inline_destructor at <a href="Class-MOP-Class-pm-103-line.html#1491">line 1491</a>, avg 3&micro;s/call</div></div>sub _add_inlined_method {</td></tr>
2174<tr><td class="h"><a name="1380"></a>1380</td><td class="c2">235</td><td class="c3"><span title="Avg 604ns">142&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, $method ) = @_;</td></tr>
2175<tr><td class="h"><a name="1381"></a>1381</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2176<tr><td class="h"><a name="1382"></a>1382</td><td class="c2">235</td><td class="c0"><span title="Avg 4&micro;s">878&micro;s</span></td><td></td><td></td><td class="s"> push @{ $self-&gt;{__immutable}{inlined_methods} ||= [] }, $method;</td></tr>
2177<tr><td class="h"><a name="1383"></a>1383</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2178<tr><td class="h"><a name="1384"></a>1384</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2179<tr><td class="h"><a name="1385"></a>1385</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 746ms (2.46+744) within Class::MOP::Class::_initialize_immutable which was called 164 times, avg 4.55ms/call:
2180# 164 times (2.46ms+744ms) by Class::MOP::Class::make_immutable at <a href="Class-MOP-Class-pm-103-line.html#1287">line 1287</a>, avg 4.55ms/call</div></div>sub _initialize_immutable {</td></tr>
2181<tr><td class="h"><a name="1386"></a>1386</td><td class="c3">164</td><td class="c0"><span title="Avg 6&micro;s">1.04ms</span></td><td></td><td></td><td class="s"> my ( $self, %args ) = @_;</td></tr>
2182<tr><td class="h"><a name="1387"></a>1387</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2183<tr><td class="h"><a name="1388"></a>1388</td><td class="c3">164</td><td class="c3"><span title="Avg 2&micro;s">298&micro;s</span></td><td></td><td></td><td class="s"> $self-&gt;{__immutable}{options} = \%args;</td></tr>
2184<tr><td class="h"><a name="1389"></a>1389</td><td class="c3">164</td><td class="c0"><span title="Avg 6&micro;s">1.02ms</span></td><td class="c3">164</td><td class="c0">744ms</td><td class="s"> $self-&gt;_install_inlined_code(%args);<div class="calls"><div class="calls_out"> # spent 744ms making 164 calls to <a href="Class-MOP-Class-pm-103-line.html#1392">Class::MOP::Class::_install_inlined_code</a>, avg 4.54ms/call</div></div></td></tr>
2185<tr><td class="h"><a name="1390"></a>1390</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2186<tr><td class="h"><a name="1391"></a>1391</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2187<tr><td class="h"><a name="1392"></a>1392</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 744ms (2.53+741) within Class::MOP::Class::_install_inlined_code which was called 164 times, avg 4.54ms/call:
2188# 164 times (2.53ms+741ms) by Class::MOP::Class::_initialize_immutable at <a href="Class-MOP-Class-pm-103-line.html#1389">line 1389</a>, avg 4.54ms/call</div></div>sub _install_inlined_code {</td></tr>
2189<tr><td class="h"><a name="1393"></a>1393</td><td class="c3">164</td><td class="c1"><span title="Avg 3&micro;s">475&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, %args ) = @_;</td></tr>
2190<tr><td class="h"><a name="1394"></a>1394</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2191<tr><td class="h"><a name="1395"></a>1395</td><td></td><td></td><td></td><td></td><td class="s"> # FIXME</td></tr>
2192<tr><td class="h"><a name="1396"></a>1396</td><td class="c3">164</td><td class="c3"><span title="Avg 1&micro;s">171&micro;s</span></td><td class="c3">33</td><td class="c0">51.1ms</td><td class="s"> $self-&gt;_inline_accessors(%args) if $args{inline_accessors};<div class="calls"><div class="calls_out"> # spent 51.1ms making 33 calls to <a href="Class-MOP-Class-pm-103-line.html#1409">Class::MOP::Class::_inline_accessors</a>, avg 1.55ms/call</div></div></td></tr>
2193<tr><td class="h"><a name="1397"></a>1397</td><td class="c3">164</td><td class="c1"><span title="Avg 4&micro;s">618&micro;s</span></td><td class="c3">133</td><td class="c0">603ms</td><td class="s"> $self-&gt;_inline_constructor(%args) if $args{inline_constructor};<div class="calls"><div class="calls_out"> # spent 603ms making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#1417">Class::MOP::Class::_inline_constructor</a>, avg 4.54ms/call</div></div></td></tr>
2194<tr><td class="h"><a name="1398"></a>1398</td><td class="c3">164</td><td class="c0"><span title="Avg 7&micro;s">1.11ms</span></td><td class="c3">111</td><td class="c0">87.2ms</td><td class="s"> $self-&gt;_inline_destructor(%args) if $args{inline_destructor};<div class="calls"><div class="calls_out"> # spent 87.2ms making 111 calls to <a href="Class-MOP-Class-pm-103-line.html#1457">Class::MOP::Class::_inline_destructor</a>, avg 785&micro;s/call</div></div></td></tr>
2195<tr><td class="h"><a name="1399"></a>1399</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2196<tr><td class="h"><a name="1400"></a>1400</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2197<tr><td class="h"><a name="1401"></a>1401</td><td></td><td></td><td></td><td></td><td class="s">sub _rebless_as_mutable {</td></tr>
2198<tr><td class="h"><a name="1402"></a>1402</td><td></td><td></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
2199<tr><td class="h"><a name="1403"></a>1403</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2200<tr><td class="h"><a name="1404"></a>1404</td><td></td><td></td><td></td><td></td><td class="s"> bless $self, $self-&gt;_get_mutable_metaclass_name;</td></tr>
2201<tr><td class="h"><a name="1405"></a>1405</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2202<tr><td class="h"><a name="1406"></a>1406</td><td></td><td></td><td></td><td></td><td class="s"> return $self;</td></tr>
2203<tr><td class="h"><a name="1407"></a>1407</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2204<tr><td class="h"><a name="1408"></a>1408</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2205<tr><td class="h"><a name="1409"></a>1409</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 51.1ms (604&micro;s+50.5) within Class::MOP::Class::_inline_accessors which was called 33 times, avg 1.55ms/call:
2206# 33 times (604&micro;s+50.5ms) by Class::MOP::Class::_install_inlined_code at <a href="Class-MOP-Class-pm-103-line.html#1396">line 1396</a>, avg 1.55ms/call</div></div>sub _inline_accessors {</td></tr>
2207<tr><td class="h"><a name="1410"></a>1410</td><td class="c3">33</td><td class="c3"><span title="Avg 230ns">8&micro;s</span></td><td></td><td></td><td class="s"> my $self = shift;</td></tr>
2208<tr><td class="h"><a name="1411"></a>1411</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2209<tr><td class="h"><a name="1412"></a>1412</td><td class="c3">33</td><td class="c3"><span title="Avg 4&micro;s">143&micro;s</span></td><td class="c3">33</td><td class="c3">175&micro;s</td><td class="s"> foreach my $attr_name ( $self-&gt;get_attribute_list ) {<div class="calls"><div class="calls_out"> # spent 175&micro;s making 33 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#82">Class::MOP::Mixin::HasAttributes::get_attribute_list</a>, avg 5&micro;s/call</div></div></td></tr>
2210<tr><td class="h"><a name="1413"></a>1413</td><td class="c3">76</td><td class="c3"><span title="Avg 3&micro;s">255&micro;s</span></td><td class="c3">152</td><td class="c0">50.3ms</td><td class="s"> $self-&gt;get_attribute($attr_name)-&gt;install_accessors(1);<div class="calls"><div class="calls_out"> # spent 47.3ms making 75 calls to <a href="Class-MOP-Attribute-pm-130-line.html#419">Class::MOP::Attribute::install_accessors</a>, avg 630&micro;s/call
2211 # spent 2.54ms making 1 call to <a href="Moose-Meta-Attribute-pm-164-line.html#1011">Moose::Meta::Attribute::install_accessors</a>
2212 # spent 467&micro;s making 76 calls to <a href="Class-MOP-Mixin-HasAttributes-pm-89-line.html#59">Class::MOP::Mixin::HasAttributes::get_attribute</a>, avg 6&micro;s/call</div></div></td></tr>
2213<tr><td class="h"><a name="1414"></a>1414</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2214<tr><td class="h"><a name="1415"></a>1415</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2215<tr><td class="h"><a name="1416"></a>1416</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2216<tr><td class="h"><a name="1417"></a>1417</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 603ms (4.77+598) within Class::MOP::Class::_inline_constructor which was called 133 times, avg 4.54ms/call:
2217# 133 times (4.77ms+598ms) by Class::MOP::Class::_install_inlined_code at <a href="Class-MOP-Class-pm-103-line.html#1397">line 1397</a>, avg 4.54ms/call</div></div>sub _inline_constructor {</td></tr>
2218<tr><td class="h"><a name="1418"></a>1418</td><td class="c3">133</td><td class="c1"><span title="Avg 4&micro;s">517&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, %args ) = @_;</td></tr>
2219<tr><td class="h"><a name="1419"></a>1419</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2220<tr><td class="h"><a name="1420"></a>1420</td><td class="c3">133</td><td class="c3"><span title="Avg 556ns">74&micro;s</span></td><td></td><td></td><td class="s"> my $name = $args{constructor_name};</td></tr>
2221<tr><td class="h"><a name="1421"></a>1421</td><td></td><td></td><td></td><td></td><td class="s"> # A class may not even have a constructor, and that's okay.</td></tr>
2222<tr><td class="h"><a name="1422"></a>1422</td><td class="c3">133</td><td class="c3"><span title="Avg 248ns">33&micro;s</span></td><td></td><td></td><td class="s"> return unless defined $name;</td></tr>
2223<tr><td class="h"><a name="1423"></a>1423</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2224<tr><td class="h"><a name="1424"></a>1424</td><td class="c3">133</td><td class="c3"><span title="Avg 2&micro;s">224&micro;s</span></td><td class="c3">133</td><td class="c2">4.69ms</td><td class="s"> if ( $self-&gt;has_method($name) &amp;&amp; !$args{replace_constructor} ) {<div class="calls"><div class="calls_out"> # spent 4.69ms making 133 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#101">Class::MOP::Mixin::HasMethods::has_method</a>, avg 35&micro;s/call</div></div></td></tr>
2225<tr><td class="h"><a name="1425"></a>1425</td><td></td><td></td><td></td><td></td><td class="s"> my $class = $self-&gt;name;</td></tr>
2226<tr><td class="h"><a name="1426"></a>1426</td><td></td><td></td><td></td><td></td><td class="s"> warn &quot;Not inlining a constructor for $class since it defines&quot;</td></tr>
2227<tr><td class="h"><a name="1427"></a>1427</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; its own constructor.\n&quot;</td></tr>
2228<tr><td class="h"><a name="1428"></a>1428</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;If you are certain you don't need to inline your&quot;</td></tr>
2229<tr><td class="h"><a name="1429"></a>1429</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; constructor, specify inline_constructor =&gt; 0 in your&quot;</td></tr>
2230<tr><td class="h"><a name="1430"></a>1430</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; call to $class-&gt;meta-&gt;make_immutable\n&quot;;</td></tr>
2231<tr><td class="h"><a name="1431"></a>1431</td><td></td><td></td><td></td><td></td><td class="s"> return;</td></tr>
2232<tr><td class="h"><a name="1432"></a>1432</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2233<tr><td class="h"><a name="1433"></a>1433</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2234<tr><td class="h"><a name="1434"></a>1434</td><td class="c3">133</td><td class="c3"><span title="Avg 550ns">73&micro;s</span></td><td></td><td></td><td class="s"> my $constructor_class = $args{constructor_class};</td></tr>
2235<tr><td class="h"><a name="1435"></a>1435</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2236<tr><td class="h"><a name="1436"></a>1436</td><td class="c3">133</td><td class="c3"><span title="Avg 2&micro;s">268&micro;s</span></td><td class="c3">133</td><td class="c3">2.26ms</td><td class="s"> load_class($constructor_class);<div class="calls"><div class="calls_out"> # spent 4.74ms making 133 calls to <a href="Class-Load-pm-67-line.html#34">Class::Load::load_class</a>, avg 36&micro;s/call, recursion: max depth 4, sum of overlapping time 2.48ms</div></div></td></tr>
2237<tr><td class="h"><a name="1437"></a>1437</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2238<tr><td class="h"><a name="1438"></a>1438</td><td class="c3">133</td><td class="c0"><span title="Avg 12&micro;s">1.64ms</span></td><td class="c1">399</td><td class="c0">558ms</td><td class="s"> my $constructor = $constructor_class-&gt;new(<div class="calls"><div class="calls_out"> # spent 501ms making 103 calls to <a href="Moose-Meta-Method-Constructor-pm-149-line.html#21">Moose::Meta::Method::Constructor::new</a>, avg 4.87ms/call
2239 # spent 56.0ms making 30 calls to <a href="Class-MOP-Method-Constructor-pm-114-line.html#19">Class::MOP::Method::Constructor::new</a>, avg 1.87ms/call
2240 # spent 214&micro;s making 266 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 803ns/call</div></div></td></tr>
2241<tr><td class="h"><a name="1439"></a>1439</td><td></td><td></td><td></td><td></td><td class="s"> options =&gt; \%args,</td></tr>
2242<tr><td class="h"><a name="1440"></a>1440</td><td></td><td></td><td></td><td></td><td class="s"> metaclass =&gt; $self,</td></tr>
2243<tr><td class="h"><a name="1441"></a>1441</td><td></td><td></td><td></td><td></td><td class="s"> is_inline =&gt; 1,</td></tr>
2244<tr><td class="h"><a name="1442"></a>1442</td><td></td><td></td><td></td><td></td><td class="s"> package_name =&gt; $self-&gt;name,</td></tr>
2245<tr><td class="h"><a name="1443"></a>1443</td><td></td><td></td><td></td><td></td><td class="s"> name =&gt; $name,</td></tr>
2246<tr><td class="h"><a name="1444"></a>1444</td><td></td><td></td><td></td><td></td><td class="s"> definition_context =&gt; {</td></tr>
2247<tr><td class="h"><a name="1445"></a>1445</td><td></td><td></td><td></td><td></td><td class="s"> description =&gt; &quot;constructor &quot; . $self-&gt;name . &quot;::&quot; . $name,</td></tr>
2248<tr><td class="h"><a name="1446"></a>1446</td><td></td><td></td><td></td><td></td><td class="s"> file =&gt; $args{file},</td></tr>
2249<tr><td class="h"><a name="1447"></a>1447</td><td></td><td></td><td></td><td></td><td class="s"> line =&gt; $args{line},</td></tr>
2250<tr><td class="h"><a name="1448"></a>1448</td><td></td><td></td><td></td><td></td><td class="s"> },</td></tr>
2251<tr><td class="h"><a name="1449"></a>1449</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2252<tr><td class="h"><a name="1450"></a>1450</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2253<tr><td class="h"><a name="1451"></a>1451</td><td class="c3">133</td><td class="c0"><span title="Avg 6&micro;s">824&micro;s</span></td><td class="c3">132</td><td class="c0">19.6ms</td><td class="s"> if ( $args{replace_constructor} or $constructor-&gt;can_be_inlined ) {<div class="calls"><div class="calls_out"> # spent 19.6ms making 132 calls to <a href="Class-MOP-Method-Inlined-pm-116-line.html#32">Class::MOP::Method::Inlined::can_be_inlined</a>, avg 148&micro;s/call</div></div></td></tr>
2254<tr><td class="h"><a name="1452"></a>1452</td><td class="c3">133</td><td class="c3"><span title="Avg 2&micro;s">256&micro;s</span></td><td class="c3">133</td><td class="c0">11.2ms</td><td class="s"> $self-&gt;add_method( $name =&gt; $constructor );<div class="calls"><div class="calls_out"> # spent 11.2ms making 133 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#54">Class::MOP::Mixin::HasMethods::add_method</a>, avg 84&micro;s/call</div></div></td></tr>
2255<tr><td class="h"><a name="1453"></a>1453</td><td class="c3">133</td><td class="c2"><span title="Avg 2&micro;s">318&micro;s</span></td><td class="c3">133</td><td class="c3">597&micro;s</td><td class="s"> $self-&gt;_add_inlined_method($constructor);<div class="calls"><div class="calls_out"> # spent 597&micro;s making 133 calls to <a href="Class-MOP-Class-pm-103-line.html#1379">Class::MOP::Class::_add_inlined_method</a>, avg 4&micro;s/call</div></div></td></tr>
2256<tr><td class="h"><a name="1454"></a>1454</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2257<tr><td class="h"><a name="1455"></a>1455</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2258<tr><td class="h"><a name="1456"></a>1456</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2259<tr><td class="h"><a name="1457"></a>1457</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 87.2ms (4.23+83.0) within Class::MOP::Class::_inline_destructor which was called 111 times, avg 785&micro;s/call:
2260# 111 times (4.23ms+83.0ms) by Class::MOP::Class::_install_inlined_code at <a href="Class-MOP-Class-pm-103-line.html#1398">line 1398</a>, avg 785&micro;s/call</div></div>sub _inline_destructor {</td></tr>
2261<tr><td class="h"><a name="1458"></a>1458</td><td class="c3">111</td><td class="c1"><span title="Avg 5&micro;s">583&micro;s</span></td><td></td><td></td><td class="s"> my ( $self, %args ) = @_;</td></tr>
2262<tr><td class="h"><a name="1459"></a>1459</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2263<tr><td class="h"><a name="1460"></a>1460</td><td class="c3">111</td><td class="c3"><span title="Avg 1&micro;s">118&micro;s</span></td><td></td><td></td><td class="s"> ( exists $args{destructor_class} &amp;&amp; defined $args{destructor_class} )</td></tr>
2264<tr><td class="h"><a name="1461"></a>1461</td><td></td><td></td><td></td><td></td><td class="s"> || confess &quot;The 'inline_destructor' option is present, but &quot;</td></tr>
2265<tr><td class="h"><a name="1462"></a>1462</td><td></td><td></td><td></td><td></td><td class="s"> . &quot;no destructor class was specified&quot;;</td></tr>
2266<tr><td class="h"><a name="1463"></a>1463</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2267<tr><td class="h"><a name="1464"></a>1464</td><td class="c3">111</td><td class="c3"><span title="Avg 2&micro;s">206&micro;s</span></td><td class="c3">111</td><td class="c3">2.97ms</td><td class="s"> if ( $self-&gt;has_method('DESTROY') &amp;&amp; ! $args{replace_destructor} ) {<div class="calls"><div class="calls_out"> # spent 2.97ms making 111 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#101">Class::MOP::Mixin::HasMethods::has_method</a>, avg 27&micro;s/call</div></div></td></tr>
2268<tr><td class="h"><a name="1465"></a>1465</td><td></td><td></td><td></td><td></td><td class="s"> my $class = $self-&gt;name;</td></tr>
2269<tr><td class="h"><a name="1466"></a>1466</td><td></td><td></td><td></td><td></td><td class="s"> warn &quot;Not inlining a destructor for $class since it defines&quot;</td></tr>
2270<tr><td class="h"><a name="1467"></a>1467</td><td></td><td></td><td></td><td></td><td class="s"> . &quot; its own destructor.\n&quot;;</td></tr>
2271<tr><td class="h"><a name="1468"></a>1468</td><td></td><td></td><td></td><td></td><td class="s"> return;</td></tr>
2272<tr><td class="h"><a name="1469"></a>1469</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2273<tr><td class="h"><a name="1470"></a>1470</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2274<tr><td class="h"><a name="1471"></a>1471</td><td class="c3">111</td><td class="c3"><span title="Avg 581ns">64&micro;s</span></td><td></td><td></td><td class="s"> my $destructor_class = $args{destructor_class};</td></tr>
2275<tr><td class="h"><a name="1472"></a>1472</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2276<tr><td class="h"><a name="1473"></a>1473</td><td class="c3">111</td><td class="c3"><span title="Avg 2&micro;s">227&micro;s</span></td><td class="c3">111</td><td class="c3">1.40ms</td><td class="s"> load_class($destructor_class);<div class="calls"><div class="calls_out"> # spent 3.88ms making 111 calls to <a href="Class-Load-pm-67-line.html#34">Class::Load::load_class</a>, avg 35&micro;s/call, recursion: max depth 4, sum of overlapping time 2.47ms</div></div></td></tr>
2277<tr><td class="h"><a name="1474"></a>1474</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2278<tr><td class="h"><a name="1475"></a>1475</td><td class="c3">111</td><td class="c2"><span title="Avg 4&micro;s">402&micro;s</span></td><td class="c3">111</td><td class="c0">12.5ms</td><td class="s"> return unless $destructor_class-&gt;is_needed($self);<div class="calls"><div class="calls_out"> # spent 12.5ms making 111 calls to <a href="Moose-Meta-Method-Destructor-pm-152-line.html#57">Moose::Meta::Method::Destructor::is_needed</a>, avg 113&micro;s/call</div></div></td></tr>
2279<tr><td class="h"><a name="1476"></a>1476</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2280<tr><td class="h"><a name="1477"></a>1477</td><td class="c3">102</td><td class="c0"><span title="Avg 11&micro;s">1.16ms</span></td><td class="c2">306</td><td class="c0">48.5ms</td><td class="s"> my $destructor = $destructor_class-&gt;new(<div class="calls"><div class="calls_out"> # spent 48.3ms making 102 calls to <a href="Moose-Meta-Method-Destructor-pm-152-line.html#20">Moose::Meta::Method::Destructor::new</a>, avg 474&micro;s/call
2281 # spent 146&micro;s making 204 calls to <a href="Class-MOP-Package-pm-122-line.html#Class__MOP__Package__name">Class::MOP::Package::name</a>, avg 717ns/call</div></div></td></tr>
2282<tr><td class="h"><a name="1478"></a>1478</td><td></td><td></td><td></td><td></td><td class="s"> options =&gt; \%args,</td></tr>
2283<tr><td class="h"><a name="1479"></a>1479</td><td></td><td></td><td></td><td></td><td class="s"> metaclass =&gt; $self,</td></tr>
2284<tr><td class="h"><a name="1480"></a>1480</td><td></td><td></td><td></td><td></td><td class="s"> package_name =&gt; $self-&gt;name,</td></tr>
2285<tr><td class="h"><a name="1481"></a>1481</td><td></td><td></td><td></td><td></td><td class="s"> name =&gt; 'DESTROY',</td></tr>
2286<tr><td class="h"><a name="1482"></a>1482</td><td></td><td></td><td></td><td></td><td class="s"> definition_context =&gt; {</td></tr>
2287<tr><td class="h"><a name="1483"></a>1483</td><td></td><td></td><td></td><td></td><td class="s"> description =&gt; &quot;destructor &quot; . $self-&gt;name . &quot;::DESTROY&quot;,</td></tr>
2288<tr><td class="h"><a name="1484"></a>1484</td><td></td><td></td><td></td><td></td><td class="s"> file =&gt; $args{file},</td></tr>
2289<tr><td class="h"><a name="1485"></a>1485</td><td></td><td></td><td></td><td></td><td class="s"> line =&gt; $args{line},</td></tr>
2290<tr><td class="h"><a name="1486"></a>1486</td><td></td><td></td><td></td><td></td><td class="s"> },</td></tr>
2291<tr><td class="h"><a name="1487"></a>1487</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2292<tr><td class="h"><a name="1488"></a>1488</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2293<tr><td class="h"><a name="1489"></a>1489</td><td class="c3">102</td><td class="c1"><span title="Avg 6&micro;s">569&micro;s</span></td><td class="c3">102</td><td class="c1">7.24ms</td><td class="s"> if ( $args{replace_destructor} or $destructor-&gt;can_be_inlined ) {<div class="calls"><div class="calls_out"> # spent 7.24ms making 102 calls to <a href="Class-MOP-Method-Inlined-pm-116-line.html#32">Class::MOP::Method::Inlined::can_be_inlined</a>, avg 71&micro;s/call</div></div></td></tr>
2294<tr><td class="h"><a name="1490"></a>1490</td><td class="c3">102</td><td class="c3"><span title="Avg 2&micro;s">156&micro;s</span></td><td class="c3">102</td><td class="c1">7.61ms</td><td class="s"> $self-&gt;add_method( 'DESTROY' =&gt; $destructor );<div class="calls"><div class="calls_out"> # spent 7.61ms making 102 calls to <a href="Class-MOP-Mixin-HasMethods-pm-91-line.html#54">Class::MOP::Mixin::HasMethods::add_method</a>, avg 75&micro;s/call</div></div></td></tr>
2295<tr><td class="h"><a name="1491"></a>1491</td><td class="c3">102</td><td class="c3"><span title="Avg 2&micro;s">184&micro;s</span></td><td class="c3">102</td><td class="c3">274&micro;s</td><td class="s"> $self-&gt;_add_inlined_method($destructor);<div class="calls"><div class="calls_out"> # spent 274&micro;s making 102 calls to <a href="Class-MOP-Class-pm-103-line.html#1379">Class::MOP::Class::_add_inlined_method</a>, avg 3&micro;s/call</div></div></td></tr>
2296<tr><td class="h"><a name="1492"></a>1492</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2297<tr><td class="h"><a name="1493"></a>1493</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
2298<tr><td class="h"><a name="1494"></a>1494</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2299<tr><td class="h"><a name="1495"></a>1495</td><td class="c3">1</td><td class="c3"><span title="Avg 10&micro;s">10&micro;s</span></td><td></td><td></td><td class="s">1;</td></tr>
2300<tr><td class="h"><a name="1496"></a>1496</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2301<tr><td class="h"><a name="1497"></a>1497</td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: Class Meta Object</td></tr>
2302<tr><td class="h"><a name="1498"></a>1498</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2303<tr><td class="h"><a name="- -"></a>- -</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2304<tr><td class="h"><a name="1501"></a>1501</td><td></td><td></td><td></td><td></td><td class="s">=pod</td></tr>
2305<tr><td class="h"><a name="1502"></a>1502</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2306<tr><td class="h"><a name="1503"></a>1503</td><td></td><td></td><td></td><td></td><td class="s">=head1 NAME</td></tr>
2307<tr><td class="h"><a name="1504"></a>1504</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2308<tr><td class="h"><a name="1505"></a>1505</td><td></td><td></td><td></td><td></td><td class="s">Class::MOP::Class - Class Meta Object</td></tr>
2309<tr><td class="h"><a name="1506"></a>1506</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2310<tr><td class="h"><a name="1507"></a>1507</td><td></td><td></td><td></td><td></td><td class="s">=head1 VERSION</td></tr>
2311<tr><td class="h"><a name="1508"></a>1508</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2312<tr><td class="h"><a name="1509"></a>1509</td><td></td><td></td><td></td><td></td><td class="s">version 2.0602</td></tr>
2313<tr><td class="h"><a name="1510"></a>1510</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2314<tr><td class="h"><a name="1511"></a>1511</td><td></td><td></td><td></td><td></td><td class="s">=head1 SYNOPSIS</td></tr>
2315<tr><td class="h"><a name="1512"></a>1512</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2316<tr><td class="h"><a name="1513"></a>1513</td><td></td><td></td><td></td><td></td><td class="s"> # assuming that class Foo</td></tr>
2317<tr><td class="h"><a name="1514"></a>1514</td><td></td><td></td><td></td><td></td><td class="s"> # has been defined, you can</td></tr>
2318<tr><td class="h"><a name="1515"></a>1515</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2319<tr><td class="h"><a name="1516"></a>1516</td><td></td><td></td><td></td><td></td><td class="s"> # use this for introspection ...</td></tr>
2320<tr><td class="h"><a name="1517"></a>1517</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2321<tr><td class="h"><a name="1518"></a>1518</td><td></td><td></td><td></td><td></td><td class="s"> # add a method to Foo ...</td></tr>
2322<tr><td class="h"><a name="1519"></a>1519</td><td></td><td></td><td></td><td></td><td class="s"> Foo-&gt;meta-&gt;add_method( 'bar' =&gt; sub {...} )</td></tr>
2323<tr><td class="h"><a name="1520"></a>1520</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2324<tr><td class="h"><a name="1521"></a>1521</td><td></td><td></td><td></td><td></td><td class="s"> # get a list of all the classes searched</td></tr>
2325<tr><td class="h"><a name="1522"></a>1522</td><td></td><td></td><td></td><td></td><td class="s"> # the method dispatcher in the correct order</td></tr>
2326<tr><td class="h"><a name="1523"></a>1523</td><td></td><td></td><td></td><td></td><td class="s"> Foo-&gt;meta-&gt;class_precedence_list()</td></tr>
2327<tr><td class="h"><a name="1524"></a>1524</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2328<tr><td class="h"><a name="1525"></a>1525</td><td></td><td></td><td></td><td></td><td class="s"> # remove a method from Foo</td></tr>
2329<tr><td class="h"><a name="1526"></a>1526</td><td></td><td></td><td></td><td></td><td class="s"> Foo-&gt;meta-&gt;remove_method('bar');</td></tr>
2330<tr><td class="h"><a name="1527"></a>1527</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2331<tr><td class="h"><a name="1528"></a>1528</td><td></td><td></td><td></td><td></td><td class="s"> # or use this to actually create classes ...</td></tr>
2332<tr><td class="h"><a name="1529"></a>1529</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2333<tr><td class="h"><a name="1530"></a>1530</td><td></td><td></td><td></td><td></td><td class="s"> Class::MOP::Class-&gt;create(</td></tr>
2334<tr><td class="h"><a name="1531"></a>1531</td><td></td><td></td><td></td><td></td><td class="s"> 'Bar' =&gt; (</td></tr>
2335<tr><td class="h"><a name="1532"></a>1532</td><td></td><td></td><td></td><td></td><td class="s"> version =&gt; '0.01',</td></tr>
2336<tr><td class="h"><a name="1533"></a>1533</td><td></td><td></td><td></td><td></td><td class="s"> superclasses =&gt; ['Foo'],</td></tr>
2337<tr><td class="h"><a name="1534"></a>1534</td><td></td><td></td><td></td><td></td><td class="s"> attributes =&gt; [</td></tr>
2338<tr><td class="h"><a name="1535"></a>1535</td><td></td><td></td><td></td><td></td><td class="s"> Class::MOP::Attribute-&gt;new('$bar'),</td></tr>
2339<tr><td class="h"><a name="1536"></a>1536</td><td></td><td></td><td></td><td></td><td class="s"> Class::MOP::Attribute-&gt;new('$baz'),</td></tr>
2340<tr><td class="h"><a name="1537"></a>1537</td><td></td><td></td><td></td><td></td><td class="s"> ],</td></tr>
2341<tr><td class="h"><a name="1538"></a>1538</td><td></td><td></td><td></td><td></td><td class="s"> methods =&gt; {</td></tr>
2342<tr><td class="h"><a name="1539"></a>1539</td><td></td><td></td><td></td><td></td><td class="s"> calculate_bar =&gt; sub {...},</td></tr>
2343<tr><td class="h"><a name="1540"></a>1540</td><td></td><td></td><td></td><td></td><td class="s"> construct_baz =&gt; sub {...}</td></tr>
2344<tr><td class="h"><a name="1541"></a>1541</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2345<tr><td class="h"><a name="1542"></a>1542</td><td></td><td></td><td></td><td></td><td class="s"> )</td></tr>
2346<tr><td class="h"><a name="1543"></a>1543</td><td></td><td></td><td></td><td></td><td class="s"> );</td></tr>
2347<tr><td class="h"><a name="1544"></a>1544</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2348<tr><td class="h"><a name="1545"></a>1545</td><td></td><td></td><td></td><td></td><td class="s">=head1 DESCRIPTION</td></tr>
2349<tr><td class="h"><a name="1546"></a>1546</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2350<tr><td class="h"><a name="1547"></a>1547</td><td></td><td></td><td></td><td></td><td class="s">The Class Protocol is the largest and most complex part of the</td></tr>
2351<tr><td class="h"><a name="1548"></a>1548</td><td></td><td></td><td></td><td></td><td class="s">Class::MOP meta-object protocol. It controls the introspection and</td></tr>
2352<tr><td class="h"><a name="1549"></a>1549</td><td></td><td></td><td></td><td></td><td class="s">manipulation of Perl 5 classes, and it can create them as well. The</td></tr>
2353<tr><td class="h"><a name="1550"></a>1550</td><td></td><td></td><td></td><td></td><td class="s">best way to understand what this module can do is to read the</td></tr>
2354<tr><td class="h"><a name="1551"></a>1551</td><td></td><td></td><td></td><td></td><td class="s">documentation for each of its methods.</td></tr>
2355<tr><td class="h"><a name="1552"></a>1552</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2356<tr><td class="h"><a name="1553"></a>1553</td><td></td><td></td><td></td><td></td><td class="s">=head1 INHERITANCE</td></tr>
2357<tr><td class="h"><a name="1554"></a>1554</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2358<tr><td class="h"><a name="1555"></a>1555</td><td></td><td></td><td></td><td></td><td class="s">C&lt;Class::MOP::Class&gt; is a subclass of L&lt;Class::MOP::Module&gt;.</td></tr>
2359<tr><td class="h"><a name="1556"></a>1556</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2360<tr><td class="h"><a name="1557"></a>1557</td><td></td><td></td><td></td><td></td><td class="s">=head1 METHODS</td></tr>
2361<tr><td class="h"><a name="1558"></a>1558</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2362<tr><td class="h"><a name="1559"></a>1559</td><td></td><td></td><td></td><td></td><td class="s">=head2 Class construction</td></tr>
2363<tr><td class="h"><a name="1560"></a>1560</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2364<tr><td class="h"><a name="1561"></a>1561</td><td></td><td></td><td></td><td></td><td class="s">These methods all create new C&lt;Class::MOP::Class&gt; objects. These</td></tr>
2365<tr><td class="h"><a name="1562"></a>1562</td><td></td><td></td><td></td><td></td><td class="s">objects can represent existing classes or they can be used to create</td></tr>
2366<tr><td class="h"><a name="1563"></a>1563</td><td></td><td></td><td></td><td></td><td class="s">new classes from scratch.</td></tr>
2367<tr><td class="h"><a name="1564"></a>1564</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2368<tr><td class="h"><a name="1565"></a>1565</td><td></td><td></td><td></td><td></td><td class="s">The metaclass object for a given class is a singleton. If you attempt</td></tr>
2369<tr><td class="h"><a name="1566"></a>1566</td><td></td><td></td><td></td><td></td><td class="s">to create a metaclass for the same class twice, you will just get the</td></tr>
2370<tr><td class="h"><a name="1567"></a>1567</td><td></td><td></td><td></td><td></td><td class="s">existing object.</td></tr>
2371<tr><td class="h"><a name="1568"></a>1568</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2372<tr><td class="h"><a name="1569"></a>1569</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2373<tr><td class="h"><a name="1570"></a>1570</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2374<tr><td class="h"><a name="1571"></a>1571</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; Class::MOP::Class-&gt;create($package_name, %options) &gt;&gt;</td></tr>
2375<tr><td class="h"><a name="1572"></a>1572</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2376<tr><td class="h"><a name="1573"></a>1573</td><td></td><td></td><td></td><td></td><td class="s">This method creates a new C&lt;Class::MOP::Class&gt; object with the given</td></tr>
2377<tr><td class="h"><a name="1574"></a>1574</td><td></td><td></td><td></td><td></td><td class="s">package name. It accepts a number of options:</td></tr>
2378<tr><td class="h"><a name="1575"></a>1575</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2379<tr><td class="h"><a name="1576"></a>1576</td><td></td><td></td><td></td><td></td><td class="s">=over 8</td></tr>
2380<tr><td class="h"><a name="1577"></a>1577</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2381<tr><td class="h"><a name="1578"></a>1578</td><td></td><td></td><td></td><td></td><td class="s">=item * version</td></tr>
2382<tr><td class="h"><a name="1579"></a>1579</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2383<tr><td class="h"><a name="1580"></a>1580</td><td></td><td></td><td></td><td></td><td class="s">An optional version number for the newly created package.</td></tr>
2384<tr><td class="h"><a name="1581"></a>1581</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2385<tr><td class="h"><a name="1582"></a>1582</td><td></td><td></td><td></td><td></td><td class="s">=item * authority</td></tr>
2386<tr><td class="h"><a name="1583"></a>1583</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2387<tr><td class="h"><a name="1584"></a>1584</td><td></td><td></td><td></td><td></td><td class="s">An optional authority for the newly created package.</td></tr>
2388<tr><td class="h"><a name="1585"></a>1585</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2389<tr><td class="h"><a name="1586"></a>1586</td><td></td><td></td><td></td><td></td><td class="s">=item * superclasses</td></tr>
2390<tr><td class="h"><a name="1587"></a>1587</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2391<tr><td class="h"><a name="1588"></a>1588</td><td></td><td></td><td></td><td></td><td class="s">An optional array reference of superclass names.</td></tr>
2392<tr><td class="h"><a name="1589"></a>1589</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2393<tr><td class="h"><a name="1590"></a>1590</td><td></td><td></td><td></td><td></td><td class="s">=item * methods</td></tr>
2394<tr><td class="h"><a name="1591"></a>1591</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2395<tr><td class="h"><a name="1592"></a>1592</td><td></td><td></td><td></td><td></td><td class="s">An optional hash reference of methods for the class. The keys of the</td></tr>
2396<tr><td class="h"><a name="1593"></a>1593</td><td></td><td></td><td></td><td></td><td class="s">hash reference are method names and values are subroutine references.</td></tr>
2397<tr><td class="h"><a name="1594"></a>1594</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2398<tr><td class="h"><a name="1595"></a>1595</td><td></td><td></td><td></td><td></td><td class="s">=item * attributes</td></tr>
2399<tr><td class="h"><a name="1596"></a>1596</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2400<tr><td class="h"><a name="1597"></a>1597</td><td></td><td></td><td></td><td></td><td class="s">An optional array reference of L&lt;Class::MOP::Attribute&gt; objects.</td></tr>
2401<tr><td class="h"><a name="1598"></a>1598</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2402<tr><td class="h"><a name="1599"></a>1599</td><td></td><td></td><td></td><td></td><td class="s">=item * meta_name</td></tr>
2403<tr><td class="h"><a name="1600"></a>1600</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2404<tr><td class="h"><a name="1601"></a>1601</td><td></td><td></td><td></td><td></td><td class="s">Specifies the name to install the C&lt;meta&gt; method for this class under.</td></tr>
2405<tr><td class="h"><a name="1602"></a>1602</td><td></td><td></td><td></td><td></td><td class="s">If it is not passed, C&lt;meta&gt; is assumed, and if C&lt;undef&gt; is explicitly</td></tr>
2406<tr><td class="h"><a name="1603"></a>1603</td><td></td><td></td><td></td><td></td><td class="s">given, no meta method will be installed.</td></tr>
2407<tr><td class="h"><a name="1604"></a>1604</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2408<tr><td class="h"><a name="1605"></a>1605</td><td></td><td></td><td></td><td></td><td class="s">=item * weaken</td></tr>
2409<tr><td class="h"><a name="1606"></a>1606</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2410<tr><td class="h"><a name="1607"></a>1607</td><td></td><td></td><td></td><td></td><td class="s">If true, the metaclass that is stored in the global cache will be a</td></tr>
2411<tr><td class="h"><a name="1608"></a>1608</td><td></td><td></td><td></td><td></td><td class="s">weak reference.</td></tr>
2412<tr><td class="h"><a name="1609"></a>1609</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2413<tr><td class="h"><a name="1610"></a>1610</td><td></td><td></td><td></td><td></td><td class="s">Classes created in this way are destroyed once the metaclass they are</td></tr>
2414<tr><td class="h"><a name="1611"></a>1611</td><td></td><td></td><td></td><td></td><td class="s">attached to goes out of scope, and will be removed from Perl's internal</td></tr>
2415<tr><td class="h"><a name="1612"></a>1612</td><td></td><td></td><td></td><td></td><td class="s">symbol table.</td></tr>
2416<tr><td class="h"><a name="1613"></a>1613</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2417<tr><td class="h"><a name="1614"></a>1614</td><td></td><td></td><td></td><td></td><td class="s">All instances of a class with a weakened metaclass keep a special</td></tr>
2418<tr><td class="h"><a name="1615"></a>1615</td><td></td><td></td><td></td><td></td><td class="s">reference to the metaclass object, which prevents the metaclass from</td></tr>
2419<tr><td class="h"><a name="1616"></a>1616</td><td></td><td></td><td></td><td></td><td class="s">going out of scope while any instances exist.</td></tr>
2420<tr><td class="h"><a name="1617"></a>1617</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2421<tr><td class="h"><a name="1618"></a>1618</td><td></td><td></td><td></td><td></td><td class="s">This only works if the instance is based on a hash reference, however.</td></tr>
2422<tr><td class="h"><a name="1619"></a>1619</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2423<tr><td class="h"><a name="1620"></a>1620</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2424<tr><td class="h"><a name="1621"></a>1621</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2425<tr><td class="h"><a name="1622"></a>1622</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; Class::MOP::Class-&gt;create_anon_class(%options) &gt;&gt;</td></tr>
2426<tr><td class="h"><a name="1623"></a>1623</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2427<tr><td class="h"><a name="1624"></a>1624</td><td></td><td></td><td></td><td></td><td class="s">This method works just like C&lt;&lt; Class::MOP::Class-&gt;create &gt;&gt; but it</td></tr>
2428<tr><td class="h"><a name="1625"></a>1625</td><td></td><td></td><td></td><td></td><td class="s">creates an &quot;anonymous&quot; class. In fact, the class does have a name, but</td></tr>
2429<tr><td class="h"><a name="1626"></a>1626</td><td></td><td></td><td></td><td></td><td class="s">that name is a unique name generated internally by this module.</td></tr>
2430<tr><td class="h"><a name="1627"></a>1627</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2431<tr><td class="h"><a name="1628"></a>1628</td><td></td><td></td><td></td><td></td><td class="s">It accepts the same C&lt;superclasses&gt;, C&lt;methods&gt;, and C&lt;attributes&gt;</td></tr>
2432<tr><td class="h"><a name="1629"></a>1629</td><td></td><td></td><td></td><td></td><td class="s">parameters that C&lt;create&gt; accepts.</td></tr>
2433<tr><td class="h"><a name="1630"></a>1630</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2434<tr><td class="h"><a name="1631"></a>1631</td><td></td><td></td><td></td><td></td><td class="s">Anonymous classes default to C&lt;&lt; weaken =&gt; 1 &gt;&gt;, although this can be</td></tr>
2435<tr><td class="h"><a name="1632"></a>1632</td><td></td><td></td><td></td><td></td><td class="s">overridden.</td></tr>
2436<tr><td class="h"><a name="1633"></a>1633</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2437<tr><td class="h"><a name="1634"></a>1634</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; Class::MOP::Class-&gt;initialize($package_name, %options) &gt;&gt;</td></tr>
2438<tr><td class="h"><a name="1635"></a>1635</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2439<tr><td class="h"><a name="1636"></a>1636</td><td></td><td></td><td></td><td></td><td class="s">This method will initialize a C&lt;Class::MOP::Class&gt; object for the</td></tr>
2440<tr><td class="h"><a name="1637"></a>1637</td><td></td><td></td><td></td><td></td><td class="s">named package. Unlike C&lt;create&gt;, this method I&lt;will not&gt; create a new</td></tr>
2441<tr><td class="h"><a name="1638"></a>1638</td><td></td><td></td><td></td><td></td><td class="s">class.</td></tr>
2442<tr><td class="h"><a name="1639"></a>1639</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2443<tr><td class="h"><a name="1640"></a>1640</td><td></td><td></td><td></td><td></td><td class="s">The purpose of this method is to retrieve a C&lt;Class::MOP::Class&gt;</td></tr>
2444<tr><td class="h"><a name="1641"></a>1641</td><td></td><td></td><td></td><td></td><td class="s">object for introspecting an existing class.</td></tr>
2445<tr><td class="h"><a name="1642"></a>1642</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2446<tr><td class="h"><a name="1643"></a>1643</td><td></td><td></td><td></td><td></td><td class="s">If an existing C&lt;Class::MOP::Class&gt; object exists for the named</td></tr>
2447<tr><td class="h"><a name="1644"></a>1644</td><td></td><td></td><td></td><td></td><td class="s">package, it will be returned, and any options provided will be</td></tr>
2448<tr><td class="h"><a name="1645"></a>1645</td><td></td><td></td><td></td><td></td><td class="s">ignored!</td></tr>
2449<tr><td class="h"><a name="1646"></a>1646</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2450<tr><td class="h"><a name="1647"></a>1647</td><td></td><td></td><td></td><td></td><td class="s">If the object does not yet exist, it will be created.</td></tr>
2451<tr><td class="h"><a name="1648"></a>1648</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2452<tr><td class="h"><a name="1649"></a>1649</td><td></td><td></td><td></td><td></td><td class="s">The valid options that can be passed to this method are</td></tr>
2453<tr><td class="h"><a name="1650"></a>1650</td><td></td><td></td><td></td><td></td><td class="s">C&lt;attribute_metaclass&gt;, C&lt;method_metaclass&gt;,</td></tr>
2454<tr><td class="h"><a name="1651"></a>1651</td><td></td><td></td><td></td><td></td><td class="s">C&lt;wrapped_method_metaclass&gt;, and C&lt;instance_metaclass&gt;. These are all</td></tr>
2455<tr><td class="h"><a name="1652"></a>1652</td><td></td><td></td><td></td><td></td><td class="s">optional, and default to the appropriate class in the C&lt;Class::MOP&gt;</td></tr>
2456<tr><td class="h"><a name="1653"></a>1653</td><td></td><td></td><td></td><td></td><td class="s">distribution.</td></tr>
2457<tr><td class="h"><a name="1654"></a>1654</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2458<tr><td class="h"><a name="1655"></a>1655</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2459<tr><td class="h"><a name="1656"></a>1656</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2460<tr><td class="h"><a name="1657"></a>1657</td><td></td><td></td><td></td><td></td><td class="s">=head2 Object instance construction and cloning</td></tr>
2461<tr><td class="h"><a name="1658"></a>1658</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2462<tr><td class="h"><a name="1659"></a>1659</td><td></td><td></td><td></td><td></td><td class="s">These methods are all related to creating and/or cloning object</td></tr>
2463<tr><td class="h"><a name="1660"></a>1660</td><td></td><td></td><td></td><td></td><td class="s">instances.</td></tr>
2464<tr><td class="h"><a name="1661"></a>1661</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2465<tr><td class="h"><a name="1662"></a>1662</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2466<tr><td class="h"><a name="1663"></a>1663</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2467<tr><td class="h"><a name="1664"></a>1664</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;clone_object($instance, %params) &gt;&gt;</td></tr>
2468<tr><td class="h"><a name="1665"></a>1665</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2469<tr><td class="h"><a name="1666"></a>1666</td><td></td><td></td><td></td><td></td><td class="s">This method clones an existing object instance. Any parameters you</td></tr>
2470<tr><td class="h"><a name="1667"></a>1667</td><td></td><td></td><td></td><td></td><td class="s">provide are will override existing attribute values in the object.</td></tr>
2471<tr><td class="h"><a name="1668"></a>1668</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2472<tr><td class="h"><a name="1669"></a>1669</td><td></td><td></td><td></td><td></td><td class="s">This is a convenience method for cloning an object instance, then</td></tr>
2473<tr><td class="h"><a name="1670"></a>1670</td><td></td><td></td><td></td><td></td><td class="s">blessing it into the appropriate package.</td></tr>
2474<tr><td class="h"><a name="1671"></a>1671</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2475<tr><td class="h"><a name="1672"></a>1672</td><td></td><td></td><td></td><td></td><td class="s">You could implement a clone method in your class, using this method:</td></tr>
2476<tr><td class="h"><a name="1673"></a>1673</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2477<tr><td class="h"><a name="1674"></a>1674</td><td></td><td></td><td></td><td></td><td class="s"> sub clone {</td></tr>
2478<tr><td class="h"><a name="1675"></a>1675</td><td></td><td></td><td></td><td></td><td class="s"> my ($self, %params) = @_;</td></tr>
2479<tr><td class="h"><a name="1676"></a>1676</td><td></td><td></td><td></td><td></td><td class="s"> $self-&gt;meta-&gt;clone_object($self, %params);</td></tr>
2480<tr><td class="h"><a name="1677"></a>1677</td><td></td><td></td><td></td><td></td><td class="s"> }</td></tr>
2481<tr><td class="h"><a name="1678"></a>1678</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2482<tr><td class="h"><a name="1679"></a>1679</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;rebless_instance($instance, %params) &gt;&gt;</td></tr>
2483<tr><td class="h"><a name="1680"></a>1680</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2484<tr><td class="h"><a name="1681"></a>1681</td><td></td><td></td><td></td><td></td><td class="s">This method changes the class of C&lt;$instance&gt; to the metaclass's class.</td></tr>
2485<tr><td class="h"><a name="1682"></a>1682</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2486<tr><td class="h"><a name="1683"></a>1683</td><td></td><td></td><td></td><td></td><td class="s">You can only rebless an instance into a subclass of its current</td></tr>
2487<tr><td class="h"><a name="1684"></a>1684</td><td></td><td></td><td></td><td></td><td class="s">class. If you pass any additional parameters, these will be treated</td></tr>
2488<tr><td class="h"><a name="1685"></a>1685</td><td></td><td></td><td></td><td></td><td class="s">like constructor parameters and used to initialize the object's</td></tr>
2489<tr><td class="h"><a name="1686"></a>1686</td><td></td><td></td><td></td><td></td><td class="s">attributes. Any existing attributes that are already set will be</td></tr>
2490<tr><td class="h"><a name="1687"></a>1687</td><td></td><td></td><td></td><td></td><td class="s">overwritten.</td></tr>
2491<tr><td class="h"><a name="1688"></a>1688</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2492<tr><td class="h"><a name="1689"></a>1689</td><td></td><td></td><td></td><td></td><td class="s">Before reblessing the instance, this method will call</td></tr>
2493<tr><td class="h"><a name="1690"></a>1690</td><td></td><td></td><td></td><td></td><td class="s">C&lt;rebless_instance_away&gt; on the instance's current metaclass. This method</td></tr>
2494<tr><td class="h"><a name="1691"></a>1691</td><td></td><td></td><td></td><td></td><td class="s">will be passed the instance, the new metaclass, and any parameters</td></tr>
2495<tr><td class="h"><a name="1692"></a>1692</td><td></td><td></td><td></td><td></td><td class="s">specified to C&lt;rebless_instance&gt;. By default, C&lt;rebless_instance_away&gt;</td></tr>
2496<tr><td class="h"><a name="1693"></a>1693</td><td></td><td></td><td></td><td></td><td class="s">does nothing; it is merely a hook.</td></tr>
2497<tr><td class="h"><a name="1694"></a>1694</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2498<tr><td class="h"><a name="1695"></a>1695</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;rebless_instance_back($instance) &gt;&gt;</td></tr>
2499<tr><td class="h"><a name="1696"></a>1696</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2500<tr><td class="h"><a name="1697"></a>1697</td><td></td><td></td><td></td><td></td><td class="s">Does the same thing as C&lt;rebless_instance&gt;, except that you can only</td></tr>
2501<tr><td class="h"><a name="1698"></a>1698</td><td></td><td></td><td></td><td></td><td class="s">rebless an instance into one of its superclasses. Any attributes that</td></tr>
2502<tr><td class="h"><a name="1699"></a>1699</td><td></td><td></td><td></td><td></td><td class="s">do not exist in the superclass will be deinitialized.</td></tr>
2503<tr><td class="h"><a name="1700"></a>1700</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2504<tr><td class="h"><a name="1701"></a>1701</td><td></td><td></td><td></td><td></td><td class="s">This is a much more dangerous operation than C&lt;rebless_instance&gt;,</td></tr>
2505<tr><td class="h"><a name="1702"></a>1702</td><td></td><td></td><td></td><td></td><td class="s">especially when multiple inheritance is involved, so use this carefully!</td></tr>
2506<tr><td class="h"><a name="1703"></a>1703</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2507<tr><td class="h"><a name="1704"></a>1704</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;new_object(%params) &gt;&gt;</td></tr>
2508<tr><td class="h"><a name="1705"></a>1705</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2509<tr><td class="h"><a name="1706"></a>1706</td><td></td><td></td><td></td><td></td><td class="s">This method is used to create a new object of the metaclass's</td></tr>
2510<tr><td class="h"><a name="1707"></a>1707</td><td></td><td></td><td></td><td></td><td class="s">class. Any parameters you provide are used to initialize the</td></tr>
2511<tr><td class="h"><a name="1708"></a>1708</td><td></td><td></td><td></td><td></td><td class="s">instance's attributes. A special C&lt;__INSTANCE__&gt; key can be passed to</td></tr>
2512<tr><td class="h"><a name="1709"></a>1709</td><td></td><td></td><td></td><td></td><td class="s">provide an already generated instance, rather than having Class::MOP</td></tr>
2513<tr><td class="h"><a name="1710"></a>1710</td><td></td><td></td><td></td><td></td><td class="s">generate it for you. This is mostly useful for using Class::MOP with</td></tr>
2514<tr><td class="h"><a name="1711"></a>1711</td><td></td><td></td><td></td><td></td><td class="s">foreign classes which generate instances using their own constructors.</td></tr>
2515<tr><td class="h"><a name="1712"></a>1712</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2516<tr><td class="h"><a name="1713"></a>1713</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;instance_metaclass &gt;&gt;</td></tr>
2517<tr><td class="h"><a name="1714"></a>1714</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2518<tr><td class="h"><a name="1715"></a>1715</td><td></td><td></td><td></td><td></td><td class="s">Returns the class name of the instance metaclass. See</td></tr>
2519<tr><td class="h"><a name="1716"></a>1716</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Instance&gt; for more information on the instance</td></tr>
2520<tr><td class="h"><a name="1717"></a>1717</td><td></td><td></td><td></td><td></td><td class="s">metaclass.</td></tr>
2521<tr><td class="h"><a name="1718"></a>1718</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2522<tr><td class="h"><a name="1719"></a>1719</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_meta_instance &gt;&gt;</td></tr>
2523<tr><td class="h"><a name="1720"></a>1720</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2524<tr><td class="h"><a name="1721"></a>1721</td><td></td><td></td><td></td><td></td><td class="s">Returns an instance of the C&lt;instance_metaclass&gt; to be used in the</td></tr>
2525<tr><td class="h"><a name="1722"></a>1722</td><td></td><td></td><td></td><td></td><td class="s">construction of a new instance of the class.</td></tr>
2526<tr><td class="h"><a name="1723"></a>1723</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2527<tr><td class="h"><a name="1724"></a>1724</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2528<tr><td class="h"><a name="1725"></a>1725</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2529<tr><td class="h"><a name="1726"></a>1726</td><td></td><td></td><td></td><td></td><td class="s">=head2 Informational predicates</td></tr>
2530<tr><td class="h"><a name="1727"></a>1727</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2531<tr><td class="h"><a name="1728"></a>1728</td><td></td><td></td><td></td><td></td><td class="s">These are a few predicate methods for asking information about the</td></tr>
2532<tr><td class="h"><a name="1729"></a>1729</td><td></td><td></td><td></td><td></td><td class="s">class itself.</td></tr>
2533<tr><td class="h"><a name="1730"></a>1730</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2534<tr><td class="h"><a name="1731"></a>1731</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2535<tr><td class="h"><a name="1732"></a>1732</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2536<tr><td class="h"><a name="1733"></a>1733</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;is_anon_class &gt;&gt;</td></tr>
2537<tr><td class="h"><a name="1734"></a>1734</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2538<tr><td class="h"><a name="1735"></a>1735</td><td></td><td></td><td></td><td></td><td class="s">This returns true if the class was created by calling C&lt;&lt;</td></tr>
2539<tr><td class="h"><a name="1736"></a>1736</td><td></td><td></td><td></td><td></td><td class="s">Class::MOP::Class-&gt;create_anon_class &gt;&gt;.</td></tr>
2540<tr><td class="h"><a name="1737"></a>1737</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2541<tr><td class="h"><a name="1738"></a>1738</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;is_mutable &gt;&gt;</td></tr>
2542<tr><td class="h"><a name="1739"></a>1739</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2543<tr><td class="h"><a name="1740"></a>1740</td><td></td><td></td><td></td><td></td><td class="s">This returns true if the class is still mutable.</td></tr>
2544<tr><td class="h"><a name="1741"></a>1741</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2545<tr><td class="h"><a name="1742"></a>1742</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;is_immutable &gt;&gt;</td></tr>
2546<tr><td class="h"><a name="1743"></a>1743</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2547<tr><td class="h"><a name="1744"></a>1744</td><td></td><td></td><td></td><td></td><td class="s">This returns true if the class has been made immutable.</td></tr>
2548<tr><td class="h"><a name="1745"></a>1745</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2549<tr><td class="h"><a name="1746"></a>1746</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;is_pristine &gt;&gt;</td></tr>
2550<tr><td class="h"><a name="1747"></a>1747</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2551<tr><td class="h"><a name="1748"></a>1748</td><td></td><td></td><td></td><td></td><td class="s">A class is I&lt;not&gt; pristine if it has non-inherited attributes or if it</td></tr>
2552<tr><td class="h"><a name="1749"></a>1749</td><td></td><td></td><td></td><td></td><td class="s">has any generated methods.</td></tr>
2553<tr><td class="h"><a name="1750"></a>1750</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2554<tr><td class="h"><a name="1751"></a>1751</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2555<tr><td class="h"><a name="1752"></a>1752</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2556<tr><td class="h"><a name="1753"></a>1753</td><td></td><td></td><td></td><td></td><td class="s">=head2 Inheritance Relationships</td></tr>
2557<tr><td class="h"><a name="1754"></a>1754</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2558<tr><td class="h"><a name="1755"></a>1755</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2559<tr><td class="h"><a name="1756"></a>1756</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2560<tr><td class="h"><a name="1757"></a>1757</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;superclasses(@superclasses) &gt;&gt;</td></tr>
2561<tr><td class="h"><a name="1758"></a>1758</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2562<tr><td class="h"><a name="1759"></a>1759</td><td></td><td></td><td></td><td></td><td class="s">This is a read-write accessor which represents the superclass</td></tr>
2563<tr><td class="h"><a name="1760"></a>1760</td><td></td><td></td><td></td><td></td><td class="s">relationships of the metaclass's class.</td></tr>
2564<tr><td class="h"><a name="1761"></a>1761</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2565<tr><td class="h"><a name="1762"></a>1762</td><td></td><td></td><td></td><td></td><td class="s">This is basically sugar around getting and setting C&lt;@ISA&gt;.</td></tr>
2566<tr><td class="h"><a name="1763"></a>1763</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2567<tr><td class="h"><a name="1764"></a>1764</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;class_precedence_list &gt;&gt;</td></tr>
2568<tr><td class="h"><a name="1765"></a>1765</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2569<tr><td class="h"><a name="1766"></a>1766</td><td></td><td></td><td></td><td></td><td class="s">This returns a list of all of the class's ancestor classes. The</td></tr>
2570<tr><td class="h"><a name="1767"></a>1767</td><td></td><td></td><td></td><td></td><td class="s">classes are returned in method dispatch order.</td></tr>
2571<tr><td class="h"><a name="1768"></a>1768</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2572<tr><td class="h"><a name="1769"></a>1769</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;linearized_isa &gt;&gt;</td></tr>
2573<tr><td class="h"><a name="1770"></a>1770</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2574<tr><td class="h"><a name="1771"></a>1771</td><td></td><td></td><td></td><td></td><td class="s">This returns a list based on C&lt;class_precedence_list&gt; but with all</td></tr>
2575<tr><td class="h"><a name="1772"></a>1772</td><td></td><td></td><td></td><td></td><td class="s">duplicates removed.</td></tr>
2576<tr><td class="h"><a name="1773"></a>1773</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2577<tr><td class="h"><a name="1774"></a>1774</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;subclasses &gt;&gt;</td></tr>
2578<tr><td class="h"><a name="1775"></a>1775</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2579<tr><td class="h"><a name="1776"></a>1776</td><td></td><td></td><td></td><td></td><td class="s">This returns a list of all subclasses for this class, even indirect</td></tr>
2580<tr><td class="h"><a name="1777"></a>1777</td><td></td><td></td><td></td><td></td><td class="s">subclasses.</td></tr>
2581<tr><td class="h"><a name="1778"></a>1778</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2582<tr><td class="h"><a name="1779"></a>1779</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;direct_subclasses &gt;&gt;</td></tr>
2583<tr><td class="h"><a name="1780"></a>1780</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2584<tr><td class="h"><a name="1781"></a>1781</td><td></td><td></td><td></td><td></td><td class="s">This returns a list of immediate subclasses for this class, which does not</td></tr>
2585<tr><td class="h"><a name="1782"></a>1782</td><td></td><td></td><td></td><td></td><td class="s">include indirect subclasses.</td></tr>
2586<tr><td class="h"><a name="1783"></a>1783</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2587<tr><td class="h"><a name="1784"></a>1784</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2588<tr><td class="h"><a name="1785"></a>1785</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2589<tr><td class="h"><a name="1786"></a>1786</td><td></td><td></td><td></td><td></td><td class="s">=head2 Method introspection and creation</td></tr>
2590<tr><td class="h"><a name="1787"></a>1787</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2591<tr><td class="h"><a name="1788"></a>1788</td><td></td><td></td><td></td><td></td><td class="s">These methods allow you to introspect a class's methods, as well as</td></tr>
2592<tr><td class="h"><a name="1789"></a>1789</td><td></td><td></td><td></td><td></td><td class="s">add, remove, or change methods.</td></tr>
2593<tr><td class="h"><a name="1790"></a>1790</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2594<tr><td class="h"><a name="1791"></a>1791</td><td></td><td></td><td></td><td></td><td class="s">Determining what is truly a method in a Perl 5 class requires some</td></tr>
2595<tr><td class="h"><a name="1792"></a>1792</td><td></td><td></td><td></td><td></td><td class="s">heuristics (aka guessing).</td></tr>
2596<tr><td class="h"><a name="1793"></a>1793</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2597<tr><td class="h"><a name="1794"></a>1794</td><td></td><td></td><td></td><td></td><td class="s">Methods defined outside the package with a fully qualified name (C&lt;sub</td></tr>
2598<tr><td class="h"><a name="1795"></a>1795</td><td></td><td></td><td></td><td></td><td class="s">Package::name { ... }&gt;) will be included. Similarly, methods named</td></tr>
2599<tr><td class="h"><a name="1796"></a>1796</td><td></td><td></td><td></td><td></td><td class="s">with a fully qualified name using L&lt;Sub::Name&gt; are also included.</td></tr>
2600<tr><td class="h"><a name="1797"></a>1797</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2601<tr><td class="h"><a name="1798"></a>1798</td><td></td><td></td><td></td><td></td><td class="s">However, we attempt to ignore imported functions.</td></tr>
2602<tr><td class="h"><a name="1799"></a>1799</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2603<tr><td class="h"><a name="1800"></a>1800</td><td></td><td></td><td></td><td></td><td class="s">Ultimately, we are using heuristics to determine what truly is a</td></tr>
2604<tr><td class="h"><a name="1801"></a>1801</td><td></td><td></td><td></td><td></td><td class="s">method in a class, and these heuristics may get the wrong answer in</td></tr>
2605<tr><td class="h"><a name="1802"></a>1802</td><td></td><td></td><td></td><td></td><td class="s">some edge cases. However, for most &quot;normal&quot; cases the heuristics work</td></tr>
2606<tr><td class="h"><a name="1803"></a>1803</td><td></td><td></td><td></td><td></td><td class="s">correctly.</td></tr>
2607<tr><td class="h"><a name="1804"></a>1804</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2608<tr><td class="h"><a name="1805"></a>1805</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2609<tr><td class="h"><a name="1806"></a>1806</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2610<tr><td class="h"><a name="1807"></a>1807</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_method($method_name) &gt;&gt;</td></tr>
2611<tr><td class="h"><a name="1808"></a>1808</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2612<tr><td class="h"><a name="1809"></a>1809</td><td></td><td></td><td></td><td></td><td class="s">This will return a L&lt;Class::MOP::Method&gt; for the specified</td></tr>
2613<tr><td class="h"><a name="1810"></a>1810</td><td></td><td></td><td></td><td></td><td class="s">C&lt;$method_name&gt;. If the class does not have the specified method, it</td></tr>
2614<tr><td class="h"><a name="1811"></a>1811</td><td></td><td></td><td></td><td></td><td class="s">returns C&lt;undef&gt;</td></tr>
2615<tr><td class="h"><a name="1812"></a>1812</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2616<tr><td class="h"><a name="1813"></a>1813</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;has_method($method_name) &gt;&gt;</td></tr>
2617<tr><td class="h"><a name="1814"></a>1814</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2618<tr><td class="h"><a name="1815"></a>1815</td><td></td><td></td><td></td><td></td><td class="s">Returns a boolean indicating whether or not the class defines the</td></tr>
2619<tr><td class="h"><a name="1816"></a>1816</td><td></td><td></td><td></td><td></td><td class="s">named method. It does not include methods inherited from parent</td></tr>
2620<tr><td class="h"><a name="1817"></a>1817</td><td></td><td></td><td></td><td></td><td class="s">classes.</td></tr>
2621<tr><td class="h"><a name="1818"></a>1818</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2622<tr><td class="h"><a name="1819"></a>1819</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_method_list &gt;&gt;</td></tr>
2623<tr><td class="h"><a name="1820"></a>1820</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2624<tr><td class="h"><a name="1821"></a>1821</td><td></td><td></td><td></td><td></td><td class="s">This will return a list of method I&lt;names&gt; for all methods defined in</td></tr>
2625<tr><td class="h"><a name="1822"></a>1822</td><td></td><td></td><td></td><td></td><td class="s">this class.</td></tr>
2626<tr><td class="h"><a name="1823"></a>1823</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2627<tr><td class="h"><a name="1824"></a>1824</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_method($method_name, $method) &gt;&gt;</td></tr>
2628<tr><td class="h"><a name="1825"></a>1825</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2629<tr><td class="h"><a name="1826"></a>1826</td><td></td><td></td><td></td><td></td><td class="s">This method takes a method name and a subroutine reference, and adds</td></tr>
2630<tr><td class="h"><a name="1827"></a>1827</td><td></td><td></td><td></td><td></td><td class="s">the method to the class.</td></tr>
2631<tr><td class="h"><a name="1828"></a>1828</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2632<tr><td class="h"><a name="1829"></a>1829</td><td></td><td></td><td></td><td></td><td class="s">The subroutine reference can be a L&lt;Class::MOP::Method&gt;, and you are</td></tr>
2633<tr><td class="h"><a name="1830"></a>1830</td><td></td><td></td><td></td><td></td><td class="s">strongly encouraged to pass a meta method object instead of a code</td></tr>
2634<tr><td class="h"><a name="1831"></a>1831</td><td></td><td></td><td></td><td></td><td class="s">reference. If you do so, that object gets stored as part of the</td></tr>
2635<tr><td class="h"><a name="1832"></a>1832</td><td></td><td></td><td></td><td></td><td class="s">class's method map directly. If not, the meta information will have to</td></tr>
2636<tr><td class="h"><a name="1833"></a>1833</td><td></td><td></td><td></td><td></td><td class="s">be recreated later, and may be incorrect.</td></tr>
2637<tr><td class="h"><a name="1834"></a>1834</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2638<tr><td class="h"><a name="1835"></a>1835</td><td></td><td></td><td></td><td></td><td class="s">If you provide a method object, this method will clone that object if</td></tr>
2639<tr><td class="h"><a name="1836"></a>1836</td><td></td><td></td><td></td><td></td><td class="s">the object's package name does not match the class name. This lets us</td></tr>
2640<tr><td class="h"><a name="1837"></a>1837</td><td></td><td></td><td></td><td></td><td class="s">track the original source of any methods added from other classes</td></tr>
2641<tr><td class="h"><a name="1838"></a>1838</td><td></td><td></td><td></td><td></td><td class="s">(notably Moose roles).</td></tr>
2642<tr><td class="h"><a name="1839"></a>1839</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2643<tr><td class="h"><a name="1840"></a>1840</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;remove_method($method_name) &gt;&gt;</td></tr>
2644<tr><td class="h"><a name="1841"></a>1841</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2645<tr><td class="h"><a name="1842"></a>1842</td><td></td><td></td><td></td><td></td><td class="s">Remove the named method from the class. This method returns the</td></tr>
2646<tr><td class="h"><a name="1843"></a>1843</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Method&gt; object for the method.</td></tr>
2647<tr><td class="h"><a name="1844"></a>1844</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2648<tr><td class="h"><a name="1845"></a>1845</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;method_metaclass &gt;&gt;</td></tr>
2649<tr><td class="h"><a name="1846"></a>1846</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2650<tr><td class="h"><a name="1847"></a>1847</td><td></td><td></td><td></td><td></td><td class="s">Returns the class name of the method metaclass, see</td></tr>
2651<tr><td class="h"><a name="1848"></a>1848</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Method&gt; for more information on the method metaclass.</td></tr>
2652<tr><td class="h"><a name="1849"></a>1849</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2653<tr><td class="h"><a name="1850"></a>1850</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;wrapped_method_metaclass &gt;&gt;</td></tr>
2654<tr><td class="h"><a name="1851"></a>1851</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2655<tr><td class="h"><a name="1852"></a>1852</td><td></td><td></td><td></td><td></td><td class="s">Returns the class name of the wrapped method metaclass, see</td></tr>
2656<tr><td class="h"><a name="1853"></a>1853</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Method::Wrapped&gt; for more information on the wrapped</td></tr>
2657<tr><td class="h"><a name="1854"></a>1854</td><td></td><td></td><td></td><td></td><td class="s">method metaclass.</td></tr>
2658<tr><td class="h"><a name="1855"></a>1855</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2659<tr><td class="h"><a name="1856"></a>1856</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_all_methods &gt;&gt;</td></tr>
2660<tr><td class="h"><a name="1857"></a>1857</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2661<tr><td class="h"><a name="1858"></a>1858</td><td></td><td></td><td></td><td></td><td class="s">This will traverse the inheritance hierarchy and return a list of all</td></tr>
2662<tr><td class="h"><a name="1859"></a>1859</td><td></td><td></td><td></td><td></td><td class="s">the L&lt;Class::MOP::Method&gt; objects for this class and its parents.</td></tr>
2663<tr><td class="h"><a name="1860"></a>1860</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2664<tr><td class="h"><a name="1861"></a>1861</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;find_method_by_name($method_name) &gt;&gt;</td></tr>
2665<tr><td class="h"><a name="1862"></a>1862</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2666<tr><td class="h"><a name="1863"></a>1863</td><td></td><td></td><td></td><td></td><td class="s">This will return a L&lt;Class::MOP::Method&gt; for the specified</td></tr>
2667<tr><td class="h"><a name="1864"></a>1864</td><td></td><td></td><td></td><td></td><td class="s">C&lt;$method_name&gt;. If the class does not have the specified method, it</td></tr>
2668<tr><td class="h"><a name="1865"></a>1865</td><td></td><td></td><td></td><td></td><td class="s">returns C&lt;undef&gt;</td></tr>
2669<tr><td class="h"><a name="1866"></a>1866</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2670<tr><td class="h"><a name="1867"></a>1867</td><td></td><td></td><td></td><td></td><td class="s">Unlike C&lt;get_method&gt;, this method I&lt;will&gt; look for the named method in</td></tr>
2671<tr><td class="h"><a name="1868"></a>1868</td><td></td><td></td><td></td><td></td><td class="s">superclasses.</td></tr>
2672<tr><td class="h"><a name="1869"></a>1869</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2673<tr><td class="h"><a name="1870"></a>1870</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_all_method_names &gt;&gt;</td></tr>
2674<tr><td class="h"><a name="1871"></a>1871</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2675<tr><td class="h"><a name="1872"></a>1872</td><td></td><td></td><td></td><td></td><td class="s">This will return a list of method I&lt;names&gt; for all of this class's</td></tr>
2676<tr><td class="h"><a name="1873"></a>1873</td><td></td><td></td><td></td><td></td><td class="s">methods, including inherited methods.</td></tr>
2677<tr><td class="h"><a name="1874"></a>1874</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2678<tr><td class="h"><a name="1875"></a>1875</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;find_all_methods_by_name($method_name) &gt;&gt;</td></tr>
2679<tr><td class="h"><a name="1876"></a>1876</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2680<tr><td class="h"><a name="1877"></a>1877</td><td></td><td></td><td></td><td></td><td class="s">This method looks for the named method in the class and all of its</td></tr>
2681<tr><td class="h"><a name="1878"></a>1878</td><td></td><td></td><td></td><td></td><td class="s">parents. It returns every matching method it finds in the inheritance</td></tr>
2682<tr><td class="h"><a name="1879"></a>1879</td><td></td><td></td><td></td><td></td><td class="s">tree, so it returns a list of methods.</td></tr>
2683<tr><td class="h"><a name="1880"></a>1880</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2684<tr><td class="h"><a name="1881"></a>1881</td><td></td><td></td><td></td><td></td><td class="s">Each method is returned as a hash reference with three keys. The keys</td></tr>
2685<tr><td class="h"><a name="1882"></a>1882</td><td></td><td></td><td></td><td></td><td class="s">are C&lt;name&gt;, C&lt;class&gt;, and C&lt;code&gt;. The C&lt;code&gt; key has a</td></tr>
2686<tr><td class="h"><a name="1883"></a>1883</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Method&gt; object as its value.</td></tr>
2687<tr><td class="h"><a name="1884"></a>1884</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2688<tr><td class="h"><a name="1885"></a>1885</td><td></td><td></td><td></td><td></td><td class="s">The list of methods is distinct.</td></tr>
2689<tr><td class="h"><a name="1886"></a>1886</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2690<tr><td class="h"><a name="1887"></a>1887</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;find_next_method_by_name($method_name) &gt;&gt;</td></tr>
2691<tr><td class="h"><a name="1888"></a>1888</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2692<tr><td class="h"><a name="1889"></a>1889</td><td></td><td></td><td></td><td></td><td class="s">This method returns the first method in any superclass matching the</td></tr>
2693<tr><td class="h"><a name="1890"></a>1890</td><td></td><td></td><td></td><td></td><td class="s">given name. It is effectively the method that C&lt;SUPER::$method_name&gt;</td></tr>
2694<tr><td class="h"><a name="1891"></a>1891</td><td></td><td></td><td></td><td></td><td class="s">would dispatch to.</td></tr>
2695<tr><td class="h"><a name="1892"></a>1892</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2696<tr><td class="h"><a name="1893"></a>1893</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2697<tr><td class="h"><a name="1894"></a>1894</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2698<tr><td class="h"><a name="1895"></a>1895</td><td></td><td></td><td></td><td></td><td class="s">=head2 Attribute introspection and creation</td></tr>
2699<tr><td class="h"><a name="1896"></a>1896</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2700<tr><td class="h"><a name="1897"></a>1897</td><td></td><td></td><td></td><td></td><td class="s">Because Perl 5 does not have a core concept of attributes in classes,</td></tr>
2701<tr><td class="h"><a name="1898"></a>1898</td><td></td><td></td><td></td><td></td><td class="s">we can only return information about attributes which have been added</td></tr>
2702<tr><td class="h"><a name="1899"></a>1899</td><td></td><td></td><td></td><td></td><td class="s">via this class's methods. We cannot discover information about</td></tr>
2703<tr><td class="h"><a name="1900"></a>1900</td><td></td><td></td><td></td><td></td><td class="s">attributes which are defined in terms of &quot;regular&quot; Perl 5 methods.</td></tr>
2704<tr><td class="h"><a name="1901"></a>1901</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2705<tr><td class="h"><a name="1902"></a>1902</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2706<tr><td class="h"><a name="1903"></a>1903</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2707<tr><td class="h"><a name="1904"></a>1904</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_attribute($attribute_name) &gt;&gt;</td></tr>
2708<tr><td class="h"><a name="1905"></a>1905</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2709<tr><td class="h"><a name="1906"></a>1906</td><td></td><td></td><td></td><td></td><td class="s">This will return a L&lt;Class::MOP::Attribute&gt; for the specified</td></tr>
2710<tr><td class="h"><a name="1907"></a>1907</td><td></td><td></td><td></td><td></td><td class="s">C&lt;$attribute_name&gt;. If the class does not have the specified</td></tr>
2711<tr><td class="h"><a name="1908"></a>1908</td><td></td><td></td><td></td><td></td><td class="s">attribute, it returns C&lt;undef&gt;.</td></tr>
2712<tr><td class="h"><a name="1909"></a>1909</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2713<tr><td class="h"><a name="1910"></a>1910</td><td></td><td></td><td></td><td></td><td class="s">NOTE that get_attribute does not search superclasses, for that you</td></tr>
2714<tr><td class="h"><a name="1911"></a>1911</td><td></td><td></td><td></td><td></td><td class="s">need to use C&lt;find_attribute_by_name&gt;.</td></tr>
2715<tr><td class="h"><a name="1912"></a>1912</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2716<tr><td class="h"><a name="1913"></a>1913</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;has_attribute($attribute_name) &gt;&gt;</td></tr>
2717<tr><td class="h"><a name="1914"></a>1914</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2718<tr><td class="h"><a name="1915"></a>1915</td><td></td><td></td><td></td><td></td><td class="s">Returns a boolean indicating whether or not the class defines the</td></tr>
2719<tr><td class="h"><a name="1916"></a>1916</td><td></td><td></td><td></td><td></td><td class="s">named attribute. It does not include attributes inherited from parent</td></tr>
2720<tr><td class="h"><a name="1917"></a>1917</td><td></td><td></td><td></td><td></td><td class="s">classes.</td></tr>
2721<tr><td class="h"><a name="1918"></a>1918</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2722<tr><td class="h"><a name="1919"></a>1919</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_attribute_list &gt;&gt;</td></tr>
2723<tr><td class="h"><a name="1920"></a>1920</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2724<tr><td class="h"><a name="1921"></a>1921</td><td></td><td></td><td></td><td></td><td class="s">This will return a list of attributes I&lt;names&gt; for all attributes</td></tr>
2725<tr><td class="h"><a name="1922"></a>1922</td><td></td><td></td><td></td><td></td><td class="s">defined in this class. Note that this operates on the current class</td></tr>
2726<tr><td class="h"><a name="1923"></a>1923</td><td></td><td></td><td></td><td></td><td class="s">only, it does not traverse the inheritance hierarchy.</td></tr>
2727<tr><td class="h"><a name="1924"></a>1924</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2728<tr><td class="h"><a name="1925"></a>1925</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_all_attributes &gt;&gt;</td></tr>
2729<tr><td class="h"><a name="1926"></a>1926</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2730<tr><td class="h"><a name="1927"></a>1927</td><td></td><td></td><td></td><td></td><td class="s">This will traverse the inheritance hierarchy and return a list of all</td></tr>
2731<tr><td class="h"><a name="1928"></a>1928</td><td></td><td></td><td></td><td></td><td class="s">the L&lt;Class::MOP::Attribute&gt; objects for this class and its parents.</td></tr>
2732<tr><td class="h"><a name="1929"></a>1929</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2733<tr><td class="h"><a name="1930"></a>1930</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;find_attribute_by_name($attribute_name) &gt;&gt;</td></tr>
2734<tr><td class="h"><a name="1931"></a>1931</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2735<tr><td class="h"><a name="1932"></a>1932</td><td></td><td></td><td></td><td></td><td class="s">This will return a L&lt;Class::MOP::Attribute&gt; for the specified</td></tr>
2736<tr><td class="h"><a name="1933"></a>1933</td><td></td><td></td><td></td><td></td><td class="s">C&lt;$attribute_name&gt;. If the class does not have the specified</td></tr>
2737<tr><td class="h"><a name="1934"></a>1934</td><td></td><td></td><td></td><td></td><td class="s">attribute, it returns C&lt;undef&gt;.</td></tr>
2738<tr><td class="h"><a name="1935"></a>1935</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2739<tr><td class="h"><a name="1936"></a>1936</td><td></td><td></td><td></td><td></td><td class="s">Unlike C&lt;get_attribute&gt;, this attribute I&lt;will&gt; look for the named</td></tr>
2740<tr><td class="h"><a name="1937"></a>1937</td><td></td><td></td><td></td><td></td><td class="s">attribute in superclasses.</td></tr>
2741<tr><td class="h"><a name="1938"></a>1938</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2742<tr><td class="h"><a name="1939"></a>1939</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_attribute(...) &gt;&gt;</td></tr>
2743<tr><td class="h"><a name="1940"></a>1940</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2744<tr><td class="h"><a name="1941"></a>1941</td><td></td><td></td><td></td><td></td><td class="s">This method accepts either an existing L&lt;Class::MOP::Attribute&gt;</td></tr>
2745<tr><td class="h"><a name="1942"></a>1942</td><td></td><td></td><td></td><td></td><td class="s">object or parameters suitable for passing to that class's C&lt;new&gt;</td></tr>
2746<tr><td class="h"><a name="1943"></a>1943</td><td></td><td></td><td></td><td></td><td class="s">method.</td></tr>
2747<tr><td class="h"><a name="1944"></a>1944</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2748<tr><td class="h"><a name="1945"></a>1945</td><td></td><td></td><td></td><td></td><td class="s">The attribute provided will be added to the class.</td></tr>
2749<tr><td class="h"><a name="1946"></a>1946</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2750<tr><td class="h"><a name="1947"></a>1947</td><td></td><td></td><td></td><td></td><td class="s">Any accessor methods defined by the attribute will be added to the</td></tr>
2751<tr><td class="h"><a name="1948"></a>1948</td><td></td><td></td><td></td><td></td><td class="s">class when the attribute is added.</td></tr>
2752<tr><td class="h"><a name="1949"></a>1949</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2753<tr><td class="h"><a name="1950"></a>1950</td><td></td><td></td><td></td><td></td><td class="s">If an attribute of the same name already exists, the old attribute</td></tr>
2754<tr><td class="h"><a name="1951"></a>1951</td><td></td><td></td><td></td><td></td><td class="s">will be removed first.</td></tr>
2755<tr><td class="h"><a name="1952"></a>1952</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2756<tr><td class="h"><a name="1953"></a>1953</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;remove_attribute($attribute_name) &gt;&gt;</td></tr>
2757<tr><td class="h"><a name="1954"></a>1954</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2758<tr><td class="h"><a name="1955"></a>1955</td><td></td><td></td><td></td><td></td><td class="s">This will remove the named attribute from the class, and</td></tr>
2759<tr><td class="h"><a name="1956"></a>1956</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Class::MOP::Attribute&gt; object.</td></tr>
2760<tr><td class="h"><a name="1957"></a>1957</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2761<tr><td class="h"><a name="1958"></a>1958</td><td></td><td></td><td></td><td></td><td class="s">Removing an attribute also removes any accessor methods defined by the</td></tr>
2762<tr><td class="h"><a name="1959"></a>1959</td><td></td><td></td><td></td><td></td><td class="s">attribute.</td></tr>
2763<tr><td class="h"><a name="1960"></a>1960</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2764<tr><td class="h"><a name="1961"></a>1961</td><td></td><td></td><td></td><td></td><td class="s">However, note that removing an attribute will only affect I&lt;future&gt;</td></tr>
2765<tr><td class="h"><a name="1962"></a>1962</td><td></td><td></td><td></td><td></td><td class="s">object instances created for this class, not existing instances.</td></tr>
2766<tr><td class="h"><a name="1963"></a>1963</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2767<tr><td class="h"><a name="1964"></a>1964</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;attribute_metaclass &gt;&gt;</td></tr>
2768<tr><td class="h"><a name="1965"></a>1965</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2769<tr><td class="h"><a name="1966"></a>1966</td><td></td><td></td><td></td><td></td><td class="s">Returns the class name of the attribute metaclass for this class. By</td></tr>
2770<tr><td class="h"><a name="1967"></a>1967</td><td></td><td></td><td></td><td></td><td class="s">default, this is L&lt;Class::MOP::Attribute&gt;.</td></tr>
2771<tr><td class="h"><a name="1968"></a>1968</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2772<tr><td class="h"><a name="1969"></a>1969</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2773<tr><td class="h"><a name="1970"></a>1970</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2774<tr><td class="h"><a name="1971"></a>1971</td><td></td><td></td><td></td><td></td><td class="s">=head2 Overload introspection and creation</td></tr>
2775<tr><td class="h"><a name="1972"></a>1972</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2776<tr><td class="h"><a name="1973"></a>1973</td><td></td><td></td><td></td><td></td><td class="s">These methods provide an API to the core L&lt;overload&gt; functionality.</td></tr>
2777<tr><td class="h"><a name="1974"></a>1974</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2778<tr><td class="h"><a name="1975"></a>1975</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2779<tr><td class="h"><a name="1976"></a>1976</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2780<tr><td class="h"><a name="1977"></a>1977</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;is_overloaded &gt;&gt;</td></tr>
2781<tr><td class="h"><a name="1978"></a>1978</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2782<tr><td class="h"><a name="1979"></a>1979</td><td></td><td></td><td></td><td></td><td class="s">Returns true if overloading is enabled for this class. Corresponds to</td></tr>
2783<tr><td class="h"><a name="1980"></a>1980</td><td></td><td></td><td></td><td></td><td class="s">L&lt;overload::Overloaded|overload/Public Functions&gt;.</td></tr>
2784<tr><td class="h"><a name="1981"></a>1981</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2785<tr><td class="h"><a name="1982"></a>1982</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_overloaded_operator($op) &gt;&gt;</td></tr>
2786<tr><td class="h"><a name="1983"></a>1983</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2787<tr><td class="h"><a name="1984"></a>1984</td><td></td><td></td><td></td><td></td><td class="s">Returns the L&lt;Class::MOP::Method::Overload&gt; object corresponding to the</td></tr>
2788<tr><td class="h"><a name="1985"></a>1985</td><td></td><td></td><td></td><td></td><td class="s">operator named C&lt;$op&gt;, if one exists for this class.</td></tr>
2789<tr><td class="h"><a name="1986"></a>1986</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2790<tr><td class="h"><a name="1987"></a>1987</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;has_overloaded_operator($op) &gt;&gt;</td></tr>
2791<tr><td class="h"><a name="1988"></a>1988</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2792<tr><td class="h"><a name="1989"></a>1989</td><td></td><td></td><td></td><td></td><td class="s">Returns whether or not the operator C&lt;$op&gt; is overloaded for this class.</td></tr>
2793<tr><td class="h"><a name="1990"></a>1990</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2794<tr><td class="h"><a name="1991"></a>1991</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_overload_list &gt;&gt;</td></tr>
2795<tr><td class="h"><a name="1992"></a>1992</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2796<tr><td class="h"><a name="1993"></a>1993</td><td></td><td></td><td></td><td></td><td class="s">Returns a list of operator names which have been overloaded (see</td></tr>
2797<tr><td class="h"><a name="1994"></a>1994</td><td></td><td></td><td></td><td></td><td class="s">L&lt;overload/Overloadable Operations&gt; for the list of valid operator names).</td></tr>
2798<tr><td class="h"><a name="1995"></a>1995</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2799<tr><td class="h"><a name="1996"></a>1996</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;get_all_overloaded_operators &gt;&gt;</td></tr>
2800<tr><td class="h"><a name="1997"></a>1997</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2801<tr><td class="h"><a name="1998"></a>1998</td><td></td><td></td><td></td><td></td><td class="s">Returns a list of L&lt;Class::MOP::Method::Overload&gt; objects corresponding to the</td></tr>
2802<tr><td class="h"><a name="1999"></a>1999</td><td></td><td></td><td></td><td></td><td class="s">operators that have been overloaded.</td></tr>
2803<tr><td class="h"><a name="2000"></a>2000</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2804<tr><td class="h"><a name="2001"></a>2001</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_overloaded_operator($op, $impl) &gt;&gt;</td></tr>
2805<tr><td class="h"><a name="2002"></a>2002</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2806<tr><td class="h"><a name="2003"></a>2003</td><td></td><td></td><td></td><td></td><td class="s">Overloads the operator C&lt;$op&gt; for this class, with the implementation C&lt;$impl&gt;.</td></tr>
2807<tr><td class="h"><a name="2004"></a>2004</td><td></td><td></td><td></td><td></td><td class="s">C&lt;$impl&gt; can be either a coderef or a method name. Corresponds to</td></tr>
2808<tr><td class="h"><a name="2005"></a>2005</td><td></td><td></td><td></td><td></td><td class="s">C&lt;&lt; use overload $op =&gt; $impl; &gt;&gt;</td></tr>
2809<tr><td class="h"><a name="2006"></a>2006</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2810<tr><td class="h"><a name="2007"></a>2007</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;remove_overloaded_operator($op) &gt;&gt;</td></tr>
2811<tr><td class="h"><a name="2008"></a>2008</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2812<tr><td class="h"><a name="2009"></a>2009</td><td></td><td></td><td></td><td></td><td class="s">Remove overloading for operator C&lt;$op&gt;. Corresponds to C&lt;&lt; no overload $op; &gt;&gt;</td></tr>
2813<tr><td class="h"><a name="2010"></a>2010</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2814<tr><td class="h"><a name="2011"></a>2011</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2815<tr><td class="h"><a name="2012"></a>2012</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2816<tr><td class="h"><a name="2013"></a>2013</td><td></td><td></td><td></td><td></td><td class="s">=head2 Class Immutability</td></tr>
2817<tr><td class="h"><a name="2014"></a>2014</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2818<tr><td class="h"><a name="2015"></a>2015</td><td></td><td></td><td></td><td></td><td class="s">Making a class immutable &quot;freezes&quot; the class definition. You can no</td></tr>
2819<tr><td class="h"><a name="2016"></a>2016</td><td></td><td></td><td></td><td></td><td class="s">longer call methods which alter the class, such as adding or removing</td></tr>
2820<tr><td class="h"><a name="2017"></a>2017</td><td></td><td></td><td></td><td></td><td class="s">methods or attributes.</td></tr>
2821<tr><td class="h"><a name="2018"></a>2018</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2822<tr><td class="h"><a name="2019"></a>2019</td><td></td><td></td><td></td><td></td><td class="s">Making a class immutable lets us optimize the class by inlining some</td></tr>
2823<tr><td class="h"><a name="2020"></a>2020</td><td></td><td></td><td></td><td></td><td class="s">methods, and also allows us to optimize some methods on the metaclass</td></tr>
2824<tr><td class="h"><a name="2021"></a>2021</td><td></td><td></td><td></td><td></td><td class="s">object itself.</td></tr>
2825<tr><td class="h"><a name="2022"></a>2022</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2826<tr><td class="h"><a name="2023"></a>2023</td><td></td><td></td><td></td><td></td><td class="s">After immutabilization, the metaclass object will cache most informational</td></tr>
2827<tr><td class="h"><a name="2024"></a>2024</td><td></td><td></td><td></td><td></td><td class="s">methods that returns information about methods or attributes. Methods which</td></tr>
2828<tr><td class="h"><a name="2025"></a>2025</td><td></td><td></td><td></td><td></td><td class="s">would alter the class, such as C&lt;add_attribute&gt; and C&lt;add_method&gt;, will</td></tr>
2829<tr><td class="h"><a name="2026"></a>2026</td><td></td><td></td><td></td><td></td><td class="s">throw an error on an immutable metaclass object.</td></tr>
2830<tr><td class="h"><a name="2027"></a>2027</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2831<tr><td class="h"><a name="2028"></a>2028</td><td></td><td></td><td></td><td></td><td class="s">The immutabilization system in L&lt;Moose&gt; takes much greater advantage</td></tr>
2832<tr><td class="h"><a name="2029"></a>2029</td><td></td><td></td><td></td><td></td><td class="s">of the inlining features than Class::MOP itself does.</td></tr>
2833<tr><td class="h"><a name="2030"></a>2030</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2834<tr><td class="h"><a name="2031"></a>2031</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2835<tr><td class="h"><a name="2032"></a>2032</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2836<tr><td class="h"><a name="2033"></a>2033</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;make_immutable(%options) &gt;&gt;</td></tr>
2837<tr><td class="h"><a name="2034"></a>2034</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2838<tr><td class="h"><a name="2035"></a>2035</td><td></td><td></td><td></td><td></td><td class="s">This method will create an immutable transformer and use it to make</td></tr>
2839<tr><td class="h"><a name="2036"></a>2036</td><td></td><td></td><td></td><td></td><td class="s">the class and its metaclass object immutable, and returns true</td></tr>
2840<tr><td class="h"><a name="2037"></a>2037</td><td></td><td></td><td></td><td></td><td class="s">(you should not rely on the details of this value apart from its truth).</td></tr>
2841<tr><td class="h"><a name="2038"></a>2038</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2842<tr><td class="h"><a name="2039"></a>2039</td><td></td><td></td><td></td><td></td><td class="s">This method accepts the following options:</td></tr>
2843<tr><td class="h"><a name="2040"></a>2040</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2844<tr><td class="h"><a name="2041"></a>2041</td><td></td><td></td><td></td><td></td><td class="s">=over 8</td></tr>
2845<tr><td class="h"><a name="2042"></a>2042</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2846<tr><td class="h"><a name="2043"></a>2043</td><td></td><td></td><td></td><td></td><td class="s">=item * inline_accessors</td></tr>
2847<tr><td class="h"><a name="2044"></a>2044</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2848<tr><td class="h"><a name="2045"></a>2045</td><td></td><td></td><td></td><td></td><td class="s">=item * inline_constructor</td></tr>
2849<tr><td class="h"><a name="2046"></a>2046</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2850<tr><td class="h"><a name="2047"></a>2047</td><td></td><td></td><td></td><td></td><td class="s">=item * inline_destructor</td></tr>
2851<tr><td class="h"><a name="2048"></a>2048</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2852<tr><td class="h"><a name="2049"></a>2049</td><td></td><td></td><td></td><td></td><td class="s">These are all booleans indicating whether the specified method(s)</td></tr>
2853<tr><td class="h"><a name="2050"></a>2050</td><td></td><td></td><td></td><td></td><td class="s">should be inlined.</td></tr>
2854<tr><td class="h"><a name="2051"></a>2051</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2855<tr><td class="h"><a name="2052"></a>2052</td><td></td><td></td><td></td><td></td><td class="s">By default, accessors and the constructor are inlined, but not the</td></tr>
2856<tr><td class="h"><a name="2053"></a>2053</td><td></td><td></td><td></td><td></td><td class="s">destructor.</td></tr>
2857<tr><td class="h"><a name="2054"></a>2054</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2858<tr><td class="h"><a name="2055"></a>2055</td><td></td><td></td><td></td><td></td><td class="s">=item * immutable_trait</td></tr>
2859<tr><td class="h"><a name="2056"></a>2056</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2860<tr><td class="h"><a name="2057"></a>2057</td><td></td><td></td><td></td><td></td><td class="s">The name of a class which will be used as a parent class for the</td></tr>
2861<tr><td class="h"><a name="2058"></a>2058</td><td></td><td></td><td></td><td></td><td class="s">metaclass object being made immutable. This &quot;trait&quot; implements the</td></tr>
2862<tr><td class="h"><a name="2059"></a>2059</td><td></td><td></td><td></td><td></td><td class="s">post-immutability functionality of the metaclass (but not the</td></tr>
2863<tr><td class="h"><a name="2060"></a>2060</td><td></td><td></td><td></td><td></td><td class="s">transformation itself).</td></tr>
2864<tr><td class="h"><a name="2061"></a>2061</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2865<tr><td class="h"><a name="2062"></a>2062</td><td></td><td></td><td></td><td></td><td class="s">This defaults to L&lt;Class::MOP::Class::Immutable::Trait&gt;.</td></tr>
2866<tr><td class="h"><a name="2063"></a>2063</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2867<tr><td class="h"><a name="2064"></a>2064</td><td></td><td></td><td></td><td></td><td class="s">=item * constructor_name</td></tr>
2868<tr><td class="h"><a name="2065"></a>2065</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2869<tr><td class="h"><a name="2066"></a>2066</td><td></td><td></td><td></td><td></td><td class="s">This is the constructor method name. This defaults to &quot;new&quot;.</td></tr>
2870<tr><td class="h"><a name="2067"></a>2067</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2871<tr><td class="h"><a name="2068"></a>2068</td><td></td><td></td><td></td><td></td><td class="s">=item * constructor_class</td></tr>
2872<tr><td class="h"><a name="2069"></a>2069</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2873<tr><td class="h"><a name="2070"></a>2070</td><td></td><td></td><td></td><td></td><td class="s">The name of the method metaclass for constructors. It will be used to</td></tr>
2874<tr><td class="h"><a name="2071"></a>2071</td><td></td><td></td><td></td><td></td><td class="s">generate the inlined constructor. This defaults to</td></tr>
2875<tr><td class="h"><a name="2072"></a>2072</td><td></td><td></td><td></td><td></td><td class="s">&quot;Class::MOP::Method::Constructor&quot;.</td></tr>
2876<tr><td class="h"><a name="2073"></a>2073</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2877<tr><td class="h"><a name="2074"></a>2074</td><td></td><td></td><td></td><td></td><td class="s">=item * replace_constructor</td></tr>
2878<tr><td class="h"><a name="2075"></a>2075</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2879<tr><td class="h"><a name="2076"></a>2076</td><td></td><td></td><td></td><td></td><td class="s">This is a boolean indicating whether an existing constructor should be</td></tr>
2880<tr><td class="h"><a name="2077"></a>2077</td><td></td><td></td><td></td><td></td><td class="s">replaced when inlining a constructor. This defaults to false.</td></tr>
2881<tr><td class="h"><a name="2078"></a>2078</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2882<tr><td class="h"><a name="2079"></a>2079</td><td></td><td></td><td></td><td></td><td class="s">=item * destructor_class</td></tr>
2883<tr><td class="h"><a name="2080"></a>2080</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2884<tr><td class="h"><a name="2081"></a>2081</td><td></td><td></td><td></td><td></td><td class="s">The name of the method metaclass for destructors. It will be used to</td></tr>
2885<tr><td class="h"><a name="2082"></a>2082</td><td></td><td></td><td></td><td></td><td class="s">generate the inlined destructor. This defaults to</td></tr>
2886<tr><td class="h"><a name="2083"></a>2083</td><td></td><td></td><td></td><td></td><td class="s">&quot;Class::MOP::Method::Denstructor&quot;.</td></tr>
2887<tr><td class="h"><a name="2084"></a>2084</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2888<tr><td class="h"><a name="2085"></a>2085</td><td></td><td></td><td></td><td></td><td class="s">=item * replace_destructor</td></tr>
2889<tr><td class="h"><a name="2086"></a>2086</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2890<tr><td class="h"><a name="2087"></a>2087</td><td></td><td></td><td></td><td></td><td class="s">This is a boolean indicating whether an existing destructor should be</td></tr>
2891<tr><td class="h"><a name="2088"></a>2088</td><td></td><td></td><td></td><td></td><td class="s">replaced when inlining a destructor. This defaults to false.</td></tr>
2892<tr><td class="h"><a name="2089"></a>2089</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2893<tr><td class="h"><a name="2090"></a>2090</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2894<tr><td class="h"><a name="2091"></a>2091</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2895<tr><td class="h"><a name="2092"></a>2092</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;immutable_options &gt;&gt;</td></tr>
2896<tr><td class="h"><a name="2093"></a>2093</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2897<tr><td class="h"><a name="2094"></a>2094</td><td></td><td></td><td></td><td></td><td class="s">Returns a hash of the options used when making the class immutable, including</td></tr>
2898<tr><td class="h"><a name="2095"></a>2095</td><td></td><td></td><td></td><td></td><td class="s">both defaults and anything supplied by the user in the call to C&lt;&lt;</td></tr>
2899<tr><td class="h"><a name="2096"></a>2096</td><td></td><td></td><td></td><td></td><td class="s">$metaclass-&gt;make_immutable &gt;&gt;. This is useful if you need to temporarily make</td></tr>
2900<tr><td class="h"><a name="2097"></a>2097</td><td></td><td></td><td></td><td></td><td class="s">a class mutable and then restore immutability as it was before.</td></tr>
2901<tr><td class="h"><a name="2098"></a>2098</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2902<tr><td class="h"><a name="2099"></a>2099</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;make_mutable &gt;&gt;</td></tr>
2903<tr><td class="h"><a name="2100"></a>2100</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2904<tr><td class="h"><a name="2101"></a>2101</td><td></td><td></td><td></td><td></td><td class="s">Calling this method reverse the immutabilization transformation.</td></tr>
2905<tr><td class="h"><a name="2102"></a>2102</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2906<tr><td class="h"><a name="2103"></a>2103</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
2907<tr><td class="h"><a name="2104"></a>2104</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2908<tr><td class="h"><a name="2105"></a>2105</td><td></td><td></td><td></td><td></td><td class="s">=head2 Method Modifiers</td></tr>
2909<tr><td class="h"><a name="2106"></a>2106</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2910<tr><td class="h"><a name="2107"></a>2107</td><td></td><td></td><td></td><td></td><td class="s">Method modifiers are hooks which allow a method to be wrapped with</td></tr>
2911<tr><td class="h"><a name="2108"></a>2108</td><td></td><td></td><td></td><td></td><td class="s">I&lt;before&gt;, I&lt;after&gt; and I&lt;around&gt; method modifiers. Every time a</td></tr>
2912<tr><td class="h"><a name="2109"></a>2109</td><td></td><td></td><td></td><td></td><td class="s">method is called, its modifiers are also called.</td></tr>
2913<tr><td class="h"><a name="2110"></a>2110</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2914<tr><td class="h"><a name="2111"></a>2111</td><td></td><td></td><td></td><td></td><td class="s">A class can modify its own methods, as well as methods defined in</td></tr>
2915<tr><td class="h"><a name="2112"></a>2112</td><td></td><td></td><td></td><td></td><td class="s">parent classes.</td></tr>
2916<tr><td class="h"><a name="2113"></a>2113</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2917<tr><td class="h"><a name="2114"></a>2114</td><td></td><td></td><td></td><td></td><td class="s">=head3 How method modifiers work?</td></tr>
2918<tr><td class="h"><a name="2115"></a>2115</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2919<tr><td class="h"><a name="2116"></a>2116</td><td></td><td></td><td></td><td></td><td class="s">Method modifiers work by wrapping the original method and then</td></tr>
2920<tr><td class="h"><a name="2117"></a>2117</td><td></td><td></td><td></td><td></td><td class="s">replacing it in the class's symbol table. The wrappers will handle</td></tr>
2921<tr><td class="h"><a name="2118"></a>2118</td><td></td><td></td><td></td><td></td><td class="s">calling all the modifiers in the appropriate order and preserving the</td></tr>
2922<tr><td class="h"><a name="2119"></a>2119</td><td></td><td></td><td></td><td></td><td class="s">calling context for the original method.</td></tr>
2923<tr><td class="h"><a name="2120"></a>2120</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2924<tr><td class="h"><a name="2121"></a>2121</td><td></td><td></td><td></td><td></td><td class="s">The return values of C&lt;before&gt; and C&lt;after&gt; modifiers are</td></tr>
2925<tr><td class="h"><a name="2122"></a>2122</td><td></td><td></td><td></td><td></td><td class="s">ignored. This is because their purpose is B&lt;not&gt; to filter the input</td></tr>
2926<tr><td class="h"><a name="2123"></a>2123</td><td></td><td></td><td></td><td></td><td class="s">and output of the primary method (this is done with an I&lt;around&gt;</td></tr>
2927<tr><td class="h"><a name="2124"></a>2124</td><td></td><td></td><td></td><td></td><td class="s">modifier).</td></tr>
2928<tr><td class="h"><a name="2125"></a>2125</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2929<tr><td class="h"><a name="2126"></a>2126</td><td></td><td></td><td></td><td></td><td class="s">This may seem like an odd restriction to some, but doing this allows</td></tr>
2930<tr><td class="h"><a name="2127"></a>2127</td><td></td><td></td><td></td><td></td><td class="s">for simple code to be added at the beginning or end of a method call</td></tr>
2931<tr><td class="h"><a name="2128"></a>2128</td><td></td><td></td><td></td><td></td><td class="s">without altering the function of the wrapped method or placing any</td></tr>
2932<tr><td class="h"><a name="2129"></a>2129</td><td></td><td></td><td></td><td></td><td class="s">extra responsibility on the code of the modifier.</td></tr>
2933<tr><td class="h"><a name="2130"></a>2130</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2934<tr><td class="h"><a name="2131"></a>2131</td><td></td><td></td><td></td><td></td><td class="s">Of course if you have more complex needs, you can use the C&lt;around&gt;</td></tr>
2935<tr><td class="h"><a name="2132"></a>2132</td><td></td><td></td><td></td><td></td><td class="s">modifier which allows you to change both the parameters passed to the</td></tr>
2936<tr><td class="h"><a name="2133"></a>2133</td><td></td><td></td><td></td><td></td><td class="s">wrapped method, as well as its return value.</td></tr>
2937<tr><td class="h"><a name="2134"></a>2134</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2938<tr><td class="h"><a name="2135"></a>2135</td><td></td><td></td><td></td><td></td><td class="s">Before and around modifiers are called in last-defined-first-called</td></tr>
2939<tr><td class="h"><a name="2136"></a>2136</td><td></td><td></td><td></td><td></td><td class="s">order, while after modifiers are called in first-defined-first-called</td></tr>
2940<tr><td class="h"><a name="2137"></a>2137</td><td></td><td></td><td></td><td></td><td class="s">order. So the call tree might looks something like this:</td></tr>
2941<tr><td class="h"><a name="2138"></a>2138</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2942<tr><td class="h"><a name="2139"></a>2139</td><td></td><td></td><td></td><td></td><td class="s"> before 2</td></tr>
2943<tr><td class="h"><a name="2140"></a>2140</td><td></td><td></td><td></td><td></td><td class="s"> before 1</td></tr>
2944<tr><td class="h"><a name="2141"></a>2141</td><td></td><td></td><td></td><td></td><td class="s"> around 2</td></tr>
2945<tr><td class="h"><a name="2142"></a>2142</td><td></td><td></td><td></td><td></td><td class="s"> around 1</td></tr>
2946<tr><td class="h"><a name="2143"></a>2143</td><td></td><td></td><td></td><td></td><td class="s"> primary</td></tr>
2947<tr><td class="h"><a name="2144"></a>2144</td><td></td><td></td><td></td><td></td><td class="s"> around 1</td></tr>
2948<tr><td class="h"><a name="2145"></a>2145</td><td></td><td></td><td></td><td></td><td class="s"> around 2</td></tr>
2949<tr><td class="h"><a name="2146"></a>2146</td><td></td><td></td><td></td><td></td><td class="s"> after 1</td></tr>
2950<tr><td class="h"><a name="2147"></a>2147</td><td></td><td></td><td></td><td></td><td class="s"> after 2</td></tr>
2951<tr><td class="h"><a name="2148"></a>2148</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2952<tr><td class="h"><a name="2149"></a>2149</td><td></td><td></td><td></td><td></td><td class="s">=head3 What is the performance impact?</td></tr>
2953<tr><td class="h"><a name="2150"></a>2150</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2954<tr><td class="h"><a name="2151"></a>2151</td><td></td><td></td><td></td><td></td><td class="s">Of course there is a performance cost associated with method</td></tr>
2955<tr><td class="h"><a name="2152"></a>2152</td><td></td><td></td><td></td><td></td><td class="s">modifiers, but we have made every effort to make that cost directly</td></tr>
2956<tr><td class="h"><a name="2153"></a>2153</td><td></td><td></td><td></td><td></td><td class="s">proportional to the number of modifier features you use.</td></tr>
2957<tr><td class="h"><a name="2154"></a>2154</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2958<tr><td class="h"><a name="2155"></a>2155</td><td></td><td></td><td></td><td></td><td class="s">The wrapping method does its best to B&lt;only&gt; do as much work as it</td></tr>
2959<tr><td class="h"><a name="2156"></a>2156</td><td></td><td></td><td></td><td></td><td class="s">absolutely needs to. In order to do this we have moved some of the</td></tr>
2960<tr><td class="h"><a name="2157"></a>2157</td><td></td><td></td><td></td><td></td><td class="s">performance costs to set-up time, where they are easier to amortize.</td></tr>
2961<tr><td class="h"><a name="2158"></a>2158</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2962<tr><td class="h"><a name="2159"></a>2159</td><td></td><td></td><td></td><td></td><td class="s">All this said, our benchmarks have indicated the following:</td></tr>
2963<tr><td class="h"><a name="2160"></a>2160</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2964<tr><td class="h"><a name="2161"></a>2161</td><td></td><td></td><td></td><td></td><td class="s"> simple wrapper with no modifiers 100% slower</td></tr>
2965<tr><td class="h"><a name="2162"></a>2162</td><td></td><td></td><td></td><td></td><td class="s"> simple wrapper with simple before modifier 400% slower</td></tr>
2966<tr><td class="h"><a name="2163"></a>2163</td><td></td><td></td><td></td><td></td><td class="s"> simple wrapper with simple after modifier 450% slower</td></tr>
2967<tr><td class="h"><a name="2164"></a>2164</td><td></td><td></td><td></td><td></td><td class="s"> simple wrapper with simple around modifier 500-550% slower</td></tr>
2968<tr><td class="h"><a name="2165"></a>2165</td><td></td><td></td><td></td><td></td><td class="s"> simple wrapper with all 3 modifiers 1100% slower</td></tr>
2969<tr><td class="h"><a name="2166"></a>2166</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2970<tr><td class="h"><a name="2167"></a>2167</td><td></td><td></td><td></td><td></td><td class="s">These numbers may seem daunting, but you must remember, every feature</td></tr>
2971<tr><td class="h"><a name="2168"></a>2168</td><td></td><td></td><td></td><td></td><td class="s">comes with some cost. To put things in perspective, just doing a</td></tr>
2972<tr><td class="h"><a name="2169"></a>2169</td><td></td><td></td><td></td><td></td><td class="s">simple C&lt;AUTOLOAD&gt; which does nothing but extract the name of the</td></tr>
2973<tr><td class="h"><a name="2170"></a>2170</td><td></td><td></td><td></td><td></td><td class="s">method called and return it costs about 400% over a normal method</td></tr>
2974<tr><td class="h"><a name="2171"></a>2171</td><td></td><td></td><td></td><td></td><td class="s">call.</td></tr>
2975<tr><td class="h"><a name="2172"></a>2172</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2976<tr><td class="h"><a name="2173"></a>2173</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
2977<tr><td class="h"><a name="2174"></a>2174</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2978<tr><td class="h"><a name="2175"></a>2175</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_before_method_modifier($method_name, $code) &gt;&gt;</td></tr>
2979<tr><td class="h"><a name="2176"></a>2176</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2980<tr><td class="h"><a name="2177"></a>2177</td><td></td><td></td><td></td><td></td><td class="s">This wraps the specified method with the supplied subroutine</td></tr>
2981<tr><td class="h"><a name="2178"></a>2178</td><td></td><td></td><td></td><td></td><td class="s">reference. The modifier will be called as a method itself, and will</td></tr>
2982<tr><td class="h"><a name="2179"></a>2179</td><td></td><td></td><td></td><td></td><td class="s">receive the same arguments as are passed to the method.</td></tr>
2983<tr><td class="h"><a name="2180"></a>2180</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2984<tr><td class="h"><a name="2181"></a>2181</td><td></td><td></td><td></td><td></td><td class="s">When the modifier exits, the wrapped method will be called.</td></tr>
2985<tr><td class="h"><a name="2182"></a>2182</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2986<tr><td class="h"><a name="2183"></a>2183</td><td></td><td></td><td></td><td></td><td class="s">The return value of the modifier will be ignored.</td></tr>
2987<tr><td class="h"><a name="2184"></a>2184</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2988<tr><td class="h"><a name="2185"></a>2185</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_after_method_modifier($method_name, $code) &gt;&gt;</td></tr>
2989<tr><td class="h"><a name="2186"></a>2186</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2990<tr><td class="h"><a name="2187"></a>2187</td><td></td><td></td><td></td><td></td><td class="s">This wraps the specified method with the supplied subroutine</td></tr>
2991<tr><td class="h"><a name="2188"></a>2188</td><td></td><td></td><td></td><td></td><td class="s">reference. The modifier will be called as a method itself, and will</td></tr>
2992<tr><td class="h"><a name="2189"></a>2189</td><td></td><td></td><td></td><td></td><td class="s">receive the same arguments as are passed to the method.</td></tr>
2993<tr><td class="h"><a name="2190"></a>2190</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2994<tr><td class="h"><a name="2191"></a>2191</td><td></td><td></td><td></td><td></td><td class="s">When the wrapped methods exits, the modifier will be called.</td></tr>
2995<tr><td class="h"><a name="2192"></a>2192</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2996<tr><td class="h"><a name="2193"></a>2193</td><td></td><td></td><td></td><td></td><td class="s">The return value of the modifier will be ignored.</td></tr>
2997<tr><td class="h"><a name="2194"></a>2194</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
2998<tr><td class="h"><a name="2195"></a>2195</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; $metaclass-&gt;add_around_method_modifier($method_name, $code) &gt;&gt;</td></tr>
2999<tr><td class="h"><a name="2196"></a>2196</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3000<tr><td class="h"><a name="2197"></a>2197</td><td></td><td></td><td></td><td></td><td class="s">This wraps the specified method with the supplied subroutine</td></tr>
3001<tr><td class="h"><a name="2198"></a>2198</td><td></td><td></td><td></td><td></td><td class="s">reference.</td></tr>
3002<tr><td class="h"><a name="2199"></a>2199</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3003<tr><td class="h"><a name="2200"></a>2200</td><td></td><td></td><td></td><td></td><td class="s">The first argument passed to the modifier will be a subroutine</td></tr>
3004<tr><td class="h"><a name="2201"></a>2201</td><td></td><td></td><td></td><td></td><td class="s">reference to the wrapped method. The second argument is the object,</td></tr>
3005<tr><td class="h"><a name="2202"></a>2202</td><td></td><td></td><td></td><td></td><td class="s">and after that come any arguments passed when the method is called.</td></tr>
3006<tr><td class="h"><a name="2203"></a>2203</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3007<tr><td class="h"><a name="2204"></a>2204</td><td></td><td></td><td></td><td></td><td class="s">The around modifier can choose to call the original method, as well as</td></tr>
3008<tr><td class="h"><a name="2205"></a>2205</td><td></td><td></td><td></td><td></td><td class="s">what arguments to pass if it does so.</td></tr>
3009<tr><td class="h"><a name="2206"></a>2206</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3010<tr><td class="h"><a name="2207"></a>2207</td><td></td><td></td><td></td><td></td><td class="s">The return value of the modifier is what will be seen by the caller.</td></tr>
3011<tr><td class="h"><a name="2208"></a>2208</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3012<tr><td class="h"><a name="2209"></a>2209</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
3013<tr><td class="h"><a name="2210"></a>2210</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3014<tr><td class="h"><a name="2211"></a>2211</td><td></td><td></td><td></td><td></td><td class="s">=head2 Introspection</td></tr>
3015<tr><td class="h"><a name="2212"></a>2212</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3016<tr><td class="h"><a name="2213"></a>2213</td><td></td><td></td><td></td><td></td><td class="s">=over 4</td></tr>
3017<tr><td class="h"><a name="2214"></a>2214</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3018<tr><td class="h"><a name="2215"></a>2215</td><td></td><td></td><td></td><td></td><td class="s">=item B&lt;&lt; Class::MOP::Class-&gt;meta &gt;&gt;</td></tr>
3019<tr><td class="h"><a name="2216"></a>2216</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3020<tr><td class="h"><a name="2217"></a>2217</td><td></td><td></td><td></td><td></td><td class="s">This will return a L&lt;Class::MOP::Class&gt; instance for this class.</td></tr>
3021<tr><td class="h"><a name="2218"></a>2218</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3022<tr><td class="h"><a name="2219"></a>2219</td><td></td><td></td><td></td><td></td><td class="s">It should also be noted that L&lt;Class::MOP&gt; will actually bootstrap</td></tr>
3023<tr><td class="h"><a name="2220"></a>2220</td><td></td><td></td><td></td><td></td><td class="s">this module by installing a number of attribute meta-objects into its</td></tr>
3024<tr><td class="h"><a name="2221"></a>2221</td><td></td><td></td><td></td><td></td><td class="s">metaclass.</td></tr>
3025<tr><td class="h"><a name="2222"></a>2222</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3026<tr><td class="h"><a name="2223"></a>2223</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
3027<tr><td class="h"><a name="2224"></a>2224</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3028<tr><td class="h"><a name="2225"></a>2225</td><td></td><td></td><td></td><td></td><td class="s">=head1 AUTHOR</td></tr>
3029<tr><td class="h"><a name="2226"></a>2226</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3030<tr><td class="h"><a name="2227"></a>2227</td><td></td><td></td><td></td><td></td><td class="s">Moose is maintained by the Moose Cabal, along with the help of many contributors. See L&lt;Moose/CABAL&gt; and L&lt;Moose/CONTRIBUTORS&gt; for details.</td></tr>
3031<tr><td class="h"><a name="2228"></a>2228</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3032<tr><td class="h"><a name="2229"></a>2229</td><td></td><td></td><td></td><td></td><td class="s">=head1 COPYRIGHT AND LICENSE</td></tr>
3033<tr><td class="h"><a name="2230"></a>2230</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3034<tr><td class="h"><a name="2231"></a>2231</td><td></td><td></td><td></td><td></td><td class="s">This software is copyright (c) 2012 by Infinity Interactive, Inc..</td></tr>
3035<tr><td class="h"><a name="2232"></a>2232</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3036<tr><td class="h"><a name="2233"></a>2233</td><td></td><td></td><td></td><td></td><td class="s">This is free software; you can redistribute it and/or modify it under</td></tr>
3037<tr><td class="h"><a name="2234"></a>2234</td><td></td><td></td><td></td><td></td><td class="s">the same terms as the Perl 5 programming language system itself.</td></tr>
3038<tr><td class="h"><a name="2235"></a>2235</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3039<tr><td class="h"><a name="2236"></a>2236</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
3040<tr><td class="h"><a name="2237"></a>2237</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3041<tr><td class="h"><a name="2238"></a>2238</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3042<tr><td class="h"><a name="2239"></a>2239</td><td></td><td></td><td></td><td></td><td class="s">__END__</td></tr>
3043<tr><td class="s"><a name=""></a>&nbsp;</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
3044<tr><td class="h"><a name="Class__MOP__Class__CORE_sort"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 16.4ms (12.7+3.71) within Class::MOP::Class::CORE:sort which was called 266 times, avg 62&micro;s/call:
3045# 133 times (6.69ms+1.93ms) by Class::MOP::Class::_inline_slot_initializers at <a href="Class-MOP-Class-pm-103-line.html#592">line 592</a>, avg 65&micro;s/call
3046# 133 times (6.05ms+1.78ms) by Class::MOP::Class::_eval_environment at <a href="Class-MOP-Class-pm-103-line.html#708">line 708</a>, avg 59&micro;s/call</div></div>sub Class::MOP::Class::CORE:sort; # opcode<br /> </td></tr>
3047</tbody></table></div>
3048
3049 <script type="text/javascript"> $(document).ready(function() {
3050
3051 $("#subs_table").tablesorter({
3052 sortList: [[3,1]],
3053 headers: {
3054 3: { sorter: 'fmt_time' },
3055 4: { sorter: 'fmt_time' }
3056 }
3057 });
3058
3059 } ); </script>
3060
3061 <div class="footer">Report produced by the
3062 <a href="http://search.cpan.org/dist/Devel-NYTProf/">NYTProf 4.06</a>
3063 Perl profiler, developed by
3064 <a href="http://www.linkedin.com/in/timbunce">Tim Bunce</a> and
3065 <a href="http://code.nytimes.com">Adam Kaplan</a>.
3066 </div>
3067 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
3068 </body></html>