#
e8525c2f |
| 13-Nov-2019 |
Tyson Andre |
Optimize int === int/double === double Do this by reusing the implementation used for `==` when both arguments are ints (IS_LONG) or both are floats (IS_DOUBLE) ```php // Be
Optimize int === int/double === double Do this by reusing the implementation used for `==` when both arguments are ints (IS_LONG) or both are floats (IS_DOUBLE) ```php // Before: nestedloop_ni took 0.442 seconds // After: nestedloop_ni takes 0.401 seconds (same as nestedloop_ne) function nestedloop_ni(int $k) { $x = 0; for ($i=0; $i < 50000000; $i++) { if ($i === $k) { $x++; } } print "$x\n"; } function nestedloop_ne(int $k) { $x = 0; for ($i=0; $i < 50000000; $i++) { if ($i == $k) { $x++; } } print "$x\n"; } ```
show more ...
|
Revision tags: php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4 |
|
#
f6f32f2c |
| 09-Oct-2019 |
Dmitry Stogov |
SAMRT BRANCH improvement. Avoid need of insertion NOP opcoes between unrelated SMART BRANCH instruction and following JMPZ/JMPNZ. Now instead of checking the opcode of following instruct
SAMRT BRANCH improvement. Avoid need of insertion NOP opcoes between unrelated SMART BRANCH instruction and following JMPZ/JMPNZ. Now instead of checking the opcode of following instruction, the same information is encoded into SMART BRANH result_type.
show more ...
|
#
eec04f6b |
| 08-Oct-2019 |
Dmitry Stogov |
Encapsulate all SMART BRANCH related logic inside macros. Result of SMART BRANCH may be uninitialized (on exception). |
Revision tags: php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3 |
|
#
a66c60cc |
| 26-Sep-2019 |
Nikita Popov |
Throw Error when writing property of non-object This removes object auto-vivification support. This also means that we can remove the corresponding special handling for typed pr
Throw Error when writing property of non-object This removes object auto-vivification support. This also means that we can remove the corresponding special handling for typed properites: We no longer need to check that a property is convertible to stdClass if such a conversion might take place indirectly due to a nested property write. Additionally OBJ_W style operations now no longer modify the object operand, and as such we no longer need to treat op1 as a def in SSA form. The next step would be to actually compile the whole LHS of OBJ_W operations in R rather than W mode, but that causes issues with SimpleXML, whose object handlers depend on the current compilation structure. Part of https://wiki.php.net/rfc/engine_warnings.
show more ...
|
#
470bbb8c |
| 25-Sep-2019 |
Dmitry Stogov |
Avoid code dupliction |
Revision tags: php-7.2.23, php-7.3.10, php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1 |
|
#
02c83b80 |
| 10-Sep-2019 |
Dmitry Stogov |
ceanup |
#
0f8bb9e3 |
| 05-Sep-2019 |
Dmitry Stogov |
Merge branch 'PHP-7.4' * PHP-7.4: Remove HOT attribute from some VM handlers. Comparisons almost always followed by JMPZ/JMPNZ; JMPZNZ is rare used. Remove --with-zlib-dir option
Merge branch 'PHP-7.4' * PHP-7.4: Remove HOT attribute from some VM handlers. Comparisons almost always followed by JMPZ/JMPNZ; JMPZNZ is rare used. Remove --with-zlib-dir option from mysqlnd config
show more ...
|
#
7237da27 |
| 05-Sep-2019 |
Dmitry Stogov |
Remove HOT attribute from some VM handlers. Comparisons almost always followed by JMPZ/JMPNZ; JMPZNZ is rare used. |
Revision tags: php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8 |
|
#
57d9b94d |
| 24-Jul-2019 |
Dmitry Stogov |
Simplify TMP/VAR operand releasing |
Revision tags: php-7.4.0beta1 |
|
#
9e4603f7 |
| 24-Jul-2019 |
Nikita Popov |
Try to fix macos build By avoiding unused variable opline warnings. Also clean up the replacement of ZEND_VM_SPEC -- we were sometimes treating it as an always-defined constant with
Try to fix macos build By avoiding unused variable opline warnings. Also clean up the replacement of ZEND_VM_SPEC -- we were sometimes treating it as an always-defined constant with a value (what it actually is) and sometimes as a conditionally defined constant (which it isn't, but which still worked thanks to the specializer). Switch to only treating it as a constant with a value.
show more ...
|
#
8d51af9b |
| 23-Jul-2019 |
Dmitry Stogov |
Fixed CALL VM |
#
b30e4a5a |
| 17-Jul-2019 |
Dmitry Stogov |
Avoid extra specialization for cold opcodes |
#
6fbab09e |
| 17-Jul-2019 |
Dmitry Stogov |
Remove old hack |
#
349a388b |
| 16-Jul-2019 |
Dmitry Stogov |
Slit INC/DEC opcodes into hot/cold parts and remove specialized versioins for LONG_OR_DOUBLE. |
Revision tags: php-7.2.21RC1, php-7.3.8RC1 |
|
#
2e26b063 |
| 15-Jul-2019 |
Dmitry Stogov |
Merge branch 'PHP-7.3' into PHP-7.4 * PHP-7.3: Fixed incorrect specialization (missed IS_INDIRECT handling)
|
#
c5709801 |
| 15-Jul-2019 |
Dmitry Stogov |
Merge branch 'PHP-7.2' into PHP-7.3 * PHP-7.2: Fixed incorrect specialization (missed IS_INDIRECT handling)
|
#
9ccf3fb9 |
| 15-Jul-2019 |
Dmitry Stogov |
Fixed incorrect specialization (missed IS_INDIRECT handling) |
#
350f2212 |
| 11-Jul-2019 |
Dmitry Stogov |
Allow GOTO style helpers in HYBRID VM |
#
ef1a1a06 |
| 11-Jul-2019 |
Dmitry Stogov |
Separate "cold" parts of comparison instructions |
#
be94c0c3 |
| 11-Jul-2019 |
Dmitry Stogov |
Separate "cold" parts of binary op instructions |
#
8f0c87e1 |
| 09-Jul-2019 |
Dmitry Stogov |
Avoid unintended inlining |
#
e1f418dd |
| 09-Jul-2019 |
Dmitry Stogov |
Remove duplicated code for (PRE|POST)_DEC_(OBJ|STATIC_PROP) opcodes |
Revision tags: php-7.4.0alpha3 |
|
#
1804fd63 |
| 08-Jul-2019 |
Dmitry Stogov |
Fixed dispatch from inlined hybrid opcode to another opcode |
#
48ca5a1e |
| 05-Jul-2019 |
Dmitry Stogov |
Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP |
#
925fd0fe |
| 04-Jul-2019 |
Dmitry Stogov |
Introduce and use ZEND_VM_INLINE_HANDLER() to avoid ZEND_RETURN exception |