@@ -17,7 +17,7 @@ extern "C" {
17
17
#error Timings are not supported on your compiler
18
18
#endif
19
19
20
- jl_timing_block_t * jl_root_timing ;
20
+ static uint64_t t0 ;
21
21
uint64_t jl_timing_data [(int )JL_TIMING_LAST ] = {0 };
22
22
const char * jl_timing_names [(int )JL_TIMING_LAST ] =
23
23
{
@@ -28,32 +28,32 @@ const char *jl_timing_names[(int)JL_TIMING_LAST] =
28
28
29
29
void jl_print_timings (void )
30
30
{
31
- uint64_t total_time = 0 ;
31
+ uint64_t total_time = cycleclock () - t0 ;
32
+ uint64_t root_time = total_time ;
32
33
for (int i = 0 ; i < JL_TIMING_LAST ; i ++ ) {
33
- total_time + = jl_timing_data [i ];
34
+ root_time - = jl_timing_data [i ];
34
35
}
36
+ jl_timing_data [0 ] = root_time ;
35
37
for (int i = 0 ; i < JL_TIMING_LAST ; i ++ ) {
36
38
if (jl_timing_data [i ] != 0 )
37
- fprintf (stderr ,"%-25s : %5.2f %% %" PRIu64 "\n" , jl_timing_names [i ],
39
+ fprintf (stderr , "%-25s : %5.2f %% %" PRIu64 "\n" , jl_timing_names [i ],
38
40
100 * (((double )jl_timing_data [i ]) / total_time ), jl_timing_data [i ]);
39
41
}
40
42
}
41
43
42
44
void jl_init_timing (void )
43
45
{
44
- jl_root_timing = (jl_timing_block_t * )malloc_s (sizeof (jl_timing_block_t ));
45
- _jl_timing_block_init (jl_root_timing , JL_TIMING_ROOT );
46
- jl_root_timing -> prev = NULL ;
46
+ t0 = cycleclock ();
47
47
}
48
48
49
49
void jl_destroy_timing (void )
50
50
{
51
- jl_timing_block_t * stack = jl_current_task ? jl_current_task -> timing_stack : jl_root_timing ;
51
+ jl_ptls_t ptls = jl_get_ptls_states ();
52
+ jl_timing_block_t * stack = ptls -> timing_stack ;
52
53
while (stack ) {
53
54
_jl_timing_block_destroy (stack );
54
55
stack = stack -> prev ;
55
56
}
56
- free (jl_root_timing );
57
57
}
58
58
59
59
jl_timing_block_t * jl_pop_timing_block (jl_timing_block_t * cur_block )
0 commit comments