← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:45:08 2010
Reported on Wed Nov 17 22:10:05 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 3210 statements in 61.9ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
96228.79ms23.9msMoose::Meta::Method::Accessor::::_eval_environmentMoose::Meta::Method::Accessor::_eval_environment
126528.43ms13.7msMoose::Meta::Method::Accessor::::_instance_is_inlinableMoose::Meta::Method::Accessor::_instance_is_inlinable
65227.46ms173msMoose::Meta::Method::Accessor::::_generate_reader_method_inlineMoose::Meta::Method::Accessor::_generate_reader_method_inline
87436.10ms16.6msMoose::Meta::Method::Accessor::::_inline_check_lazyMoose::Meta::Method::Accessor::_inline_check_lazy
96425.42ms120msMoose::Meta::Method::Accessor::::_eval_codeMoose::Meta::Method::Accessor::_eval_code
73213.41ms5.32msMoose::Meta::Method::Accessor::::_inline_auto_derefMoose::Meta::Method::Accessor::_inline_auto_deref
87323.39ms74.8msMoose::Meta::Method::Accessor::::_inline_getMoose::Meta::Method::Accessor::_inline_get
28312.36ms3.61msMoose::Meta::Method::Accessor::::_inline_check_constraintMoose::Meta::Method::Accessor::_inline_check_constraint
64112.31ms181msMoose::Meta::Method::Accessor::::_generate_reader_methodMoose::Meta::Method::Accessor::_generate_reader_method
8111.84ms39.4msMoose::Meta::Method::Accessor::::_generate_accessor_method_inlineMoose::Meta::Method::Accessor::_generate_accessor_method_inline
9111.65ms19.8msMoose::Meta::Method::Accessor::::_generate_writer_method_inlineMoose::Meta::Method::Accessor::_generate_writer_method_inline
27321.35ms1.92msMoose::Meta::Method::Accessor::::_inline_triggerMoose::Meta::Method::Accessor::_inline_trigger
23321.31ms1.80msMoose::Meta::Method::Accessor::::_inline_get_old_value_for_triggerMoose::Meta::Method::Accessor::_inline_get_old_value_for_trigger
34311.29ms2.05msMoose::Meta::Method::Accessor::::_value_needs_copyMoose::Meta::Method::Accessor::_value_needs_copy
28311.22ms1.82msMoose::Meta::Method::Accessor::::_inline_check_coercionMoose::Meta::Method::Accessor::_inline_check_coercion
28311.09ms25.2msMoose::Meta::Method::Accessor::::_inline_storeMoose::Meta::Method::Accessor::_inline_store
9653928µs928µsMoose::Meta::Method::Accessor::::_inline_post_bodyMoose::Meta::Method::Accessor::_inline_post_body
9653894µs894µsMoose::Meta::Method::Accessor::::_inline_pre_bodyMoose::Meta::Method::Accessor::_inline_pre_body
1721834µs1.20msMoose::Meta::Method::Accessor::::_inline_check_requiredMoose::Meta::Method::Accessor::_inline_check_required
1111469µs3.21msMoose::Meta::Method::Accessor::::_inline_init_slotMoose::Meta::Method::Accessor::_inline_init_slot
1111419µs1.96msMoose::Meta::Method::Accessor::::_inline_hasMoose::Meta::Method::Accessor::_inline_has
1721384µs1.25msMoose::Meta::Method::Accessor::::_inline_copy_valueMoose::Meta::Method::Accessor::_inline_copy_value
911372µs21.2msMoose::Meta::Method::Accessor::::_generate_writer_methodMoose::Meta::Method::Accessor::_generate_writer_method
811320µs40.6msMoose::Meta::Method::Accessor::::_generate_accessor_methodMoose::Meta::Method::Accessor::_generate_accessor_method
711309µs4.38msMoose::Meta::Method::Accessor::::_generate_predicate_methodMoose::Meta::Method::Accessor::_generate_predicate_method
11169µs88µsMoose::Meta::Method::Accessor::::BEGIN@4Moose::Meta::Method::Accessor::BEGIN@4
11140µs459µsMoose::Meta::Method::Accessor::::BEGIN@11Moose::Meta::Method::Accessor::BEGIN@11
11140µs138µsMoose::Meta::Method::Accessor::::BEGIN@5Moose::Meta::Method::Accessor::BEGIN@5
0000s0sMoose::Meta::Method::Accessor::::_error_throwerMoose::Meta::Method::Accessor::_error_thrower
0000s0sMoose::Meta::Method::Accessor::::_generate_clearer_methodMoose::Meta::Method::Accessor::_generate_clearer_method
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
4395µs2106µs
# spent 88µs (69+18) within Moose::Meta::Method::Accessor::BEGIN@4 which was called: # once (69µs+18µs) by Moose::Meta::Attribute::BEGIN@17 at line 4
use strict;
# spent 88µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@4 # spent 18µs making 1 call to strict::import
53234µs2237µs
# spent 138µs (40+99) within Moose::Meta::Method::Accessor::BEGIN@5 which was called: # once (40µs+99µs) by Moose::Meta::Attribute::BEGIN@17 at line 5
use warnings;
# spent 138µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@5 # spent 99µs making 1 call to warnings::import
6
715µsour $VERSION = '1.19';
8166µs$VERSION = eval $VERSION;
# spent 11µs executing statements in string eval
913µsour $AUTHORITY = 'cpan:STEVAN';
10
111419µs
# spent 459µs (40+419) within Moose::Meta::Method::Accessor::BEGIN@11 which was called: # once (40µs+419µs) by Moose::Meta::Attribute::BEGIN@17 at line 12
use base 'Moose::Meta::Method',
# spent 419µs making 1 call to base::import
1235.98ms1459µs 'Class::MOP::Method::Accessor';
# spent 459µ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 120ms (5.42+115) within Moose::Meta::Method::Accessor::_eval_code which was called 96 times, avg 1.25ms/call: # 65 times (3.35ms+70.3ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 1.13ms/call # 14 times (1.16ms+25.2ms) by Moose::Meta::Method::Accessor::Native::_initialize_body at line 48 of Moose/Meta/Method/Accessor/Native.pm, avg 1.89ms/call # 9 times (460µs+10.0ms) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 1.17ms/call # 8 times (442µs+9.02ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 1.18ms/call
sub _eval_code {
204805.05ms my ( $self, $source ) = @_;
21
229630.5ms my $environment = $self->_eval_environment;
23
249684.1ms my ( $code, $e ) = $self->_compile_code( environment => $environment, code => $source );
# spent 84.1ms making 96 calls to Class::MOP::Method::Generated::_compile_code, avg 876µ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 23.9ms (8.79+15.1) within Moose::Meta::Method::Accessor::_eval_environment which was called 96 times, avg 249µs/call: # 82 times (7.49ms+12.3ms) by Moose::Meta::Method::Accessor::_eval_code at line 22, avg 241µs/call # 14 times (1.30ms+2.81ms) by Moose::Role::super at line 71 of Moose/Role.pm, avg 294µs/call
sub _eval_environment {
353846.22ms my $self = shift;
36
3796824µs my $attr = $self->associated_attribute;
# spent 824µs making 96 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
38961.76ms my $type_constraint_obj = $attr->type_constraint;
# spent 1.76ms making 96 calls to Moose::Meta::Mixin::AttributeCore::type_constraint, avg 18µs/call
39
40 return {
4111.47ms18812.5ms '$attr' => \$attr,
# spent 11.2ms making 70 calls to MooseX::Types::TypeDecorator::AUTOLOAD, avg 159µs/call # spent 721µs making 70 calls to MooseX::Types::TypeDecorator::__ANON__[MooseX/Types/TypeDecorator.pm:27], avg 10µs/call # spent 378µs making 24 calls to Moose::Meta::TypeConstraint::_compiled_type_constraint, avg 16µs/call # spent 270µs making 24 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 39.4ms (1.84+37.6) within Moose::Meta::Method::Accessor::_generate_accessor_method_inline which was called 8 times, avg 4.93ms/call: # 8 times (1.84ms+37.6ms) by Moose::Meta::Method::Accessor::_generate_accessor_method at line 135, avg 4.93ms/call
sub _generate_accessor_method_inline {
53321.46ms my $self = $_[0];
54 my $inv = '$_[0]';
558550µs my $value_name = $self->_value_needs_copy ? '$val' : '$_[1]';
# spent 550µs making 8 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 69µs/call
56
5710437.0ms $self->_eval_code('sub { ' . "\n"
# spent 20.1ms making 8 calls to Moose::Meta::Method::Accessor::_inline_store, avg 2.52ms/call # spent 9.46ms making 8 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.18ms/call # spent 1.52ms making 8 calls to Moose::Meta::Method::Accessor::_inline_get, avg 190µs/call # spent 1.35ms making 8 calls to Moose::Meta::Method::Accessor::_inline_check_lazy, avg 169µs/call # spent 1.12ms making 8 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 140µs/call # spent 605µs making 8 calls to Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger, avg 76µs/call # spent 588µs making 8 calls to Moose::Meta::Method::Accessor::_inline_auto_deref, avg 74µs/call # spent 557µs making 8 calls to Moose::Meta::Method::Accessor::_inline_trigger, avg 70µs/call # spent 557µs making 8 calls to Moose::Meta::Method::Accessor::_inline_copy_value, avg 70µs/call # spent 540µs making 8 calls to Moose::Meta::Method::Accessor::_inline_check_required, avg 68µs/call # spent 478µs making 8 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 60µs/call # spent 74µs making 8 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 9µs/call # spent 72µs making 8 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 19.8ms (1.65+18.2) within Moose::Meta::Method::Accessor::_generate_writer_method_inline which was called 9 times, avg 2.20ms/call: # 9 times (1.65ms+18.2ms) by Moose::Meta::Method::Accessor::_generate_writer_method at line 129, avg 2.20ms/call
sub _generate_writer_method_inline {
75361.28ms my $self = $_[0];
76 my $inv = '$_[0]';
779640µs my $value_name = $self->_value_needs_copy ? '$val' : '$_[1]';
# spent 640µs making 9 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 71µs/call
78
799017.5ms $self->_eval_code('sub { '
# spent 10.5ms making 9 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.17ms/call # spent 2.42ms making 9 calls to Moose::Meta::Method::Accessor::_inline_store, avg 269µs/call # spent 1.23ms making 9 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 137µs/call # spent 688µs making 9 calls to Moose::Meta::Method::Accessor::_inline_copy_value, avg 76µs/call # spent 683µs making 9 calls to Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger, avg 76µs/call # spent 660µs making 9 calls to Moose::Meta::Method::Accessor::_inline_check_required, avg 73µs/call # spent 597µs making 9 calls to Moose::Meta::Method::Accessor::_inline_trigger, avg 66µs/call # spent 580µs making 9 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 64µs/call # spent 83µs making 9 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 9µs/call # spent 81µs making 9 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 9µ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 173ms (7.46+166) within Moose::Meta::Method::Accessor::_generate_reader_method_inline which was called 65 times, avg 2.67ms/call: # 64 times (7.35ms+164ms) by Moose::Meta::Method::Accessor::_generate_reader_method at line 123, avg 2.68ms/call # once (103µs+1.74ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm
sub _generate_reader_method_inline {
932606.31ms my $self = $_[0];
94 my $inv = '$_[0]';
956570.7ms my $slot_access = $self->_inline_get($inv);
# spent 70.7ms making 65 calls to Moose::Meta::Method::Accessor::_inline_get, avg 1.09ms/call
96
9739095.1ms $self->_eval_code('sub {'
# spent 73.6ms making 65 calls to Moose::Meta::Method::Accessor::_eval_code, avg 1.13ms/call # spent 14.2ms making 65 calls to Moose::Meta::Method::Accessor::_inline_check_lazy, avg 219µs/call # spent 4.73ms making 65 calls to Moose::Meta::Method::Accessor::_inline_auto_deref, avg 73µs/call # spent 1.25ms making 65 calls to Moose::Meta::Method::_inline_throw_error, avg 19µs/call # spent 638µs making 65 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 10µs/call # spent 607µs making 65 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 9µ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 1.25ms (384µs+861µs) within Moose::Meta::Method::Accessor::_inline_copy_value which was called 17 times, avg 73µs/call: # 9 times (221µs+467µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 76µs/call # 8 times (163µs+394µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 70µs/call
sub _inline_copy_value {
10717381µs17861µs return '' unless shift->_value_needs_copy;
# spent 861µs making 17 calls to Moose::Meta::Method::Accessor::_value_needs_copy, avg 51µs/call
108 return 'my $val = $_[1];'
109}
110
111
# spent 2.05ms (1.29+761µs) within Moose::Meta::Method::Accessor::_value_needs_copy which was called 34 times, avg 60µs/call: # 17 times (538µs+324µs) by Moose::Meta::Method::Accessor::_inline_copy_value at line 107, avg 51µs/call # 9 times (417µs+223µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 77, avg 71µs/call # 8 times (335µs+215µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 55, avg 69µs/call
sub _value_needs_copy {
112681.23ms34328µs my $attr = (shift)->associated_attribute;
# spent 328µs making 34 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
11334433µs return $attr->should_coerce;
# spent 433µs making 34 calls to Moose::Meta::Mixin::AttributeCore::should_coerce, avg 13µs/call
114}
115
116
# spent 13.7ms (8.43+5.31) within Moose::Meta::Method::Accessor::_instance_is_inlinable which was called 126 times, avg 109µs/call: # 64 times (4.16ms+2.67ms) by Moose::Meta::Method::Accessor::_generate_reader_method at line 123, avg 107µs/call # 38 times (2.73ms+1.58ms) by Moose::Meta::Method::Accessor::Native::_slot_access_can_be_inlined at line 141 of Moose/Meta/Method/Accessor/Native.pm, avg 113µs/call # 9 times (597µs+404µs) by Moose::Meta::Method::Accessor::_generate_writer_method at line 129, avg 111µs/call # 8 times (497µs+341µs) by Moose::Meta::Method::Accessor::_generate_accessor_method at line 135, avg 105µs/call # 7 times (444µs+316µs) by Moose::Meta::Method::Accessor::_generate_predicate_method at line 141, avg 109µs/call
sub _instance_is_inlinable {
1172527.11ms my $self = shift;
1185045.31ms return $self->associated_attribute->associated_class->instance_metaclass->is_inlinable;
# spent 1.69ms making 126 calls to Class::MOP::Class::instance_metaclass, avg 13µs/call # spent 1.22ms making 126 calls to Class::MOP::Attribute::associated_class, avg 10µs/call # spent 1.22ms making 126 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call # spent 1.18ms making 126 calls to Class::MOP::Instance::is_inlinable, avg 9µs/call
119}
120
121
# spent 181ms (2.31+178) within Moose::Meta::Method::Accessor::_generate_reader_method which was called 64 times, avg 2.82ms/call: # 64 times (2.31ms+178ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 2.82ms/call
sub _generate_reader_method {
1221282.08ms my $self = shift;
123128178ms $self->_instance_is_inlinable ? $self->_generate_reader_method_inline(@_)
# spent 171ms making 64 calls to Moose::Meta::Method::Accessor::_generate_reader_method_inline, avg 2.68ms/call # spent 6.83ms making 64 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 107µs/call
124 : $self->SUPER::_generate_reader_method(@_);
125}
126
127
# spent 21.2ms (372µs+20.8) within Moose::Meta::Method::Accessor::_generate_writer_method which was called 9 times, avg 2.35ms/call: # 9 times (372µs+20.8ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 2.35ms/call
sub _generate_writer_method {
12818325µs my $self = shift;
1291820.8ms $self->_instance_is_inlinable ? $self->_generate_writer_method_inline(@_)
# spent 19.8ms making 9 calls to Moose::Meta::Method::Accessor::_generate_writer_method_inline, avg 2.20ms/call # spent 1.00ms making 9 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 111µs/call
130 : $self->SUPER::_generate_writer_method(@_);
131}
132
133
# spent 40.6ms (320µs+40.3) within Moose::Meta::Method::Accessor::_generate_accessor_method which was called 8 times, avg 5.07ms/call: # 8 times (320µs+40.3ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 5.07ms/call
sub _generate_accessor_method {
13416275µs my $self = shift;
1351640.3ms $self->_instance_is_inlinable ? $self->_generate_accessor_method_inline(@_)
# spent 39.4ms making 8 calls to Moose::Meta::Method::Accessor::_generate_accessor_method_inline, avg 4.93ms/call # spent 838µs making 8 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 105µs/call
136 : $self->SUPER::_generate_accessor_method(@_);
137}
138
139
# spent 4.38ms (309µs+4.07) within Moose::Meta::Method::Accessor::_generate_predicate_method which was called 7 times, avg 626µs/call: # 7 times (309µs+4.07ms) by Class::MOP::Method::Accessor::_initialize_body at line 87 of Class/MOP/Method/Accessor.pm, avg 626µs/call
sub _generate_predicate_method {
14014279µs my $self = shift;
141144.07ms $self->_instance_is_inlinable ? $self->_generate_predicate_method_inline(@_)
# spent 3.31ms making 7 calls to Class::MOP::Method::Accessor::_generate_predicate_method_inline, avg 473µs/call # spent 760µs making 7 calls to Moose::Meta::Method::Accessor::_instance_is_inlinable, avg 109µs/call
142 : $self->SUPER::_generate_predicate_method(@_);
143}
144
145sub _generate_clearer_method {
146 my $self = shift;
147 $self->_instance_is_inlinable ? $self->_generate_clearer_method_inline(@_)
148 : $self->SUPER::_generate_clearer_method(@_);
149}
150
151961.20ms
# spent 894µs within Moose::Meta::Method::Accessor::_inline_pre_body which was called 96 times, avg 9µs/call: # 65 times (607µs+0s) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 9µs/call # 10 times (96µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_generate_method at line 27 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 10µs/call # 9 times (83µs+0s) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 9µs/call # 8 times (72µs+0s) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 9µs/call # 4 times (36µs+0s) by Moose::Meta::Method::Accessor::Native::Reader::_generate_method at line 22 of Moose/Meta/Method/Accessor/Native/Reader.pm, avg 9µs/call
sub _inline_pre_body { '' }
152961.21ms
# spent 928µs within Moose::Meta::Method::Accessor::_inline_post_body which was called 96 times, avg 10µs/call: # 65 times (638µs+0s) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 10µs/call # 10 times (100µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_generate_method at line 35 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 10µs/call # 9 times (81µs+0s) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 9µs/call # 8 times (74µs+0s) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 9µs/call # 4 times (36µ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
sub _inline_post_body { '' }
153
154
# spent 3.61ms (2.36+1.26) within Moose::Meta::Method::Accessor::_inline_check_constraint which was called 28 times, avg 129µs/call: # 11 times (826µs+431µs) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 209, avg 114µs/call # 9 times (797µs+437µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 137µs/call # 8 times (736µs+388µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 140µs/call
sub _inline_check_constraint {
1551402.30ms my ($self, $value) = @_;
156
15728250µs my $attr = $self->associated_attribute;
# spent 250µs making 28 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
158
15928321µs return '' unless $attr->has_type_constraint;
# spent 321µs making 28 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 11µs/call
160
16128173µs my $attr_name = quotemeta( $attr->name );
# spent 173µs making 28 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call
162
16328511µ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 511µs making 28 calls to Moose::Meta::Method::_inline_throw_error, avg 18µs/call
164}
165
166
# spent 1.82ms (1.22+598µs) within Moose::Meta::Method::Accessor::_inline_check_coercion which was called 28 times, avg 65µs/call: # 11 times (495µs+267µs) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 208, avg 69µs/call # 9 times (399µs+181µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 64µs/call # 8 times (328µs+151µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 60µs/call
sub _inline_check_coercion {
167841.08ms my ($self, $value) = @_;
168
16928260µs my $attr = $self->associated_attribute;
# spent 260µs making 28 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
170
17128338µs return '' unless $attr->should_coerce && $attr->type_constraint->has_coercion;
# spent 338µs making 28 calls to Moose::Meta::Mixin::AttributeCore::should_coerce, avg 12µs/call
172 return "$value = \$attr->type_constraint->coerce($value);";
173}
174
175
# spent 1.20ms (834µs+367µs) within Moose::Meta::Method::Accessor::_inline_check_required which was called 17 times, avg 71µs/call: # 9 times (459µs+202µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 73µs/call # 8 times (375µs+165µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 68µs/call
sub _inline_check_required {
17651730µs my $self = shift;
17717144µs my $attr = $self->associated_attribute;
# spent 144µs making 17 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
178
17917223µs return '' unless $attr->is_required;
# spent 223µs making 17 calls to Moose::Meta::Mixin::AttributeCore::is_required, avg 13µs/call
180
181 my $attr_name = quotemeta( $attr->name );
182
183 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
184}
185
186
# spent 16.6ms (6.10+10.5) within Moose::Meta::Method::Accessor::_inline_check_lazy which was called 87 times, avg 191µs/call: # 65 times (4.92ms+9.31ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 219µs/call # 10 times (474µs+256µs) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 51 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 73µs/call # 8 times (522µs+828µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 169µs/call # 4 times (178µs+97µs) by Moose::Meta::Method::Accessor::Native::Reader::_reader_core at line 46 of Moose/Meta/Method/Accessor/Native/Reader.pm, avg 69µs/call
sub _inline_check_lazy {
1873715.34ms my ($self, $instance) = @_;
188
18987861µs my $attr = $self->associated_attribute;
# spent 861µs making 87 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
190
191871.76ms return '' unless $attr->is_lazy;
# spent 1.76ms making 87 calls to Moose::Meta::Mixin::AttributeCore::is_lazy, avg 20µs/call
192
193111.96ms my $slot_exists = $self->_inline_has($instance);
# spent 1.96ms making 11 calls to Moose::Meta::Method::Accessor::_inline_has, avg 179µs/call
194
195 my $code = 'unless (' . $slot_exists . ') {' . "\n";
19611129µs if ($attr->has_type_constraint) {
# spent 129µs making 11 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 12µs/call
19720225µs if ($attr->has_default || $attr->has_builder) {
# spent 124µs making 11 calls to Class::MOP::Mixin::AttributeCore::has_default, avg 11µs/call # spent 101µs making 9 calls to Class::MOP::Mixin::AttributeCore::has_builder, avg 11µs/call
19829322µs if ($attr->has_default) {
# spent 144µs making 9 calls to Moose::Meta::Method::_inline_throw_error, avg 16µs/call # spent 97µs making 11 calls to Class::MOP::Mixin::AttributeCore::has_default, avg 9µs/call # spent 81µs making 9 calls to Class::MOP::Mixin::AttributeCore::has_builder, 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 }
20811762µs $code .= $self->_inline_check_coercion('$default') . "\n";
# spent 762µs making 11 calls to Moose::Meta::Method::Accessor::_inline_check_coercion, avg 69µs/call
209111.26ms $code .= $self->_inline_check_constraint('$default', 'lazy') . "\n";
# spent 1.26ms making 11 calls to Moose::Meta::Method::Accessor::_inline_check_constraint, avg 114µs/call
210113.21ms $code .= ' ' . $self->_inline_init_slot($attr, $instance, '$default') . "\n";
# spent 3.21ms making 11 calls to Moose::Meta::Method::Accessor::_inline_init_slot, avg 292µs/call
211 }
212 else {
213 $code .= ' ' . $self->_inline_init_slot($attr, $instance, 'undef') . "\n";
214 }
215
216 } else {
217 if ($attr->has_default) {
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 3.21ms (469µs+2.74) within Moose::Meta::Method::Accessor::_inline_init_slot which was called 11 times, avg 292µs/call: # 11 times (469µs+2.74ms) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 210, avg 292µs/call
sub _inline_init_slot {
23633398µs my ($self, $attr, $inv, $value) = @_;
23711111µs if ($attr->has_initializer) {
# spent 111µs making 11 calls to Class::MOP::Mixin::AttributeCore::has_initializer, avg 10µs/call
238 return ('$attr->set_initial_value(' . $inv . ', ' . $value . ');');
239 }
240 else {
241112.63ms return $self->_inline_store($inv, $value);
# spent 2.63ms making 11 calls to Moose::Meta::Method::Accessor::_inline_store, avg 239µs/call
242 }
243}
244
245
# spent 25.2ms (1.09+24.1) within Moose::Meta::Method::Accessor::_inline_store which was called 28 times, avg 899µs/call: # 11 times (407µs+2.23ms) by Moose::Meta::Method::Accessor::_inline_init_slot at line 241, avg 239µs/call # 9 times (371µs+2.05ms) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 269µs/call # 8 times (313µs+19.8ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 2.52ms/call
sub _inline_store {
24656980µs my ( $self, $instance, $value ) = @_;
247
2485624.1ms return $self->associated_attribute->inline_set( $instance, $value );
# spent 23.8ms making 28 calls to Moose::Meta::Attribute::inline_set, avg 852µs/call # spent 237µs making 28 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
249}
250
251
# spent 1.80ms (1.31+496µs) within Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger which was called 23 times, avg 78µs/call: # 9 times (498µs+184µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 76µs/call # 8 times (435µs+170µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 76µs/call # 6 times (373µs+141µs) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 69 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 86µs/call
sub _inline_get_old_value_for_trigger {
252691.16ms my ( $self, $instance ) = @_;
253
25423213µs my $attr = $self->associated_attribute;
# spent 213µs making 23 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call
25523282µs return '' unless $attr->has_trigger;
# spent 282µs making 23 calls to Moose::Meta::Mixin::AttributeCore::has_trigger, avg 12µ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 1.92ms (1.35+573µs) within Moose::Meta::Method::Accessor::_inline_trigger which was called 27 times, avg 71µs/call: # 10 times (548µs+216µs) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 77 of Moose/Meta/Method/Accessor/Native/Writer.pm, avg 76µs/call # 9 times (422µs+176µs) by Moose::Meta::Method::Accessor::_generate_writer_method_inline at line 79, avg 66µs/call # 8 times (375µs+182µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 70µs/call
sub _inline_trigger {
264811.16ms my ($self, $instance, $value, $old_value) = @_;
26527267µs my $attr = $self->associated_attribute;
# spent 267µs making 27 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
26627307µs return '' unless $attr->has_trigger;
# spent 307µs making 27 calls to Moose::Meta::Mixin::AttributeCore::has_trigger, avg 11µs/call
267 return sprintf('$attr->trigger->(%s, %s, %s);', $instance, $value, $old_value);
268}
269
270
# spent 74.8ms (3.39+71.4) within Moose::Meta::Method::Accessor::_inline_get which was called 87 times, avg 860µs/call: # 65 times (2.54ms+68.2ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 95, avg 1.09ms/call # 14 times (548µs+2.08ms) by Moose::Role::super at line 71 of Moose/Role.pm, avg 187µs/call # 8 times (303µs+1.21ms) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 190µs/call
sub _inline_get {
2711743.06ms my ($self, $instance) = @_;
272
27317471.4ms return $self->associated_attribute->inline_get($instance);
# spent 70.7ms making 87 calls to Class::MOP::Attribute::inline_get, avg 813µs/call # spent 739µs making 87 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
274}
275
276
# spent 1.96ms (419µs+1.54) within Moose::Meta::Method::Accessor::_inline_has which was called 11 times, avg 179µs/call: # 11 times (419µs+1.54ms) by Moose::Meta::Method::Accessor::_inline_check_lazy at line 193, avg 179µs/call
sub _inline_has {
27722396µs my ($self, $instance) = @_;
278
279221.54ms return $self->associated_attribute->inline_has($instance);
# spent 1.43ms making 11 calls to Class::MOP::Attribute::inline_has, avg 130µs/call # spent 115µs making 11 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call
280}
281
282
# spent 5.32ms (3.41+1.91) within Moose::Meta::Method::Accessor::_inline_auto_deref which was called 73 times, avg 73µs/call: # 65 times (3.01ms+1.72ms) by Moose::Meta::Method::Accessor::_generate_reader_method_inline at line 97, avg 73µs/call # 8 times (399µs+189µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 57, avg 74µs/call
sub _inline_auto_deref {
2832193.01ms my ( $self, $ref_value ) = @_;
28473613µs my $attr = $self->associated_attribute;
# spent 613µs making 73 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
285
286731.30ms return $ref_value unless $attr->should_auto_deref;
# spent 1.30ms making 73 calls to Moose::Meta::Mixin::AttributeCore::should_auto_deref, avg 18µ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__