← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:39:01 2010
Reported on Wed Nov 17 22:04:53 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Meta/Method/Accessor.pm
StatementsExecuted 5197 statements in 92.7ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2046213.1ms21.3msMoose::Meta::Method::Accessor::::_instance_is_inlinableMoose::Meta::Method::Accessor::_instance_is_inlinable
972211.2ms233msMoose::Meta::Method::Accessor::::_generate_reader_method_inlineMoose::Meta::Method::Accessor::_generate_reader_method_inline
1392210.8ms17.4msMoose::Meta::Method::Accessor::::_eval_environmentMoose::Meta::Method::Accessor::_eval_environment
128438.93ms25.4msMoose::Meta::Method::Accessor::::_inline_check_lazyMoose::Meta::Method::Accessor::_inline_check_lazy
139427.94ms147msMoose::Meta::Method::Accessor::::_eval_codeMoose::Meta::Method::Accessor::_eval_code
26115.80ms89.9msMoose::Meta::Method::Accessor::::_generate_accessor_method_inlineMoose::Meta::Method::Accessor::_generate_accessor_method_inline
123215.37ms8.31msMoose::Meta::Method::Accessor::::_inline_auto_derefMoose::Meta::Method::Accessor::_inline_auto_deref
128324.66ms96.6msMoose::Meta::Method::Accessor::::_inline_getMoose::Meta::Method::Accessor::_inline_get
52313.94ms6.15msMoose::Meta::Method::Accessor::::_inline_check_constraintMoose::Meta::Method::Accessor::_inline_check_constraint
96113.47ms245msMoose::Meta::Method::Accessor::::_generate_reader_methodMoose::Meta::Method::Accessor::_generate_reader_method
74312.55ms4.12msMoose::Meta::Method::Accessor::::_value_needs_copyMoose::Meta::Method::Accessor::_value_needs_copy
52312.17ms3.26msMoose::Meta::Method::Accessor::::_inline_check_coercionMoose::Meta::Method::Accessor::_inline_check_coercion
56312.04ms39.1msMoose::Meta::Method::Accessor::::_inline_storeMoose::Meta::Method::Accessor::_inline_store
37211.97ms2.87msMoose::Meta::Method::Accessor::::_inline_check_requiredMoose::Meta::Method::Accessor::_inline_check_required
11111.82ms22.3msMoose::Meta::Method::Accessor::::_generate_writer_method_inlineMoose::Meta::Method::Accessor::_generate_writer_method_inline
39321.74ms2.54msMoose::Meta::Method::Accessor::::_inline_triggerMoose::Meta::Method::Accessor::_inline_trigger
37211.58ms2.63msMoose::Meta::Method::Accessor::::_inline_get_old_value_for_triggerMoose::Meta::Method::Accessor::_inline_get_old_value_for_trigger
139531.26ms1.26msMoose::Meta::Method::Accessor::::_inline_pre_bodyMoose::Meta::Method::Accessor::_inline_pre_body
139531.20ms1.20msMoose::Meta::Method::Accessor::::_inline_post_bodyMoose::Meta::Method::Accessor::_inline_post_body
30111.16ms19.0msMoose::Meta::Method::Accessor::::_generate_predicate_methodMoose::Meta::Method::Accessor::_generate_predicate_method
29111.15ms19.2msMoose::Meta::Method::Accessor::::_generate_clearer_methodMoose::Meta::Method::Accessor::_generate_clearer_method
26111.01ms93.7msMoose::Meta::Method::Accessor::::_generate_accessor_methodMoose::Meta::Method::Accessor::_generate_accessor_method
1921807µs5.48msMoose::Meta::Method::Accessor::::_inline_init_slotMoose::Meta::Method::Accessor::_inline_init_slot
3721752µs2.69msMoose::Meta::Method::Accessor::::_inline_copy_valueMoose::Meta::Method::Accessor::_inline_copy_value
1911695µs3.34msMoose::Meta::Method::Accessor::::_inline_hasMoose::Meta::Method::Accessor::_inline_has
1111416µs23.8msMoose::Meta::Method::Accessor::::_generate_writer_methodMoose::Meta::Method::Accessor::_generate_writer_method
11168µs86µsMoose::Meta::Method::Accessor::::BEGIN@4Moose::Meta::Method::Accessor::BEGIN@4
11149µs126µsMoose::Meta::Method::Accessor::::BEGIN@5Moose::Meta::Method::Accessor::BEGIN@5
11147µs470µsMoose::Meta::Method::Accessor::::BEGIN@11Moose::Meta::Method::Accessor::BEGIN@11
0000s0sMoose::Meta::Method::Accessor::::_error_throwerMoose::Meta::Method::Accessor::_error_thrower
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2package Moose::Meta::Method::Accessor;
3
43111µs2103µs
# spent 86µs (68+17) within Moose::Meta::Method::Accessor::BEGIN@4 which was called: # once (68µs+17µs) by Moose::Meta::Attribute::BEGIN@17 at line 4
use strict;
# spent 86µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@4 # spent 17µs making 1 call to strict::import
53254µs2203µs
# spent 126µs (49+77) within Moose::Meta::Method::Accessor::BEGIN@5 which was called: # once (49µs+77µs) by Moose::Meta::Attribute::BEGIN@17 at line 5
use warnings;
# spent 126µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@5 # spent 77µs making 1 call to warnings::import
6
715µsour $VERSION = '1.19';
8169µs$VERSION = eval $VERSION;
# spent 11µs executing statements in string eval
914µsour $AUTHORITY = 'cpan:STEVAN';
10
111423µs
# spent 470µs (47+423) within Moose::Meta::Method::Accessor::BEGIN@11 which was called: # once (47µs+423µs) by Moose::Meta::Attribute::BEGIN@17 at line 12
use base 'Moose::Meta::Method',
# spent 423µs making 1 call to base::import
1235.77ms1470µs 'Class::MOP::Method::Accessor';
# spent 470µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@11
13
14sub _error_thrower {
15 my $self = shift;
16 ( ref $self && $self->associated_attribute ) || $self->SUPER::_error_thrower();
17}
18
19
# spent 147ms (7.94+140) within Moose::Meta::Method::Accessor::_eval_code which was called 139 times, avg 1.06ms/call: # 97 times (5.07ms+93.7ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 1.02ms/call # 26 times (1.88ms+27.7ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 1.14ms/call # 11 times (568µs+10.6ms) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 1.01ms/call # 5 times (428µs+7.55ms) by Moose::Meta::Method::Accessor::Native::_initialize_body at line 48 of Moose/Meta/Method/Accessor/Native.pm, avg 1.60ms/call
sub _eval_code {
206957.06ms my ( $self, $source ) = @_;
21
2213919.8ms my $environment = $self->_eval_environment;
23
24139120ms my ( $code, $e ) = $self->_compile_code( environment => $environment, code => $source );
# spent 120ms making 139 calls to Class::MOP::Method::Generated::_compile_code, avg 861µs/call
25
26 $self->throw_error(
27 "Could not create writer for '${\$self->associated_attribute->name}' because $e \n code: $source",
28 error => $e, data => $source )
29 if $e;
30
31 return $code;
32}
33
34
# spent 17.4ms (10.8+6.60) within Moose::Meta::Method::Accessor::_eval_environment which was called 139 times, avg 125µs/call: # 134 times (10.4ms+6.38ms) by Moose::Meta::Method::Accessor::_eval_code at line 22, avg 125µs/call # 5 times (398µs+228µs) by Moose::Role::super at line 71 of Moose/Role.pm, avg 125µs/call
sub _eval_environment {
355568.23ms my $self = shift;
36
371391.18ms my $attr = $self->associated_attribute;
# spent 1.18ms making 139 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
381392.22ms my $type_constraint_obj = $attr->type_constraint;
# spent 2.22ms making 139 calls to Moose::Meta::Mixin::AttributeCore::type_constraint, avg 16µs/call
39
40 return {
4111.40ms2503.20ms '$attr' => \$attr,
# spent 1.77ms making 125 calls to Moose::Meta::TypeConstraint::_compiled_type_constraint, avg 14µs/call # spent 1.43ms making 125 calls to Moose::Meta::TypeConstraint::__ANON__[Moose/Meta/TypeConstraint.pm:10], avg 11µs/call
42 '$meta' => \$self,
43 '$type_constraint_obj' => \$type_constraint_obj,
44 '$type_constraint' => \(
45 $type_constraint_obj
46 ? $type_constraint_obj->_compiled_type_constraint
47 : undef
48 ),
49 };
50}
51
52
# spent 89.9ms (5.80+84.1) within Moose::Meta::Method::Accessor::_generate_accessor_method_inline which was called 26 times, avg 3.46ms/call: # 26 times (5.80ms+84.1ms) by Moose::Meta::Method::Accessor::_generate_accessor_method at line 135, avg 3.46ms/call
sub _generate_accessor_method_inline {
531044.86ms my $self = $_[0];
54 my $inv = '$_[0]';
55261.53ms my $value_name = $self->_value_needs_copy ? '$val' : '$_[1]';
# spent 1.53ms making 26 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 59µs/call
56
5733882.6ms $self->_eval_code('sub { ' . "\n"
# spent 30.9ms making 26 calls to Moose::Meta::Method::Accessor::_inline_store, avg 1.19ms/call # spent 29.6ms making 26 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.14ms/call # spent 4.58ms making 26 calls to Moose::Meta::Method::Accessor::_inline_get, avg 176µs/call # spent 3.19ms making 26 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 123µs/call # spent 2.74ms making 26 calls to Moose::Meta::Method::Accessor::_inline_check_lazy, avg 105µs/call # spent 2.12ms making 26 calls to Moose::Meta::Method::Accessor::_inline_check_required, avg 82µs/call # spent 1.95ms making 26 calls to Moose::Meta::Method::Accessor::_inline_copy_value, avg 75µs/call # spent 1.88ms making 26 calls to Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger, avg 72µs/call # spent 1.85ms making 26 calls to Moose::Meta::Method::Accessor::_inline_auto_deref, avg 71µs/call # spent 1.70ms making 26 calls to Moose::Meta::Method::Accessor::_inline_trigger, avg 65µs/call # spent 1.55ms making 26 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 60µs/call # spent 274µs making 26 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 11µs/call # spent 231µs making 26 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 9µs/call
58 . $self->_inline_pre_body(@_) . "\n"
59 . 'if (scalar(@_) >= 2) {' . "\n"
60 . $self->_inline_copy_value . "\n"
61 . $self->_inline_check_required . "\n"
62 . $self->_inline_check_coercion($value_name) . "\n"
63 . $self->_inline_check_constraint($value_name) . "\n"
64 . $self->_inline_get_old_value_for_trigger($inv, $value_name) . "\n"
65 . $self->_inline_store($inv, $value_name) . "\n"
66 . $self->_inline_trigger($inv, $value_name, '@old') . "\n"
67 . ' }' . "\n"
68 . $self->_inline_check_lazy($inv) . "\n"
69 . $self->_inline_post_body(@_) . "\n"
70 . 'return ' . $self->_inline_auto_deref($self->_inline_get($inv)) . "\n"
71 . ' }');
72}
73
74
# spent 22.3ms (1.82+20.5) within Moose::Meta::Method::Accessor::_generate_writer_method_inline which was called 11 times, avg 2.03ms/call: # 11 times (1.82ms+20.5ms) by Moose::Meta::Method::Accessor::_generate_writer_method at line 129, avg 2.03ms/call
sub _generate_writer_method_inline {
75441.43ms my $self = $_[0];
76 my $inv = '$_[0]';
7711646µs my $value_name = $self->_value_needs_copy ? '$val' : '$_[1]';
# spent 646µs making 11 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 59µs/call
78
7911019.8ms $self->_eval_code('sub { '
# spent 11.1ms making 11 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.01ms/call # spent 3.68ms making 11 calls to Moose::Meta::Method::Accessor::_inline_store, avg 334µs/call # spent 1.25ms making 11 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 113µs/call # spent 749µs making 11 calls to Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger, avg 68µs/call # spent 747µs making 11 calls to Moose::Meta::Method::Accessor::_inline_check_required, avg 68µs/call # spent 743µs making 11 calls to Moose::Meta::Method::Accessor::_inline_copy_value, avg 68µs/call # spent 715µs making 11 calls to Moose::Meta::Method::Accessor::_inline_trigger, avg 65µs/call # spent 632µs making 11 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 57µs/call # spent 93µs making 11 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 8µs/call # spent 90µs making 11 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 8µs/call
80 . $self->_inline_pre_body(@_)
81 . $self->_inline_copy_value
82 . $self->_inline_check_required
83 . $self->_inline_check_coercion($value_name)
84 . $self->_inline_check_constraint($value_name)
85 . $self->_inline_get_old_value_for_trigger($inv, $value_name) . "\n"
86 . $self->_inline_store($inv, $value_name)
87 . $self->_inline_post_body(@_)
88 . $self->_inline_trigger($inv, $value_name, '@old')
89 . ' }');
90}
91
92
# spent 233ms (11.2+222) within Moose::Meta::Method::Accessor::_generate_reader_method_inline which was called 97 times, avg 2.41ms/call: # 96 times (11.1ms+220ms) by Moose::Meta::Method::Accessor::_generate_reader_method at line 123, avg 2.41ms/call # once (103µs+1.94ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm
sub _generate_reader_method_inline {
933889.30ms my $self = $_[0];
94 my $inv = '$_[0]';
959791.1ms my $slot_access = $self->_inline_get($inv);
# spent 91.1ms making 97 calls to Moose::Meta::Method::Accessor::_inline_get, avg 939µs/call
96
97582131ms $self->_eval_code('sub {'
# spent 98.7ms making 97 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.02ms/call # spent 22.3ms making 97 calls to Moose::Meta::Method::Accessor::_inline_check_lazy, avg 230µs/call # spent 6.45ms making 97 calls to Moose::Meta::Method::Accessor::_inline_auto_deref, avg 67µs/call # spent 1.97ms making 97 calls to Moose::Meta::Method::_inline_throw_error, avg 20µs/call # spent 891µs making 97 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 9µs/call # spent 796µs making 97 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 8µs/call
98 . $self->_inline_pre_body(@_)
99 . $self->_inline_throw_error('"Cannot assign a value to a read-only accessor"', 'data => \@_') . ' if @_ > 1;'
100 . $self->_inline_check_lazy($inv)
101 . $self->_inline_post_body(@_)
102 . 'return ' . $self->_inline_auto_deref( $slot_access ) . ';'
103 . '}');
104}
105
106
# spent 2.69ms (752µs+1.94) within Moose::Meta::Method::Accessor::_inline_copy_value which was called 37 times, avg 73µs/call: # 26 times (537µs+1.41ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 75µs/call # 11 times (214µs+529µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 68µs/call
sub _inline_copy_value {
10737795µs371.94ms return '' unless shift->_value_needs_copy;
# spent 1.94ms making 37 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 52µs/call
108 return 'my $val = $_[1];'
109}
110
111
# spent 4.12ms (2.55+1.57) within Moose::Meta::Method::Accessor::_value_needs_copy which was called 74 times, avg 56µs/call: # 37 times (1.19ms+751µs) by Moose::Meta::Method::Accessor::_inline_copy_value at line 107, avg 52µs/call # 26 times (951µs+584µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 55, avg 59µs/call # 11 times (412µs+235µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 77, avg 59µs/call
sub _value_needs_copy {
1121482.26ms74637µs my $attr = (shift)->associated_attribute;
# spent 637µs making 74 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
11374932µs return $attr->should_coerce;
# spent 932µs making 74 calls to Moose::Meta::Mixin::AttributeCore::should_coerce, avg 13µs/call
114}
115
116
# spent 21.3ms (13.1+8.18) within Moose::Meta::Method::Accessor::_instance_is_inlinable which was called 204 times, avg 104µs/call: # 96 times (6.15ms+3.80ms) by Moose::Meta::Method::Accessor::_generate_reader_method at line 123, avg 104µs/call # 30 times (1.97ms+1.16ms) by Moose::Meta::Method::Accessor::_generate_predicate_method at line 141, avg 104µs/call # 29 times (1.83ms+1.14ms) by Moose::Meta::Method::Accessor::_generate_clearer_method at line 147, avg 103µs/call # 26 times (1.63ms+1.12ms) by Moose::Meta::Method::Accessor::_generate_accessor_method at line 135, avg 106µs/call # 12 times (853µs+524µs) by Moose::Meta::Method::Accessor::Native::_slot_access_can_be_inlined at line 141 of Moose/Meta/Method/Accessor/Native.pm, avg 115µs/call # 11 times (670µs+428µs) by Moose::Meta::Method::Accessor::_generate_writer_method at line 129, avg 100µs/call
sub _instance_is_inlinable {
11740810.9ms my $self = shift;
1188168.18ms return $self->associated_attribute->associated_class->instance_metaclass->is_inlinable;
# spent 2.50ms making 204 calls to Class::MOP::Class::instance_metaclass, avg 12µs/call # spent 1.93ms making 204 calls to Class::MOP::Attribute::associated_class, avg 9µs/call # spent 1.89ms making 204 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call # spent 1.85ms making 204 calls to Class::MOP::Instance::is_inlinable, avg 9µs/call
119}
120
121
# spent 245ms (3.47+241) within Moose::Meta::Method::Accessor::_generate_reader_method which was called 96 times, avg 2.55ms/call: # 96 times (3.47ms+241ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 2.55ms/call
sub _generate_reader_method {
1221923.20ms my $self = shift;
123192241ms $self->_instance_is_inlinable ? $self->_generate_reader_method_inline(@_)
# spent 231ms making 96 calls to Moose::Meta::Method::Accessor::_generate_reader_method_inline, avg 2.41ms/call # spent 9.95ms making 96 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 104µs/call
124 : $self->SUPER::_generate_reader_method(@_);
125}
126
127
# spent 23.8ms (416µs+23.4) within Moose::Meta::Method::Accessor::_generate_writer_method which was called 11 times, avg 2.16ms/call: # 11 times (416µs+23.4ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 2.16ms/call
sub _generate_writer_method {
12822365µs my $self = shift;
1292223.4ms $self->_instance_is_inlinable ? $self->_generate_writer_method_inline(@_)
# spent 22.3ms making 11 calls to Moose::Meta::Method::Accessor::_generate_writer_method_inline, avg 2.03ms/call # spent 1.10ms making 11 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 100µs/call
130 : $self->SUPER::_generate_writer_method(@_);
131}
132
133
# spent 93.7ms (1.01+92.7) within Moose::Meta::Method::Accessor::_generate_accessor_method which was called 26 times, avg 3.60ms/call: # 26 times (1.01ms+92.7ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 3.60ms/call
sub _generate_accessor_method {
13452879µs my $self = shift;
1355292.7ms $self->_instance_is_inlinable ? $self->_generate_accessor_method_inline(@_)
# spent 89.9ms making 26 calls to Moose::Meta::Method::Accessor::_generate_accessor_method_inline, avg 3.46ms/call # spent 2.75ms making 26 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 106µs/call
136 : $self->SUPER::_generate_accessor_method(@_);
137}
138
139
# spent 19.0ms (1.16+17.8) within Moose::Meta::Method::Accessor::_generate_predicate_method which was called 30 times, avg 632µs/call: # 30 times (1.16ms+17.8ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 632µs/call
sub _generate_predicate_method {
140601.10ms my $self = shift;
1416017.8ms $self->_instance_is_inlinable ? $self->_generate_predicate_method_inline(@_)
# spent 14.7ms making 30 calls to Class::MOP::Method::Accessor::_generate_predicate_method_inline, avg 489µs/call # spent 3.13ms making 30 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 104µs/call
142 : $self->SUPER::_generate_predicate_method(@_);
143}
144
145
# spent 19.2ms (1.15+18.0) within Moose::Meta::Method::Accessor::_generate_clearer_method which was called 29 times, avg 661µs/call: # 29 times (1.15ms+18.0ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 661µs/call
sub _generate_clearer_method {
146581.01ms my $self = shift;
1475818.0ms $self->_instance_is_inlinable ? $self->_generate_clearer_method_inline(@_)
# spent 15.0ms making 29 calls to Class::MOP::Method::Accessor::_generate_clearer_method_inline, avg 518µs/call # spent 2.98ms making 29 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 103µs/call
148 : $self->SUPER::_generate_clearer_method(@_);
149}
150
1511391.68ms
# spent 1.26ms within Moose::Meta::Method::Accessor::_inline_pre_body which was called 139 times, avg 9µs/call: # 97 times (891µs+0s) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 9µs/call # 26 times (231µs+0s) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 9µs/call # 11 times (93µs+0s) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 8µs/call # 3 times (26µs+0s) by Moose::Meta::Method::Accessor::Native::Reader::_generate_method at line 22 of Moose/Meta/Method/Accessor/Native/Reader.pm, avg 8µs/call # 2 times (18µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_generate_method at line 27 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 9µs/call
sub _inline_pre_body { '' }
1521391.63ms
# spent 1.20ms within Moose::Meta::Method::Accessor::_inline_post_body which was called 139 times, avg 9µs/call: # 97 times (796µs+0s) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 8µs/call # 26 times (274µs+0s) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 11µs/call # 11 times (90µs+0s) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 8µs/call # 3 times (26µs+0s) by Moose::Meta::Method::Accessor::Native::Reader::_reader_core at line 47 of Moose/Meta/Method/Accessor/Native/Reader.pm, avg 9µs/call # 2 times (18µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_generate_method at line 35 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 9µs/call
sub _inline_post_body { '' }
153
154
# spent 6.15ms (3.94+2.21) within Moose::Meta::Method::Accessor::_inline_check_constraint which was called 52 times, avg 118µs/call: # 26 times (2.03ms+1.16ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 123µs/call # 15 times (1.12ms+589µs) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 209, avg 114µs/call # 11 times (790µs+456µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 113µs/call
sub _inline_check_constraint {
1552523.75ms my ($self, $value) = @_;
156
15752422µs my $attr = $self->associated_attribute;
# spent 422µs making 52 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
158
15952601µs return '' unless $attr->has_type_constraint;
# spent 601µs making 52 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 12µs/call
160
16148298µs my $attr_name = quotemeta( $attr->name );
# spent 298µs making 48 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call
162
16348886µs qq{\$type_constraint->($value) || } . $self->_inline_throw_error(qq{"Attribute ($attr_name) does not pass the type constraint because: " . \$type_constraint_obj->get_message($value)}, "data => $value") . ";";
# spent 886µs making 48 calls to Moose::Meta::Method::_inline_throw_error, avg 18µs/call
164}
165
166
# spent 3.26ms (2.17+1.09) within Moose::Meta::Method::Accessor::_inline_check_coercion which was called 52 times, avg 63µs/call: # 26 times (1.05ms+503µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 60µs/call # 15 times (685µs+393µs) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 208, avg 72µs/call # 11 times (435µs+197µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 57µs/call
sub _inline_check_coercion {
1671572.15ms my ($self, $value) = @_;
168
16952449µs my $attr = $self->associated_attribute;
# spent 449µs making 52 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
170
17154644µs return '' unless $attr->should_coerce && $attr->type_constraint->has_coercion;
# spent 619µs making 52 calls to Moose::Meta::Mixin::AttributeCore::should_coerce, avg 12µs/call # spent 13µs making 1 call to Moose::Meta::Mixin::AttributeCore::type_constraint # spent 12µs making 1 call to Moose::Meta::TypeConstraint::has_coercion
172 return "$value = \$attr->type_constraint->coerce($value);";
173}
174
175
# spent 2.87ms (1.97+895µs) within Moose::Meta::Method::Accessor::_inline_check_required which was called 37 times, avg 78µs/call: # 26 times (1.48ms+640µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 82µs/call # 11 times (491µs+256µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 68µs/call
sub _inline_check_required {
1761151.79ms my $self = shift;
17737353µs my $attr = $self->associated_attribute;
# spent 353µs making 37 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
178
17937493µs return '' unless $attr->is_required;
# spent 493µs making 37 calls to Moose::Meta::Mixin::AttributeCore::is_required, avg 13µs/call
180
181214µs my $attr_name = quotemeta( $attr->name );
# spent 14µs making 2 calls to Class::MOP::Mixin::AttributeCore::name, avg 7µs/call
182
183235µs return qq{(\@_ >= 2) || } . $self->_inline_throw_error(qq{"Attribute ($attr_name) is required, so cannot be set to undef"}) . ';' # defined $_[1] is not good enough
# spent 35µs making 2 calls to Moose::Meta::Method::_inline_throw_error, avg 18µs/call
184}
185
186
# spent 25.4ms (8.93+16.4) within Moose::Meta::Method::Accessor::_inline_check_lazy which was called 128 times, avg 198µs/call: # 97 times (7.27ms+15.0ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 230µs/call # 26 times (1.42ms+1.32ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 105µs/call # 3 times (129µs+70µs) by Moose::Meta::Method::Accessor::Native::Reader::_reader_core at line 46 of Moose/Meta/Method/Accessor/Native/Reader.pm, avg 66µs/call # 2 times (111µs+46µs) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 51 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 78µs/call
sub _inline_check_lazy {
1875587.60ms my ($self, $instance) = @_;
188
1891281.22ms my $attr = $self->associated_attribute;
# spent 1.22ms making 128 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
190
1911282.37ms return '' unless $attr->is_lazy;
# spent 2.37ms making 128 calls to Moose::Meta::Mixin::AttributeCore::is_lazy, avg 19µs/call
192
193193.34ms my $slot_exists = $self->_inline_has($instance);
# spent 3.34ms making 19 calls to Moose::Meta::Method::Accessor::_inline_has, avg 176µs/call
194
195 my $code = 'unless (' . $slot_exists . ') {' . "\n";
19619238µs if ($attr->has_type_constraint) {
# spent 238µs making 19 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 13µs/call
19730322µs if ($attr->has_default || $attr->has_builder) {
# spent 165µs making 15 calls to Class::MOP::Mixin::AttributeCore::has_builder, avg 11µs/call # spent 157µs making 15 calls to Class::MOP::Mixin::AttributeCore::has_default, avg 10µs/call
19845517µs if ($attr->has_default) {
# spent 258µs making 15 calls to Moose::Meta::Method::_inline_throw_error, avg 17µs/call # spent 130µs making 15 calls to Class::MOP::Mixin::AttributeCore::has_builder, avg 9µs/call # spent 128µs making 15 calls to Class::MOP::Mixin::AttributeCore::has_default, avg 9µs/call
199 $code .= ' my $default = $attr->default(' . $instance . ');'."\n";
200 }
201 elsif ($attr->has_builder) {
202 $code .= ' my $default;'."\n".
203 ' if(my $builder = '.$instance.'->can($attr->builder)){ '."\n".
204 ' $default = '.$instance.'->$builder; '. "\n } else {\n" .
205 ' ' . $self->_inline_throw_error(q{sprintf "%s does not support builder method '%s' for attribute '%s'", ref(} . $instance . ') || '.$instance.', $attr->builder, $attr->name') .
206 ';'. "\n }";
207 }
208151.08ms $code .= $self->_inline_check_coercion('$default') . "\n";
# spent 1.08ms making 15 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 72µs/call
209151.71ms $code .= $self->_inline_check_constraint('$default', 'lazy') . "\n";
# spent 1.71ms making 15 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 114µs/call
210154.36ms $code .= ' ' . $self->_inline_init_slot($attr, $instance, '$default') . "\n";
# spent 4.36ms making 15 calls to Moose::Meta::Method::Accessor::_inline_init_slot, avg 291µs/call
211 }
212 else {
213 $code .= ' ' . $self->_inline_init_slot($attr, $instance, 'undef') . "\n";
214 }
215
216 } else {
217161.27ms if ($attr->has_default) {
# spent 1.12ms making 4 calls to Moose::Meta::Method::Accessor::_inline_init_slot, avg 280µs/call # spent 60µs making 4 calls to Moose::Meta::Method::_inline_throw_error, avg 15µs/call # spent 44µs making 4 calls to Class::MOP::Mixin::AttributeCore::has_builder, avg 11µs/call # spent 41µs making 4 calls to Class::MOP::Mixin::AttributeCore::has_default, avg 10µs/call
218 $code .= ' ' . $self->_inline_init_slot($attr, $instance, ('$attr->default(' . $instance . ')')) . "\n";
219 }
220 elsif ($attr->has_builder) {
221 $code .= ' if (my $builder = '.$instance.'->can($attr->builder)) { ' . "\n"
222 . ' ' . $self->_inline_init_slot($attr, $instance, ($instance . '->$builder'))
223 . "\n } else {\n"
224 . ' ' . $self->_inline_throw_error(q{sprintf "%s does not support builder method '%s' for attribute '%s'", ref(} . $instance . ') || '.$instance.', $attr->builder, $attr->name')
225 . ';'. "\n }";
226 }
227 else {
228 $code .= ' ' . $self->_inline_init_slot($attr, $instance, 'undef') . "\n";
229 }
230 }
231 $code .= "}\n";
232 return $code;
233}
234
235
# spent 5.48ms (807µs+4.67) within Moose::Meta::Method::Accessor::_inline_init_slot which was called 19 times, avg 288µs/call: # 15 times (645µs+3.71ms) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 210, avg 291µs/call # 4 times (162µs+959µs) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 217, avg 280µs/call
sub _inline_init_slot {
23657687µs my ($self, $attr, $inv, $value) = @_;
23719191µs if ($attr->has_initializer) {
# spent 191µs making 19 calls to Class::MOP::Mixin::AttributeCore::has_initializer, avg 10µs/call
238 return ('$attr->set_initial_value(' . $inv . ', ' . $value . ');');
239 }
240 else {
241194.48ms return $self->_inline_store($inv, $value);
# spent 4.48ms making 19 calls to Moose::Meta::Method::Accessor::_inline_store, avg 236µs/call
242 }
243}
244
245
# spent 39.1ms (2.04+37.0) within Moose::Meta::Method::Accessor::_inline_store which was called 56 times, avg 698µs/call: # 26 times (979µs+29.9ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 1.19ms/call # 19 times (669µs+3.81ms) by Moose::Meta::Method::Accessor::_inline_init_slot at line 241, avg 236µs/call # 11 times (393µs+3.28ms) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 334µs/call
sub _inline_store {
2461121.84ms my ( $self, $instance, $value ) = @_;
247
24811237.0ms return $self->associated_attribute->inline_set( $instance, $value );
# spent 36.6ms making 56 calls to Moose::Meta::Attribute::inline_set, avg 653µs/call # spent 464µs making 56 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
249}
250
251
# spent 2.63ms (1.58+1.05) within Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger which was called 37 times, avg 71µs/call: # 26 times (1.11ms+771µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 72µs/call # 11 times (469µs+280µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 68µs/call
sub _inline_get_old_value_for_trigger {
2521111.39ms my ( $self, $instance ) = @_;
253
25437553µs my $attr = $self->associated_attribute;
# spent 553µs making 37 calls to Class::MOP::Method::Accessor::associated_attribute, avg 15µs/call
25537497µs return '' unless $attr->has_trigger;
# spent 497µs making 37 calls to Moose::Meta::Mixin::AttributeCore::has_trigger, avg 13µs/call
256
257 return
258 'my @old = '
259 . $self->_inline_has($instance) . q{ ? }
260 . $self->_inline_get($instance) . q{ : ()} . ";\n";
261}
262
263
# spent 2.54ms (1.74+796µs) within Moose::Meta::Method::Accessor::_inline_trigger which was called 39 times, avg 65µs/call: # 26 times (1.14ms+555µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 65µs/call # 11 times (513µs+202µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 65µs/call # 2 times (86µs+38µs) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 77 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 62µs/call
sub _inline_trigger {
2641171.54ms my ($self, $instance, $value, $old_value) = @_;
26539388µs my $attr = $self->associated_attribute;
# spent 388µs making 39 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
26639408µs return '' unless $attr->has_trigger;
# spent 408µs making 39 calls to Moose::Meta::Mixin::AttributeCore::has_trigger, avg 10µs/call
267 return sprintf('$attr->trigger->(%s, %s, %s);', $instance, $value, $old_value);
268}
269
270
# spent 96.6ms (4.66+91.9) within Moose::Meta::Method::Accessor::_inline_get which was called 128 times, avg 755µs/call: # 97 times (3.54ms+87.6ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 95, avg 939µs/call # 26 times (938µs+3.64ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 176µs/call # 5 times (190µs+708µs) by Moose::Role::super at line 71 of Moose/Role.pm, avg 180µs/call
sub _inline_get {
2712564.30ms my ($self, $instance) = @_;
272
27325691.9ms return $self->associated_attribute->inline_get($instance);
# spent 90.8ms making 128 calls to Class::MOP::Attribute::inline_get, avg 710µs/call # spent 1.09ms making 128 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
274}
275
276
# spent 3.34ms (695µs+2.65) within Moose::Meta::Method::Accessor::_inline_has which was called 19 times, avg 176µs/call: # 19 times (695µs+2.65ms) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 193, avg 176µs/call
sub _inline_has {
27738608µs my ($self, $instance) = @_;
278
279382.65ms return $self->associated_attribute->inline_has($instance);
# spent 2.49ms making 19 calls to Class::MOP::Attribute::inline_has, avg 131µs/call # spent 156µs making 19 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
280}
281
282
# spent 8.31ms (5.37+2.93) within Moose::Meta::Method::Accessor::_inline_auto_deref which was called 123 times, avg 68µs/call: # 97 times (4.10ms+2.35ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 67µs/call # 26 times (1.27ms+580µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 71µs/call
sub _inline_auto_deref {
2833694.69ms my ( $self, $ref_value ) = @_;
2841231.01ms my $attr = $self->associated_attribute;
# spent 1.01ms making 123 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
285
2861231.92ms return $ref_value unless $attr->should_auto_deref;
# spent 1.92ms making 123 calls to Moose::Meta::Mixin::AttributeCore::should_auto_deref, avg 16µs/call
287
288 my $type_constraint = $attr->type_constraint;
289
290 my $sigil;
291 if ($type_constraint->is_a_type_of('ArrayRef')) {
292 $sigil = '@';
293 }
294 elsif ($type_constraint->is_a_type_of('HashRef')) {
295 $sigil = '%';
296 }
297 else {
298 $self->throw_error( "Can not auto de-reference the type constraint '"
299 . quotemeta( $type_constraint->name )
300 . "'", type_constraint => $type_constraint );
301 }
302
303 "(wantarray() ? $sigil\{ ( $ref_value ) || return } : ( $ref_value ) )";
304}
305
306111µs1;
307
308__END__