| Filename | /home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Meta/Method/Accessor.pm |
| Statements | Executed 5197 statements in 92.7ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 204 | 6 | 2 | 13.1ms | 21.3ms | Moose::Meta::Method::Accessor::_instance_is_inlinable |
| 97 | 2 | 2 | 11.2ms | 233ms | Moose::Meta::Method::Accessor::_generate_reader_method_inline |
| 139 | 2 | 2 | 10.8ms | 17.4ms | Moose::Meta::Method::Accessor::_eval_environment |
| 128 | 4 | 3 | 8.93ms | 25.4ms | Moose::Meta::Method::Accessor::_inline_check_lazy |
| 139 | 4 | 2 | 7.94ms | 147ms | Moose::Meta::Method::Accessor::_eval_code |
| 26 | 1 | 1 | 5.80ms | 89.9ms | Moose::Meta::Method::Accessor::_generate_accessor_method_inline |
| 123 | 2 | 1 | 5.37ms | 8.31ms | Moose::Meta::Method::Accessor::_inline_auto_deref |
| 128 | 3 | 2 | 4.66ms | 96.6ms | Moose::Meta::Method::Accessor::_inline_get |
| 52 | 3 | 1 | 3.94ms | 6.15ms | Moose::Meta::Method::Accessor::_inline_check_constraint |
| 96 | 1 | 1 | 3.47ms | 245ms | Moose::Meta::Method::Accessor::_generate_reader_method |
| 74 | 3 | 1 | 2.55ms | 4.12ms | Moose::Meta::Method::Accessor::_value_needs_copy |
| 52 | 3 | 1 | 2.17ms | 3.26ms | Moose::Meta::Method::Accessor::_inline_check_coercion |
| 56 | 3 | 1 | 2.04ms | 39.1ms | Moose::Meta::Method::Accessor::_inline_store |
| 37 | 2 | 1 | 1.97ms | 2.87ms | Moose::Meta::Method::Accessor::_inline_check_required |
| 11 | 1 | 1 | 1.82ms | 22.3ms | Moose::Meta::Method::Accessor::_generate_writer_method_inline |
| 39 | 3 | 2 | 1.74ms | 2.54ms | Moose::Meta::Method::Accessor::_inline_trigger |
| 37 | 2 | 1 | 1.58ms | 2.63ms | Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger |
| 139 | 5 | 3 | 1.26ms | 1.26ms | Moose::Meta::Method::Accessor::_inline_pre_body |
| 139 | 5 | 3 | 1.20ms | 1.20ms | Moose::Meta::Method::Accessor::_inline_post_body |
| 30 | 1 | 1 | 1.16ms | 19.0ms | Moose::Meta::Method::Accessor::_generate_predicate_method |
| 29 | 1 | 1 | 1.15ms | 19.2ms | Moose::Meta::Method::Accessor::_generate_clearer_method |
| 26 | 1 | 1 | 1.01ms | 93.7ms | Moose::Meta::Method::Accessor::_generate_accessor_method |
| 19 | 2 | 1 | 807µs | 5.48ms | Moose::Meta::Method::Accessor::_inline_init_slot |
| 37 | 2 | 1 | 752µs | 2.69ms | Moose::Meta::Method::Accessor::_inline_copy_value |
| 19 | 1 | 1 | 695µs | 3.34ms | Moose::Meta::Method::Accessor::_inline_has |
| 11 | 1 | 1 | 416µs | 23.8ms | Moose::Meta::Method::Accessor::_generate_writer_method |
| 1 | 1 | 1 | 68µs | 86µs | Moose::Meta::Method::Accessor::BEGIN@4 |
| 1 | 1 | 1 | 49µs | 126µs | Moose::Meta::Method::Accessor::BEGIN@5 |
| 1 | 1 | 1 | 47µs | 470µs | Moose::Meta::Method::Accessor::BEGIN@11 |
| 0 | 0 | 0 | 0s | 0s | Moose::Meta::Method::Accessor::_error_thrower |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | package Moose::Meta::Method::Accessor; | ||||
| 3 | |||||
| 4 | 3 | 111µs | 2 | 103µ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 # spent 86µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@4
# spent 17µs making 1 call to strict::import |
| 5 | 3 | 254µs | 2 | 203µ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 # spent 126µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@5
# spent 77µs making 1 call to warnings::import |
| 6 | |||||
| 7 | 1 | 5µs | our $VERSION = '1.19'; | ||
| 8 | 1 | 69µs | $VERSION = eval $VERSION; # spent 11µs executing statements in string eval | ||
| 9 | 1 | 4µs | our $AUTHORITY = 'cpan:STEVAN'; | ||
| 10 | |||||
| 11 | 1 | 423µ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 # spent 423µs making 1 call to base::import | ||
| 12 | 3 | 5.77ms | 1 | 470µs | 'Class::MOP::Method::Accessor'; # spent 470µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@11 |
| 13 | |||||
| 14 | sub _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 | ||||
| 20 | 695 | 7.06ms | my ( $self, $source ) = @_; | ||
| 21 | |||||
| 22 | 139 | 19.8ms | my $environment = $self->_eval_environment; # spent 16.7ms making 134 calls to Moose::Meta::Method::Accessor::_eval_environment, avg 125µs/call
# spent 929µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::6::_eval_environment
# spent 833µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::8::_eval_environment
# spent 454µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::7::_eval_environment
# spent 408µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::4::_eval_environment
# spent 406µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::3::_eval_environment | ||
| 23 | |||||
| 24 | 139 | 120ms | 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 | ||||
| 35 | 556 | 8.23ms | my $self = shift; | ||
| 36 | |||||
| 37 | 139 | 1.18ms | my $attr = $self->associated_attribute; # spent 1.18ms making 139 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call | ||
| 38 | 139 | 2.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 { | ||||
| 41 | 1 | 1.40ms | 250 | 3.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 | ||||
| 53 | 104 | 4.86ms | my $self = $_[0]; | ||
| 54 | my $inv = '$_[0]'; | ||||
| 55 | 26 | 1.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 | |||||
| 57 | 338 | 82.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 | ||||
| 75 | 44 | 1.43ms | my $self = $_[0]; | ||
| 76 | my $inv = '$_[0]'; | ||||
| 77 | 11 | 646µ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 | |||||
| 79 | 110 | 19.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 | ||||
| 93 | 388 | 9.30ms | my $self = $_[0]; | ||
| 94 | my $inv = '$_[0]'; | ||||
| 95 | 97 | 91.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 | |||||
| 97 | 582 | 131ms | $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 | ||||
| 107 | 37 | 795µs | 37 | 1.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 | ||||
| 112 | 148 | 2.26ms | 74 | 637µs | my $attr = (shift)->associated_attribute; # spent 637µs making 74 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call |
| 113 | 74 | 932µ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 | ||||
| 117 | 408 | 10.9ms | my $self = shift; | ||
| 118 | 816 | 8.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 | ||||
| 122 | 192 | 3.20ms | my $self = shift; | ||
| 123 | 192 | 241ms | $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 | ||||
| 128 | 22 | 365µs | my $self = shift; | ||
| 129 | 22 | 23.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 | ||||
| 134 | 52 | 879µs | my $self = shift; | ||
| 135 | 52 | 92.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 | ||||
| 140 | 60 | 1.10ms | my $self = shift; | ||
| 141 | 60 | 17.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 | ||||
| 146 | 58 | 1.01ms | my $self = shift; | ||
| 147 | 58 | 18.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 | |||||
| 151 | 139 | 1.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 | ||
| 152 | 139 | 1.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 | ||
| 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 | ||||
| 155 | 252 | 3.75ms | my ($self, $value) = @_; | ||
| 156 | |||||
| 157 | 52 | 422µs | my $attr = $self->associated_attribute; # spent 422µs making 52 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call | ||
| 158 | |||||
| 159 | 52 | 601µ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 | |||||
| 161 | 48 | 298µs | my $attr_name = quotemeta( $attr->name ); # spent 298µs making 48 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call | ||
| 162 | |||||
| 163 | 48 | 886µ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 | ||||
| 167 | 157 | 2.15ms | my ($self, $value) = @_; | ||
| 168 | |||||
| 169 | 52 | 449µs | my $attr = $self->associated_attribute; # spent 449µs making 52 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call | ||
| 170 | |||||
| 171 | 54 | 644µ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 | ||||
| 176 | 115 | 1.79ms | my $self = shift; | ||
| 177 | 37 | 353µs | my $attr = $self->associated_attribute; # spent 353µs making 37 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call | ||
| 178 | |||||
| 179 | 37 | 493µs | return '' unless $attr->is_required; # spent 493µs making 37 calls to Moose::Meta::Mixin::AttributeCore::is_required, avg 13µs/call | ||
| 180 | |||||
| 181 | 2 | 14µs | my $attr_name = quotemeta( $attr->name ); # spent 14µs making 2 calls to Class::MOP::Mixin::AttributeCore::name, avg 7µs/call | ||
| 182 | |||||
| 183 | 2 | 35µ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 | ||||
| 187 | 479 | 5.75ms | my ($self, $instance) = @_; | ||
| 188 | |||||
| 189 | 128 | 1.22ms | my $attr = $self->associated_attribute; # spent 1.22ms making 128 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call | ||
| 190 | |||||
| 191 | 128 | 2.37ms | return '' unless $attr->is_lazy; # spent 2.37ms making 128 calls to Moose::Meta::Mixin::AttributeCore::is_lazy, avg 19µs/call | ||
| 192 | |||||
| 193 | 19 | 3.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"; | ||||
| 196 | 19 | 616µs | 19 | 238µs | if ($attr->has_type_constraint) { # spent 238µs making 19 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 13µs/call |
| 197 | 60 | 1.24ms | 30 | 322µ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 |
| 198 | 45 | 517µ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 | } | ||||
| 208 | 15 | 1.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 | ||
| 209 | 15 | 1.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 | ||
| 210 | 15 | 4.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 { | ||||
| 217 | 16 | 1.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 | ||||
| 236 | 38 | 310µs | my ($self, $attr, $inv, $value) = @_; | ||
| 237 | 19 | 377µs | 19 | 191µ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 { | ||||
| 241 | 19 | 4.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 | ||||
| 246 | 112 | 1.84ms | my ( $self, $instance, $value ) = @_; | ||
| 247 | |||||
| 248 | 112 | 37.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 | ||||
| 252 | 111 | 1.39ms | my ( $self, $instance ) = @_; | ||
| 253 | |||||
| 254 | 37 | 553µs | my $attr = $self->associated_attribute; # spent 553µs making 37 calls to Class::MOP::Method::Accessor::associated_attribute, avg 15µs/call | ||
| 255 | 37 | 497µ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 | ||||
| 264 | 117 | 1.54ms | my ($self, $instance, $value, $old_value) = @_; | ||
| 265 | 39 | 388µs | my $attr = $self->associated_attribute; # spent 388µs making 39 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call | ||
| 266 | 39 | 408µ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 | ||||
| 271 | 256 | 4.30ms | my ($self, $instance) = @_; | ||
| 272 | |||||
| 273 | 256 | 91.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 | ||||
| 277 | 38 | 608µs | my ($self, $instance) = @_; | ||
| 278 | |||||
| 279 | 38 | 2.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 | ||||
| 283 | 369 | 4.69ms | my ( $self, $ref_value ) = @_; | ||
| 284 | 123 | 1.01ms | my $attr = $self->associated_attribute; # spent 1.01ms making 123 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call | ||
| 285 | |||||
| 286 | 123 | 1.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 | |||||
| 306 | 1 | 11µs | 1; | ||
| 307 | |||||
| 308 | __END__ |