← Index
NYTProf Performance Profile   « line view »
For webmerge/scripts/webmerge.pl
  Run on Mon Oct 7 02:42:42 2013
Reported on Mon Oct 7 03:03:28 2013

Filename/usr/lib64/perl5/vendor_perl/5.16.0/x86_64-linux/XML/LibXML/XPathContext.pm
StatementsExecuted 15 statements in 4.39ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11181µs183µsXML::LibXML::XPathContext::::BEGIN@12XML::LibXML::XPathContext::BEGIN@12
11164µs64µsXML::LibXML::XPathContext::::BEGIN@16XML::LibXML::XPathContext::BEGIN@16
11161µs149µsXML::LibXML::XPathContext::::BEGIN@141XML::LibXML::XPathContext::BEGIN@141
11153µs299µsXML::LibXML::XPathContext::::BEGIN@15XML::LibXML::XPathContext::BEGIN@15
11150µs356µsXML::LibXML::XPathContext::::BEGIN@13XML::LibXML::XPathContext::BEGIN@13
11142µs42µsXML::LibXML::XPathContext::::BEGIN@17XML::LibXML::XPathContext::BEGIN@17
0000s0sXML::LibXML::XPathContext::::CLONE_SKIPXML::LibXML::XPathContext::CLONE_SKIP
0000s0sXML::LibXML::XPathContext::::_guarded_find_callXML::LibXML::XPathContext::_guarded_find_call
0000s0sXML::LibXML::XPathContext::::_perl_dispatcherXML::LibXML::XPathContext::_perl_dispatcher
0000s0sXML::LibXML::XPathContext::::existsXML::LibXML::XPathContext::exists
0000s0sXML::LibXML::XPathContext::::findXML::LibXML::XPathContext::find
0000s0sXML::LibXML::XPathContext::::findnodesXML::LibXML::XPathContext::findnodes
0000s0sXML::LibXML::XPathContext::::findvalueXML::LibXML::XPathContext::findvalue
0000s0sXML::LibXML::XPathContext::::registerFunctionXML::LibXML::XPathContext::registerFunction
0000s0sXML::LibXML::XPathContext::::unregisterFunctionXML::LibXML::XPathContext::unregisterFunction
0000s0sXML::LibXML::XPathContext::::unregisterFunctionNSXML::LibXML::XPathContext::unregisterFunctionNS
0000s0sXML::LibXML::XPathContext::::unregisterNsXML::LibXML::XPathContext::unregisterNs
0000s0sXML::LibXML::XPathContext::::unregisterVarLookupFuncXML::LibXML::XPathContext::unregisterVarLookupFunc
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# $Id: XPathContext.pm 422 2002-11-08 17:10:30Z phish $
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#
9
10package XML::LibXML::XPathContext;
11
122172µs2285µs
# spent 183µs (81+102) within XML::LibXML::XPathContext::BEGIN@12 which was called: # once (81µs+102µs) by XML::LibXML::BEGIN@26 at line 12
use strict;
# spent 183µs making 1 call to XML::LibXML::XPathContext::BEGIN@12 # spent 102µs making 1 call to strict::import
132158µs2662µs
# spent 356µs (50+306) within XML::LibXML::XPathContext::BEGIN@13 which was called: # once (50µs+306µs) by XML::LibXML::BEGIN@26 at line 13
use vars qw($VERSION @ISA $USE_LIBXML_DATA_TYPES);
# spent 356µs making 1 call to XML::LibXML::XPathContext::BEGIN@13 # spent 306µs making 1 call to vars::import
14
152148µs2545µs
# spent 299µs (53+246) within XML::LibXML::XPathContext::BEGIN@15 which was called: # once (53µs+246µs) by XML::LibXML::BEGIN@26 at line 15
use Carp;
# spent 299µs making 1 call to XML::LibXML::XPathContext::BEGIN@15 # spent 246µs making 1 call to Exporter::import
162236µs164µs
# spent 64µs within XML::LibXML::XPathContext::BEGIN@16 which was called: # once (64µs+0s) by XML::LibXML::BEGIN@26 at line 16
use XML::LibXML;
# spent 64µs making 1 call to XML::LibXML::XPathContext::BEGIN@16
1723.35ms142µs
# spent 42µs within XML::LibXML::XPathContext::BEGIN@17 which was called: # once (42µs+0s) by XML::LibXML::BEGIN@26 at line 17
use XML::LibXML::NodeList;
# spent 42µs making 1 call to XML::LibXML::XPathContext::BEGIN@17
18
1914µs$VERSION = "1.90"; # VERSION TEMPLATE: DO NOT CHANGE
20
21# should LibXML XPath data types be used for simple objects
22# when passing parameters to extension functions (default: no)
2311µs$USE_LIBXML_DATA_TYPES = 0;
24
25sub CLONE_SKIP { 1 }
26
27sub findnodes {
28 my ($self, $xpath, $node) = @_;
29
30 my @nodes = $self->_guarded_find_call('_findnodes', $node, $xpath);
31
32 if (wantarray) {
33 return @nodes;
34 }
35 else {
36 return XML::LibXML::NodeList->new(@nodes);
37 }
38}
39
40sub find {
41 my ($self, $xpath, $node) = @_;
42
43 my ($type, @params) = $self->_guarded_find_call('_find', $node, $xpath,0);
44
45 if ($type) {
46 return $type->new(@params);
47 }
48 return undef;
49}
50
51sub exists {
52 my ($self, $xpath, $node) = @_;
53 my (undef, $value) = $self->_guarded_find_call('_find', $node, $xpath,1);
54 return $value;
55}
56
57sub findvalue {
58 my $self = shift;
59 return $self->find(@_)->to_literal->value;
60}
61
62sub _guarded_find_call {
63 my ($self, $method, $node)=(shift,shift,shift);
64
65 my $prev_node;
66 if (ref($node)) {
67 $prev_node = $self->getContextNode();
68 $self->setContextNode($node);
69 }
70 my @ret;
71 eval {
72 @ret = $self->$method(@_);
73 };
74 $self->_free_node_pool;
75 $self->setContextNode($prev_node) if ref($node);
76
77 if ($@) {
78 my $err = $@;
79 chomp $err;
80 croak $err;
81 }
82
83 return @ret;
84}
85
86sub registerFunction {
87 my ($self, $name, $sub) = @_;
88 $self->registerFunctionNS($name, undef, $sub);
89 return;
90}
91
92sub unregisterNs {
93 my ($self, $prefix) = @_;
94 $self->registerNs($prefix, undef);
95 return;
96}
97
98sub unregisterFunction {
99 my ($self, $name) = @_;
100 $self->registerFunctionNS($name, undef, undef);
101 return;
102}
103
104sub unregisterFunctionNS {
105 my ($self, $name, $ns) = @_;
106 $self->registerFunctionNS($name, $ns, undef);
107 return;
108}
109
110sub unregisterVarLookupFunc {
111 my ($self) = @_;
112 $self->registerVarLookupFunc(undef, undef);
113 return;
114}
115
116# extension function perl dispatcher
117# borrowed from XML::LibXSLT
118
119sub _perl_dispatcher {
120 my $func = shift;
121 my @params = @_;
122 my @perlParams;
123
124 my $i = 0;
125 while (@params) {
126 my $type = shift(@params);
127 if ($type eq 'XML::LibXML::Literal' or
128 $type eq 'XML::LibXML::Number' or
129 $type eq 'XML::LibXML::Boolean')
130 {
131 my $val = shift(@params);
132 unshift(@perlParams, $USE_LIBXML_DATA_TYPES ? $type->new($val) : $val);
133 }
134 elsif ($type eq 'XML::LibXML::NodeList') {
135 my $node_count = shift(@params);
136 unshift(@perlParams, $type->new(splice(@params, 0, $node_count)));
137 }
138 }
139
140 $func = "main::$func" unless ref($func) || $func =~ /(.+)::/;
1412305µs2237µs
# spent 149µs (61+88) within XML::LibXML::XPathContext::BEGIN@141 which was called: # once (61µs+88µs) by XML::LibXML::BEGIN@26 at line 141
no strict 'refs';
# spent 149µs making 1 call to XML::LibXML::XPathContext::BEGIN@141 # spent 88µs making 1 call to strict::unimport
142 my $res = $func->(@perlParams);
143 return $res;
144}
145
146115µs1;