line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package XS::Framework; |
2
|
36
|
|
|
36
|
|
347726
|
use 5.018; |
|
36
|
|
|
|
|
327
|
|
3
|
36
|
|
|
36
|
|
205
|
use Config; |
|
36
|
|
|
|
|
112
|
|
|
36
|
|
|
|
|
1397
|
|
4
|
36
|
|
|
36
|
|
15276
|
use next::XS; |
|
36
|
|
|
|
|
287002
|
|
|
36
|
|
|
|
|
1242
|
|
5
|
36
|
|
|
36
|
|
15458
|
use XS::libpanda; |
|
36
|
|
|
|
|
58315
|
|
|
36
|
|
|
|
|
1123
|
|
6
|
36
|
|
|
36
|
|
14214
|
use XS::ErrorCode(); |
|
36
|
|
|
|
|
110
|
|
|
36
|
|
|
|
|
863
|
|
7
|
36
|
|
|
36
|
|
14862
|
use XS::STL::ErrorCode(); |
|
36
|
|
|
|
|
100
|
|
|
36
|
|
|
|
|
741
|
|
8
|
36
|
|
|
36
|
|
14951
|
use XS::STL::ErrorCategory(); |
|
36
|
|
|
|
|
101
|
|
|
36
|
|
|
|
|
3969
|
|
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
our $VERSION = '1.3.1'; |
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
|
|
241
|
no warnings 'redefine'; |
|
36
|
|
|
|
|
91
|
|
|
36
|
|
|
|
|
16401
|
|
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
|
|
41099
|
__at_perl_destroy(); |
29
|
|
|
|
|
|
|
} |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
1; |