| 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 3210 statements in 61.9ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 96 | 2 | 2 | 8.79ms | 23.9ms | Moose::Meta::Method::Accessor::_eval_environment |
| 126 | 5 | 2 | 8.43ms | 13.7ms | Moose::Meta::Method::Accessor::_instance_is_inlinable |
| 65 | 2 | 2 | 7.46ms | 173ms | Moose::Meta::Method::Accessor::_generate_reader_method_inline |
| 87 | 4 | 3 | 6.10ms | 16.6ms | Moose::Meta::Method::Accessor::_inline_check_lazy |
| 96 | 4 | 2 | 5.42ms | 120ms | Moose::Meta::Method::Accessor::_eval_code |
| 73 | 2 | 1 | 3.41ms | 5.32ms | Moose::Meta::Method::Accessor::_inline_auto_deref |
| 87 | 3 | 2 | 3.39ms | 74.8ms | Moose::Meta::Method::Accessor::_inline_get |
| 28 | 3 | 1 | 2.36ms | 3.61ms | Moose::Meta::Method::Accessor::_inline_check_constraint |
| 64 | 1 | 1 | 2.31ms | 181ms | Moose::Meta::Method::Accessor::_generate_reader_method |
| 8 | 1 | 1 | 1.84ms | 39.4ms | Moose::Meta::Method::Accessor::_generate_accessor_method_inline |
| 9 | 1 | 1 | 1.65ms | 19.8ms | Moose::Meta::Method::Accessor::_generate_writer_method_inline |
| 27 | 3 | 2 | 1.35ms | 1.92ms | Moose::Meta::Method::Accessor::_inline_trigger |
| 23 | 3 | 2 | 1.31ms | 1.80ms | Moose::Meta::Method::Accessor::_inline_get_old_value_for_trigger |
| 34 | 3 | 1 | 1.29ms | 2.05ms | Moose::Meta::Method::Accessor::_value_needs_copy |
| 28 | 3 | 1 | 1.22ms | 1.82ms | Moose::Meta::Method::Accessor::_inline_check_coercion |
| 28 | 3 | 1 | 1.09ms | 25.2ms | Moose::Meta::Method::Accessor::_inline_store |
| 96 | 5 | 3 | 928µs | 928µs | Moose::Meta::Method::Accessor::_inline_post_body |
| 96 | 5 | 3 | 894µs | 894µs | Moose::Meta::Method::Accessor::_inline_pre_body |
| 17 | 2 | 1 | 834µs | 1.20ms | Moose::Meta::Method::Accessor::_inline_check_required |
| 11 | 1 | 1 | 469µs | 3.21ms | Moose::Meta::Method::Accessor::_inline_init_slot |
| 11 | 1 | 1 | 419µs | 1.96ms | Moose::Meta::Method::Accessor::_inline_has |
| 17 | 2 | 1 | 384µs | 1.25ms | Moose::Meta::Method::Accessor::_inline_copy_value |
| 9 | 1 | 1 | 372µs | 21.2ms | Moose::Meta::Method::Accessor::_generate_writer_method |
| 8 | 1 | 1 | 320µs | 40.6ms | Moose::Meta::Method::Accessor::_generate_accessor_method |
| 7 | 1 | 1 | 309µs | 4.38ms | Moose::Meta::Method::Accessor::_generate_predicate_method |
| 1 | 1 | 1 | 69µs | 88µs | Moose::Meta::Method::Accessor::BEGIN@4 |
| 1 | 1 | 1 | 40µs | 459µs | Moose::Meta::Method::Accessor::BEGIN@11 |
| 1 | 1 | 1 | 40µs | 138µs | Moose::Meta::Method::Accessor::BEGIN@5 |
| 0 | 0 | 0 | 0s | 0s | Moose::Meta::Method::Accessor::_error_thrower |
| 0 | 0 | 0 | 0s | 0s | Moose::Meta::Method::Accessor::_generate_clearer_method |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | package Moose::Meta::Method::Accessor; | ||||
| 3 | |||||
| 4 | 3 | 95µs | 2 | 106µ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 # spent 88µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@4
# spent 18µs making 1 call to strict::import |
| 5 | 3 | 234µs | 2 | 237µ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 # spent 138µs making 1 call to Moose::Meta::Method::Accessor::BEGIN@5
# spent 99µs making 1 call to warnings::import |
| 6 | |||||
| 7 | 1 | 5µs | our $VERSION = '1.19'; | ||
| 8 | 1 | 66µs | $VERSION = eval $VERSION; # spent 11µs executing statements in string eval | ||
| 9 | 1 | 3µs | our $AUTHORITY = 'cpan:STEVAN'; | ||
| 10 | |||||
| 11 | 1 | 25µs | 1 | 419µ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 # spent 419µs making 1 call to base::import |
| 12 | 2 | 5.95ms | 1 | 459µs | 'Class::MOP::Method::Accessor'; # spent 459µ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 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 | ||||
| 20 | 96 | 410µs | my ( $self, $source ) = @_; | ||
| 21 | |||||
| 22 | 96 | 1.13ms | 96 | 30.5ms | my $environment = $self->_eval_environment; # spent 19.8ms making 82 calls to Moose::Meta::Method::Accessor::_eval_environment, avg 241µs/call
# spent 2.39ms making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_eval_environment, avg 1.20ms/call
# spent 1.23ms making 1 call to Class::MOP::Class::__ANON__::SERIAL::17::_eval_environment
# spent 1.17ms making 2 calls to Class::MOP::Class::__ANON__::SERIAL::6::_eval_environment, avg 586µs/call
# spent 1.10ms making 1 call to Class::MOP::Class::__ANON__::SERIAL::18::_eval_environment
# spent 767µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::13::_eval_environment
# spent 766µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::12::_eval_environment
# spent 555µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::16::_eval_environment
# spent 552µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::22::_eval_environment
# spent 552µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::21::_eval_environment
# spent 540µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::9::_eval_environment
# spent 534µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::20::_eval_environment
# spent 520µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::10::_eval_environment |
| 23 | |||||
| 24 | 96 | 1.95ms | 96 | 84.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 | 96 | 206µs | "Could not create writer for '${\$self->associated_attribute->name}' because $e \n code: $source", | ||
| 28 | error => $e, data => $source ) | ||||
| 29 | if $e; | ||||
| 30 | |||||
| 31 | 96 | 1.36ms | 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 | ||||
| 35 | 96 | 309µs | my $self = shift; | ||
| 36 | |||||
| 37 | 96 | 1.07ms | 96 | 824µs | my $attr = $self->associated_attribute; # spent 824µs making 96 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call |
| 38 | 96 | 1.49ms | 96 | 1.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 { | ||||
| 41 | 96 | 4.82ms | 188 | 12.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 | ||||
| 53 | 8 | 22µs | my $self = $_[0]; | ||
| 54 | 8 | 23µs | my $inv = '$_[0]'; | ||
| 55 | 8 | 90µs | 8 | 550µ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 | |||||
| 57 | 8 | 1.33ms | 104 | 37.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 | ||||
| 75 | 9 | 22µs | my $self = $_[0]; | ||
| 76 | 9 | 22µs | my $inv = '$_[0]'; | ||
| 77 | 9 | 99µs | 9 | 640µ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 | |||||
| 79 | 9 | 1.13ms | 90 | 17.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 | ||||
| 93 | 65 | 173µs | my $self = $_[0]; | ||
| 94 | 65 | 149µs | my $inv = '$_[0]'; | ||
| 95 | 65 | 803µs | 65 | 70.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 | |||||
| 97 | 65 | 5.19ms | 390 | 95.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 | ||||
| 107 | 17 | 381µs | 17 | 861µ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 | ||||
| 112 | 34 | 386µs | 34 | 328µs | my $attr = (shift)->associated_attribute; # spent 328µs making 34 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call |
| 113 | 34 | 841µs | 34 | 433µ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 | ||||
| 117 | 126 | 334µs | my $self = shift; | ||
| 118 | 126 | 6.78ms | 504 | 5.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 | ||||
| 122 | 64 | 178µs | my $self = shift; | ||
| 123 | 64 | 1.90ms | 128 | 178ms | $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 | ||||
| 128 | 9 | 28µs | my $self = shift; | ||
| 129 | 9 | 297µs | 18 | 20.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 | ||||
| 134 | 8 | 25µs | my $self = shift; | ||
| 135 | 8 | 250µs | 16 | 40.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 | ||||
| 140 | 7 | 20µs | my $self = shift; | ||
| 141 | 7 | 259µs | 14 | 4.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 | |||||
| 145 | sub _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 | |||||
| 151 | 96 | 1.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 | ||
| 152 | 96 | 1.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 | ||
| 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 | ||||
| 155 | 28 | 112µs | my ($self, $value) = @_; | ||
| 156 | |||||
| 157 | 28 | 289µs | 28 | 250µs | my $attr = $self->associated_attribute; # spent 250µs making 28 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call |
| 158 | |||||
| 159 | 28 | 400µs | 28 | 321µ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 | |||||
| 161 | 28 | 641µs | 28 | 173µs | my $attr_name = quotemeta( $attr->name ); # spent 173µs making 28 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call |
| 162 | |||||
| 163 | 28 | 862µs | 28 | 511µ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 | ||||
| 167 | 28 | 109µs | my ($self, $value) = @_; | ||
| 168 | |||||
| 169 | 28 | 274µs | 28 | 260µs | my $attr = $self->associated_attribute; # spent 260µs making 28 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call |
| 170 | |||||
| 171 | 28 | 698µs | 28 | 338µ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 | ||||
| 176 | 17 | 55µs | my $self = shift; | ||
| 177 | 17 | 176µs | 17 | 144µs | my $attr = $self->associated_attribute; # spent 144µs making 17 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call |
| 178 | |||||
| 179 | 17 | 499µs | 17 | 223µ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 | ||||
| 187 | 87 | 351µs | my ($self, $instance) = @_; | ||
| 188 | |||||
| 189 | 87 | 972µs | 87 | 861µs | my $attr = $self->associated_attribute; # spent 861µs making 87 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call |
| 190 | |||||
| 191 | 87 | 2.33ms | 87 | 1.76ms | return '' unless $attr->is_lazy; # spent 1.76ms making 87 calls to Moose::Meta::Mixin::AttributeCore::is_lazy, avg 20µs/call |
| 192 | |||||
| 193 | 11 | 143µs | 11 | 1.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 | 11 | 55µs | my $code = 'unless (' . $slot_exists . ') {' . "\n"; | ||
| 196 | 11 | 193µs | 11 | 129µs | if ($attr->has_type_constraint) { # spent 129µs making 11 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 12µs/call |
| 197 | 11 | 255µs | 20 | 225µ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 |
| 198 | 11 | 368µs | 29 | 322µ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 | } | ||||
| 208 | 11 | 149µs | 11 | 762µ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 |
| 209 | 11 | 160µs | 11 | 1.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 |
| 210 | 11 | 165µs | 11 | 3.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 | 11 | 28µs | $code .= "}\n"; | ||
| 232 | 11 | 166µs | 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 | ||||
| 236 | 11 | 51µs | my ($self, $attr, $inv, $value) = @_; | ||
| 237 | 11 | 134µs | 11 | 111µ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 { | ||||
| 241 | 11 | 213µs | 11 | 2.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 | ||||
| 246 | 28 | 121µs | my ( $self, $instance, $value ) = @_; | ||
| 247 | |||||
| 248 | 28 | 859µs | 56 | 24.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 | ||||
| 252 | 23 | 102µs | my ( $self, $instance ) = @_; | ||
| 253 | |||||
| 254 | 23 | 246µs | 23 | 213µs | my $attr = $self->associated_attribute; # spent 213µs making 23 calls to Class::MOP::Method::Accessor::associated_attribute, avg 9µs/call |
| 255 | 23 | 810µs | 23 | 282µ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 | ||||
| 264 | 27 | 153µs | my ($self, $instance, $value, $old_value) = @_; | ||
| 265 | 27 | 301µs | 27 | 267µs | my $attr = $self->associated_attribute; # spent 267µs making 27 calls to Class::MOP::Method::Accessor::associated_attribute, avg 10µs/call |
| 266 | 27 | 708µs | 27 | 307µ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 | ||||
| 271 | 87 | 344µs | my ($self, $instance) = @_; | ||
| 272 | |||||
| 273 | 87 | 2.71ms | 174 | 71.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 | ||||
| 277 | 11 | 42µs | my ($self, $instance) = @_; | ||
| 278 | |||||
| 279 | 11 | 354µs | 22 | 1.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 | ||||
| 283 | 73 | 286µs | my ( $self, $ref_value ) = @_; | ||
| 284 | 73 | 715µs | 73 | 613µs | my $attr = $self->associated_attribute; # spent 613µs making 73 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call |
| 285 | |||||
| 286 | 73 | 2.01ms | 73 | 1.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 | |||||
| 306 | 1 | 11µs | 1; | ||
| 307 | |||||
| 308 | __END__ |