@@ -7085,36 +7085,31 @@ static zend_jit_trace_stop zend_jit_compile_root_trace(zend_jit_trace_rec *trace
7085
7085
JIT_G (trigger ) = orig_trigger ;
7086
7086
7087
7087
if (handler ) {
7088
- zend_jit_trace_exit_info * shared_exit_info = NULL ;
7089
-
7090
7088
t -> exit_info = NULL ;
7091
7089
if (t -> exit_count ) {
7092
7090
/* reallocate exit_info into shared memory */
7093
- shared_exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc (
7091
+ t -> exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc_copy ( exit_info ,
7094
7092
sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7095
7093
7096
- if (!shared_exit_info ) {
7094
+ if (!t -> exit_info ) {
7097
7095
if (t -> stack_map ) {
7098
7096
efree (t -> stack_map );
7099
7097
}
7100
7098
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7101
7099
goto exit ;
7102
7100
}
7103
- memcpy (shared_exit_info , exit_info ,
7104
- sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7105
- t -> exit_info = shared_exit_info ;
7106
7101
}
7107
7102
7108
7103
if (t -> stack_map_size ) {
7109
- zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc (t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7104
+ zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc_copy (
7105
+ t -> stack_map ,
7106
+ t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7107
+ efree (t -> stack_map );
7108
+ t -> stack_map = shared_stack_map ;
7110
7109
if (!shared_stack_map ) {
7111
- efree (t -> stack_map );
7112
7110
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7113
7111
goto exit ;
7114
7112
}
7115
- memcpy (shared_stack_map , t -> stack_map , t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7116
- efree (t -> stack_map );
7117
- t -> stack_map = shared_stack_map ;
7118
7113
}
7119
7114
7120
7115
t -> exit_counters = ZEND_JIT_EXIT_COUNTERS ;
@@ -7815,36 +7810,31 @@ static zend_jit_trace_stop zend_jit_compile_side_trace(zend_jit_trace_rec *trace
7815
7810
JIT_G (trigger ) = orig_trigger ;
7816
7811
7817
7812
if (handler ) {
7818
- zend_jit_trace_exit_info * shared_exit_info = NULL ;
7819
-
7820
7813
t -> exit_info = NULL ;
7821
7814
if (t -> exit_count ) {
7822
7815
/* reallocate exit_info into shared memory */
7823
- shared_exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc (
7816
+ t -> exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc_copy ( exit_info ,
7824
7817
sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7825
7818
7826
- if (!shared_exit_info ) {
7819
+ if (!t -> exit_info ) {
7827
7820
if (t -> stack_map ) {
7828
7821
efree (t -> stack_map );
7829
7822
}
7830
7823
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7831
7824
goto exit ;
7832
7825
}
7833
- memcpy (shared_exit_info , exit_info ,
7834
- sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7835
- t -> exit_info = shared_exit_info ;
7836
7826
}
7837
7827
7838
7828
if (t -> stack_map_size ) {
7839
- zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc (t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7829
+ zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc_copy (
7830
+ t -> stack_map ,
7831
+ t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7832
+ efree (t -> stack_map );
7833
+ t -> stack_map = shared_stack_map ;
7840
7834
if (!shared_stack_map ) {
7841
- efree (t -> stack_map );
7842
7835
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7843
7836
goto exit ;
7844
7837
}
7845
- memcpy (shared_stack_map , t -> stack_map , t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7846
- efree (t -> stack_map );
7847
- t -> stack_map = shared_stack_map ;
7848
7838
}
7849
7839
7850
7840
zend_jit_link_side_trace (
0 commit comments