@@ -7071,37 +7071,32 @@ static zend_jit_trace_stop zend_jit_compile_root_trace(zend_jit_trace_rec *trace
7071
7071
JIT_G (trigger ) = orig_trigger ;
7072
7072
7073
7073
if (handler ) {
7074
- zend_jit_trace_exit_info * shared_exit_info = NULL ;
7075
-
7076
7074
t -> exit_info = NULL ;
7077
7075
if (t -> exit_count ) {
7078
7076
/* reallocate exit_info into shared memory */
7079
- shared_exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc (
7077
+ t -> exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc_copy ( exit_info ,
7080
7078
sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7081
7079
7082
- if (!shared_exit_info ) {
7080
+ if (!t -> exit_info ) {
7083
7081
if (t -> stack_map ) {
7084
7082
efree (t -> stack_map );
7085
7083
t -> stack_map = NULL ;
7086
7084
}
7087
7085
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7088
7086
goto exit ;
7089
7087
}
7090
- memcpy (shared_exit_info , exit_info ,
7091
- sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7092
- t -> exit_info = shared_exit_info ;
7093
7088
}
7094
7089
7095
7090
if (t -> stack_map_size ) {
7096
- zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc (t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7091
+ zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc_copy (
7092
+ t -> stack_map ,
7093
+ t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7094
+ efree (t -> stack_map );
7095
+ t -> stack_map = shared_stack_map ;
7097
7096
if (!shared_stack_map ) {
7098
- efree (t -> stack_map );
7099
7097
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7100
7098
goto exit ;
7101
7099
}
7102
- memcpy (shared_stack_map , t -> stack_map , t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7103
- efree (t -> stack_map );
7104
- t -> stack_map = shared_stack_map ;
7105
7100
}
7106
7101
7107
7102
t -> exit_counters = ZEND_JIT_EXIT_COUNTERS ;
@@ -7812,37 +7807,32 @@ static zend_jit_trace_stop zend_jit_compile_side_trace(zend_jit_trace_rec *trace
7812
7807
JIT_G (trigger ) = orig_trigger ;
7813
7808
7814
7809
if (handler ) {
7815
- zend_jit_trace_exit_info * shared_exit_info = NULL ;
7816
-
7817
7810
t -> exit_info = NULL ;
7818
7811
if (t -> exit_count ) {
7819
7812
/* reallocate exit_info into shared memory */
7820
- shared_exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc (
7813
+ t -> exit_info = (zend_jit_trace_exit_info * )zend_shared_alloc_copy ( exit_info ,
7821
7814
sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7822
7815
7823
- if (!shared_exit_info ) {
7816
+ if (!t -> exit_info ) {
7824
7817
if (t -> stack_map ) {
7825
7818
efree (t -> stack_map );
7826
7819
t -> stack_map = NULL ;
7827
7820
}
7828
7821
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7829
7822
goto exit ;
7830
7823
}
7831
- memcpy (shared_exit_info , exit_info ,
7832
- sizeof (zend_jit_trace_exit_info ) * t -> exit_count );
7833
- t -> exit_info = shared_exit_info ;
7834
7824
}
7835
7825
7836
7826
if (t -> stack_map_size ) {
7837
- zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc (t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7827
+ zend_jit_trace_stack * shared_stack_map = (zend_jit_trace_stack * )zend_shared_alloc_copy (
7828
+ t -> stack_map ,
7829
+ t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7830
+ efree (t -> stack_map );
7831
+ t -> stack_map = shared_stack_map ;
7838
7832
if (!shared_stack_map ) {
7839
- efree (t -> stack_map );
7840
7833
ret = ZEND_JIT_TRACE_STOP_NO_SHM ;
7841
7834
goto exit ;
7842
7835
}
7843
- memcpy (shared_stack_map , t -> stack_map , t -> stack_map_size * sizeof (zend_jit_trace_stack ));
7844
- efree (t -> stack_map );
7845
- t -> stack_map = shared_stack_map ;
7846
7836
}
7847
7837
7848
7838
zend_jit_link_side_trace (
0 commit comments