Hi Internal,
I am not sure this is a correct mail list for asking source code related question.
If not, I am sorry. Appreciate you guys' help.
I am reading PHP8 JIT related source code and found that zend_jit.h has a magic definition
ZEND_JIT_COUNTER_INIT as 32531 which I do not quite understand how this number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531
A code example using this definition (looks like the 2nd parameter computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) / JIT_G(hot_func)));
=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency
This it's my choice.
This number is common for all JIT counters (hot_loop, hot_func, hot_return).
It's value was selected to provide the best precision when different
counters have different thresholds.
Unfortunately, I can't remember the exact equations or logic I used at that
time.
Thanks. Dmitry.
Hi Internal,
I am not sure this is a correct mail list for asking source code related
question.
If not, I am sorry. Appreciate you guys' help.I am reading PHP8 JIT related source code and found that zend_jit.h has a
magic definition
ZEND_JIT_COUNTER_INIT as 32531 which I do not quite understand how this
number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531A code example using this definition (looks like the 2nd parameter
computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) /
JIT_G(hot_func)));=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency
Thanks Dmitry for the information.
With a few debug sessions, I found that 32531 is working well
for any thresholds, and is also a big prime number :-).
-----Original Message-----
From: Dmitry Stogov dmitrystogov@gmail.com
Sent: Monday, January 17, 2022 1:37 PM
To: Su, Tao tao.su@intel.com
Cc: PHP internals internals@lists.php.net
Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531?
This it's my choice.
This number is common for all JIT counters (hot_loop, hot_func, hot_return).
It's value was selected to provide the best precision when different counters have different thresholds.
Unfortunately, I can't remember the exact equations or logic I used at that time.
Thanks. Dmitry.
Hi Internal,
I am not sure this is a correct mail list for asking source code
related question.
If not, I am sorry. Appreciate you guys' help.I am reading PHP8 JIT related source code and found that zend_jit.h
has a magic definition ZEND_JIT_COUNTER_INIT as 32531 which I do not
quite understand how this number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531A code example using this definition (looks like the 2nd parameter
computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) /
JIT_G(hot_func)));=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency
Oh, probably this is just the biggest prime number that fits into a signed
16-bit number :)
Thanks Dmitry for the information.
With a few debug sessions, I found that 32531 is working well
for any thresholds, and is also a big prime number :-).-----Original Message-----
From: Dmitry Stogov dmitrystogov@gmail.com
Sent: Monday, January 17, 2022 1:37 PM
To: Su, Tao tao.su@intel.com
Cc: PHP internals internals@lists.php.net
Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531?This it's my choice.
This number is common for all JIT counters (hot_loop, hot_func,
hot_return).
It's value was selected to provide the best precision when different
counters have different thresholds.
Unfortunately, I can't remember the exact equations or logic I used at
that time.Thanks. Dmitry.
Hi Internal,
I am not sure this is a correct mail list for asking source code
related question.
If not, I am sorry. Appreciate you guys' help.I am reading PHP8 JIT related source code and found that zend_jit.h
has a magic definition ZEND_JIT_COUNTER_INIT as 32531 which I do not
quite understand how this number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531A code example using this definition (looks like the 2nd parameter
computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) /
JIT_G(hot_func)));=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency
Oh, probably this is just the biggest prime number that fits into a signed
16-bit number :)
Seems like the sort of thing that should be documented inline. (Also, why it needs to be a prime number.)
--Larry Garfield
Thanks Dmitry for the information.
With a few debug sessions, I found that 32531 is working well
for any thresholds, and is also a big prime number :-).-----Original Message-----
From: Dmitry Stogov dmitrystogov@gmail.com
Sent: Monday, January 17, 2022 1:37 PM
To: Su, Tao tao.su@intel.com
Cc: PHP internals internals@lists.php.net
Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531?This it's my choice.
This number is common for all JIT counters (hot_loop, hot_func,
hot_return).
It's value was selected to provide the best precision when different
counters have different thresholds.
Unfortunately, I can't remember the exact equations or logic I used at
that time.Thanks. Dmitry.
Hi Internal,
I am not sure this is a correct mail list for asking source code
related question.
If not, I am sorry. Appreciate you guys' help.I am reading PHP8 JIT related source code and found that zend_jit.h
has a magic definition ZEND_JIT_COUNTER_INIT as 32531 which I do not
quite understand how this number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531A code example using this definition (looks like the 2nd parameter
computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) /
JIT_G(hot_func)));=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency
Interesting! I would like to dig deeper or ask google for more information.
I had an impression that I once read a paper about this kind of magic number, but not sure where it was from.
@Dmitry Stogovmailto:dmitrystogov@gmail.com With your permission, if I found anything, I would like to add a few comments into the source code file for records.
From: Dmitry Stogov dmitrystogov@gmail.com
Sent: Monday, January 17, 2022 8:12 PM
To: Su, Tao tao.su@intel.com
Cc: PHP internals internals@lists.php.net
Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531?
Oh, probably this is just the biggest prime number that fits into a signed 16-bit number :)
Thanks Dmitry for the information.
With a few debug sessions, I found that 32531 is working well
for any thresholds, and is also a big prime number :-).
-----Original Message-----
From: Dmitry Stogov <dmitrystogov@gmail.commailto:dmitrystogov@gmail.com>
Sent: Monday, January 17, 2022 1:37 PM
To: Su, Tao <tao.su@intel.commailto:tao.su@intel.com>
Cc: PHP internals <internals@lists.php.netmailto:internals@lists.php.net>
Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531?
This it's my choice.
This number is common for all JIT counters (hot_loop, hot_func, hot_return).
It's value was selected to provide the best precision when different counters have different thresholds.
Unfortunately, I can't remember the exact equations or logic I used at that time.
Thanks. Dmitry.
Hi Internal,
I am not sure this is a correct mail list for asking source code
related question.
If not, I am sorry. Appreciate you guys' help.I am reading PHP8 JIT related source code and found that zend_jit.h
has a magic definition ZEND_JIT_COUNTER_INIT as 32531 which I do not
quite understand how this number was chosen and why?
Anybody can provide some historic information?
#define ZEND_JIT_COUNTER_INIT 32531A code example using this definition (looks like the 2nd parameter
computes into a fixed number if hot_func is set by php.ini)
ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper,
((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) /
JIT_G(hot_func)));=======================================
Tony Su (Su, Tao)
make a 'lazy' programmer diligently with efficiency