← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:33:55 2022
Reported on Wed Dec 14 15:40:04 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm
StatementsExecuted 2774199 statements in 2.06s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111826ms6.54sYAML::PP::Parser::::parse_tokensYAML::PP::Parser::parse_tokens
1345121265ms1.61sYAML::PP::Parser::::lex_next_tokensYAML::PP::Parser::lex_next_tokens
2094141210ms1.20sYAML::PP::Parser::::scalar_eventYAML::PP::Parser::scalar_event
36113131110ms1.39sYAML::PP::Parser::::__ANON__[:62]YAML::PP::Parser::__ANON__[:62]
67251175.9ms279msYAML::PP::Parser::::start_mappingYAML::PP::Parser::start_mapping
28162169.1ms285msYAML::PP::Parser::::remove_nodesYAML::PP::Parser::remove_nodes
67251166.1ms743msYAML::PP::Parser::::cb_insert_mapYAML::PP::Parser::cb_insert_map
74974163.3ms463msYAML::PP::Parser::::cb_send_scalarYAML::PP::Parser::cb_send_scalar
121801156.9ms63.7msYAML::PP::Parser::::cb_start_plainYAML::PP::Parser::cb_start_plain
550807152.0ms52.0msYAML::PP::Parser::::set_ruleYAML::PP::Parser::set_rule
66902147.0ms469msYAML::PP::Parser::::cb_send_mapkeyYAML::PP::Parser::cb_send_mapkey
66751137.4ms41.1msYAML::PP::Parser::::cb_mapkeyYAML::PP::Parser::cb_mapkey
7037914133.5ms33.5msYAML::PP::Parser::::event_stackYAML::PP::Parser::event_stack
6274523132.5ms32.5msYAML::PP::Parser::::eventsYAML::PP::Parser::events
553377127.2ms27.2msYAML::PP::Parser::::lexerYAML::PP::Parser::lexer
3623711121.2ms21.2msYAML::PP::Parser::::set_new_nodeYAML::PP::Parser::set_new_node
3611313119.2ms19.2msYAML::PP::Parser::::callbackYAML::PP::Parser::callback
3196915116.4ms16.4msYAML::PP::Parser::::offsetYAML::PP::Parser::offset
274507114.4ms14.4msYAML::PP::Parser::::new_nodeYAML::PP::Parser::new_node
20562114.3ms15.6msYAML::PP::Parser::::cb_take_quotedYAML::PP::Parser::cb_take_quoted
134502110.2ms10.2msYAML::PP::Parser::::ruleYAML::PP::Parser::rule
13450219.51ms9.51msYAML::PP::Parser::::tokensYAML::PP::Parser::tokens
6993218.30ms8.30msYAML::PP::Parser::::levelYAML::PP::Parser::level
337117.55ms20.0msYAML::PP::Parser::::start_flow_sequenceYAML::PP::Parser::start_flow_sequence
15241716.63ms6.63msYAML::PP::Parser::::CORE:matchYAML::PP::Parser::CORE:match (opcode)
1116.47ms11.6msYAML::PP::Parser::::BEGIN@18YAML::PP::Parser::BEGIN@18
689116.32ms55.8msYAML::PP::Parser::::cb_flow_commaYAML::PP::Parser::cb_flow_comma
337114.94ms14.1msYAML::PP::Parser::::end_flow_sequenceYAML::PP::Parser::end_flow_sequence
308114.78ms15.4msYAML::PP::Parser::::start_sequenceYAML::PP::Parser::start_sequence
214114.65ms11.1msYAML::PP::Parser::::start_flow_mappingYAML::PP::Parser::start_flow_mapping
262113.82ms9.63msYAML::PP::Parser::::end_sequenceYAML::PP::Parser::end_sequence
214113.19ms9.71msYAML::PP::Parser::::end_flow_mappingYAML::PP::Parser::end_flow_mapping
337112.56ms39.7msYAML::PP::Parser::::cb_end_flowseqYAML::PP::Parser::cb_end_flowseq
528112.43ms2.70msYAML::PP::Parser::::cb_end_outer_flowYAML::PP::Parser::cb_end_outer_flow
308112.06ms17.7msYAML::PP::Parser::::cb_seqstartYAML::PP::Parser::cb_seqstart
1111.58ms1.76msYAML::PP::Parser::::BEGIN@17YAML::PP::Parser::BEGIN@17
337111.38ms21.4msYAML::PP::Parser::::cb_start_flowseqYAML::PP::Parser::cb_start_flowseq
302111.34ms1.51msYAML::PP::Parser::::cb_seqitemYAML::PP::Parser::cb_seqitem
214111.17ms11.0msYAML::PP::Parser::::cb_end_flowmapYAML::PP::Parser::cb_end_flowmap
111930µs1.05msYAML::PP::Parser::::BEGIN@20YAML::PP::Parser::BEGIN@20
111856µs983µsYAML::PP::Parser::::BEGIN@21YAML::PP::Parser::BEGIN@21
21411768µs11.9msYAML::PP::Parser::::cb_start_flowmapYAML::PP::Parser::cb_start_flowmap
2911373µs2.67msYAML::PP::Parser::::cb_flowkey_plainYAML::PP::Parser::cb_flowkey_plain
151194µs849µsYAML::PP::Parser::::cb_take_quoted_keyYAML::PP::Parser::cb_take_quoted_key
291188µs101µsYAML::PP::Parser::::cb_flow_colonYAML::PP::Parser::cb_flow_colon
11156µs6.54sYAML::PP::Parser::::parseYAML::PP::Parser::parse
11151µs69µsYAML::PP::Parser::::initYAML::PP::Parser::init
11135µs38µsYAML::PP::Loader::::BEGIN@2YAML::PP::Loader::BEGIN@2
11135µs1.30msYAML::PP::Parser::::end_documentYAML::PP::Parser::end_document
11130µs58µsYAML::PP::Parser::::start_documentYAML::PP::Parser::start_document
11119µs36µsYAML::PP::Parser::::newYAML::PP::Parser::new
11117µs58µsYAML::PP::Parser::::cb_send_block_scalarYAML::PP::Parser::cb_send_block_scalar
11116µs33µsYAML::PP::Parser::::start_streamYAML::PP::Parser::start_stream
11115µs80µsYAML::PP::Parser::::BEGIN@9YAML::PP::Parser::BEGIN@9
11111µs11µsYAML::PP::Parser::::set_receiverYAML::PP::Parser::set_receiver
11110µs60µsYAML::PP::Parser::::BEGIN@11YAML::PP::Parser::BEGIN@11
11110µs112µsYAML::PP::Parser::::BEGIN@19YAML::PP::Parser::BEGIN@19
11110µs43µsYAML::PP::Parser::::end_streamYAML::PP::Parser::end_stream
1119µs65µsYAML::PP::Parser::::BEGIN@8YAML::PP::Parser::BEGIN@8
1119µs35µsYAML::PP::Parser::::BEGIN@97YAML::PP::Parser::BEGIN@97
1118µs50µsYAML::PP::Loader::::BEGIN@3YAML::PP::Loader::BEGIN@3
1118µs13µsYAML::PP::Parser::::set_readerYAML::PP::Parser::set_reader
4417µs7µsYAML::PP::Parser::::__ANON__YAML::PP::Parser::__ANON__ (xsub)
1116µs25µsYAML::PP::Parser::::BEGIN@22YAML::PP::Parser::BEGIN@22
1115µs63µsYAML::PP::Parser::::cb_doc_start_explicitYAML::PP::Parser::cb_doc_start_explicit
1113µs3µsYAML::PP::Parser::::receiverYAML::PP::Parser::receiver
2213µs3µsYAML::PP::Parser::::set_yaml_version_directiveYAML::PP::Parser::set_yaml_version_directive
1112µs2µsYAML::PP::Parser::::set_event_stackYAML::PP::Parser::set_event_stack
2212µs2µsYAML::PP::Parser::::set_tagmapYAML::PP::Parser::set_tagmap
1112µs2µsYAML::PP::Parser::::set_yaml_versionYAML::PP::Parser::set_yaml_version
1112µs2µsYAML::PP::Parser::::yaml_versionYAML::PP::Parser::yaml_version
1111µs1µsYAML::PP::Parser::::default_yaml_versionYAML::PP::Parser::default_yaml_version
1111µs1µsYAML::PP::Parser::::set_eventsYAML::PP::Parser::set_events
1111µs1µsYAML::PP::Parser::::set_tokensYAML::PP::Parser::set_tokens
1111µs1µsYAML::PP::Parser::::yaml_version_directiveYAML::PP::Parser::yaml_version_directive
0000s0sYAML::PP::Parser::::__ANON__[:743]YAML::PP::Parser::__ANON__[:743]
0000s0sYAML::PP::Parser::::_colorize_warnYAML::PP::Parser::_colorize_warn
0000s0sYAML::PP::Parser::::_read_tagYAML::PP::Parser::_read_tag
0000s0sYAML::PP::Parser::::_remaining_tokensYAML::PP::Parser::_remaining_tokens
0000s0sYAML::PP::Parser::::alias_eventYAML::PP::Parser::alias_event
0000s0sYAML::PP::Parser::::cb_aliasYAML::PP::Parser::cb_alias
0000s0sYAML::PP::Parser::::cb_anchorYAML::PP::Parser::cb_anchor
0000s0sYAML::PP::Parser::::cb_complexcolonYAML::PP::Parser::cb_complexcolon
0000s0sYAML::PP::Parser::::cb_doc_start_implicitYAML::PP::Parser::cb_doc_start_implicit
0000s0sYAML::PP::Parser::::cb_empty_complexvalueYAML::PP::Parser::cb_empty_complexvalue
0000s0sYAML::PP::Parser::::cb_empty_flow_mapkeyYAML::PP::Parser::cb_empty_flow_mapkey
0000s0sYAML::PP::Parser::::cb_empty_flowmap_key_valueYAML::PP::Parser::cb_empty_flowmap_key_value
0000s0sYAML::PP::Parser::::cb_empty_flowmap_valueYAML::PP::Parser::cb_empty_flowmap_value
0000s0sYAML::PP::Parser::::cb_empty_flowseq_commaYAML::PP::Parser::cb_empty_flowseq_comma
0000s0sYAML::PP::Parser::::cb_empty_flowseq_endYAML::PP::Parser::cb_empty_flowseq_end
0000s0sYAML::PP::Parser::::cb_empty_mapkeyYAML::PP::Parser::cb_empty_mapkey
0000s0sYAML::PP::Parser::::cb_end_doc_start_documentYAML::PP::Parser::cb_end_doc_start_document
0000s0sYAML::PP::Parser::::cb_end_documentYAML::PP::Parser::cb_end_document
0000s0sYAML::PP::Parser::::cb_end_document_emptyYAML::PP::Parser::cb_end_document_empty
0000s0sYAML::PP::Parser::::cb_end_empty_flowmap_key_valueYAML::PP::Parser::cb_end_empty_flowmap_key_value
0000s0sYAML::PP::Parser::::cb_end_flowmap_emptyYAML::PP::Parser::cb_end_flowmap_empty
0000s0sYAML::PP::Parser::::cb_flow_questionYAML::PP::Parser::cb_flow_question
0000s0sYAML::PP::Parser::::cb_flowkey_quotedYAML::PP::Parser::cb_flowkey_quoted
0000s0sYAML::PP::Parser::::cb_insert_empty_implicit_flowseq_mapYAML::PP::Parser::cb_insert_empty_implicit_flowseq_map
0000s0sYAML::PP::Parser::::cb_insert_empty_mapYAML::PP::Parser::cb_insert_empty_map
0000s0sYAML::PP::Parser::::cb_insert_implicit_flowseq_mapYAML::PP::Parser::cb_insert_implicit_flowseq_map
0000s0sYAML::PP::Parser::::cb_insert_map_aliasYAML::PP::Parser::cb_insert_map_alias
0000s0sYAML::PP::Parser::::cb_property_eolYAML::PP::Parser::cb_property_eol
0000s0sYAML::PP::Parser::::cb_questionYAML::PP::Parser::cb_question
0000s0sYAML::PP::Parser::::cb_questionstartYAML::PP::Parser::cb_questionstart
0000s0sYAML::PP::Parser::::cb_quoted_multilineYAML::PP::Parser::cb_quoted_multiline
0000s0sYAML::PP::Parser::::cb_reserved_directiveYAML::PP::Parser::cb_reserved_directive
0000s0sYAML::PP::Parser::::cb_send_aliasYAML::PP::Parser::cb_send_alias
0000s0sYAML::PP::Parser::::cb_send_alias_from_stackYAML::PP::Parser::cb_send_alias_from_stack
0000s0sYAML::PP::Parser::::cb_send_alias_keyYAML::PP::Parser::cb_send_alias_key
0000s0sYAML::PP::Parser::::cb_send_flow_aliasYAML::PP::Parser::cb_send_flow_alias
0000s0sYAML::PP::Parser::::cb_send_plain_multiYAML::PP::Parser::cb_send_plain_multi
0000s0sYAML::PP::Parser::::cb_set_yaml_version_directiveYAML::PP::Parser::cb_set_yaml_version_directive
0000s0sYAML::PP::Parser::::cb_tagYAML::PP::Parser::cb_tag
0000s0sYAML::PP::Parser::::cb_tag_directiveYAML::PP::Parser::cb_tag_directive
0000s0sYAML::PP::Parser::::cloneYAML::PP::Parser::clone
0000s0sYAML::PP::Parser::::debug_eventYAML::PP::Parser::debug_event
0000s0sYAML::PP::Parser::::debug_eventsYAML::PP::Parser::debug_events
0000s0sYAML::PP::Parser::::debug_next_lineYAML::PP::Parser::debug_next_line
0000s0sYAML::PP::Parser::::debug_offsetYAML::PP::Parser::debug_offset
0000s0sYAML::PP::Parser::::debug_rulesYAML::PP::Parser::debug_rules
0000s0sYAML::PP::Parser::::debug_tokensYAML::PP::Parser::debug_tokens
0000s0sYAML::PP::Parser::::debug_yamlYAML::PP::Parser::debug_yaml
0000s0sYAML::PP::Parser::::event_to_test_suiteYAML::PP::Parser::event_to_test_suite
0000s0sYAML::PP::Parser::::exceptionYAML::PP::Parser::exception
0000s0sYAML::PP::Parser::::expectedYAML::PP::Parser::expected
0000s0sYAML::PP::Parser::::fetch_inline_propertiesYAML::PP::Parser::fetch_inline_properties
0000s0sYAML::PP::Parser::::gotYAML::PP::Parser::got
0000s0sYAML::PP::Parser::::highlight_yamlYAML::PP::Parser::highlight_yaml
0000s0sYAML::PP::Parser::::infoYAML::PP::Parser::info
0000s0sYAML::PP::Parser::::node_propertiesYAML::PP::Parser::node_properties
0000s0sYAML::PP::Parser::::noteYAML::PP::Parser::note
0000s0sYAML::PP::Parser::::parse_fileYAML::PP::Parser::parse_file
0000s0sYAML::PP::Parser::::parse_stringYAML::PP::Parser::parse_string
0000s0sYAML::PP::Parser::::readerYAML::PP::Parser::reader
0000s0sYAML::PP::Parser::::set_callbackYAML::PP::Parser::set_callback
1110s0sYAML::PP::Parser::::set_offsetYAML::PP::Parser::set_offset
0000s0sYAML::PP::Parser::::tagmapYAML::PP::Parser::tagmap
0000s0sYAML::PP::Parser::::yaml_to_tokensYAML::PP::Parser::yaml_to_tokens
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# ABSTRACT: YAML Parser
2237µs241µs
# spent 38µs (35+3) within YAML::PP::Loader::BEGIN@2 which was called: # once (35µs+3µs) by YAML::PP::Loader::BEGIN@8 at line 2
use strict;
# spent 38µs making 1 call to YAML::PP::Loader::BEGIN@2 # spent 3µs making 1 call to strict::import
3257µs292µs
# spent 50µs (8+42) within YAML::PP::Loader::BEGIN@3 which was called: # once (8µs+42µs) by YAML::PP::Loader::BEGIN@8 at line 3
use warnings;
# spent 50µs making 1 call to YAML::PP::Loader::BEGIN@3 # spent 42µs making 1 call to warnings::import
4package YAML::PP::Parser;
5
611µsour $VERSION = '0.035'; # VERSION
7
8253µs2121µs
# spent 65µs (9+56) within YAML::PP::Parser::BEGIN@8 which was called: # once (9µs+56µs) by YAML::PP::Loader::BEGIN@8 at line 8
use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0;
# spent 65µs making 1 call to YAML::PP::Parser::BEGIN@8 # spent 56µs making 1 call to constant::import
9259µs2145µs
# spent 80µs (15+65) within YAML::PP::Parser::BEGIN@9 which was called: # once (15µs+65µs) by YAML::PP::Loader::BEGIN@8 at line 9
use constant DEBUG => ($ENV{YAML_PP_DEBUG} || $ENV{YAML_PP_TRACE}) ? 1 : 0;
# spent 80µs making 1 call to YAML::PP::Parser::BEGIN@9 # spent 65µs making 1 call to constant::import
10
1111µs
# spent 60µs (10+50) within YAML::PP::Parser::BEGIN@11 which was called: # once (10µs+50µs) by YAML::PP::Loader::BEGIN@8 at line 16
use YAML::PP::Common qw/
12 YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE
13 YAML_DOUBLE_QUOTED_SCALAR_STYLE
14 YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE
15 YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE
16129µs2110µs/;
# spent 60µs making 1 call to YAML::PP::Parser::BEGIN@11 # spent 50µs making 1 call to Exporter::import
172623µs21.77ms
# spent 1.76ms (1.58+185µs) within YAML::PP::Parser::BEGIN@17 which was called: # once (1.58ms+185µs) by YAML::PP::Loader::BEGIN@8 at line 17
use YAML::PP::Render;
# spent 1.76ms making 1 call to YAML::PP::Parser::BEGIN@17 # spent 3µs making 1 call to YAML::PP::Parser::__ANON__
182622µs211.6ms
# spent 11.6ms (6.47+5.13) within YAML::PP::Parser::BEGIN@18 which was called: # once (6.47ms+5.13ms) by YAML::PP::Loader::BEGIN@8 at line 18
use YAML::PP::Lexer;
# spent 11.6ms making 1 call to YAML::PP::Parser::BEGIN@18 # spent 2µs making 1 call to YAML::PP::Parser::__ANON__
19234µs2214µs
# spent 112µs (10+102) within YAML::PP::Parser::BEGIN@19 which was called: # once (10µs+102µs) by YAML::PP::Loader::BEGIN@8 at line 19
use YAML::PP::Grammar qw/ $GRAMMAR /;
# spent 112µs making 1 call to YAML::PP::Parser::BEGIN@19 # spent 102µs making 1 call to Exporter::import
202559µs21.05ms
# spent 1.05ms (930µs+116µs) within YAML::PP::Parser::BEGIN@20 which was called: # once (930µs+116µs) by YAML::PP::Loader::BEGIN@8 at line 20
use YAML::PP::Exception;
# spent 1.05ms making 1 call to YAML::PP::Parser::BEGIN@20 # spent 1µs making 1 call to YAML::PP::Parser::__ANON__
212365µs2984µs
# spent 983µs (856+127) within YAML::PP::Parser::BEGIN@21 which was called: # once (856µs+127µs) by YAML::PP::Loader::BEGIN@8 at line 21
use YAML::PP::Reader;
# spent 983µs making 1 call to YAML::PP::Parser::BEGIN@21 # spent 1µs making 1 call to YAML::PP::Parser::__ANON__
222571µs244µs
# spent 25µs (6+19) within YAML::PP::Parser::BEGIN@22 which was called: # once (6µs+19µs) by YAML::PP::Loader::BEGIN@8 at line 22
use Carp qw/ croak /;
# spent 25µs making 1 call to YAML::PP::Parser::BEGIN@22 # spent 19µs making 1 call to Exporter::import
23
24
25
# spent 36µs (19+17) within YAML::PP::Parser::new which was called: # once (19µs+17µs) by YAML::PP::Loader::new at line 34 of YAML/PP/Loader.pm
sub new {
2611µs my ($class, %args) = @_;
2715µs14µs my $reader = delete $args{reader} || YAML::PP::Reader->new;
# spent 4µs making 1 call to YAML::PP::Reader::new
2811µs my $default_yaml_version = delete $args{default_yaml_version};
2914µs113µs my $self = bless {
# spent 13µs making 1 call to YAML::PP::Lexer::new
30 default_yaml_version => $default_yaml_version || '1.2',
31 lexer => YAML::PP::Lexer->new(
32 reader => $reader,
33 ),
34 }, $class;
3510s my $receiver = delete $args{receiver};
3610s if ($receiver) {
37 $self->set_receiver($receiver);
38 }
3914µs return $self;
40}
41
42sub clone {
43 my ($self) = @_;
44 my $clone = {
45 default_yaml_version => $self->default_yaml_version,
46 lexer => YAML::PP::Lexer->new(),
47 };
48 return bless $clone, ref $self;
49}
50
5114µs
# spent 3µs within YAML::PP::Parser::receiver which was called: # once (3µs+0s) by YAML::PP::Loader::new at line 39 of YAML/PP/Loader.pm
sub receiver { return $_[0]->{receiver} }
52
# spent 11µs within YAML::PP::Parser::set_receiver which was called: # once (11µs+0s) by YAML::PP::Loader::new at line 39 of YAML/PP/Loader.pm
sub set_receiver {
5311µs my ($self, $receiver) = @_;
5410s my $callback;
5511µs if (ref $receiver eq 'CODE') {
56 $callback = $receiver;
57 }
58 else {
59
# spent 1.39s (110ms+1.28) within YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] which was called 36113 times, avg 39µs/call: # 20941 times (59.9ms+887ms) by YAML::PP::Parser::scalar_event at line 723, avg 45µs/call # 6771 times (21.0ms+189ms) by YAML::PP::Parser::remove_nodes at line 475, avg 31µs/call # 6725 times (22.4ms+167ms) by YAML::PP::Parser::start_mapping at line 626, avg 28µs/call # 337 times (1.20ms+10.0ms) by YAML::PP::Parser::start_flow_sequence at line 551, avg 33µs/call # 337 times (1.49ms+6.54ms) by YAML::PP::Parser::end_flow_sequence at line 584, avg 24µs/call # 308 times (1.26ms+8.78ms) by YAML::PP::Parser::start_sequence at line 527, avg 33µs/call # 262 times (1.14ms+4.31ms) by YAML::PP::Parser::end_sequence at line 453, avg 21µs/call # 214 times (680µs+5.16ms) by YAML::PP::Parser::end_flow_mapping at line 599, avg 27µs/call # 214 times (615µs+5.12ms) by YAML::PP::Parser::start_flow_mapping at line 575, avg 27µs/call # once (30µs+1µs) by YAML::PP::Parser::end_stream at line 667 # once (4µs+18µs) by YAML::PP::Parser::end_document at line 649 # once (4µs+11µs) by YAML::PP::Parser::start_document at line 501 # once (8µs+1µs) by YAML::PP::Parser::start_stream at line 486
$callback = sub {
60361139.90ms my ($self, $event, $info) = @_;
613611396.4ms361131.28s return $receiver->$event($info);
# spent 887ms making 20941 calls to YAML::PP::Constructor::scalar_event, avg 42µs/call # spent 193ms making 6939 calls to YAML::PP::Constructor::mapping_end_event, avg 28µs/call # spent 172ms making 6939 calls to YAML::PP::Constructor::mapping_start_event, avg 25µs/call # spent 18.8ms making 645 calls to YAML::PP::Constructor::sequence_start_event, avg 29µs/call # spent 11.6ms making 645 calls to YAML::PP::Constructor::sequence_end_event, avg 18µs/call # spent 18µs making 1 call to YAML::PP::Constructor::document_end_event # spent 11µs making 1 call to YAML::PP::Constructor::document_start_event # spent 1µs making 1 call to YAML::PP::Constructor::stream_end_event # spent 1µs making 1 call to YAML::PP::Constructor::stream_start_event
6216µs };
63 }
6411µs $self->{callback} = $callback;
6513µs $self->{receiver} = $receiver;
66}
67sub reader { return $_[0]->lexer->{reader} }
68
# spent 13µs (8+5) within YAML::PP::Parser::set_reader which was called: # once (8µs+5µs) by YAML::PP::Loader::load_file at line 84 of YAML/PP/Loader.pm
sub set_reader {
6911µs my ($self, $reader) = @_;
7015µs25µs $self->lexer->set_reader($reader);
# spent 4µs making 1 call to YAML::PP::Lexer::set_reader # spent 1µs making 1 call to YAML::PP::Parser::lexer
71}
725533775.1ms
# spent 27.2ms within YAML::PP::Parser::lexer which was called 55337 times, avg 491ns/call: # 20941 times (11.8ms+0s) by YAML::PP::Parser::parse_tokens at line 379, avg 565ns/call # 20941 times (8.44ms+0s) by YAML::PP::Parser::parse_tokens at line 381, avg 403ns/call # 13451 times (6.90ms+0s) by YAML::PP::Parser::lex_next_tokens at line 179, avg 513ns/call # once (2µs+0s) by YAML::PP::Parser::init at line 115 # once (1µs+0s) by YAML::PP::Parser::set_reader at line 70 # once (0s+0s) by YAML::PP::Parser::parse at line 151 # once (0s+0s) by YAML::PP::Parser::parse_tokens at line 344
sub lexer { return $_[0]->{lexer} }
733611351.4ms
# spent 19.2ms within YAML::PP::Parser::callback which was called 36113 times, avg 530ns/call: # 20941 times (10.6ms+0s) by YAML::PP::Parser::scalar_event at line 723, avg 509ns/call # 6771 times (3.84ms+0s) by YAML::PP::Parser::remove_nodes at line 475, avg 567ns/call # 6725 times (3.85ms+0s) by YAML::PP::Parser::start_mapping at line 626, avg 573ns/call # 337 times (179µs+0s) by YAML::PP::Parser::start_flow_sequence at line 551, avg 531ns/call # 337 times (159µs+0s) by YAML::PP::Parser::end_flow_sequence at line 584, avg 472ns/call # 308 times (170µs+0s) by YAML::PP::Parser::start_sequence at line 527, avg 552ns/call # 262 times (110µs+0s) by YAML::PP::Parser::end_sequence at line 453, avg 420ns/call # 214 times (101µs+0s) by YAML::PP::Parser::start_flow_mapping at line 575, avg 472ns/call # 214 times (93µs+0s) by YAML::PP::Parser::end_flow_mapping at line 599, avg 435ns/call # once (2µs+0s) by YAML::PP::Parser::start_document at line 501 # once (1µs+0s) by YAML::PP::Parser::end_document at line 649 # once (0s+0s) by YAML::PP::Parser::start_stream at line 486 # once (0s+0s) by YAML::PP::Parser::end_stream at line 667
sub callback { return $_[0]->{callback} }
74sub set_callback { $_[0]->{callback} = $_[1] }
75699314.4ms
# spent 8.30ms within YAML::PP::Parser::level which was called 6993 times, avg 1µs/call: # 6992 times (8.30ms+0s) by YAML::PP::Parser::parse_tokens at line 431, avg 1µs/call # once (2µs+0s) by YAML::PP::Parser::parse_tokens at line 351
sub level { return $#{ $_[0]->{offset} } }
763196947.5ms
# spent 16.4ms within YAML::PP::Parser::offset which was called 31969 times, avg 513ns/call: # 13451 times (7.16ms+0s) by YAML::PP::Parser::lex_next_tokens at line 177, avg 532ns/call # 7300 times (3.16ms+0s) by YAML::PP::Parser::lex_next_tokens at line 239, avg 433ns/call # 6725 times (3.85ms+0s) by YAML::PP::Parser::start_mapping at line 617, avg 573ns/call # 2816 times (1.34ms+0s) by YAML::PP::Parser::remove_nodes at line 459, avg 477ns/call # 337 times (215µs+0s) by YAML::PP::Parser::start_flow_sequence at line 532, avg 638ns/call # 337 times (177µs+0s) by YAML::PP::Parser::end_flow_sequence at line 582, avg 525ns/call # 308 times (158µs+0s) by YAML::PP::Parser::start_sequence at line 513, avg 513ns/call # 262 times (117µs+0s) by YAML::PP::Parser::end_sequence at line 451, avg 447ns/call # 214 times (112µs+0s) by YAML::PP::Parser::start_flow_mapping at line 556, avg 523ns/call # 214 times (94µs+0s) by YAML::PP::Parser::end_flow_mapping at line 597, avg 439ns/call # once (1µs+0s) by YAML::PP::Parser::start_document at line 494 # once (1µs+0s) by YAML::PP::Parser::end_stream at line 666 # once (1µs+0s) by YAML::PP::Parser::parse_tokens at line 342 # once (1µs+0s) by YAML::PP::Parser::start_stream at line 485 # once (1µs+0s) by YAML::PP::Parser::end_document at line 648
sub offset { return $_[0]->{offset} }
7712µs
# spent 0s within YAML::PP::Parser::set_offset which was called: # once (0s+0s) by YAML::PP::Parser::init at line 104
sub set_offset { $_[0]->{offset} = $_[1] }
786274596.7ms
# spent 32.5ms within YAML::PP::Parser::events which was called 62745 times, avg 518ns/call: # 20941 times (11.9ms+0s) by YAML::PP::Parser::scalar_event at line 715, avg 571ns/call # 13451 times (5.96ms+0s) by YAML::PP::Parser::lex_next_tokens at line 178, avg 443ns/call # 7497 times (3.79ms+0s) by YAML::PP::Parser::cb_send_scalar at line 1057, avg 505ns/call # 7300 times (3.79ms+0s) by YAML::PP::Parser::lex_next_tokens at line 231, avg 519ns/call # 6725 times (3.71ms+0s) by YAML::PP::Parser::start_mapping at line 618, avg 552ns/call # 2816 times (1.30ms+0s) by YAML::PP::Parser::remove_nodes at line 460, avg 462ns/call # 689 times (407µs+0s) by YAML::PP::Parser::cb_flow_comma at line 1238, avg 591ns/call # 528 times (274µs+0s) by YAML::PP::Parser::cb_end_outer_flow at line 610, avg 519ns/call # 337 times (169µs+0s) by YAML::PP::Parser::start_flow_sequence at line 543, avg 501ns/call # 337 times (165µs+0s) by YAML::PP::Parser::start_flow_sequence at line 534, avg 490ns/call # 337 times (131µs+0s) by YAML::PP::Parser::end_flow_sequence at line 580, avg 389ns/call # 308 times (149µs+0s) by YAML::PP::Parser::lex_next_tokens at line 216, avg 484ns/call # 308 times (128µs+0s) by YAML::PP::Parser::start_sequence at line 514, avg 416ns/call # 262 times (139µs+0s) by YAML::PP::Parser::lex_next_tokens at line 236, avg 531ns/call # 262 times (131µs+0s) by YAML::PP::Parser::end_sequence at line 449, avg 500ns/call # 214 times (115µs+0s) by YAML::PP::Parser::end_flow_mapping at line 595, avg 537ns/call # 214 times (101µs+0s) by YAML::PP::Parser::start_flow_mapping at line 567, avg 472ns/call # 214 times (93µs+0s) by YAML::PP::Parser::start_flow_mapping at line 558, avg 435ns/call # once (7µs+0s) by YAML::PP::Parser::start_stream at line 484 # once (5µs+0s) by YAML::PP::Parser::start_document at line 493 # once (1µs+0s) by YAML::PP::Parser::end_stream at line 664 # once (1µs+0s) by YAML::PP::Parser::parse_tokens at line 341 # once (0s+0s) by YAML::PP::Parser::end_document at line 632
sub events { return $_[0]->{events} }
7912µs
# spent 1µs within YAML::PP::Parser::set_events which was called: # once (1µs+0s) by YAML::PP::Parser::init at line 105
sub set_events { $_[0]->{events} = $_[1] }
802745041.0ms
# spent 14.4ms within YAML::PP::Parser::new_node which was called 27450 times, avg 526ns/call: # 13449 times (6.41ms+0s) by YAML::PP::Parser::parse_tokens at line 430, avg 477ns/call # 7300 times (4.35ms+0s) by YAML::PP::Parser::lex_next_tokens at line 209, avg 596ns/call # 6148 times (3.40ms+0s) by YAML::PP::Parser::lex_next_tokens at line 204, avg 553ns/call # 337 times (176µs+0s) by YAML::PP::Parser::start_flow_sequence at line 535, avg 522ns/call # 214 times (96µs+0s) by YAML::PP::Parser::start_flow_mapping at line 559, avg 449ns/call # once (3µs+0s) by YAML::PP::Parser::parse_tokens at line 350 # once (0s+0s) by YAML::PP::Parser::end_document at line 636
sub new_node { return $_[0]->{new_node} }
813623752.1ms
# spent 21.2ms within YAML::PP::Parser::set_new_node which was called 36237 times, avg 586ns/call: # 20941 times (14.2ms+0s) by YAML::PP::Parser::scalar_event at line 724, avg 680ns/call # 6725 times (3.00ms+0s) by YAML::PP::Parser::cb_insert_map at line 1367, avg 447ns/call # 6690 times (2.85ms+0s) by YAML::PP::Parser::cb_send_mapkey at line 1049, avg 425ns/call # 689 times (440µs+0s) by YAML::PP::Parser::cb_flow_comma at line 1239, avg 639ns/call # 337 times (201µs+0s) by YAML::PP::Parser::cb_end_flowseq at line 1233, avg 596ns/call # 308 times (172µs+0s) by YAML::PP::Parser::cb_seqstart at line 1141, avg 558ns/call # 302 times (170µs+0s) by YAML::PP::Parser::cb_seqitem at line 1146, avg 563ns/call # 214 times (140µs+0s) by YAML::PP::Parser::cb_end_flowmap at line 1268, avg 654ns/call # 29 times (13µs+0s) by YAML::PP::Parser::cb_flow_colon at line 1248, avg 448ns/call # once (1µs+0s) by YAML::PP::Parser::start_document at line 508 # once (1µs+0s) by YAML::PP::Parser::init at line 106
sub set_new_node { $_[0]->{new_node} = $_[1] }
82sub tagmap { return $_[0]->{tagmap} }
8325µs
# spent 2µs within YAML::PP::Parser::set_tagmap which was called 2 times, avg 1µs/call: # once (2µs+0s) by YAML::PP::Parser::init at line 107 # once (0s+0s) by YAML::PP::Parser::end_document at line 653
sub set_tagmap { $_[0]->{tagmap} = $_[1] }
841345020.6ms
# spent 9.51ms within YAML::PP::Parser::tokens which was called 13450 times, avg 707ns/call: # 13449 times (9.51ms+0s) by YAML::PP::Parser::lex_next_tokens at line 187, avg 707ns/call # once (1µs+0s) by YAML::PP::Parser::parse_tokens at line 343
sub tokens { return $_[0]->{tokens} }
8512µs
# spent 1µs within YAML::PP::Parser::set_tokens which was called: # once (1µs+0s) by YAML::PP::Parser::init at line 110
sub set_tokens { $_[0]->{tokens} = $_[1] }
8670379101ms
# spent 33.5ms within YAML::PP::Parser::event_stack which was called 70379 times, avg 476ns/call: # 20941 times (8.84ms+0s) by YAML::PP::Parser::scalar_event at line 716, avg 422ns/call # 12180 times (6.81ms+0s) by YAML::PP::Parser::cb_start_plain at line 1207, avg 559ns/call # 7497 times (3.35ms+0s) by YAML::PP::Parser::cb_send_scalar at line 1054, avg 447ns/call # 6725 times (3.10ms+0s) by YAML::PP::Parser::cb_insert_map at line 1362, avg 461ns/call # 6725 times (2.81ms+0s) by YAML::PP::Parser::start_mapping at line 620, avg 418ns/call # 6690 times (3.13ms+0s) by YAML::PP::Parser::cb_send_mapkey at line 1047, avg 468ns/call # 6675 times (3.73ms+0s) by YAML::PP::Parser::cb_mapkey at line 1033, avg 559ns/call # 2056 times (1.27ms+0s) by YAML::PP::Parser::cb_take_quoted at line 1152, avg 615ns/call # 337 times (160µs+0s) by YAML::PP::Parser::start_flow_sequence at line 546, avg 475ns/call # 308 times (149µs+0s) by YAML::PP::Parser::start_sequence at line 521, avg 484ns/call # 214 times (139µs+0s) by YAML::PP::Parser::start_flow_mapping at line 570, avg 650ns/call # 29 times (19µs+0s) by YAML::PP::Parser::cb_flowkey_plain at line 1280, avg 655ns/call # once (1µs+0s) by YAML::PP::Parser::cb_send_block_scalar at line 1409 # once (0s+0s) by YAML::PP::Parser::cb_send_block_scalar at line 1420
sub event_stack { return $_[0]->{event_stack} }
8716µs
# spent 2µs within YAML::PP::Parser::set_event_stack which was called: # once (2µs+0s) by YAML::PP::Parser::init at line 112
sub set_event_stack { $_[0]->{event_stack} = $_[1] }
8813µs
# spent 1µs within YAML::PP::Parser::default_yaml_version which was called: # once (1µs+0s) by YAML::PP::Parser::init at line 113
sub default_yaml_version { return $_[0]->{default_yaml_version} }
8912µs
# spent 2µs within YAML::PP::Parser::yaml_version which was called: # once (2µs+0s) by YAML::PP::Parser::end_document at line 653
sub yaml_version { return $_[0]->{yaml_version} }
9013µs
# spent 2µs within YAML::PP::Parser::set_yaml_version which was called: # once (2µs+0s) by YAML::PP::Parser::init at line 113
sub set_yaml_version { $_[0]->{yaml_version} = $_[1] }
9113µs
# spent 1µs within YAML::PP::Parser::yaml_version_directive which was called: # once (1µs+0s) by YAML::PP::Parser::start_document at line 495
sub yaml_version_directive { return $_[0]->{yaml_version_directive} }
9225µs
# spent 3µs within YAML::PP::Parser::set_yaml_version_directive which was called 2 times, avg 2µs/call: # once (2µs+0s) by YAML::PP::Parser::start_document at line 506 # once (1µs+0s) by YAML::PP::Parser::init at line 114
sub set_yaml_version_directive { $_[0]->{yaml_version_directive} = $_[1] }
93
941345022.5ms
# spent 10.2ms within YAML::PP::Parser::rule which was called 13450 times, avg 758ns/call: # 13449 times (10.2ms+0s) by YAML::PP::Parser::parse_tokens at line 437, avg 758ns/call # once (2µs+0s) by YAML::PP::Parser::parse_tokens at line 358
sub rule { return $_[0]->{rule} }
95
# spent 52.0ms within YAML::PP::Parser::set_rule which was called 55080 times, avg 945ns/call: # 46809 times (44.1ms+0s) by YAML::PP::Parser::parse_tokens at line 408, avg 941ns/call # 6992 times (6.83ms+0s) by YAML::PP::Parser::parse_tokens at line 434, avg 976ns/call # 1275 times (1.15ms+0s) by YAML::PP::Parser::parse_tokens at line 415, avg 900ns/call # once (2µs+0s) by YAML::PP::Parser::parse at line 154 # once (2µs+0s) by YAML::PP::Parser::init at line 111 # once (1µs+0s) by YAML::PP::Parser::start_document at line 507 # once (1µs+0s) by YAML::PP::Parser::end_document at line 659
sub set_rule {
965508014.6ms my ($self, $name) = @_;
9727.02ms261µs
# spent 35µs (9+26) within YAML::PP::Parser::BEGIN@97 which was called: # once (9µs+26µs) by YAML::PP::Loader::BEGIN@8 at line 97
no warnings 'uninitialized';
# spent 35µs making 1 call to YAML::PP::Parser::BEGIN@97 # spent 26µs making 1 call to warnings::unimport
98 DEBUG and $self->info("set_rule($name)");
995508086.1ms $self->{rule} = $name;
100}
101
102
# spent 69µs (51+18) within YAML::PP::Parser::init which was called: # once (51µs+18µs) by YAML::PP::Parser::parse at line 150
sub init {
10310s my ($self) = @_;
10416µs10s $self->set_offset([]);
# spent 0s making 1 call to YAML::PP::Parser::set_offset
10511µs11µs $self->set_events([]);
# spent 1µs making 1 call to YAML::PP::Parser::set_events
10611µs11µs $self->set_new_node(0);
# spent 1µs making 1 call to YAML::PP::Parser::set_new_node
10712µs12µs $self->set_tagmap({
# spent 2µs making 1 call to YAML::PP::Parser::set_tagmap
108 '!!' => "tag:yaml.org,2002:",
109 });
11012µs11µs $self->set_tokens([]);
# spent 1µs making 1 call to YAML::PP::Parser::set_tokens
11111µs12µs $self->set_rule(undef);
# spent 2µs making 1 call to YAML::PP::Parser::set_rule
11212µs12µs $self->set_event_stack([]);
# spent 2µs making 1 call to YAML::PP::Parser::set_event_stack
11312µs23µs $self->set_yaml_version($self->default_yaml_version);
# spent 2µs making 1 call to YAML::PP::Parser::set_yaml_version # spent 1µs making 1 call to YAML::PP::Parser::default_yaml_version
11412µs11µs $self->set_yaml_version_directive(undef);
# spent 1µs making 1 call to YAML::PP::Parser::set_yaml_version_directive
11516µs25µs $self->lexer->init;
# spent 3µs making 1 call to YAML::PP::Lexer::init # spent 2µs making 1 call to YAML::PP::Parser::lexer
116}
117
118sub parse_string {
119 my ($self, $yaml) = @_;
120 $self->set_reader(YAML::PP::Reader->new( input => $yaml ));
121 $self->parse();
122}
123
124sub parse_file {
125 my ($self, $file) = @_;
126 $self->set_reader(YAML::PP::Reader::File->new( input => $file ));
127 $self->parse();
128}
129
13017µsmy %nodetypes = (
131 MAPVALUE => 'NODETYPE_COMPLEX',
132 MAP => 'NODETYPE_MAP',
133# IMAP => 'NODETYPE_SEQ',
134 SEQ => 'NODETYPE_SEQ',
135 SEQ0 => 'NODETYPE_SEQ',
136 FLOWMAP => 'NODETYPE_FLOWMAP',
137 FLOWMAPVALUE => 'NODETYPE_FLOWMAPVALUE',
138 FLOWSEQ => 'NODETYPE_FLOWSEQ',
139 FLOWSEQ_NEXT => 'FLOWSEQ_NEXT',
140 DOC => 'FULLNODE',
141 DOC_END => 'DOCUMENT_END',
142 STR => 'STREAM',
143 END_FLOW => 'END_FLOW',
144);
145
146
# spent 6.54s (56µs+6.54) within YAML::PP::Parser::parse which was called: # once (56µs+6.54s) by YAML::PP::Loader::load at line 94 of YAML/PP/Loader.pm
sub parse {
14711µs my ($self) = @_;
148 TRACE and warn "=== parse()\n";
149 TRACE and $self->debug_yaml;
15012µs169µs $self->init;
# spent 69µs making 1 call to YAML::PP::Parser::init
15111µs23µs $self->lexer->init;
# spent 3µs making 1 call to YAML::PP::Lexer::init # spent 0s making 1 call to YAML::PP::Parser::lexer
15211µs eval {
15313µs133µs $self->start_stream;
# spent 33µs making 1 call to YAML::PP::Parser::start_stream
15411µs12µs $self->set_rule( 'STREAM' );
# spent 2µs making 1 call to YAML::PP::Parser::set_rule
155
15612µs16.54s $self->parse_tokens();
# spent 6.54s making 1 call to YAML::PP::Parser::parse_tokens
157
15813µs143µs $self->end_stream;
# spent 43µs making 1 call to YAML::PP::Parser::end_stream
159 };
16011µs if (my $error = $@) {
161 if (ref $error) {
162 croak "$error\n ";
163 }
164 croak $error;
165 }
166
167 DEBUG and $self->highlight_yaml;
16812µs TRACE and $self->debug_tokens;
169}
170
171
# spent 1.61s (265ms+1.34) within YAML::PP::Parser::lex_next_tokens which was called 13451 times, avg 120µs/call: # 13450 times (265ms+1.34s) by YAML::PP::Parser::parse_tokens at line 423, avg 119µs/call # once (16µs+5.09ms) by YAML::PP::Parser::parse_tokens at line 346
sub lex_next_tokens {
172134513.14ms my ($self) = @_;
173
174 DEBUG and $self->info("----------------> lex_next_tokens");
175 TRACE and $self->debug_events;
176
1771345112.0ms134517.16ms my $indent = $self->offset->[-1];
# spent 7.16ms making 13451 calls to YAML::PP::Parser::offset, avg 532ns/call
178134518.51ms134515.96ms my $event_types = $self->events;
# spent 5.96ms making 13451 calls to YAML::PP::Parser::events, avg 443ns/call
1791345121.5ms269021.01s my $next_tokens = $self->lexer->fetch_next_tokens($indent);
# spent 1.00s making 13451 calls to YAML::PP::Lexer::fetch_next_tokens, avg 74µs/call # spent 6.90ms making 13451 calls to YAML::PP::Parser::lexer, avg 513ns/call
180134512.41ms return unless @$next_tokens;
181
182134503.02ms my $next = $next_tokens->[0];
183
184134504.49ms return 1 if ($next->{name} ne 'SPACE');
1851344926.4ms134494.76ms my $flow = $event_types->[-1] =~ m/^FLOW/;
# spent 4.76ms making 13449 calls to YAML::PP::Parser::CORE:match, avg 354ns/call
186134496.77ms my $space = length $next->{value};
1871344912.7ms134499.51ms my $tokens = $self->tokens;
# spent 9.51ms making 13449 calls to YAML::PP::Parser::tokens, avg 707ns/call
188
189134495.52ms if (not $space) {
190 shift @$next_tokens;
191 }
192 else {
193134444.61ms push @$tokens, shift @$next_tokens;
194 }
195134491.74ms if ($flow) {
196 if ($space >= $indent) {
197 return 1;
198 }
199 $self->exception("Bad indendation in " . $self->events->[-1]);
200 }
201134492.89ms $next = $next_tokens->[0];
202134493.80ms if ($space > $indent ) {
20361491.65ms return 1 if $indent < 0;
20461485.30ms61483.40ms unless ($self->new_node) {
# spent 3.40ms making 6148 calls to YAML::PP::Parser::new_node, avg 553ns/call
205 $self->exception("Bad indendation in " . $self->events->[-1]);
206 }
207614812.9ms return 1;
208 }
20973008.66ms73004.35ms if ($self->new_node) {
# spent 4.35ms making 7300 calls to YAML::PP::Parser::new_node, avg 596ns/call
210308259µs if ($space < $indent) {
211 $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' });
212 $self->remove_nodes($space);
213 }
214 else {
215 # unindented sequence starts
216308409µs308149µs my $exp = $self->events->[-1];
# spent 149µs making 308 calls to YAML::PP::Parser::events, avg 484ns/call
217308250µs my $seq_start = $next->{name} eq 'DASH';
218308177µs if ( $seq_start and ($exp eq 'MAPVALUE' or $exp eq 'MAP')) {
219 }
220 else {
221 $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' });
222 }
223 }
224 }
225 else {
22669924.98ms2815284ms if ($space < $indent) {
# spent 284ms making 2815 calls to YAML::PP::Parser::remove_nodes, avg 101µs/call
227 $self->remove_nodes($space);
228 }
229 }
230
23173007.41ms73003.79ms my $exp = $self->events->[-1];
# spent 3.79ms making 7300 calls to YAML::PP::Parser::events, avg 519ns/call
232
23373001.79ms if ($exp eq 'SEQ0' and $next->{name} ne 'DASH') {
234 TRACE and $self->info("In unindented sequence");
235262418µs2629.63ms $self->end_sequence;
# spent 9.63ms making 262 calls to YAML::PP::Parser::end_sequence, avg 37µs/call
236262235µs262139µs $exp = $self->events->[-1];
# spent 139µs making 262 calls to YAML::PP::Parser::events, avg 531ns/call
237 }
238
23973006.31ms73003.16ms if ($self->offset->[-1] != $space) {
# spent 3.16ms making 7300 calls to YAML::PP::Parser::offset, avg 433ns/call
240 $self->exception("Expected " . $self->events->[-1]);
241 }
242730017.7ms return 1;
243}
244
24514µsmy %next_event = (
246 MAP => 'MAPVALUE',
247 IMAP => 'IMAPVALUE',
248 MAPVALUE => 'MAP',
249 IMAPVALUE => 'IMAP',
250 SEQ => 'SEQ',
251 SEQ0 => 'SEQ0',
252 DOC => 'DOC_END',
253 STR => 'STR',
254 FLOWSEQ => 'FLOWSEQ_NEXT',
255 FLOWSEQ_NEXT => 'FLOWSEQ',
256 FLOWMAP => 'FLOWMAPVALUE',
257 FLOWMAPVALUE => 'FLOWMAP',
258);
259
26013µsmy %event_to_method = (
261 MAP => 'mapping',
262 IMAP => 'mapping',
263 FLOWMAP => 'mapping',
264 SEQ => 'sequence',
265 SEQ0 => 'sequence',
266 FLOWSEQ => 'sequence',
267 DOC => 'document',
268 STR => 'stream',
269 VAL => 'scalar',
270 ALI => 'alias',
271 MAPVALUE => 'mapping',
272 IMAPVALUE => 'mapping',
273);
274
275#sub process_events {
276# my ($self, $res) = @_;
277#
278# my $event_stack = $self->event_stack;
279# return unless @$event_stack;
280#
281# if (@$event_stack == 1 and $event_stack->[0]->[0] eq 'properties') {
282# return;
283# }
284#
285# my $event_types = $self->events;
286# my $properties;
287# my @send_events;
288# for my $event (@$event_stack) {
289# TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$event], ['event']);
290# my ($type, $info) = @$event;
291# if ($type eq 'properties') {
292# $properties = $info;
293# }
294# elsif ($type eq 'scalar') {
295# $info->{name} = 'scalar_event';
296# $event_types->[-1] = $next_event{ $event_types->[-1] };
297# push @send_events, $info;
298# }
299# elsif ($type eq 'begin') {
300# my $name = $info->{name};
301# $info->{name} = $event_to_method{ $name } . '_start_event';
302# push @{ $event_types }, $name;
303# push @{ $self->offset }, $info->{offset};
304# push @send_events, $info;
305# }
306# elsif ($type eq 'end') {
307# my $name = $info->{name};
308# $info->{name} = $event_to_method{ $name } . '_end_event';
309# $self->$type($name, $info);
310# push @send_events, $info;
311# if (@$event_types) {
312# $event_types->[-1] = $next_event{ $event_types->[-1] };
313# }
314# }
315# elsif ($type eq 'alias') {
316# if ($properties) {
317# $self->exception("Parse error: Alias not allowed in this context");
318# }
319# $info->{name} = 'alias_event';
320# $event_types->[-1] = $next_event{ $event_types->[-1] };
321# push @send_events, $info;
322# }
323# }
324# @$event_stack = ();
325# for my $info (@send_events) {
326# DEBUG and $self->debug_event( $info );
327# $self->callback->($self, $info->{name}, $info);
328# }
329#}
330
33113µsmy %fetch_method = (
332 '"' => 'fetch_quoted',
333 "'" => 'fetch_quoted',
334 '|' => 'fetch_block',
335 '>' => 'fetch_block',
336 '' => 'fetch_plain',
337);
338
339
# spent 6.54s (826ms+5.72) within YAML::PP::Parser::parse_tokens which was called: # once (826ms+5.72s) by YAML::PP::Parser::parse at line 156
sub parse_tokens {
34011µs my ($self) = @_;
34111µs11µs my $event_types = $self->events;
# spent 1µs making 1 call to YAML::PP::Parser::events
34210s11µs my $offsets = $self->offset;
# spent 1µs making 1 call to YAML::PP::Parser::offset
34311µs11µs my $tokens = $self->tokens;
# spent 1µs making 1 call to YAML::PP::Parser::tokens
34412µs21µs my $next_tokens = $self->lexer->next_tokens;
# spent 1µs making 1 call to YAML::PP::Lexer::next_tokens # spent 0s making 1 call to YAML::PP::Parser::lexer
345
34613µs15.10ms unless ($self->lex_next_tokens) {
# spent 5.10ms making 1 call to YAML::PP::Parser::lex_next_tokens
347 $self->end_document(1);
348 return 0;
349 }
35013µs13µs unless ($self->new_node) {
# spent 3µs making 1 call to YAML::PP::Parser::new_node
35113µs12µs if ($self->level > 0) {
# spent 2µs making 1 call to YAML::PP::Parser::level
352 my $new_rule = $nodetypes{ $event_types->[-1] }
353 or die "Did not find '$event_types->[-1]'";
354 $self->set_rule( $new_rule );
355 }
356 }
357
35811µs12µs my $rule_name = $self->rule;
# spent 2µs making 1 call to YAML::PP::Parser::rule
359 DEBUG and $self->info("----------------> parse_tokens($rule_name)");
36014µs my $rule = $GRAMMAR->{ $rule_name }
361 or die "Could not find rule $rule_name";
362
363 TRACE and $self->debug_rules($rule);
364 TRACE and $self->debug_yaml;
365 DEBUG and $self->debug_next_line;
366
36719.42ms RULE: while ($rule_name) {
368 DEBUG and $self->info("RULE: $rule_name");
369 TRACE and $self->debug_tokens($next_tokens);
370
37111098513.4ms unless (@$next_tokens) {
372 $self->exception("No more tokens");
373 }
374 TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$next_tokens->[0]], ['next_token']);
37511098532.2ms my $got = $next_tokens->[0]->{name};
37611098515.9ms if ($got eq 'CONTEXT') {
377209414.95ms my $context = shift @$next_tokens;
378209413.86ms my $indent = $offsets->[-1];
3792094130.4ms4188221.7ms $indent++ unless $self->lexer->flowcontext;
# spent 11.8ms making 20941 calls to YAML::PP::Parser::lexer, avg 565ns/call # spent 9.87ms making 20941 calls to YAML::PP::Lexer::flowcontext, avg 471ns/call
3802094110.1ms my $method = $fetch_method{ $context->{value} };
3812094137.6ms418822.12s my $partial = $self->lexer->$method($indent, $context->{value});
# spent 1.86s making 18884 calls to YAML::PP::Lexer::fetch_plain, avg 99µs/call # spent 251ms making 2056 calls to YAML::PP::Lexer::fetch_quoted, avg 122µs/call # spent 8.44ms making 20941 calls to YAML::PP::Parser::lexer, avg 403ns/call # spent 423µs making 1 call to YAML::PP::Lexer::fetch_block
3822094128.8ms next RULE;
383 }
3849004434.3ms my $def = $rule->{ $got };
3859004434.3ms if ($def) {
386 push @$tokens, shift @$next_tokens;
387 }
388 elsif ($def = $rule->{DEFAULT}) {
389 $got = 'DEFAULT';
390 }
391 else {
392 $self->expected(
393 expected => [keys %$rule],
394 got => $next_tokens->[0],
395 );
396 }
397
398 DEBUG and $self->got("---got $got");
3999004437.8ms if (my $sub = $def->{match}) {
400 DEBUG and $self->info("CALLBACK $sub");
4014377058.6ms437701.89s $self->$sub(@$tokens ? $tokens->[-1] : ());
# spent 743ms making 6725 calls to YAML::PP::Parser::cb_insert_map, avg 110µs/call # spent 468ms making 6675 calls to YAML::PP::Parser::cb_send_mapkey, avg 70µs/call # spent 392ms making 6470 calls to YAML::PP::Parser::cb_send_scalar, avg 61µs/call # spent 63.7ms making 12180 calls to YAML::PP::Parser::cb_start_plain, avg 5µs/call # spent 55.8ms making 689 calls to YAML::PP::Parser::cb_flow_comma, avg 81µs/call # spent 41.1ms making 6675 calls to YAML::PP::Parser::cb_mapkey, avg 6µs/call # spent 39.7ms making 337 calls to YAML::PP::Parser::cb_end_flowseq, avg 118µs/call # spent 21.4ms making 337 calls to YAML::PP::Parser::cb_start_flowseq, avg 64µs/call # spent 17.7ms making 308 calls to YAML::PP::Parser::cb_seqstart, avg 57µs/call # spent 15.5ms making 2041 calls to YAML::PP::Parser::cb_take_quoted, avg 8µs/call # spent 11.9ms making 214 calls to YAML::PP::Parser::cb_start_flowmap, avg 56µs/call # spent 11.0ms making 214 calls to YAML::PP::Parser::cb_end_flowmap, avg 51µs/call # spent 2.70ms making 528 calls to YAML::PP::Parser::cb_end_outer_flow, avg 5µs/call # spent 2.67ms making 29 calls to YAML::PP::Parser::cb_flowkey_plain, avg 92µs/call # spent 1.51ms making 302 calls to YAML::PP::Parser::cb_seqitem, avg 5µs/call # spent 849µs making 15 calls to YAML::PP::Parser::cb_take_quoted_key, avg 57µs/call # spent 101µs making 29 calls to YAML::PP::Parser::cb_flow_colon, avg 3µs/call # spent 63µs making 1 call to YAML::PP::Parser::cb_doc_start_explicit # spent 58µs making 1 call to YAML::PP::Parser::cb_send_block_scalar
402 }
4039004418.6ms my $eol = $got eq 'EOL';
4049004425.4ms my $new = $def->{new};
4059004429.4ms if ($new) {
406 DEBUG and $self->got("NEW: $new");
407468098.34ms $rule_name = $new;
4084680936.6ms4680944.1ms $self->set_rule($rule_name);
# spent 44.1ms making 46809 calls to YAML::PP::Parser::set_rule, avg 941ns/call
409 }
410 elsif ($eol) {
411 }
412 elsif ($def->{return}) {
4131275936µs $rule_name = $nodetypes{ $event_types->[-1] }
414 or die "Unexpected event type $event_types->[-1]";
4151275938µs12751.15ms $self->set_rule($rule_name);
# spent 1.15ms making 1275 calls to YAML::PP::Parser::set_rule, avg 900ns/call
416 }
417 else {
4183496718.0ms $rule_name .= " - $got"; # for debugging
419349674.53ms $rule = $def;
4203496712.8ms next RULE;
421 }
422550779.25ms if ($eol) {
4231345012.0ms134501.60s unless ($self->lex_next_tokens) {
# spent 1.60s making 13450 calls to YAML::PP::Parser::lex_next_tokens, avg 119µs/call
42410s if ($rule_name eq 'DIRECTIVE') {
425 $self->exception("Directive needs document start");
426 }
42712µs11.30ms $self->end_document(1);
# spent 1.30ms making 1 call to YAML::PP::Parser::end_document
42814µs return 0;
429 }
4301344911.1ms134496.41ms unless ($self->new_node) {
# spent 6.41ms making 13449 calls to YAML::PP::Parser::new_node, avg 477ns/call
43169928.98ms69928.30ms if ($self->level > 0) {
# spent 8.30ms making 6992 calls to YAML::PP::Parser::level, avg 1µs/call
43269924.67ms $rule_name = $nodetypes{ $event_types->[-1] }
433 or die "Did not find '$event_types->[-1]'";
43469925.40ms69926.83ms $self->set_rule( $rule_name );
# spent 6.83ms making 6992 calls to YAML::PP::Parser::set_rule, avg 976ns/call
435 }
436 }
4371344914.2ms1344910.2ms $rule_name = $self->rule;
# spent 10.2ms making 13449 calls to YAML::PP::Parser::rule, avg 758ns/call
438 }
4395507644.0ms $rule = $GRAMMAR->{ $rule_name }
440 or die "Unexpected rule $rule_name";
441
442 }
443
444 die "Unexpected";
445}
446
447
# spent 9.63ms (3.82+5.81) within YAML::PP::Parser::end_sequence which was called 262 times, avg 37µs/call: # 262 times (3.82ms+5.81ms) by YAML::PP::Parser::lex_next_tokens at line 235, avg 37µs/call
sub end_sequence {
448262122µs my ($self) = @_;
449262275µs262131µs my $event_types = $self->events;
# spent 131µs making 262 calls to YAML::PP::Parser::events, avg 500ns/call
450262124µs pop @{ $event_types };
451262347µs262117µs pop @{ $self->offset };
# spent 117µs making 262 calls to YAML::PP::Parser::offset, avg 447ns/call
452262191µs my $info = { name => 'sequence_end_event' };
453262494µs5245.56ms $self->callback->($self, $info->{name} => $info );
# spent 5.45ms making 262 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 21µs/call # spent 110µs making 262 calls to YAML::PP::Parser::callback, avg 420ns/call
454262858µs $event_types->[-1] = $next_event{ $event_types->[-1] };
455}
456
457
# spent 285ms (69.1+216) within YAML::PP::Parser::remove_nodes which was called 2816 times, avg 101µs/call: # 2815 times (69.1ms+215ms) by YAML::PP::Parser::lex_next_tokens at line 226, avg 101µs/call # once (29µs+1.21ms) by YAML::PP::Parser::end_document at line 639
sub remove_nodes {
4582816975µs my ($self, $space) = @_;
45928162.42ms28161.34ms my $offset = $self->offset;
# spent 1.34ms making 2816 calls to YAML::PP::Parser::offset, avg 477ns/call
46028162.66ms28161.30ms my $event_types = $self->events;
# spent 1.30ms making 2816 calls to YAML::PP::Parser::events, avg 462ns/call
461
46228161.33ms my $exp = $event_types->[-1];
46328161.11ms while (@$offset) {
46495872.83ms if ($offset->[ -1 ] <= $space) {
46528161.07ms last;
466 }
46767711.65ms if ($exp eq 'MAPVALUE') {
468 $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' });
469 $exp = 'MAP';
470 }
47167714.53ms my $info = { name => $exp };
47267714.54ms $info->{name} = $event_to_method{ $exp } . '_end_event';
47367712.16ms pop @{ $event_types };
47467711.20ms pop @{ $offset };
475677110.9ms13542214ms $self->callback->($self, $info->{name} => $info );
# spent 210ms making 6771 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 31µs/call # spent 3.84ms making 6771 calls to YAML::PP::Parser::callback, avg 567ns/call
47667714.03ms $event_types->[-1] = $next_event{ $event_types->[-1] };
47767716.50ms $exp = $event_types->[-1];
478 }
47928165.22ms return $exp;
480}
481
482
# spent 33µs (16+17) within YAML::PP::Parser::start_stream which was called: # once (16µs+17µs) by YAML::PP::Parser::parse at line 153
sub start_stream {
48310s my ($self) = @_;
48412µs17µs push @{ $self->events }, 'STR';
# spent 7µs making 1 call to YAML::PP::Parser::events
48511µs11µs push @{ $self->offset }, -1;
# spent 1µs making 1 call to YAML::PP::Parser::offset
48615µs29µs $self->callback->($self, 'stream_start_event', {
# spent 9µs making 1 call to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62] # spent 0s making 1 call to YAML::PP::Parser::callback
487 name => 'stream_start_event',
488 });
489}
490
491
# spent 58µs (30+28) within YAML::PP::Parser::start_document which was called: # once (30µs+28µs) by YAML::PP::Parser::cb_doc_start_explicit at line 1441
sub start_document {
49210s my ($self, $implicit) = @_;
49313µs15µs push @{ $self->events }, 'DOC';
# spent 5µs making 1 call to YAML::PP::Parser::events
49412µs11µs push @{ $self->offset }, -1;
# spent 1µs making 1 call to YAML::PP::Parser::offset
49512µs11µs my $directive = $self->yaml_version_directive;
# spent 1µs making 1 call to YAML::PP::Parser::yaml_version_directive
49610s my %directive;
49710s if ($directive) {
498 my ($major, $minor) = split m/\./, $self->yaml_version;
499 %directive = ( version_directive => { major => $major, minor => $minor } );
500 }
50115µs217µs $self->callback->($self, 'document_start_event', {
# spent 15µs making 1 call to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62] # spent 2µs making 1 call to YAML::PP::Parser::callback
502 name => 'document_start_event',
503 implicit => $implicit,
504 %directive,
505 });
50611µs12µs $self->set_yaml_version_directive(undef);
# spent 2µs making 1 call to YAML::PP::Parser::set_yaml_version_directive
50711µs11µs $self->set_rule( 'FULLNODE' );
# spent 1µs making 1 call to YAML::PP::Parser::set_rule
50814µs11µs $self->set_new_node(1);
# spent 1µs making 1 call to YAML::PP::Parser::set_new_node
509}
510
511
# spent 15.4ms (4.78+10.6) within YAML::PP::Parser::start_sequence which was called 308 times, avg 50µs/call: # 308 times (4.78ms+10.6ms) by YAML::PP::Parser::cb_seqstart at line 1140, avg 50µs/call
sub start_sequence {
512308147µs my ($self, $offset) = @_;
513308325µs308158µs my $offsets = $self->offset;
# spent 158µs making 308 calls to YAML::PP::Parser::offset, avg 513ns/call
514308569µs308128µs if ($offsets->[-1] == $offset) {
# spent 128µs making 308 calls to YAML::PP::Parser::events, avg 416ns/call
515 push @{ $self->events }, 'SEQ0';
516 }
517 else {
518 push @{ $self->events }, 'SEQ';
519 }
520308149µs push @{ $offsets }, $offset;
521308367µs308149µs my $event_stack = $self->event_stack;
# spent 149µs making 308 calls to YAML::PP::Parser::event_stack, avg 484ns/call
522308369µs my $info = { name => 'sequence_start_event' };
523308108µs if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
524 my $properties = pop @$event_stack;
525 $self->node_properties($properties->[1], $info);
526 }
5273081.10ms61610.2ms $self->callback->($self, 'sequence_start_event', $info);
# spent 10.0ms making 308 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 33µs/call # spent 170µs making 308 calls to YAML::PP::Parser::callback, avg 552ns/call
528}
529
530
# spent 20.0ms (7.55+12.5) within YAML::PP::Parser::start_flow_sequence which was called 337 times, avg 59µs/call: # 337 times (7.55ms+12.5ms) by YAML::PP::Parser::cb_start_flowseq at line 1221, avg 59µs/call
sub start_flow_sequence {
531337156µs my ($self, $offset) = @_;
532337412µs337215µs my $offsets = $self->offset;
# spent 215µs making 337 calls to YAML::PP::Parser::offset, avg 638ns/call
533337101µs my $new_offset = $offsets->[-1];
534337310µs337165µs my $event_types = $self->events;
# spent 165µs making 337 calls to YAML::PP::Parser::events, avg 490ns/call
535337603µs337176µs if ($new_offset < 0) {
# spent 176µs making 337 calls to YAML::PP::Parser::new_node, avg 522ns/call
536 $new_offset = 0;
537 }
538 elsif ($self->new_node) {
539337849µs337191µs if ($event_types->[-1] !~ m/^FLOW/) {
# spent 191µs making 337 calls to YAML::PP::Parser::CORE:match, avg 567ns/call
540 $new_offset++;
541 }
542 }
543337465µs337169µs push @{ $self->events }, 'FLOWSEQ';
# spent 169µs making 337 calls to YAML::PP::Parser::events, avg 501ns/call
544337112µs push @{ $offsets }, $new_offset;
545
546337444µs337160µs my $event_stack = $self->event_stack;
# spent 160µs making 337 calls to YAML::PP::Parser::event_stack, avg 475ns/call
547337467µs my $info = { style => YAML_FLOW_SEQUENCE_STYLE, name => 'sequence_start_event' };
54833788µs if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
549 $self->fetch_inline_properties($event_stack, $info);
550 }
5513371.26ms67411.4ms $self->callback->($self, 'sequence_start_event', $info);
# spent 11.2ms making 337 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 33µs/call # spent 179µs making 337 calls to YAML::PP::Parser::callback, avg 531ns/call
552}
553
554
# spent 11.1ms (4.65+6.48) within YAML::PP::Parser::start_flow_mapping which was called 214 times, avg 52µs/call: # 214 times (4.65ms+6.48ms) by YAML::PP::Parser::cb_start_flowmap at line 1226, avg 52µs/call
sub start_flow_mapping {
555214112µs my ($self, $offset, $implicit_flowseq_map) = @_;
556214209µs214112µs my $offsets = $self->offset;
# spent 112µs making 214 calls to YAML::PP::Parser::offset, avg 523ns/call
55721490µs my $new_offset = $offsets->[-1];
558214194µs21493µs my $event_types = $self->events;
# spent 93µs making 214 calls to YAML::PP::Parser::events, avg 435ns/call
559214324µs21496µs if ($new_offset < 0) {
# spent 96µs making 214 calls to YAML::PP::Parser::new_node, avg 449ns/call
560 $new_offset = 0;
561 }
562 elsif ($self->new_node) {
563214539µs214108µs if ($event_types->[-1] !~ m/^FLOW/) {
# spent 108µs making 214 calls to YAML::PP::Parser::CORE:match, avg 505ns/call
564 $new_offset++;
565 }
566 }
567214355µs214101µs push @{ $self->events }, $implicit_flowseq_map ? 'IMAP' : 'FLOWMAP';
# spent 101µs making 214 calls to YAML::PP::Parser::events, avg 472ns/call
56821481µs push @{ $offsets }, $new_offset;
569
570214261µs214139µs my $event_stack = $self->event_stack;
# spent 139µs making 214 calls to YAML::PP::Parser::event_stack, avg 650ns/call
571214233µs my $info = { name => 'mapping_start_event', style => YAML_FLOW_MAPPING_STYLE };
57221453µs if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
573 $self->fetch_inline_properties($event_stack, $info);
574 }
575214817µs4285.83ms $self->callback->($self, 'mapping_start_event', $info);
# spent 5.73ms making 214 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 27µs/call # spent 101µs making 214 calls to YAML::PP::Parser::callback, avg 472ns/call
576}
577
578
# spent 14.1ms (4.94+9.18) within YAML::PP::Parser::end_flow_sequence which was called 337 times, avg 42µs/call: # 337 times (4.94ms+9.18ms) by YAML::PP::Parser::cb_end_flowseq at line 1232, avg 42µs/call
sub end_flow_sequence {
579337179µs my ($self) = @_;
580337315µs337131µs my $event_types = $self->events;
# spent 131µs making 337 calls to YAML::PP::Parser::events, avg 389ns/call
581337169µs pop @{ $event_types };
582337385µs337177µs pop @{ $self->offset };
# spent 177µs making 337 calls to YAML::PP::Parser::offset, avg 525ns/call
583337274µs my $info = { name => 'sequence_end_event' };
584337622µs6748.19ms $self->callback->($self, $info->{name}, $info);
# spent 8.03ms making 337 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 24µs/call # spent 159µs making 337 calls to YAML::PP::Parser::callback, avg 472ns/call
5853372.20ms337689µs if ($event_types->[-1] =~ m/^FLOW|^IMAP/) {
# spent 689µs making 337 calls to YAML::PP::Parser::CORE:match, avg 2µs/call
586 $event_types->[-1] = $next_event{ $event_types->[-1] };
587 }
588 else {
589314137µs push @$event_types, 'END_FLOW';
590 }
591}
592
593
# spent 9.71ms (3.19+6.51) within YAML::PP::Parser::end_flow_mapping which was called 214 times, avg 45µs/call: # 214 times (3.19ms+6.51ms) by YAML::PP::Parser::cb_end_flowmap at line 1267, avg 45µs/call
sub end_flow_mapping {
59421486µs my ($self) = @_;
595214247µs214115µs my $event_types = $self->events;
# spent 115µs making 214 calls to YAML::PP::Parser::events, avg 537ns/call
596214110µs pop @{ $event_types };
597214205µs21494µs pop @{ $self->offset };
# spent 94µs making 214 calls to YAML::PP::Parser::offset, avg 439ns/call
598214186µs my $info = { name => 'mapping_end_event' };
599214364µs4285.93ms $self->callback->($self, $info->{name}, $info);
# spent 5.83ms making 214 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 27µs/call # spent 93µs making 214 calls to YAML::PP::Parser::callback, avg 435ns/call
6002141.31ms214374µs if ($event_types->[-1] =~ m/^FLOW|^IMAP/) {
# spent 374µs making 214 calls to YAML::PP::Parser::CORE:match, avg 2µs/call
601 $event_types->[-1] = $next_event{ $event_types->[-1] };
602 }
603 else {
60421499µs push @$event_types, 'END_FLOW';
605 }
606}
607
608
# spent 2.70ms (2.43+274µs) within YAML::PP::Parser::cb_end_outer_flow which was called 528 times, avg 5µs/call: # 528 times (2.43ms+274µs) by YAML::PP::Parser::parse_tokens at line 401, avg 5µs/call
sub cb_end_outer_flow {
609528239µs my ($self) = @_;
610528560µs528274µs my $event_types = $self->events;
# spent 274µs making 528 calls to YAML::PP::Parser::events, avg 519ns/call
611528211µs pop @$event_types;
6125281.13ms $event_types->[-1] = $next_event{ $event_types->[-1] };
613}
614
615
# spent 279ms (75.9+203) within YAML::PP::Parser::start_mapping which was called 6725 times, avg 42µs/call: # 6725 times (75.9ms+203ms) by YAML::PP::Parser::cb_insert_map at line 1365, avg 42µs/call
sub start_mapping {
61667255.34ms my ($self, $offset) = @_;
61767256.04ms67253.85ms my $offsets = $self->offset;
# spent 3.85ms making 6725 calls to YAML::PP::Parser::offset, avg 573ns/call
61867256.89ms67253.71ms push @{ $self->events }, 'MAP';
# spent 3.71ms making 6725 calls to YAML::PP::Parser::events, avg 552ns/call
61967252.09ms push @{ $offsets }, $offset;
62067254.38ms67252.81ms my $event_stack = $self->event_stack;
# spent 2.81ms making 6725 calls to YAML::PP::Parser::event_stack, avg 418ns/call
62167254.66ms my $info = { name => 'mapping_start_event' };
62267251.43ms if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
623 my $properties = pop @$event_stack;
624 $self->node_properties($properties->[1], $info);
625 }
626672522.5ms13450193ms $self->callback->($self, 'mapping_start_event', $info);
# spent 189ms making 6725 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 28µs/call # spent 3.85ms making 6725 calls to YAML::PP::Parser::callback, avg 573ns/call
627}
628
629
# spent 1.30ms (35µs+1.26) within YAML::PP::Parser::end_document which was called: # once (35µs+1.26ms) by YAML::PP::Parser::parse_tokens at line 427
sub end_document {
63010s my ($self, $implicit) = @_;
631
63211µs10s my $event_types = $self->events;
# spent 0s making 1 call to YAML::PP::Parser::events
63313µs10s if ($event_types->[-1] =~ m/FLOW/) {
# spent 0s making 1 call to YAML::PP::Parser::CORE:match
634 die "Unexpected end of flow context";
635 }
63610s10s if ($self->new_node) {
# spent 0s making 1 call to YAML::PP::Parser::new_node
637 $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' });
638 }
63910s11.23ms $self->remove_nodes(-1);
# spent 1.23ms making 1 call to YAML::PP::Parser::remove_nodes
640
64110s if ($event_types->[-1] eq 'STR') {
642 return;
643 }
64411µs my $last = pop @{ $event_types };
64511µs if ($last ne 'DOC' and $last ne 'DOC_END') {
646 $self->exception("Unexpected event type $last");
647 }
64811µs11µs pop @{ $self->offset };
# spent 1µs making 1 call to YAML::PP::Parser::offset
64913µs223µs $self->callback->($self, 'document_end_event', {
# spent 22µs making 1 call to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62] # spent 1µs making 1 call to YAML::PP::Parser::callback
650 name => 'document_end_event',
651 implicit => $implicit,
652 });
65315µs22µs if ($self->yaml_version eq '1.2') {
# spent 2µs making 1 call to YAML::PP::Parser::yaml_version # spent 0s making 1 call to YAML::PP::Parser::set_tagmap
654 # In YAML 1.2, directives are only for the following
655 # document. In YAML 1.1, they are global
656 $self->set_tagmap({ '!!' => "tag:yaml.org,2002:" });
657 }
65811µs $event_types->[-1] = $next_event{ $event_types->[-1] };
65913µs11µs $self->set_rule('STREAM');
# spent 1µs making 1 call to YAML::PP::Parser::set_rule
660}
661
662
# spent 43µs (10+33) within YAML::PP::Parser::end_stream which was called: # once (10µs+33µs) by YAML::PP::Parser::parse at line 158
sub end_stream {
66310s my ($self) = @_;
66412µs11µs my $last = pop @{ $self->events };
# spent 1µs making 1 call to YAML::PP::Parser::events
66510s $self->exception("Unexpected event type $last") unless $last eq 'STR';
66611µs11µs pop @{ $self->offset };
# spent 1µs making 1 call to YAML::PP::Parser::offset
667139µs231µs $self->callback->($self, 'stream_end_event', {
# spent 31µs making 1 call to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62] # spent 0s making 1 call to YAML::PP::Parser::callback
668 name => 'stream_end_event',
669 });
670}
671
672sub fetch_inline_properties {
673 my ($self, $stack, $info) = @_;
674 my $properties = $stack->[-1];
675
676 $properties = $properties->[1];
677 my $property_offset;
678 if ($properties) {
679 for my $p (@{ $properties->{inline} }) {
680 my $type = $p->{type};
681 if (exists $info->{ $type }) {
682 $self->exception("A node can only have one $type");
683 }
684 $info->{ $type } = $p->{value};
685 unless (defined $property_offset) {
686 $property_offset = $p->{offset};
687 $info->{offset} = $p->{offset};
688 }
689 }
690 delete $properties->{inline};
691 undef $properties unless $properties->{newline};
692 }
693
694 unless ($properties) {
695 pop @$stack;
696 }
697}
698
699sub node_properties {
700 my ($self, $properties, $info) = @_;
701 if ($properties) {
702 for my $p (@{ $properties->{newline} }) {
703 my $type = $p->{type};
704 if (exists $info->{ $type }) {
705 $self->exception("A node can only have one $type");
706 }
707 $info->{ $type } = $p->{value};
708 }
709 undef $properties;
710 }
711}
712
713
# spent 1.20s (210ms+992ms) within YAML::PP::Parser::scalar_event which was called 20941 times, avg 57µs/call: # 7497 times (75.2ms+318ms) by YAML::PP::Parser::cb_send_scalar at line 1056, avg 52µs/call # 6725 times (66.6ms+324ms) by YAML::PP::Parser::cb_insert_map at line 1366, avg 58µs/call # 6690 times (67.6ms+348ms) by YAML::PP::Parser::cb_send_mapkey at line 1048, avg 62µs/call # 29 times (371µs+1.91ms) by YAML::PP::Parser::cb_flowkey_plain at line 1289, avg 79µs/call
sub scalar_event {
714209413.97ms my ($self, $info) = @_;
7152094115.2ms2094111.9ms my $event_types = $self->events;
# spent 11.9ms making 20941 calls to YAML::PP::Parser::events, avg 571ns/call
7162094112.4ms209418.84ms my $event_stack = $self->event_stack;
# spent 8.84ms making 20941 calls to YAML::PP::Parser::event_stack, avg 422ns/call
717209413.35ms if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
718 my $properties = pop @$event_stack;
719 $properties = $self->node_properties($properties->[1], $info);
720 }
721
722209418.36ms $info->{name} = 'scalar_event';
7232094129.9ms41882957ms $self->callback->($self, 'scalar_event', $info);
# spent 947ms making 20941 calls to YAML::PP::Parser::__ANON__[YAML/PP/Parser.pm:62], avg 45µs/call # spent 10.6ms making 20941 calls to YAML::PP::Parser::callback, avg 509ns/call
7242094117.0ms2094114.2ms $self->set_new_node(0);
# spent 14.2ms making 20941 calls to YAML::PP::Parser::set_new_node, avg 680ns/call
7252094150.6ms $event_types->[-1] = $next_event{ $event_types->[-1] };
726}
727
728sub alias_event {
729 my ($self, $info) = @_;
730 my $event_stack = $self->event_stack;
731 if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') {
732 $self->exception("Parse error: Alias not allowed in this context");
733 }
734 my $event_types = $self->events;
735 $info->{name} = 'alias_event';
736 $self->callback->($self, 'alias_event', $info);
737 $self->set_new_node(0);
738 $event_types->[-1] = $next_event{ $event_types->[-1] };
739}
740
741sub yaml_to_tokens {
742 my ($class, $type, $input) = @_;
743 my $yp = YAML::PP::Parser->new( receiver => sub {} );
744 my @docs = eval {
745 $type eq 'string' ? $yp->parse_string($input) : $yp->parse_file($input);
746 };
747 my $error = $@;
748
749 my $tokens = $yp->tokens;
750 if ($error) {
751 my $remaining_tokens = $yp->_remaining_tokens;
752 push @$tokens, map { +{ %$_, name => 'ERROR' } } @$remaining_tokens;
753 }
754 return $error, $tokens;
755}
756
757sub _remaining_tokens {
758 my ($self) = @_;
759 my @tokens;
760 my $next = $self->lexer->next_tokens;
761 push @tokens, @$next;
762 my $next_line = $self->lexer->next_line;
763 my $remaining = '';
764 if ($next_line) {
765 if ($self->lexer->offset > 0) {
766 $remaining = $next_line->[1] . $next_line->[2];
767 }
768 else {
769 $remaining = join '', @$next_line;
770 }
771 }
772 $remaining .= $self->reader->read;
773 $remaining = '' unless defined $remaining;
774 push @tokens, { name => "ERROR", value => $remaining };
775 return \@tokens;
776}
777
778# deprecated
779sub event_to_test_suite {
780 # uncoverable subroutine
781 my ($self, $event) = @_; # uncoverable statement
782 if (ref $event eq 'ARRAY') { # uncoverable statement
783 return YAML::PP::Common::event_to_test_suite($event->[1]); # uncoverable statement
784 }
785 return YAML::PP::Common::event_to_test_suite($event); # uncoverable statement
786}
787
788sub debug_events {
789 # uncoverable subroutine
790 my ($self) = @_; # uncoverable statement
791 $self->note("EVENTS: (" # uncoverable statement
792 . join (' | ', @{ $_[0]->events }) . ')' # uncoverable statement
793 );
794 $self->debug_offset; # uncoverable statement
795}
796
797sub debug_offset {
798 # uncoverable subroutine
799 my ($self) = @_; # uncoverable statement
800 $self->note(
801 qq{OFFSET: (}
802 # uncoverable statement count:1
803 # uncoverable statement count:2
804 # uncoverable statement count:3
805 . join (' | ', map { defined $_ ? sprintf "%-3d", $_ : '?' } @{ $_[0]->offset })
806 # uncoverable statement
807 . qq/) level=@{[ $_[0]->level ]}]}/
808 );
809}
810
811sub debug_yaml {
812 # uncoverable subroutine
813 my ($self) = @_; # uncoverable statement
814 my $line = $self->lexer->line; # uncoverable statement
815 $self->note("LINE NUMBER: $line"); # uncoverable statement
816 my $next_tokens = $self->lexer->next_tokens; # uncoverable statement
817 if (@$next_tokens) { # uncoverable statement
818 $self->debug_tokens($next_tokens); # uncoverable statement
819 }
820}
821
822sub debug_next_line {
823 my ($self) = @_;
824 my $next_line = $self->lexer->next_line || [];
825 my $line = $next_line->[0];
826 $line = '' unless defined $line;
827 $line =~ s/( +)$/'·' x length $1/e;
828 $line =~ s/\t/▸/g;
829 $self->note("NEXT LINE: >>$line<<");
830}
831
832sub note {
833 my ($self, $msg) = @_;
834 $self->_colorize_warn(["yellow"], "============ $msg");
835}
836
837sub info {
838 my ($self, $msg) = @_;
839 $self->_colorize_warn(["cyan"], "============ $msg");
840}
841
842sub got {
843 my ($self, $msg) = @_;
844 $self->_colorize_warn(["green"], "============ $msg");
845}
846
847sub _colorize_warn {
848 # uncoverable subroutine
849 my ($self, $colors, $text) = @_; # uncoverable statement
850 require Term::ANSIColor; # uncoverable statement
851 warn Term::ANSIColor::colored($colors, $text), "\n"; # uncoverable statement
852}
853
854sub debug_event {
855 # uncoverable subroutine
856 my ($self, $event) = @_; # uncoverable statement
857 my $str = YAML::PP::Common::event_to_test_suite($event); # uncoverable statement
858 require Term::ANSIColor; # uncoverable statement
859 warn Term::ANSIColor::colored(["magenta"], "============ $str"), "\n"; # uncoverable statement
860}
861
862sub debug_rules {
863 # uncoverable subroutine
864 my ($self, $rules) = @_; # uncoverable statement
865 local $Data::Dumper::Maxdepth = 2; # uncoverable statement
866 $self->note("RULES:"); # uncoverable statement
867 for my $rule ($rules) { # uncoverable statement
868 if (ref $rule eq 'ARRAY') { # uncoverable statement
869 my $first = $rule->[0]; # uncoverable statement
870 if (ref $first eq 'SCALAR') { # uncoverable statement
871 $self->info("-> $$first"); # uncoverable statement
872 }
873 else { # uncoverable statement
874 if (ref $first eq 'ARRAY') { # uncoverable statement
875 $first = $first->[0]; # uncoverable statement
876 }
877 $self->info("TYPE $first"); # uncoverable statement
878 }
879 }
880 else { # uncoverable statement
881 eval { # uncoverable statement
882 my @keys = sort keys %$rule; # uncoverable statement
883 $self->info("@keys"); # uncoverable statement
884 };
885 }
886 }
887}
888
889sub debug_tokens {
890 # uncoverable subroutine
891 my ($self, $tokens) = @_; # uncoverable statement
892 $tokens ||= $self->tokens; # uncoverable statement
893 require Term::ANSIColor; # uncoverable statement
894 for my $token (@$tokens) { # uncoverable statement
895 my $type = Term::ANSIColor::colored(["green"], # uncoverable statement
896 sprintf "%-22s L %2d C %2d ", # uncoverable statement
897 $token->{name}, $token->{line}, $token->{column} + 1 # uncoverable statement
898 );
899 local $Data::Dumper::Useqq = 1; # uncoverable statement
900 local $Data::Dumper::Terse = 1; # uncoverable statement
901 require Data::Dumper; # uncoverable statement
902 my $str = Data::Dumper->Dump([$token->{value}], ['str']); # uncoverable statement
903 chomp $str; # uncoverable statement
904 $str =~ s/(^.|.$)/Term::ANSIColor::colored(['blue'], $1)/ge; # uncoverable statement
905 warn "$type$str\n"; # uncoverable statement
906 }
907
908}
909
910sub highlight_yaml {
911 my ($self) = @_;
912 require YAML::PP::Highlight;
913 my $tokens = $self->tokens;
914 my $highlighted = YAML::PP::Highlight->ansicolored($tokens);
915 warn $highlighted;
916}
917
918sub exception {
919 my ($self, $msg, %args) = @_;
920 my $next = $self->lexer->next_tokens;
921 my $line = @$next ? $next->[0]->{line} : $self->lexer->line;
922 my $offset = @$next ? $next->[0]->{column} : $self->lexer->offset;
923 $offset++;
924 my $next_line = $self->lexer->next_line;
925 my $remaining = '';
926 if ($next_line) {
927 if ($self->lexer->offset > 0) {
928 $remaining = $next_line->[1] . $next_line->[2];
929 }
930 else {
931 $remaining = join '', @$next_line;
932 }
933 }
934 my $caller = $args{caller} || [ caller(0) ];
935 my $e = YAML::PP::Exception->new(
936 got => $args{got},
937 expected => $args{expected},
938 line => $line,
939 column => $offset,
940 msg => $msg,
941 next => $next,
942 where => $caller->[1] . ' line ' . $caller->[2],
943 yaml => $remaining,
944 );
945 croak $e;
946}
947
948sub expected {
949 my ($self, %args) = @_;
950 my $expected = $args{expected};
951 @$expected = sort grep { m/^[A-Z_]+$/ } @$expected;
952 my $got = $args{got}->{name};
953 my @caller = caller(0);
954 $self->exception("Expected (@$expected), but got $got",
955 caller => \@caller,
956 expected => $expected,
957 got => $args{got},
958 );
959}
960
961sub cb_tag {
962 my ($self, $token) = @_;
963 my $stack = $self->event_stack;
964 if (! @$stack or $stack->[-1]->[0] ne 'properties') {
965 push @$stack, [ properties => {} ];
966 }
967 my $last = $stack->[-1]->[1];
968 my $tag = $self->_read_tag($token->{value}, $self->tagmap);
969 $last->{inline} ||= [];
970 push @{ $last->{inline} }, {
971 type => 'tag',
972 value => $tag,
973 offset => $token->{column},
974 };
975}
976
977sub _read_tag {
978 my ($self, $tag, $map) = @_;
979 if ($tag eq '!') {
980 return "!";
981 }
982 elsif ($tag =~ m/^!<(.*)>/) {
983 return $1;
984 }
985 elsif ($tag =~ m/^(![^!]*!|!)(.+)/) {
986 my $alias = $1;
987 my $name = $2;
988 $name =~ s/%([0-9a-fA-F]{2})/chr hex $1/eg;
989 if (exists $map->{ $alias }) {
990 $tag = $map->{ $alias }. $name;
991 }
992 else {
993 if ($alias ne '!' and $alias ne '!!') {
994 die "Found undefined tag handle '$alias'";
995 }
996 $tag = "!$name";
997 }
998 }
999 else {
1000 die "Invalid tag";
1001 }
1002 return $tag;
1003}
1004
1005sub cb_anchor {
1006 my ($self, $token) = @_;
1007 my $anchor = $token->{value};
1008 $anchor = substr($anchor, 1);
1009 my $stack = $self->event_stack;
1010 if (! @$stack or $stack->[-1]->[0] ne 'properties') {
1011 push @$stack, [ properties => {} ];
1012 }
1013 my $last = $stack->[-1]->[1];
1014 $last->{inline} ||= [];
1015 push @{ $last->{inline} }, {
1016 type => 'anchor',
1017 value => $anchor,
1018 offset => $token->{column},
1019 };
1020}
1021
1022sub cb_property_eol {
1023 my ($self, $res) = @_;
1024 my $stack = $self->event_stack;
1025 my $last = $stack->[-1]->[1];
1026 my $inline = delete $last->{inline} or return;
1027 my $newline = $last->{newline} ||= [];
1028 push @$newline, @$inline;
1029}
1030
1031
# spent 41.1ms (37.4+3.73) within YAML::PP::Parser::cb_mapkey which was called 6675 times, avg 6µs/call: # 6675 times (37.4ms+3.73ms) by YAML::PP::Parser::parse_tokens at line 401, avg 6µs/call
sub cb_mapkey {
103266751.66ms my ($self, $token) = @_;
103366756.01ms66753.73ms my $stack = $self->event_stack;
# spent 3.73ms making 6675 calls to YAML::PP::Parser::event_stack, avg 559ns/call
1034 my $info = {
1035 style => YAML_PLAIN_SCALAR_STYLE,
1036 value => $token->{value},
1037 offset => $token->{column},
1038667510.9ms };
103966751.91ms if (@$stack and $stack->[-1]->[0] eq 'properties') {
1040 $self->fetch_inline_properties($stack, $info);
1041 }
1042667515.7ms push @{ $stack }, [ scalar => $info ];
1043}
1044
1045
# spent 469ms (47.0+422) within YAML::PP::Parser::cb_send_mapkey which was called 6690 times, avg 70µs/call: # 6675 times (46.8ms+421ms) by YAML::PP::Parser::parse_tokens at line 401, avg 70µs/call # 15 times (117µs+523µs) by YAML::PP::Parser::cb_take_quoted_key at line 1187, avg 43µs/call
sub cb_send_mapkey {
104666901.17ms my ($self, $res) = @_;
104766905.88ms66903.13ms my $last = pop @{ $self->event_stack };
# spent 3.13ms making 6690 calls to YAML::PP::Parser::event_stack, avg 468ns/call
104866906.20ms6690416ms $self->scalar_event($last->[1]);
# spent 416ms making 6690 calls to YAML::PP::Parser::scalar_event, avg 62µs/call
1049669021.0ms66902.85ms $self->set_new_node(1);
# spent 2.85ms making 6690 calls to YAML::PP::Parser::set_new_node, avg 425ns/call
1050}
1051
1052
# spent 463ms (63.3+400) within YAML::PP::Parser::cb_send_scalar which was called 7497 times, avg 62µs/call: # 6470 times (54.3ms+338ms) by YAML::PP::Parser::parse_tokens at line 401, avg 61µs/call # 689 times (5.94ms+42.2ms) by YAML::PP::Parser::cb_flow_comma at line 1241, avg 70µs/call # 337 times (3.06ms+19.8ms) by YAML::PP::Parser::cb_end_flowseq at line 1231, avg 68µs/call # once (8µs+32µs) by YAML::PP::Parser::cb_send_block_scalar at line 1421
sub cb_send_scalar {
105374972.12ms my ($self, $res) = @_;
105474977.46ms74973.35ms my $last = pop @{ $self->event_stack };
# spent 3.35ms making 7497 calls to YAML::PP::Parser::event_stack, avg 447ns/call
105574971.73ms return unless $last;
105674977.69ms7497393ms $self->scalar_event($last->[1]);
# spent 393ms making 7497 calls to YAML::PP::Parser::scalar_event, avg 52µs/call
105774976.33ms74973.79ms my $e = $self->events;
# spent 3.79ms making 7497 calls to YAML::PP::Parser::events, avg 505ns/call
1058749723.0ms if ($e->[-1] eq 'IMAP') {
1059 $self->end_flow_mapping;
1060 }
1061}
1062
1063sub cb_empty_mapkey {
1064 my ($self, $token) = @_;
1065 my $stack = $self->event_stack;
1066 my $info = {
1067 style => YAML_PLAIN_SCALAR_STYLE,
1068 value => '',
1069 offset => $token->{column},
1070 };
1071 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1072 $self->fetch_inline_properties($stack, $info);
1073 }
1074 $self->scalar_event($info);
1075 $self->set_new_node(1);
1076}
1077
1078sub cb_send_flow_alias {
1079 my ($self, $token) = @_;
1080 my $alias = substr($token->{value}, 1);
1081 $self->alias_event({ value => $alias });
1082}
1083
1084sub cb_send_alias {
1085 my ($self, $token) = @_;
1086 my $alias = substr($token->{value}, 1);
1087 $self->alias_event({ value => $alias });
1088}
1089
1090sub cb_send_alias_key {
1091 my ($self, $token) = @_;
1092 my $alias = substr($token->{value}, 1);
1093 $self->alias_event({ value => $alias });
1094 $self->set_new_node(1);
1095}
1096
1097sub cb_send_alias_from_stack {
1098 my ($self, $token) = @_;
1099 my $last = pop @{ $self->event_stack };
1100 $self->alias_event($last->[1]);
1101}
1102
1103sub cb_alias {
1104 my ($self, $token) = @_;
1105 my $alias = substr($token->{value}, 1);
1106 push @{ $self->event_stack }, [ alias => {
1107 value => $alias,
1108 offset => $token->{column},
1109 }];
1110}
1111
1112sub cb_question {
1113 my ($self, $res) = @_;
1114 $self->set_new_node(1);
1115}
1116
1117sub cb_flow_question {
1118 my ($self, $res) = @_;
1119 $self->set_new_node(2);
1120}
1121
1122sub cb_empty_complexvalue {
1123 my ($self, $res) = @_;
1124 $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' });
1125}
1126
1127sub cb_questionstart {
1128 my ($self, $token) = @_;
1129 $self->start_mapping($token->{column});
1130}
1131
1132sub cb_complexcolon {
1133 my ($self, $res) = @_;
1134 $self->set_new_node(1);
1135}
1136
1137
# spent 17.7ms (2.06+15.6) within YAML::PP::Parser::cb_seqstart which was called 308 times, avg 57µs/call: # 308 times (2.06ms+15.6ms) by YAML::PP::Parser::parse_tokens at line 401, avg 57µs/call
sub cb_seqstart {
1138308149µs my ($self, $token) = @_;
1139308262µs my $column = $token->{column};
1140308569µs30815.4ms $self->start_sequence($column);
# spent 15.4ms making 308 calls to YAML::PP::Parser::start_sequence, avg 50µs/call
1141308719µs308172µs $self->set_new_node(1);
# spent 172µs making 308 calls to YAML::PP::Parser::set_new_node, avg 558ns/call
1142}
1143
1144
# spent 1.51ms (1.34+170µs) within YAML::PP::Parser::cb_seqitem which was called 302 times, avg 5µs/call: # 302 times (1.34ms+170µs) by YAML::PP::Parser::parse_tokens at line 401, avg 5µs/call
sub cb_seqitem {
1145302112µs my ($self, $res) = @_;
1146302832µs302170µs $self->set_new_node(1);
# spent 170µs making 302 calls to YAML::PP::Parser::set_new_node, avg 563ns/call
1147}
1148
1149
# spent 15.6ms (14.3+1.27) within YAML::PP::Parser::cb_take_quoted which was called 2056 times, avg 8µs/call: # 2041 times (14.2ms+1.26ms) by YAML::PP::Parser::parse_tokens at line 401, avg 8µs/call # 15 times (107µs+8µs) by YAML::PP::Parser::cb_take_quoted_key at line 1186, avg 8µs/call
sub cb_take_quoted {
11502056780µs my ($self, $token) = @_;
11512056632µs my $subtokens = $token->{subtokens};
115220562.25ms20561.27ms my $stack = $self->event_stack;
# spent 1.27ms making 2056 calls to YAML::PP::Parser::event_stack, avg 615ns/call
1153 my $info = {
1154 style => $subtokens->[0]->{value} eq '"'
1155 ? YAML_DOUBLE_QUOTED_SCALAR_STYLE
1156 : YAML_SINGLE_QUOTED_SCALAR_STYLE,
1157 value => $token->{value},
1158 offset => $token->{column},
115920564.35ms };
11602056799µs if (@$stack and $stack->[-1]->[0] eq 'properties') {
1161 $self->fetch_inline_properties($stack, $info);
1162 }
116320564.78ms push @{ $stack }, [ scalar => $info ];
1164}
1165
1166sub cb_quoted_multiline {
1167 my ($self, $token) = @_;
1168 my $subtokens = $token->{subtokens};
1169 my $stack = $self->event_stack;
1170 my $info = {
1171 style => $subtokens->[0]->{value} eq '"'
1172 ? YAML_DOUBLE_QUOTED_SCALAR_STYLE
1173 : YAML_SINGLE_QUOTED_SCALAR_STYLE,
1174 value => $token->{value},
1175 offset => $token->{column},
1176 };
1177 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1178 $self->fetch_inline_properties($stack, $info);
1179 }
1180 push @{ $stack }, [ scalar => $info ];
1181 $self->cb_send_scalar;
1182}
1183
1184
# spent 849µs (94+755) within YAML::PP::Parser::cb_take_quoted_key which was called 15 times, avg 57µs/call: # 15 times (94µs+755µs) by YAML::PP::Parser::parse_tokens at line 401, avg 57µs/call
sub cb_take_quoted_key {
1185155µs my ($self, $token) = @_;
11861521µs15115µs $self->cb_take_quoted($token);
# spent 115µs making 15 calls to YAML::PP::Parser::cb_take_quoted, avg 8µs/call
11871554µs15640µs $self->cb_send_mapkey;
# spent 640µs making 15 calls to YAML::PP::Parser::cb_send_mapkey, avg 43µs/call
1188}
1189
1190sub cb_send_plain_multi {
1191 my ($self, $token) = @_;
1192 my $stack = $self->event_stack;
1193 my $info = {
1194 style => YAML_PLAIN_SCALAR_STYLE,
1195 value => $token->{value},
1196 offset => $token->{column},
1197 };
1198 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1199 $self->fetch_inline_properties($stack, $info);
1200 }
1201 push @{ $stack }, [ scalar => $info ];
1202 $self->cb_send_scalar;
1203}
1204
1205
# spent 63.7ms (56.9+6.81) within YAML::PP::Parser::cb_start_plain which was called 12180 times, avg 5µs/call: # 12180 times (56.9ms+6.81ms) by YAML::PP::Parser::parse_tokens at line 401, avg 5µs/call
sub cb_start_plain {
1206121802.87ms my ($self, $token) = @_;
1207121809.71ms121806.81ms my $stack = $self->event_stack;
# spent 6.81ms making 12180 calls to YAML::PP::Parser::event_stack, avg 559ns/call
1208 my $info = {
1209 style => YAML_PLAIN_SCALAR_STYLE,
1210 value => $token->{value},
1211 offset => $token->{column},
12121218017.4ms };
1213121802.67ms if (@$stack and $stack->[-1]->[0] eq 'properties') {
1214 $self->fetch_inline_properties($stack, $info);
1215 }
12161218023.3ms push @{ $stack }, [ scalar => $info ];
1217}
1218
1219
# spent 21.4ms (1.38+20.0) within YAML::PP::Parser::cb_start_flowseq which was called 337 times, avg 64µs/call: # 337 times (1.38ms+20.0ms) by YAML::PP::Parser::parse_tokens at line 401, avg 64µs/call
sub cb_start_flowseq {
1220337142µs my ($self, $token) = @_;
12213371.26ms33720.0ms $self->start_flow_sequence($token->{column});
# spent 20.0ms making 337 calls to YAML::PP::Parser::start_flow_sequence, avg 59µs/call
1222}
1223
1224
# spent 11.9ms (768µs+11.1) within YAML::PP::Parser::cb_start_flowmap which was called 214 times, avg 56µs/call: # 214 times (768µs+11.1ms) by YAML::PP::Parser::parse_tokens at line 401, avg 56µs/call
sub cb_start_flowmap {
122521488µs my ($self, $token) = @_;
1226214662µs21411.1ms $self->start_flow_mapping($token->{column});
# spent 11.1ms making 214 calls to YAML::PP::Parser::start_flow_mapping, avg 52µs/call
1227}
1228
1229
# spent 39.7ms (2.56+37.2) within YAML::PP::Parser::cb_end_flowseq which was called 337 times, avg 118µs/call: # 337 times (2.56ms+37.2ms) by YAML::PP::Parser::parse_tokens at line 401, avg 118µs/call
sub cb_end_flowseq {
1230337106µs my ($self, $res) = @_;
1231337316µs33722.8ms $self->cb_send_scalar;
# spent 22.8ms making 337 calls to YAML::PP::Parser::cb_send_scalar, avg 68µs/call
1232337614µs33714.1ms $self->end_flow_sequence;
# spent 14.1ms making 337 calls to YAML::PP::Parser::end_flow_sequence, avg 42µs/call
12333371.08ms337201µs $self->set_new_node(0);
# spent 201µs making 337 calls to YAML::PP::Parser::set_new_node, avg 596ns/call
1234}
1235
1236
# spent 55.8ms (6.32+49.5) within YAML::PP::Parser::cb_flow_comma which was called 689 times, avg 81µs/call: # 689 times (6.32ms+49.5ms) by YAML::PP::Parser::parse_tokens at line 401, avg 81µs/call
sub cb_flow_comma {
1237689202µs my ($self) = @_;
1238689524µs689407µs my $event_types = $self->events;
# spent 407µs making 689 calls to YAML::PP::Parser::events, avg 591ns/call
1239689580µs689440µs $self->set_new_node(0);
# spent 440µs making 689 calls to YAML::PP::Parser::set_new_node, avg 639ns/call
12406892.93ms689502µs if ($event_types->[-1] =~ m/^FLOWSEQ/) {
# spent 502µs making 689 calls to YAML::PP::Parser::CORE:match, avg 729ns/call
1241689666µs68948.1ms $self->cb_send_scalar;
# spent 48.1ms making 689 calls to YAML::PP::Parser::cb_send_scalar, avg 70µs/call
1242689364µs $event_types->[-1] = $next_event{ $event_types->[-1] };
1243 }
1244}
1245
1246
# spent 101µs (88+13) within YAML::PP::Parser::cb_flow_colon which was called 29 times, avg 3µs/call: # 29 times (88µs+13µs) by YAML::PP::Parser::parse_tokens at line 401, avg 3µs/call
sub cb_flow_colon {
1247296µs my ($self) = @_;
12482974µs2913µs $self->set_new_node(1);
# spent 13µs making 29 calls to YAML::PP::Parser::set_new_node, avg 448ns/call
1249}
1250
1251sub cb_empty_flow_mapkey {
1252 my ($self, $token) = @_;
1253 my $stack = $self->event_stack;
1254 my $info = {
1255 style => YAML_PLAIN_SCALAR_STYLE,
1256 value => '',
1257 offset => $token->{column},
1258 };
1259 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1260 $self->fetch_inline_properties($stack, $info);
1261 }
1262 $self->scalar_event($info);
1263}
1264
1265
# spent 11.0ms (1.17+9.84) within YAML::PP::Parser::cb_end_flowmap which was called 214 times, avg 51µs/call: # 214 times (1.17ms+9.84ms) by YAML::PP::Parser::parse_tokens at line 401, avg 51µs/call
sub cb_end_flowmap {
126621473µs my ($self, $res) = @_;
1267214411µs2149.71ms $self->end_flow_mapping;
# spent 9.71ms making 214 calls to YAML::PP::Parser::end_flow_mapping, avg 45µs/call
1268214504µs214140µs $self->set_new_node(0);
# spent 140µs making 214 calls to YAML::PP::Parser::set_new_node, avg 654ns/call
1269}
1270
1271sub cb_end_flowmap_empty {
1272 my ($self, $res) = @_;
1273 $self->cb_empty_flowmap_value;
1274 $self->end_flow_mapping;
1275 $self->set_new_node(0);
1276}
1277
1278
# spent 2.67ms (373µs+2.30) within YAML::PP::Parser::cb_flowkey_plain which was called 29 times, avg 92µs/call: # 29 times (373µs+2.30ms) by YAML::PP::Parser::parse_tokens at line 401, avg 92µs/call
sub cb_flowkey_plain {
12792917µs my ($self, $token) = @_;
12802936µs2919µs my $stack = $self->event_stack;
# spent 19µs making 29 calls to YAML::PP::Parser::event_stack, avg 655ns/call
1281 my $info = {
1282 style => YAML_PLAIN_SCALAR_STYLE,
1283 value => $token->{value},
1284 offset => $token->{column},
12852957µs };
12862914µs if (@$stack and $stack->[-1]->[0] eq 'properties') {
1287 $self->fetch_inline_properties($stack, $info);
1288 }
128929113µs292.28ms $self->scalar_event($info);
# spent 2.28ms making 29 calls to YAML::PP::Parser::scalar_event, avg 79µs/call
1290}
1291
1292sub cb_flowkey_quoted {
1293 my ($self, $token) = @_;
1294 my $stack = $self->event_stack;
1295 my $subtokens = $token->{subtokens};
1296 my $info = {
1297 style => $subtokens->[0]->{value} eq '"'
1298 ? YAML_DOUBLE_QUOTED_SCALAR_STYLE
1299 : YAML_SINGLE_QUOTED_SCALAR_STYLE,
1300 value => $token->{value},
1301 offset => $token->{column},
1302 };
1303 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1304 $self->fetch_inline_properties($stack, $info);
1305 }
1306 $self->scalar_event($info);
1307}
1308
1309sub cb_empty_flowmap_key_value {
1310 my ($self, $token) = @_;
1311 $self->cb_empty_flow_mapkey($token);
1312 $self->cb_empty_flowmap_value;
1313 $self->cb_flow_comma;
1314}
1315
1316sub cb_end_empty_flowmap_key_value {
1317 my ($self, $token) = @_;
1318 $self->cb_empty_flow_mapkey($token);
1319 $self->cb_empty_flowmap_value;
1320 $self->cb_flow_comma;
1321 $self->cb_end_flowmap;
1322}
1323
1324sub cb_empty_flowmap_value {
1325 my ($self, $token) = @_;
1326 my $stack = $self->event_stack;
1327 my $info = {
1328 style => YAML_PLAIN_SCALAR_STYLE,
1329 value => '',
1330 offset => $token->{column},
1331 };
1332 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1333 $self->fetch_inline_properties($stack, $info);
1334 }
1335 $self->scalar_event($info);
1336}
1337
1338sub cb_empty_flowseq_comma {
1339 my ($self, $token) = @_;
1340 $self->cb_empty_flowmap_value($token);
1341 $self->cb_flow_comma;
1342}
1343
1344sub cb_empty_flowseq_end {
1345 my ($self, $token) = @_;
1346 $self->cb_empty_flowmap_value($token);
1347 $self->cb_end_flowseq;
1348}
1349
1350sub cb_insert_map_alias {
1351 my ($self, $res) = @_;
1352 my $stack = $self->event_stack;
1353 my $scalar = pop @$stack;
1354 my $info = $scalar->[1];
1355 $self->start_mapping($info->{offset});
1356 $self->alias_event($info);
1357 $self->set_new_node(1);
1358}
1359
1360
# spent 743ms (66.1+676) within YAML::PP::Parser::cb_insert_map which was called 6725 times, avg 110µs/call: # 6725 times (66.1ms+676ms) by YAML::PP::Parser::parse_tokens at line 401, avg 110µs/call
sub cb_insert_map {
136167251.59ms my ($self, $res) = @_;
136267254.76ms67253.10ms my $stack = $self->event_stack;
# spent 3.10ms making 6725 calls to YAML::PP::Parser::event_stack, avg 461ns/call
136367252.33ms my $scalar = pop @$stack;
136467251.45ms my $info = $scalar->[1];
136567257.53ms6725279ms $self->start_mapping($info->{offset});
# spent 279ms making 6725 calls to YAML::PP::Parser::start_mapping, avg 42µs/call
136667256.17ms6725391ms $self->scalar_event($info);
# spent 391ms making 6725 calls to YAML::PP::Parser::scalar_event, avg 58µs/call
1367672522.3ms67253.00ms $self->set_new_node(1);
# spent 3.00ms making 6725 calls to YAML::PP::Parser::set_new_node, avg 447ns/call
1368}
1369
1370sub cb_insert_implicit_flowseq_map {
1371 my ($self, $res) = @_;
1372 my $stack = $self->event_stack;
1373 my $scalar = pop @$stack;
1374 my $info = $scalar->[1];
1375 $self->start_flow_mapping($info->{offset}, 1);
1376 $self->scalar_event($info);
1377 $self->set_new_node(1);
1378}
1379
1380sub cb_insert_empty_implicit_flowseq_map {
1381 my ($self, $res) = @_;
1382 my $stack = $self->event_stack;
1383 my $scalar = pop @$stack;
1384 my $info = $scalar->[1];
1385 $self->start_flow_mapping($info->{offset}, 1);
1386 $self->cb_empty_flowmap_value;
1387 $self->set_new_node(2);
1388}
1389
1390sub cb_insert_empty_map {
1391 my ($self, $token) = @_;
1392 my $stack = $self->event_stack;
1393 my $info = {
1394 style => YAML_PLAIN_SCALAR_STYLE,
1395 value => '',
1396 offset => $token->{column},
1397 };
1398 if (@$stack and $stack->[-1]->[0] eq 'properties') {
1399 $self->fetch_inline_properties($stack, $info);
1400 }
1401 $self->start_mapping($info->{offset});
1402 $self->scalar_event($info);
1403 $self->set_new_node(1);
1404}
1405
1406
# spent 58µs (17+41) within YAML::PP::Parser::cb_send_block_scalar which was called: # once (17µs+41µs) by YAML::PP::Parser::parse_tokens at line 401
sub cb_send_block_scalar {
140711µs my ($self, $token) = @_;
140811µs my $type = $token->{subtokens}->[0]->{value};
140912µs11µs my $stack = $self->event_stack;
# spent 1µs making 1 call to YAML::PP::Parser::event_stack
1410 my $info = {
1411 style => $type eq '|'
1412 ? YAML_LITERAL_SCALAR_STYLE
1413 : YAML_FOLDED_SCALAR_STYLE,
1414 value => $token->{value},
1415 offset => $token->{column},
141612µs };
141710s if (@$stack and $stack->[-1]->[0] eq 'properties') {
1418 $self->fetch_inline_properties($stack, $info);
1419 }
142012µs10s push @{ $self->event_stack }, [ scalar => $info ];
# spent 0s making 1 call to YAML::PP::Parser::event_stack
142115µs140µs $self->cb_send_scalar;
# spent 40µs making 1 call to YAML::PP::Parser::cb_send_scalar
1422}
1423
1424sub cb_end_document {
1425 my ($self, $token) = @_;
1426 $self->end_document(0);
1427}
1428
1429sub cb_end_document_empty {
1430 my ($self, $token) = @_;
1431 $self->end_document(0);
1432}
1433
1434sub cb_doc_start_implicit {
1435 my ($self, $token) = @_;
1436 $self->start_document(1);
1437}
1438
1439
# spent 63µs (5+58) within YAML::PP::Parser::cb_doc_start_explicit which was called: # once (5µs+58µs) by YAML::PP::Parser::parse_tokens at line 401
sub cb_doc_start_explicit {
144010s my ($self, $token) = @_;
144115µs158µs $self->start_document(0);
# spent 58µs making 1 call to YAML::PP::Parser::start_document
1442}
1443
1444sub cb_end_doc_start_document {
1445 my ($self, $token) = @_;
1446 $self->end_document(1);
1447 $self->start_document(0);
1448}
1449
1450sub cb_tag_directive {
1451 my ($self, $token) = @_;
1452 my ($name, $tag_alias, $tag_url) = split ' ', $token->{value};
1453 $self->tagmap->{ $tag_alias } = $tag_url;
1454}
1455
1456sub cb_reserved_directive {
1457}
1458
1459sub cb_set_yaml_version_directive {
1460 my ($self, $token) = @_;
1461 if ($self->yaml_version_directive) {
1462 croak "Found duplicate YAML directive";
1463 }
1464 my ($version) = $token->{value} =~ m/^%YAML[ \t]+(1\.[12])/;
1465 $self->set_yaml_version($version || '1.2');
1466 $self->set_yaml_version_directive(1);
1467}
1468
1469117µs1;
 
# spent 6.63ms within YAML::PP::Parser::CORE:match which was called 15241 times, avg 435ns/call: # 13449 times (4.76ms+0s) by YAML::PP::Parser::lex_next_tokens at line 185, avg 354ns/call # 689 times (502µs+0s) by YAML::PP::Parser::cb_flow_comma at line 1240, avg 729ns/call # 337 times (689µs+0s) by YAML::PP::Parser::end_flow_sequence at line 585, avg 2µs/call # 337 times (191µs+0s) by YAML::PP::Parser::start_flow_sequence at line 539, avg 567ns/call # 214 times (374µs+0s) by YAML::PP::Parser::end_flow_mapping at line 600, avg 2µs/call # 214 times (108µs+0s) by YAML::PP::Parser::start_flow_mapping at line 563, avg 505ns/call # once (0s+0s) by YAML::PP::Parser::end_document at line 633
sub YAML::PP::Parser::CORE:match; # opcode
# spent 7µs within YAML::PP::Parser::__ANON__ which was called 4 times, avg 2µs/call: # once (3µs+0s) by YAML::PP::Parser::BEGIN@17 at line 17 # once (2µs+0s) by YAML::PP::Parser::BEGIN@18 at line 18 # once (1µs+0s) by YAML::PP::Parser::BEGIN@21 at line 21 # once (1µs+0s) by YAML::PP::Parser::BEGIN@20 at line 20
sub YAML::PP::Parser::__ANON__; # xsub