@@ -199,7 +199,7 @@ ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_func_counter_helper(ZEND_OPCODE_H
199199 const zend_op * opline = EX (opline );
200200#endif
201201
202- * (jit_extension -> counter ) -= ZEND_JIT_COUNTER_FUNC_COST ;
202+ * (jit_extension -> counter ) -= (( ZEND_JIT_COUNTER_INIT + JIT_G ( hot_func ) - 1 ) / JIT_G ( hot_func )) ;
203203
204204 if (UNEXPECTED (* (jit_extension -> counter ) <= 0 )) {
205205 * (jit_extension -> counter ) = ZEND_JIT_COUNTER_INIT ;
@@ -219,7 +219,7 @@ ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_loop_counter_helper(ZEND_OPCODE_H
219219 const zend_op * opline = EX (opline );
220220#endif
221221
222- * (jit_extension -> counter ) -= ZEND_JIT_COUNTER_LOOP_COST ;
222+ * (jit_extension -> counter ) -= (( ZEND_JIT_COUNTER_INIT + JIT_G ( hot_loop ) - 1 ) / JIT_G ( hot_loop )) ;
223223
224224 if (UNEXPECTED (* (jit_extension -> counter ) <= 0 )) {
225225 * (jit_extension -> counter ) = ZEND_JIT_COUNTER_INIT ;
@@ -313,17 +313,20 @@ static zend_always_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_trace_c
313313
314314ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_func_trace_helper (ZEND_OPCODE_HANDLER_ARGS )
315315{
316- ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper , ZEND_JIT_COUNTER_FUNC_COST );
316+ ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper ,
317+ ((ZEND_JIT_COUNTER_INIT + JIT_G (hot_func ) - 1 ) / JIT_G (hot_func )));
317318}
318319
319320ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_ret_trace_helper (ZEND_OPCODE_HANDLER_ARGS )
320321{
321- ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper , ZEND_JIT_COUNTER_RET_COST );
322+ ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper ,
323+ ((ZEND_JIT_COUNTER_INIT + JIT_G (hot_return ) - 1 ) / JIT_G (hot_return )));
322324}
323325
324326ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_loop_trace_helper (ZEND_OPCODE_HANDLER_ARGS )
325327{
326- ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper , ZEND_JIT_COUNTER_LOOP_COST );
328+ ZEND_OPCODE_TAIL_CALL_EX (zend_jit_trace_counter_helper ,
329+ ((ZEND_JIT_COUNTER_INIT + JIT_G (hot_loop ) - 1 ) / JIT_G (hot_loop )));
327330}
328331
329332#define TRACE_RECORD (_op , _info , _ptr ) \
@@ -413,7 +416,7 @@ static int zend_jit_trace_bad_inner_loop(const zend_op *opline)
413416 if (cache_opline [i ] == opline ) {
414417 if ((cache_stop [i ] == ZEND_JIT_TRACE_STOP_INNER_LOOP
415418 || cache_stop [i ] == ZEND_JIT_TRACE_STOP_LOOP_EXIT )
416- && cache_count [i ] > ZEND_JIT_TRACE_MAX_ROOT_FAILURES / 2 ) {
419+ && cache_count [i ] > JIT_G ( blacklist_root_trace ) / 2 ) {
417420 return 1 ;
418421 }
419422 break ;
@@ -432,7 +435,7 @@ static int zend_jit_trace_bad_compiled_loop(const zend_op *opline)
432435 for (i = 0 ; i < ZEND_JIT_TRACE_BAD_ROOT_SLOTS ; i ++ ) {
433436 if (cache_opline [i ] == opline ) {
434437 if (cache_stop [i ] == ZEND_JIT_TRACE_STOP_COMPILED_LOOP
435- && cache_count [i ] >= ZEND_JIT_TRACE_MAX_ROOT_FAILURES - 1 ) {
438+ && cache_count [i ] >= JIT_G ( blacklist_root_trace ) - 1 ) {
436439 return 1 ;
437440 }
438441 break ;
@@ -451,7 +454,7 @@ static int zend_jit_trace_bad_loop_exit(const zend_op *opline)
451454 for (i = 0 ; i < ZEND_JIT_TRACE_BAD_ROOT_SLOTS ; i ++ ) {
452455 if (cache_opline [i ] == opline ) {
453456 if (cache_stop [i ] == ZEND_JIT_TRACE_STOP_LOOP_EXIT
454- && cache_count [i ] >= ZEND_JIT_TRACE_MAX_ROOT_FAILURES - 1 ) {
457+ && cache_count [i ] >= JIT_G ( blacklist_root_trace ) - 1 ) {
455458 return 1 ;
456459 }
457460 break ;
@@ -524,9 +527,6 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
524527 int backtrack_ret_recursion_level = 0 ;
525528 int loop_unroll_limit = 0 ;
526529 const zend_op_array * unrolled_calls [ZEND_JIT_TRACE_MAX_CALL_DEPTH + ZEND_JIT_TRACE_MAX_RET_DEPTH ];
527- #if ZEND_JIT_DETECT_UNROLLED_LOOPS
528- uint32_t unrolled_loops [ZEND_JIT_TRACE_MAX_UNROLL_LOOPS ];
529- #endif
530530 zend_bool is_toplevel ;
531531#ifdef HAVE_GCC_GLOBAL_REGS
532532 zend_execute_data * prev_execute_data = ex ;
@@ -693,12 +693,12 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
693693 count = zend_jit_trace_recursive_call_count (& EX (func )-> op_array , unrolled_calls , ret_level , level );
694694
695695 if (opline == orig_opline ) {
696- if (count + 1 >= ZEND_JIT_TRACE_MAX_RECURSION ) {
696+ if (count + 1 >= JIT_G ( max_recursion_unroll ) ) {
697697 stop = ZEND_JIT_TRACE_STOP_RECURSIVE_CALL ;
698698 break ;
699699 }
700700 backtrack_recursion = idx ;
701- } else if (count >= ZEND_JIT_TRACE_MAX_RECURSION ) {
701+ } else if (count >= JIT_G ( max_recursion_unroll ) ) {
702702 stop = ZEND_JIT_TRACE_STOP_DEEP_RECURSION ;
703703 break ;
704704 }
@@ -725,13 +725,13 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
725725 TRACE_RECORD (ZEND_JIT_TRACE_BACK , 0 , & EX (func )-> op_array );
726726 count = zend_jit_trace_recursive_ret_count (& EX (func )-> op_array , unrolled_calls , ret_level );
727727 if (opline == orig_opline ) {
728- if (count + 1 >= ZEND_JIT_TRACE_MAX_RECURSION ) {
728+ if (count + 1 >= JIT_G ( max_recursion_unroll ) ) {
729729 stop = ZEND_JIT_TRACE_STOP_RECURSIVE_RET ;
730730 break ;
731731 }
732732 backtrack_ret_recursion = idx ;
733733 backtrack_ret_recursion_level = ret_level ;
734- } else if (count >= ZEND_JIT_TRACE_MAX_RECURSION ) {
734+ } else if (count >= JIT_G ( max_recursion_unroll ) ) {
735735 stop = ZEND_JIT_TRACE_STOP_DEEP_RECURSION ;
736736 break ;
737737 }
@@ -828,7 +828,7 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
828828 break ;
829829 }
830830 }
831- if (loop_unroll_limit < ZEND_JIT_TRACE_MAX_UNROLL_LOOPS ) {
831+ if (loop_unroll_limit < JIT_G ( max_loops_unroll ) ) {
832832 loop_unroll_limit ++ ;
833833 } else {
834834 stop = ZEND_JIT_TRACE_STOP_LOOP_UNROLL ;
0 commit comments