← Index
NYTProf Performance Profile   « block view • line view • sub view »
For conv.pl
  Run on Sun Nov 14 22:50:31 2010
Reported on Sun Nov 14 22:51:23 2010

Filename/usr/lib/perl5/XML/LibXML/Error.pm
StatementsExecuted 104 statements in 4.05ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1115.84ms6.64msXML::LibXML::Error::::BEGIN@225XML::LibXML::Error::BEGIN@225
1111.52ms1.79msXML::LibXML::Error::::BEGIN@15XML::LibXML::Error::BEGIN@15
11123µs30µsXML::LibXML::Error::::BEGIN@11XML::LibXML::Error::BEGIN@11
11118µs83µsXML::LibXML::Error::::BEGIN@51XML::LibXML::Error::BEGIN@51
11117µs130µsXML::LibXML::Error::::BEGIN@30XML::LibXML::Error::BEGIN@30
11116µs91µsXML::LibXML::Error::::BEGIN@38XML::LibXML::Error::BEGIN@38
11116µs80µsXML::LibXML::Error::::BEGIN@28XML::LibXML::Error::BEGIN@28
11115µs78µsXML::LibXML::Error::::BEGIN@53XML::LibXML::Error::BEGIN@53
11115µs85µsXML::LibXML::Error::::BEGIN@13XML::LibXML::Error::BEGIN@13
11115µs79µsXML::LibXML::Error::::BEGIN@27XML::LibXML::Error::BEGIN@27
11114µs79µsXML::LibXML::Error::::BEGIN@36XML::LibXML::Error::BEGIN@36
11114µs80µsXML::LibXML::Error::::BEGIN@33XML::LibXML::Error::BEGIN@33
11114µs77µsXML::LibXML::Error::::BEGIN@48XML::LibXML::Error::BEGIN@48
11114µs78µsXML::LibXML::Error::::BEGIN@46XML::LibXML::Error::BEGIN@46
11113µs74µsXML::LibXML::Error::::BEGIN@50XML::LibXML::Error::BEGIN@50
11113µs78µsXML::LibXML::Error::::BEGIN@55XML::LibXML::Error::BEGIN@55
11113µs127µsXML::LibXML::Error::::BEGIN@12XML::LibXML::Error::BEGIN@12
11113µs75µsXML::LibXML::Error::::BEGIN@40XML::LibXML::Error::BEGIN@40
11113µs75µsXML::LibXML::Error::::BEGIN@44XML::LibXML::Error::BEGIN@44
11113µs75µsXML::LibXML::Error::::BEGIN@47XML::LibXML::Error::BEGIN@47
11113µs75µsXML::LibXML::Error::::BEGIN@49XML::LibXML::Error::BEGIN@49
11113µs82µsXML::LibXML::Error::::BEGIN@54XML::LibXML::Error::BEGIN@54
11113µs86µsXML::LibXML::Error::::BEGIN@37XML::LibXML::Error::BEGIN@37
11113µs76µsXML::LibXML::Error::::BEGIN@32XML::LibXML::Error::BEGIN@32
11113µs76µsXML::LibXML::Error::::BEGIN@42XML::LibXML::Error::BEGIN@42
11113µs87µsXML::LibXML::Error::::BEGIN@45XML::LibXML::Error::BEGIN@45
11113µs77µsXML::LibXML::Error::::BEGIN@52XML::LibXML::Error::BEGIN@52
11113µs84µsXML::LibXML::Error::::BEGIN@39XML::LibXML::Error::BEGIN@39
11112µs80µsXML::LibXML::Error::::BEGIN@34XML::LibXML::Error::BEGIN@34
11112µs77µsXML::LibXML::Error::::BEGIN@41XML::LibXML::Error::BEGIN@41
11112µs75µsXML::LibXML::Error::::BEGIN@29XML::LibXML::Error::BEGIN@29
11112µs75µsXML::LibXML::Error::::BEGIN@43XML::LibXML::Error::BEGIN@43
11111µs72µsXML::LibXML::Error::::BEGIN@35XML::LibXML::Error::BEGIN@35
0000s0sXML::LibXML::Error::::AUTOLOADXML::LibXML::Error::AUTOLOAD
0000s0sXML::LibXML::Error::::DESTROYXML::LibXML::Error::DESTROY
0000s0sXML::LibXML::Error::::__ANON__[:18]XML::LibXML::Error::__ANON__[:18]
0000s0sXML::LibXML::Error::::__ANON__[:21]XML::LibXML::Error::__ANON__[:21]
0000s0sXML::LibXML::Error::::_callback_errorXML::LibXML::Error::_callback_error
0000s0sXML::LibXML::Error::::_instant_error_callbackXML::LibXML::Error::_instant_error_callback
0000s0sXML::LibXML::Error::::_report_errorXML::LibXML::Error::_report_error
0000s0sXML::LibXML::Error::::_report_warningXML::LibXML::Error::_report_warning
0000s0sXML::LibXML::Error::::as_stringXML::LibXML::Error::as_string
0000s0sXML::LibXML::Error::::domainXML::LibXML::Error::domain
0000s0sXML::LibXML::Error::::dumpXML::LibXML::Error::dump
0000s0sXML::LibXML::Error::::int1XML::LibXML::Error::int1
0000s0sXML::LibXML::Error::::int2XML::LibXML::Error::int2
0000s0sXML::LibXML::Error::::newXML::LibXML::Error::new
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# $Id: Error.pm,v 1.1.2.1 2004/04/20 20:09:48 pajas Exp $
2#
3# This is free software, you may use it and distribute it under the same terms as
4# Perl itself.
5#
6# Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
7#
8#
9package XML::LibXML::Error;
10
11351µs237µs
# spent 30µs (23+7) within XML::LibXML::Error::BEGIN@11 which was called: # once (23µs+7µs) by XML::LibXML::BEGIN@23 at line 11
use strict;
# spent 30µs making 1 call to XML::LibXML::Error::BEGIN@11 # spent 7µs making 1 call to strict::import
12339µs2241µs
# spent 127µs (13+114) within XML::LibXML::Error::BEGIN@12 which was called: # once (13µs+114µs) by XML::LibXML::BEGIN@23 at line 12
use vars qw($AUTOLOAD @error_domains $VERSION $WARNINGS);
# spent 127µs making 1 call to XML::LibXML::Error::BEGIN@12 # spent 114µs making 1 call to vars::import
133138µs2155µs
# spent 85µs (15+70) within XML::LibXML::Error::BEGIN@13 which was called: # once (15µs+70µs) by XML::LibXML::BEGIN@23 at line 13
use Carp;
# spent 85µs making 1 call to XML::LibXML::Error::BEGIN@13 # spent 70µs making 1 call to Exporter::import
14use overload
15
# spent 1.79ms (1.52+271µs) within XML::LibXML::Error::BEGIN@15 which was called: # once (1.52ms+271µs) by XML::LibXML::BEGIN@23 at line 22
'""' => \&as_string,
16 'eq' => sub {
17 ("$_[0]" eq "$_[1]")
18 },
19 'cmp' => sub {
20 ("$_[0]" cmp "$_[1]")
21 },
2231.19ms21.87ms fallback => 1;
# spent 1.79ms making 1 call to XML::LibXML::Error::BEGIN@15 # spent 79µs making 1 call to overload::import
23
2411µs$WARNINGS = 0; # 0: supress, 1: report via warn, 2: report via die
2511µs$VERSION = "1.70"; # VERSION TEMPLATE: DO NOT CHANGE
26
27344µs2143µs
# spent 79µs (15+64) within XML::LibXML::Error::BEGIN@27 which was called: # once (15µs+64µs) by XML::LibXML::BEGIN@23 at line 27
use constant XML_ERR_NONE => 0;
# spent 79µs making 1 call to XML::LibXML::Error::BEGIN@27 # spent 64µs making 1 call to constant::import
28343µs2144µs
# spent 80µs (16+64) within XML::LibXML::Error::BEGIN@28 which was called: # once (16µs+64µs) by XML::LibXML::BEGIN@23 at line 28
use constant XML_ERR_WARNING => 1; # A simple warning
# spent 80µs making 1 call to XML::LibXML::Error::BEGIN@28 # spent 64µs making 1 call to constant::import
29344µs2138µs
# spent 75µs (12+63) within XML::LibXML::Error::BEGIN@29 which was called: # once (12µs+63µs) by XML::LibXML::BEGIN@23 at line 29
use constant XML_ERR_ERROR => 2; # A recoverable error
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@29 # spent 63µs making 1 call to constant::import
30345µs2243µs
# spent 130µs (17+113) within XML::LibXML::Error::BEGIN@30 which was called: # once (17µs+113µs) by XML::LibXML::BEGIN@23 at line 30
use constant XML_ERR_FATAL => 3; # A fatal error
# spent 130µs making 1 call to XML::LibXML::Error::BEGIN@30 # spent 113µs making 1 call to constant::import
31
32341µs2139µs
# spent 76µs (13+63) within XML::LibXML::Error::BEGIN@32 which was called: # once (13µs+63µs) by XML::LibXML::BEGIN@23 at line 32
use constant XML_ERR_FROM_NONE => 0;
# spent 76µs making 1 call to XML::LibXML::Error::BEGIN@32 # spent 63µs making 1 call to constant::import
33342µs2146µs
# spent 80µs (14+66) within XML::LibXML::Error::BEGIN@33 which was called: # once (14µs+66µs) by XML::LibXML::BEGIN@23 at line 33
use constant XML_ERR_FROM_PARSER => 1; # The XML parser
# spent 80µs making 1 call to XML::LibXML::Error::BEGIN@33 # spent 66µs making 1 call to constant::import
34339µs2148µs
# spent 80µs (12+68) within XML::LibXML::Error::BEGIN@34 which was called: # once (12µs+68µs) by XML::LibXML::BEGIN@23 at line 34
use constant XML_ERR_FROM_TREE => 2; # The tree module
# spent 80µs making 1 call to XML::LibXML::Error::BEGIN@34 # spent 68µs making 1 call to constant::import
35340µs2133µs
# spent 72µs (11+61) within XML::LibXML::Error::BEGIN@35 which was called: # once (11µs+61µs) by XML::LibXML::BEGIN@23 at line 35
use constant XML_ERR_FROM_NAMESPACE => 3; # The XML Namespace module
# spent 72µs making 1 call to XML::LibXML::Error::BEGIN@35 # spent 61µs making 1 call to constant::import
36342µs2144µs
# spent 79µs (14+65) within XML::LibXML::Error::BEGIN@36 which was called: # once (14µs+65µs) by XML::LibXML::BEGIN@23 at line 36
use constant XML_ERR_FROM_DTD => 4; # The XML DTD validation
# spent 79µs making 1 call to XML::LibXML::Error::BEGIN@36 # spent 65µs making 1 call to constant::import
37340µs2159µs
# spent 86µs (13+73) within XML::LibXML::Error::BEGIN@37 which was called: # once (13µs+73µs) by XML::LibXML::BEGIN@23 at line 37
use constant XML_ERR_FROM_HTML => 5; # The HTML parser
# spent 86µs making 1 call to XML::LibXML::Error::BEGIN@37 # spent 73µs making 1 call to constant::import
383101µs2166µs
# spent 91µs (16+75) within XML::LibXML::Error::BEGIN@38 which was called: # once (16µs+75µs) by XML::LibXML::BEGIN@23 at line 38
use constant XML_ERR_FROM_MEMORY => 6; # The memory allocator
# spent 91µs making 1 call to XML::LibXML::Error::BEGIN@38 # spent 75µs making 1 call to constant::import
39342µs2155µs
# spent 84µs (13+71) within XML::LibXML::Error::BEGIN@39 which was called: # once (13µs+71µs) by XML::LibXML::BEGIN@23 at line 39
use constant XML_ERR_FROM_OUTPUT => 7; # The serialization code
# spent 84µs making 1 call to XML::LibXML::Error::BEGIN@39 # spent 71µs making 1 call to constant::import
40340µs2137µs
# spent 75µs (13+62) within XML::LibXML::Error::BEGIN@40 which was called: # once (13µs+62µs) by XML::LibXML::BEGIN@23 at line 40
use constant XML_ERR_FROM_IO => 8; # The Input/Output stack
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@40 # spent 62µs making 1 call to constant::import
41338µs2142µs
# spent 77µs (12+65) within XML::LibXML::Error::BEGIN@41 which was called: # once (12µs+65µs) by XML::LibXML::BEGIN@23 at line 41
use constant XML_ERR_FROM_FTP => 9; # The FTP module
# spent 77µs making 1 call to XML::LibXML::Error::BEGIN@41 # spent 65µs making 1 call to constant::import
42341µs2139µs
# spent 76µs (13+63) within XML::LibXML::Error::BEGIN@42 which was called: # once (13µs+63µs) by XML::LibXML::BEGIN@23 at line 42
use constant XML_ERR_FROM_HTTP => 10; # The FTP module
# spent 76µs making 1 call to XML::LibXML::Error::BEGIN@42 # spent 63µs making 1 call to constant::import
43339µs2138µs
# spent 75µs (12+63) within XML::LibXML::Error::BEGIN@43 which was called: # once (12µs+63µs) by XML::LibXML::BEGIN@23 at line 43
use constant XML_ERR_FROM_XINCLUDE => 11; # The XInclude processing
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@43 # spent 63µs making 1 call to constant::import
44341µs2137µs
# spent 75µs (13+62) within XML::LibXML::Error::BEGIN@44 which was called: # once (13µs+62µs) by XML::LibXML::BEGIN@23 at line 44
use constant XML_ERR_FROM_XPATH => 12; # The XPath module
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@44 # spent 62µs making 1 call to constant::import
45340µs2161µs
# spent 87µs (13+74) within XML::LibXML::Error::BEGIN@45 which was called: # once (13µs+74µs) by XML::LibXML::BEGIN@23 at line 45
use constant XML_ERR_FROM_XPOINTER => 13; # The XPointer module
# spent 87µs making 1 call to XML::LibXML::Error::BEGIN@45 # spent 74µs making 1 call to constant::import
46341µs2142µs
# spent 78µs (14+64) within XML::LibXML::Error::BEGIN@46 which was called: # once (14µs+64µs) by XML::LibXML::BEGIN@23 at line 46
use constant XML_ERR_FROM_REGEXP => 14; # The regular expressions module
# spent 78µs making 1 call to XML::LibXML::Error::BEGIN@46 # spent 64µs making 1 call to constant::import
47341µs2137µs
# spent 75µs (13+62) within XML::LibXML::Error::BEGIN@47 which was called: # once (13µs+62µs) by XML::LibXML::BEGIN@23 at line 47
use constant XML_ERR_FROM_DATATYPE => 15; # The W3C XML Schemas Datatype module
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@47 # spent 62µs making 1 call to constant::import
48340µs2140µs
# spent 77µs (14+63) within XML::LibXML::Error::BEGIN@48 which was called: # once (14µs+63µs) by XML::LibXML::BEGIN@23 at line 48
use constant XML_ERR_FROM_SCHEMASP => 16; # The W3C XML Schemas parser module
# spent 77µs making 1 call to XML::LibXML::Error::BEGIN@48 # spent 63µs making 1 call to constant::import
49339µs2137µs
# spent 75µs (13+62) within XML::LibXML::Error::BEGIN@49 which was called: # once (13µs+62µs) by XML::LibXML::BEGIN@23 at line 49
use constant XML_ERR_FROM_SCHEMASV => 17; # The W3C XML Schemas validation module
# spent 75µs making 1 call to XML::LibXML::Error::BEGIN@49 # spent 62µs making 1 call to constant::import
50340µs2135µs
# spent 74µs (13+61) within XML::LibXML::Error::BEGIN@50 which was called: # once (13µs+61µs) by XML::LibXML::BEGIN@23 at line 50
use constant XML_ERR_FROM_RELAXNGP => 18; # The Relax-NG parser module
# spent 74µs making 1 call to XML::LibXML::Error::BEGIN@50 # spent 61µs making 1 call to constant::import
51348µs2148µs
# spent 83µs (18+65) within XML::LibXML::Error::BEGIN@51 which was called: # once (18µs+65µs) by XML::LibXML::BEGIN@23 at line 51
use constant XML_ERR_FROM_RELAXNGV => 19; # The Relax-NG validator module
# spent 83µs making 1 call to XML::LibXML::Error::BEGIN@51 # spent 65µs making 1 call to constant::import
52345µs2141µs
# spent 77µs (13+64) within XML::LibXML::Error::BEGIN@52 which was called: # once (13µs+64µs) by XML::LibXML::BEGIN@23 at line 52
use constant XML_ERR_FROM_CATALOG => 20; # The Catalog module
# spent 77µs making 1 call to XML::LibXML::Error::BEGIN@52 # spent 64µs making 1 call to constant::import
53342µs2141µs
# spent 78µs (15+63) within XML::LibXML::Error::BEGIN@53 which was called: # once (15µs+63µs) by XML::LibXML::BEGIN@23 at line 53
use constant XML_ERR_FROM_C14N => 21; # The Canonicalization module
# spent 78µs making 1 call to XML::LibXML::Error::BEGIN@53 # spent 63µs making 1 call to constant::import
54348µs2151µs
# spent 82µs (13+69) within XML::LibXML::Error::BEGIN@54 which was called: # once (13µs+69µs) by XML::LibXML::BEGIN@23 at line 54
use constant XML_ERR_FROM_XSLT => 22; # The XSLT engine from libxslt
# spent 82µs making 1 call to XML::LibXML::Error::BEGIN@54 # spent 69µs making 1 call to constant::import
5531.20ms2143µs
# spent 78µs (13+65) within XML::LibXML::Error::BEGIN@55 which was called: # once (13µs+65µs) by XML::LibXML::BEGIN@23 at line 55
use constant XML_ERR_FROM_VALID => 23; # The validaton module
# spent 78µs making 1 call to XML::LibXML::Error::BEGIN@55 # spent 65µs making 1 call to constant::import
56
5719µs@error_domains = ("", "parser", "tree", "namespace", "validity",
58 "HTML parser", "memory", "output", "I/O", "ftp",
59 "http", "XInclude", "XPath", "xpointer", "regexp",
60 "Schemas datatype", "Schemas parser", "Schemas validity",
61 "Relax-NG parser", "Relax-NG validity",
62 "Catalog", "C14N", "XSLT", "validity");
63
64{
65
6613µs sub new {
67 my ($class,$xE) = @_;
68 my $terr;
69 if (ref($xE)) {
70 my ($context,$column) = $xE->context_and_column();
71 $terr =bless {
72 domain => $xE->domain(),
73 level => $xE->level(),
74 code => $xE->code(),
75 message => $xE->message(),
76 file => $xE->file(),
77 line => $xE->line(),
78 str1 => $xE->str1(),
79 str2 => $xE->str2(),
80 str3 => $xE->str3(),
81 num1 => $xE->num1(),
82 num2 => $xE->num2(),
83 (defined($context) ?
84 (
85 context => $context,
86 column => $column,
87 ) : ()),
88 }, $class;
89 } else {
90 # !!!! problem : got a flat error
91 # warn("PROBLEM: GOT A FLAT ERROR $xE\n");
92 $terr =bless {
93 domain => 0,
94 level => 2,
95 code => -1,
96 message => $xE,
97 file => undef,
98 line => undef,
99 str1 => undef,
100 str2 => undef,
101 str3 => undef,
102 num1 => undef,
103 num2 => undef,
104 }, $class;
105 }
106 return $terr;
107 }
108
109 sub _callback_error {
110 #print "CALLBACK\n";
111 my ($xE,$prev) = @_;
112 my $terr;
113 $terr=XML::LibXML::Error->new($xE);
114 if ($terr->{level} == XML_ERR_WARNING and $WARNINGS!=2) {
115 warn $terr if $WARNINGS;
116 return $prev;
117 }
118 #unless ( defined $terr->{file} and length $terr->{file} ) {
119 # this would make it easier to recognize parsed strings
120 # but it breaks old implementations
121 # [CG] $terr->{file} = 'string()';
122 #}
123 #warn "Saving the error ",$terr->dump;
124 $terr->{_prev} = ref($prev) ? $prev :
125 defined($prev) && length($prev) ? XML::LibXML::Error->new($prev) : undef;
126 return $terr;
127 }
128 sub _instant_error_callback {
129 my $xE = shift;
130 my $terr= XML::LibXML::Error->new($xE);
131 print "Reporting an instanteous error ",$terr->dump;
132 die $terr;
133 }
134 sub _report_warning {
135 my ($saved_error) = @_;
136 #print "CALLBACK WARN\n";
137 if ( defined $saved_error ) {
138 #print "reporting a warning ",$saved_error->dump;
139 warn $saved_error;
140 }
141 }
142 sub _report_error {
143 my ($saved_error) = @_;
144 #print "CALLBACK ERROR: $saved_error\n";
145 if ( defined $saved_error ) {
146 die $saved_error;
147 }
148 }
149}
150
151
152sub AUTOLOAD {
153 my $self=shift;
154 return undef unless ref($self);
155 my $sub = $AUTOLOAD;
156 $sub =~ s/.*:://;
157 if ($sub=~/^(?:code|_prev|level|file|line|domain|nodename|message|column|context|str[123]|num[12])$/) {
158 return $self->{$sub};
159 } else {
160 croak("Unknown error field $sub");
161 }
162}
163
164# backward compatibility
165sub int1 { $_[0]->num1 }
166sub int2 { $_[0]->num2 }
167
168sub DESTROY {}
169
170sub domain {
171 my ($self)=@_;
172 return undef unless ref($self);
173 return $error_domains[$self->{domain}];
174}
175
176sub as_string {
177 my ($self)=@_;
178 my $msg = "";
179 my $level;
180
181 if (defined($self->{_prev})) {
182 $msg = $self->{_prev}->as_string;
183 }
184
185 if ($self->{level} == XML_ERR_NONE) {
186 $level = "";
187 } elsif ($self->{level} == XML_ERR_WARNING) {
188 $level = "warning";
189 } elsif ($self->{level} == XML_ERR_ERROR ||
190 $self->{level} == XML_ERR_FATAL) {
191 $level = "error";
192 }
193 my $where="";
194 if (defined($self->{file})) {
195 $where="$self->{file}:$self->{line}";
196 } elsif (($self->{domain} == XML_ERR_FROM_PARSER)
197 and
198 $self->{line}) {
199 $where="Entity: line $self->{line}";
200 }
201 if ($self->{nodename}) {
202 $where.=": element ".$self->{nodename};
203 }
204 $msg.=$where.": " if $where ne "";
205 $msg.=$error_domains[$self->{domain}]." ".$level." :";
206 my $str=$self->{message}||"";
207 chomp($str);
208 $msg.=" ".$str."\n";
209 if (($self->{domain} == XML_ERR_FROM_XPATH) and
210 defined($self->{str1})) {
211 $msg.=$self->{str1}."\n";
212 $msg.=(" " x $self->{num1})."^\n";
213 } elsif (defined $self->{context}) {
214 my $context = $self->{context};
215 $msg.=$context."\n";
216 $context = substr($context,0,$self->{column});
217 $context=~s/[^\t]/ /g;
218 $msg.=$context."^\n";
219 }
220 return $msg;
221}
222
223sub dump {
224 my ($self)=@_;
2253229µs26.70ms
# spent 6.64ms (5.84+794µs) within XML::LibXML::Error::BEGIN@225 which was called: # once (5.84ms+794µs) by XML::LibXML::BEGIN@23 at line 225
use Data::Dumper;
# spent 6.64ms making 1 call to XML::LibXML::Error::BEGIN@225 # spent 62µs making 1 call to Exporter::import
226 return Data::Dumper->new([$self],['error'])->Dump;
227}
228
22918µs1;