@@ -46,20 +46,33 @@ static zend_always_inline const char *zend_jit_trace_star_desc(uint8_t trace_fla
46
46
}
47
47
}
48
48
49
- static int zend_jit_trace_startup (void )
49
+ static int zend_jit_trace_startup (zend_bool reattached )
50
50
{
51
- zend_jit_traces = (zend_jit_trace_info * )zend_shared_alloc (sizeof (zend_jit_trace_info ) * JIT_G (max_root_traces ));
52
- if (!zend_jit_traces ) {
53
- return FAILURE ;
54
- }
55
- zend_jit_exit_groups = (const void * * )zend_shared_alloc (sizeof (void * ) * (ZEND_JIT_TRACE_MAX_EXITS /ZEND_JIT_EXIT_POINTS_PER_GROUP ));
56
- if (!zend_jit_exit_groups ) {
57
- return FAILURE ;
51
+ if (!reattached ) {
52
+ zend_jit_traces = (zend_jit_trace_info * )zend_shared_alloc (sizeof (zend_jit_trace_info ) * JIT_G (max_root_traces ));
53
+ if (!zend_jit_traces ) {
54
+ return FAILURE ;
55
+ }
56
+ zend_jit_exit_groups = (const void * * )zend_shared_alloc (sizeof (void * ) * (ZEND_JIT_TRACE_MAX_EXITS /ZEND_JIT_EXIT_POINTS_PER_GROUP ));
57
+ if (!zend_jit_exit_groups ) {
58
+ return FAILURE ;
59
+ }
60
+ ZEND_JIT_TRACE_NUM = 1 ;
61
+ ZEND_JIT_COUNTER_NUM = 0 ;
62
+ ZEND_JIT_EXIT_NUM = 0 ;
63
+ ZEND_JIT_EXIT_COUNTERS = 0 ;
64
+ ZCSG (jit_traces ) = zend_jit_traces ;
65
+ ZCSG (jit_exit_groups ) = zend_jit_exit_groups ;
66
+ } else {
67
+ zend_jit_traces = ZCSG (jit_traces );
68
+ if (!zend_jit_traces ) {
69
+ return FAILURE ;
70
+ }
71
+ zend_jit_exit_groups = ZCSG (jit_exit_groups );
72
+ if (!zend_jit_exit_groups ) {
73
+ return FAILURE ;
74
+ }
58
75
}
59
- ZEND_JIT_TRACE_NUM = 1 ;
60
- ZEND_JIT_COUNTER_NUM = 0 ;
61
- ZEND_JIT_EXIT_NUM = 0 ;
62
- ZEND_JIT_EXIT_COUNTERS = 0 ;
63
76
64
77
memset (& dummy_op_array , 0 , sizeof (dummy_op_array ));
65
78
dummy_op_array .fn_flags = ZEND_ACC_DONE_PASS_TWO ;
0 commit comments