line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package XS::Framework; |
2
|
36
|
|
|
36
|
|
325907
|
use 5.018; |
|
36
|
|
|
|
|
331
|
|
3
|
36
|
|
|
36
|
|
190
|
use Config; |
|
36
|
|
|
|
|
85
|
|
|
36
|
|
|
|
|
1186
|
|
4
|
36
|
|
|
36
|
|
15424
|
use next::XS; |
|
36
|
|
|
|
|
288676
|
|
|
36
|
|
|
|
|
1217
|
|
5
|
36
|
|
|
36
|
|
15229
|
use XS::libpanda; |
|
36
|
|
|
|
|
58038
|
|
|
36
|
|
|
|
|
1119
|
|
6
|
36
|
|
|
36
|
|
14418
|
use XS::ErrorCode(); |
|
36
|
|
|
|
|
98
|
|
|
36
|
|
|
|
|
817
|
|
7
|
36
|
|
|
36
|
|
14559
|
use XS::STL::ErrorCode(); |
|
36
|
|
|
|
|
95
|
|
|
36
|
|
|
|
|
770
|
|
8
|
36
|
|
|
36
|
|
14548
|
use XS::STL::ErrorCategory(); |
|
36
|
|
|
|
|
95
|
|
|
36
|
|
|
|
|
2060
|
|
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
our $VERSION = '1.3.0'; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
# threads::shared doesn't respect the fact that PL_destroyhook might be in use by other modules and doesn't proxy call to next hook |
13
|
|
|
|
|
|
|
# so that we must hook after threads::shared |
14
|
|
|
|
|
|
|
if ($Config{useithreads}) { |
15
|
|
|
|
|
|
|
require threads; |
16
|
|
|
|
|
|
|
require threads::shared; |
17
|
36
|
|
|
36
|
|
1968
|
no warnings 'redefine'; |
|
36
|
|
|
|
|
72
|
|
|
36
|
|
|
|
|
14153
|
|
18
|
|
|
|
|
|
|
my $orig_threads_create = \&threads::create; |
19
|
|
|
|
|
|
|
*threads::create = sub { |
20
|
|
|
|
|
|
|
__at_thread_create(); |
21
|
|
|
|
|
|
|
goto &$orig_threads_create; |
22
|
|
|
|
|
|
|
}; |
23
|
|
|
|
|
|
|
} |
24
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
XS::Loader::load(); |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
END { |
28
|
36
|
|
|
36
|
|
38233
|
__at_perl_destroy(); |
29
|
|
|
|
|
|
|
} |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
1; |