Dmitry Stogov
56a5d0bd91
Fixed CFG construction for SWITCH opcodes
2019-04-03 03:09:03 +03:00
Nikita Popov
17f8b9fb36
Fixed bug #77215
...
Remove invalid assertion: A block can have multiple switch frees,
so if we don't do live range block splitting, it is not necessarily
true that the free is located at the start of a block.
2018-11-28 20:08:39 +01:00
Xinchen Hui
7a7ec01a49
year++
2018-01-02 12:55:14 +08:00
Dmitry Stogov
1b9d0c8af3
Fixed wrong edges_count re-calculation.
2017-07-20 23:28:05 +03:00
Dmitry Stogov
1180d8c801
Separate ISSET_ISEMPTY_CV/UNSET_CV from ISSET_ISEMPTY_VAR/UNSET_VAR
2017-07-17 14:11:50 +03:00
Dmitry Stogov
d9d3b2c206
Fixed CFG/SSA construction (avoid multiple identical predecessors)
2017-07-17 13:35:47 +03:00
Dmitry Stogov
2a286ad599
Added goblal optimisation passes based on data flow analyses using SSA form:
...
SCCP - Sparse Conditional Constant Propagation, DCE - Dead Code Elimination
and removing of unused local variablesi.
Squashed commit of the following:
commit bf5ac05fc0
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 14:26:40 2017 +0300
Added news entry
commit 4cfa6984b1
Merge: 1cdaaac
1f261d7
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 13:30:50 2017 +0300
Merge branch 'sccp' into dce
* sccp:
Bump OCI8 version for recent patch
WS
Fix test title
Ensure that the stream position is kept between reads
Turn off EXIF_DEBUG so Travis don't complain at me
Don't add a new line to undefined tags in EXIF_DEBUG mode
Fix compile error with EXIF_DEBUG
update NEWS
disable --with-pcre-valgrind on travis
fix default args for --with-pcre-valgrind
Enable valgrind support for PCRE by default in debug builds
add oniguruma.patch to ease future upgrades
SIZEOF_SIZE_T doesn't exist on AIX and POWER8 (ppc64le), keep using SIZEOF_LONG
commit 1f261d77cb
Merge: a32a3fb
b280ba8
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 13:30:39 2017 +0300
Merge branch 'master' into sccp
* master:
Bump OCI8 version for recent patch
WS
Fix test title
Ensure that the stream position is kept between reads
Turn off EXIF_DEBUG so Travis don't complain at me
Don't add a new line to undefined tags in EXIF_DEBUG mode
Fix compile error with EXIF_DEBUG
update NEWS
disable --with-pcre-valgrind on travis
fix default args for --with-pcre-valgrind
Enable valgrind support for PCRE by default in debug builds
add oniguruma.patch to ease future upgrades
SIZEOF_SIZE_T doesn't exist on AIX and POWER8 (ppc64le), keep using SIZEOF_LONG
commit 1cdaaac601
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 13:27:12 2017 +0300
Use generic evalution mechanism for constant functions
commit 75bd92a609
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 12:39:05 2017 +0300
Fixed use-def chain unlinking for "$a = 1; $a += $a;"
commit 7d7746814d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 12:38:29 2017 +0300
Enable duplicate predecessors verification
commit 6b1667f206
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:55:20 2017 +0300
Removed duplicate definitions
commit 1415b53014
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:51:29 2017 +0300
Enable evaluation of constant functions with 3 arguments
commit ab367deef9
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:45:13 2017 +0300
Removed deprecated check
commit c51659ea8c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:40:42 2017 +0300
Reduce limit
commit b1be5a04d7
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:38:23 2017 +0300
Disable constant array_flip() evaluation
commit 7a5b0596a1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:33:20 2017 +0300
Fixed comments
commit 377e48b342
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:28:50 2017 +0300
Cast of string to long/double can not produce exception
commit 228dd01af3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:24:50 2017 +0300
Added missed return
commit 0972a21636
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:22:36 2017 +0300
objects may be nested in array operands
commit bd346bfa5c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:19:20 2017 +0300
~$resource is unsupported.
commit c77e45610c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:15:39 2017 +0300
ws
commit 0b64d71109
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:14:40 2017 +0300
Call to zend_ssa_unlink_use_chain() shouldn't be dropped
commit cb7059fcf6
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:11:58 2017 +0300
Safer check for function name. The previous check is incorrect in ZTS build.
commit 7280aba1e1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 11:02:10 2017 +0300
Missing warning
commit 54bc7b576c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 14 10:56:42 2017 +0300
Proper check for successors count
commit ea8c004a15
Merge: 624f76d
a32a3fb
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 13 15:56:26 2017 +0300
Merge branch 'sccp' into dce
* sccp:
fix fold
Fixed bug #74866 extension_dir = "./ext" now use current directory for base
add next vc15 toolset to the list
Revert "Enable whole program optimization for builds without PGO, too"
extend comment
cleanup discontinued target
commit a32a3fb67c
Merge: 2722dbf
5fb2abd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 13 15:56:14 2017 +0300
Merge branch 'master' into sccp
* master:
fix fold
Fixed bug #74866 extension_dir = "./ext" now use current directory for base
add next vc15 toolset to the list
Revert "Enable whole program optimization for builds without PGO, too"
extend comment
cleanup discontinued target
commit 624f76df48
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 13 12:30:27 2017 +0300
Set RETURN_VALUE_UNUSED instead of additional FREE opcode, if possible.
Keep alive dead instructions that have to free two temporary variables.
commit 94c9b26695
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 13 11:51:14 2017 +0300
More accurate "vararg" handling in DCE
commit 665ed8491c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 13 09:31:45 2017 +0300
Improved DCE performance, by avoiding redundand checks and repeatable iterations.
commit 3f42ce18ba
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 23:03:11 2017 +0300
Added few more instructions without side effects and exceptions
commit b17178f991
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 20:39:02 2017 +0300
Temprary enable SSA validation in DEBUG build
commit e238a8dc79
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 20:37:53 2017 +0300
Inegrate SSA validation developed by Nikita
commit a247cee80b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 20:31:27 2017 +0300
Perform DCE pass before other DFA optimisations, to properly reconstruct "no value" use-def chains.
commit a651564f29
Merge: 06f6eb0
2722dbf
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 18:55:05 2017 +0300
Merge branch 'sccp' into dce
* sccp:
Resources should be closed during object destructioin, not during freeing.
Guard against AppVeyor losing deps issue
increase poll timeout as false positives mitigation
Value of EG(user_exception_handler) should't relive request boundary
sodium ext: remove function names before exception messages
sodium ext: update the crypto_kx_*() API to the libsodium one
Revert "fix macro redifinitions"
commit 2722dbfdf5
Merge: 6595ea3
09d3b73
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 18:54:48 2017 +0300
Merge branch 'master' into sccp
* master:
Resources should be closed during object destructioin, not during freeing.
Guard against AppVeyor losing deps issue
increase poll timeout as false positives mitigation
Value of EG(user_exception_handler) should't relive request boundary
sodium ext: remove function names before exception messages
sodium ext: update the crypto_kx_*() API to the libsodium one
Revert "fix macro redifinitions"
commit 06f6eb0e68
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 14:52:28 2017 +0300
Use zend_ssa_is_no_val_use() instead of zend_has_improper_op1_use()
commit 4b64dbb30d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 13:07:14 2017 +0300
Check if instruction may throw exception only for instructions without known side effects.
Always disable removing ASSIGN and UNSET_VAR that may throw.
commit c5aa1f47cd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 11:21:07 2017 +0300
Use existing bit
commit c2af153bae
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 11:10:48 2017 +0300
Updated Windows build
commit de5e8fc129
Merge: 8c0de53
6595ea3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 11:10:12 2017 +0300
Merge branch 'sccp' into dce
* sccp: (29 commits)
Use existing bit
Updated Windows build
Fixed compilation error
Remove debug code
We need to check for the length here too, or we crash and no one likes that! :(
* Implemented #65187 (exif_read_data/thumbnail: add support for stream resource) * ext/exif now uses FAST_ZPP
Remove extraneous configure flag
Revert "remove excessive checks and fix warnings"
parametrize zip names
Upgrade bundled PCRE to 8.41
Updated NEWS file with LDAP changes
Fixed removing all controls by passing an empty array to ldap_set_option
Filled in NEWS file with ext/ldap last modifications
change order, allow to build as shared extension
restore file deleted by mistake in a merge commit
Fix segfault in php_stream_context_get_option call
remove excessive checks and fix warnings
fix macro redifinitions
fix symbol availability and ws
Remove this for now, as not found
...
commit 6595ea3420
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 10:27:02 2017 +0300
Use existing bit
commit f0bfd36cb8
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 10:21:22 2017 +0300
Updated Windows build
commit a9bd7c89f2
Merge: d1eb5ed
2b7d3fb
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 12 09:51:32 2017 +0300
Merge branch 'master' into sccp
* master: (27 commits)
Fixed compilation error
Remove debug code
We need to check for the length here too, or we crash and no one likes that! :(
* Implemented #65187 (exif_read_data/thumbnail: add support for stream resource) * ext/exif now uses FAST_ZPP
Remove extraneous configure flag
Revert "remove excessive checks and fix warnings"
parametrize zip names
Upgrade bundled PCRE to 8.41
Updated NEWS file with LDAP changes
Fixed removing all controls by passing an empty array to ldap_set_option
Filled in NEWS file with ext/ldap last modifications
change order, allow to build as shared extension
restore file deleted by mistake in a merge commit
Fix segfault in php_stream_context_get_option call
remove excessive checks and fix warnings
fix macro redifinitions
fix symbol availability and ws
Remove this for now, as not found
fix authors
NEWS for Sodium
...
commit 8c0de53e5f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 21:54:36 2017 +0300
Initial integration of Dead Code Elimination (DCE) and unused variable removing passes, originally developed in https://github.com/nikic/php-src/tree/opt , into DFA optimization pass.
commit d1eb5ede3a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 12:19:11 2017 +0300
Proper SSA reconstruction for "$a = $a;"
commit 4872d139b5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 11:57:33 2017 +0300
Replace conditions, that should be always true, by ZEND_ASSERT()
commit 9915b1f5cd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 11:56:51 2017 +0300
Fixed pass name
commit d26ff1b88d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 11:55:47 2017 +0300
Don't create identical predecessors
commit 0625fbe32b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 09:36:07 2017 +0300
Update unreachable blocks.
commit 9d7d409e6a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 09:28:49 2017 +0300
Keep consistent cfg.map[]
commit 85a86e58b2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 02:36:14 2017 +0300
Remove unusded phi
commit d5e0f2df4c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 11 02:35:00 2017 +0300
Don't clear phi->spources[] too early.
commit a90ed34295
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 21:29:39 2017 +0300
Make SCCP to remove dead live ranges.
commit 320237f3d8
Merge: 63bbed5
7be2637
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 17:35:21 2017 +0300
Merge branch 'master' into sccp
* master:
Fixed memory leak introduced by 7cb5bdf64a
eliminate casts
remove checks for eol dependencies
improve test
Small fix in ext/ldap, Moved vars definitions to the beginning of the block using them
ZipArchive implements countable, added ZipArchive::count() method
commit 63bbed5e71
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 17:01:15 2017 +0300
Evaluation of few more constant functions
commit 07f45d8a3d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 16:22:47 2017 +0300
Properly unlinking dead blocks from predecessors/successors and dominators
commit 502002aa6e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 13:33:14 2017 +0300
Replacel constant JMPZ/NZ/ZNZ by JMP or NOP
commit 3253e61b66
Merge: e7f69f0
161c378
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 12:22:39 2017 +0300
Merge branch 'master' into sccp
* master:
Revert "Fixed bug #74878 "
Upgrading note for #74837
Fixed bug #74837 - NEWS
Implement Countable for DomNodeList and DOMNamedNodeMap (Request #74837 )
Fix #49649 - Handle property visibility changes on unserialization
commit e7f69f07fc
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 12:15:08 2017 +0300
Prevent compile-time evaluation of implode() with arguments causing run-time warnings
commit 0e882f189a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 11:54:04 2017 +0300
Constant evaluation of ini_get() for some safe cases
commit 9e36a748b2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 11:13:37 2017 +0300
Constant evaluation of implode()
commit e73046e266
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 10:51:23 2017 +0300
Fixed uninitialized value
commit f5e2e8e68c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 10:05:37 2017 +0300
Remove (compact) unused constants after SCCP pass
commit f0b7bb86eb
Merge: e69d4f6
cfacf84
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 10 09:10:00 2017 +0300
Merge branch 'master' into sccp
* master: (37 commits)
#73594 tests only check the extra params if dns_get_record is successful
Fixed bug #74852 (property_exists returns true on unknown DateInterval property)
fix uninitialized var
fix comparison warning
comply with POSIX signature
fix warning
remove some casts
cleanup casts
remove useless cast
eliminate casts
sync vim mode lines in main
[ci skip] update NEWS
[ci skip] update NEWS
[ci skip] update NEWS
Fixed bug #74883 SQLite3::__construct() produces "out of memory" exception with invalid flags
Silent compiler warning
Fix test
Deprecated the read_exif_data() alias
Add myself as exif maintainer
update libs versions
...
commit e69d4f6140
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 7 12:51:41 2017 +0300
Avoid in-place modification of referenced data
commit 58f7c17978
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 7 12:33:24 2017 +0300
Use arena for temporary data.
commit 93d3e7ddc2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 7 11:54:47 2017 +0300
Made sccp_ctx to be an "extension" of scdf_ctx and remove duplicate data.
commit f810c6f7c4
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 7 11:20:48 2017 +0300
Improved SSCP integration
commit d17ed887f3
Merge: d90805a
29653da
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 7 10:22:37 2017 +0300
Merge branch 'master' into sccp
* master:
Fixed bug #74873 (Minor BC break: PCRE_JIT changes output of preg_match()).
Fixed bug #72324 (imap_mailboxmsginfo() return wrong size)
Fix redefine warnings
Expand sb's name and capitalize my own
Write the URL on a new line, so that it is easier copyable
commit d90805a40b
Merge: 2e5e03b
fc336c7
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 23:07:04 2017 +0300
Merge branch 'master' into sccp
* master:
Added missed dump of "main" script code
replace the stack var by a macro
[ci skip] sync NEWS
minor fix for web announce
add missing NEWS entry for #74087 and also fix the formatting
move NEWS entry to the correct place, also bump the version
commit 2e5e03b673
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 23:03:41 2017 +0300
Call info should be removed, but at least we should prevent incorrect stack adjustment.
commit 1ee9110b35
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 19:34:43 2017 +0300
Remove NOP instructions, introduced bvy SCCP.
This commit discloses unrelated issue caused ext/soap/tests/bug70211.phpt failure.
commit 9a2f50070d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 16:34:02 2017 +0300
Avoid useless iterations for first SSA variablesi, always marked BOT.
commit c57dd7c6ef
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 16:33:46 2017 +0300
Use reference-counting
commit 90f822d68e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 14:00:22 2017 +0300
Support for few more opcodes
commit cffee2f7e5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 12:35:13 2017 +0300
Combined constants substitutaion and dead instruction removing in single pass. This eleminates substitution in dead instructions.
commit f890375c16
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 10:34:48 2017 +0300
Use reference-counting instead of duplication
commit db0cd64dfa
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 03:04:27 2017 +0300
Improved SCDF<->SCCP interface
- "get_feasible_successors" callback is changed into "mark_feasible_successors" and should mark necessary edges through scdf_mark_edge_feasible()
- SCDF takes care about OP_DATA instruction
- SCDF code is re-arranged to avoid repeatable checks
commit e0ad5dd489
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 00:55:40 2017 +0300
Changed representation of "feasible_edges", using one bit per edge.
commit afee3138fe
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 6 00:49:56 2017 +0300
Revert "Don't propagate unused values"
This reverts commit 84e5bfd430
.
commit 84e5bfd430
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 23:39:42 2017 +0300
Don't propagate unused values
commit d4f15b9506
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 23:39:10 2017 +0300
Don't visit the same Phi twice
commit 2558311b4d
Merge: 722a59d
7bb4ae5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 21:51:06 2017 +0300
Merge branch 'master' into sccp
* master:
Fixed final dump "after optimizer"
commit 722a59ddb1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 21:09:29 2017 +0300
SCCP doesn't support VERIFY_RETURN_TYPE (ext/opcache/tests/bug73789.phpt failure)
commit 7084fade4d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 20:37:21 2017 +0300
Fixed SSA reconstruction
commit 37ec4e0845
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 19:34:46 2017 +0300
Disable constant propagation for variables that can be modified indirectly
commit 4bb9b6526e
Merge: 6800460
73d5097
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 19:17:04 2017 +0300
Merge branch 'master' into sccp
* master: (43 commits)
Keep information about SSA variables, that may be modified indirectly.
Added constants for known ldap controls OID and tests for ldap_get/set_option for controls
Added support for controls to ldap_get_option
[ci skip] sync NEWS
NEWS for oniguruma
Patch from the upstream git https://github.com/kkos/oniguruma/issues/60 (CVE-2017-9228)
Patch from the upstream git https://github.com/kkos/oniguruma/issues/59 (CVE-2017-9229) b690371bbf97794b4a1d3f295d4fb9a8b05d402d Modified for onig 5.9.6
Patch from the upstream git https://github.com/kkos/oniguruma/issues/58 (CVE-2017-9227)
Patch from the upstream git https://github.com/kkos/oniguruma/issues/57 (CVE-2017-9224)
Patch from the upstream git https://github.com/kkos/oniguruma/issues/55 (CVE-2017-9226) b4bf968ad52afe14e60a2dc8a95d3555c543353a Modified for onig 5.9.6 f015fbdd95f76438cd86366467bb2b39870dd7c6 Modified for onig 5.9.6
valid_symbol_table removed
Improve fix for #74145
Fix wddx
Fix tests
Fixed bug #74111
Fix bug #74603 - use correct buffer size
Fix bug #74651 - check EVP_SealInit as it can return -1
Update NEWS
Fix bug #74087
Fixed parsing of strange formats with mixed month/day and time strings
...
commit 680046086c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 16:14:38 2017 +0300
Support for few more internal functions evaluation
commit 74a29468ef
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 13:42:55 2017 +0300
Disabled evaluation of strpos() with empty needle.
commit e8908946e5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 13:17:30 2017 +0300
Replace calls to in_array() with constant array by IN_ARRAY instruction after SCCP.
commit 4e8fa2c3dd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jul 5 00:58:12 2017 +0300
Initial integration of Sparse Conditional Constant Propagation (SCCP), originally developed in https://github.com/nikic/php-src/tree/opt , into DFA optimization pass.
2017-07-14 14:33:34 +03:00
Dmitry Stogov
acffb7a080
Keep information about SSA variables, that may be modified indirectly.
2017-07-05 19:15:16 +03:00
Nikita Popov
88c85cbd5c
Merge branch 'PHP-7.1'
2017-04-17 12:19:46 +02:00
Nikita Popov
abf16c18c7
Fix loop identification
...
When assigning loop headers, we should treat already detected
loops as collapsed to their loop header, instead of ignoring them.
This fixes the loop header of BB2 in mandel2 if live-range CFG
splitting is enabled.
2017-04-17 12:17:32 +02:00
Nikita Popov
07fe8616e6
Set flags on the right block
2017-04-11 00:04:07 +02:00
Nikita Popov
a4c7c55c0b
Move call/recv splitting into correct branch
2017-04-10 23:51:27 +02:00
Nikita Popov
ad8652818a
Implement jumptable optimization
2017-04-10 22:23:14 +02:00
Nikita Popov
d1a012b602
Support more than two successors in opcache CFG
2017-04-10 22:18:24 +02:00
Xinchen Hui
36848f6e08
Merge branch 'PHP-7.1'
...
* PHP-7.1:
Update NEWS
Remove unused var
Fix invalid free of persistent results on error/connection loss in mysqlnd (bug 74376)
2017-04-07 15:21:57 +08:00
Xinchen Hui
e656455eae
Remove unused var
2017-04-07 15:21:19 +08:00
Thomas Punt
9f08aff3fd
Remove superfluous allocation checks around ZMM-based functions
2017-04-02 00:58:19 +02:00
Sebastian Bergmann
ccc35d1903
Fugbix typo
2017-03-16 19:10:07 +01:00
Nikita Popov
f1f68b60f5
Optimize DJ spanning tree back-edge check
...
Instead of walking the DJ spanning tree upwards, record entry and
exit times during the DFS and use these to determine whether CJ
edges are sp-back edges.
2017-03-16 17:26:20 +01:00
Nikita Popov
6633e8492e
Sort blocks in loop identification
...
The previous implementation was doing O(blocks*levels) iterations,
which for a linear-ish domtree is O(blocks^2). Avoid this by sorting
the blocks by decreasing level upfront.
2017-03-16 16:49:36 +01:00
Sammy Kaye Powers
dac6c639bb
Update copyright headers to 2017
2017-01-04 11:23:42 -06:00
Xinchen Hui
8250b3fca1
Fixed possible false assertion failure
2016-12-08 22:04:43 +08:00
Dmitry Stogov
94fbcbe172
Allow optional splitting of basic blocks at RECV/RECV_INIT opcodes.
2016-08-29 20:35:17 +03:00
Dmitry Stogov
b5bab0fce8
Merge branch 'PHP-7.0' into PHP-7.1
...
* PHP-7.0:
Fixed bug #72944 (Null pointer deref in zval_delref_p).
2016-08-29 12:07:54 +03:00
Dmitry Stogov
caf890b291
Fixed CFG construction for stackless execution (split basic blocks after calls)
2016-08-22 16:48:26 +03:00
Dmitry Stogov
1433162083
Fixed compilation warnings
2016-06-21 20:12:29 +03:00
Nikita Popov
70f0546885
Don't optimize special dynamic calls to non-dynamic
...
As it drops the warning. This is more problematic with constant
propagation, as tests would fail.
Extract a zend_optimizer_classify_function() function, as its now
needed by zend_cfg and update_opN.
2016-06-05 22:04:36 +02:00
Xinchen Hui
4935c03276
Revert "assert won't cause indrect var access if it's disabled"
...
in the other hand, it should not be there if it's disabled...
This reverts commit 27f40676e6
.
2016-05-27 10:53:32 -07:00
Xinchen Hui
27f40676e6
assert won't cause indrect var access if it's disabled
2016-05-27 10:48:36 -07:00
Nikita Popov
a19eb8e34a
Ensure no entry predecessors for SSA construction
2016-05-24 18:29:45 +02:00
Nikita Popov
e745b4cad8
Replace BB end with BB len
...
And support empty blocks everywhere.
2016-05-24 18:29:44 +02:00
Nikita Popov
0d62dfdf81
Improve previous fix
...
Do not mark loop var free blocks as reachable after all -- as we
can't construct SSA for unreachable blocks, this would cause
issues down the line.
Instead add an extra UNREACHABLE_FREE flag and retain only the
FREE instruction during NOP removal. (If we retain all
instructions in the BB we might leave a jump instruction that goes
into the nowhere.)
2016-05-22 00:05:06 +02:00
Nikita Popov
fa9566627b
Fix reachability detection if live ranges aren't split
...
Even if we don't split, we still want to keep the same logic for
reachibility detection.
2016-05-21 20:17:09 +02:00
Nikita Popov
b65b15c6f4
Mark assert() as INDIRECT_VAR_ACCESS
...
I don't like this... we may want to detect "obviously not string"
operands by checking for the result of a comparison instruction.
2016-05-17 16:13:17 +02:00
Dmitry Stogov
ccf18da450
Eliminated checks for (func->op_array.fn_flags & ZEND_ACC_GENERATOR) in fast path of DO_FCALL* handlers.
...
This slightly improves calls to regular function and method calls in cost of a bit slower generator initialization.
Separate call frame for generators, allocated on heap, now created by ZEND_GENERATOR_CREATE instruction.
2016-05-13 01:40:15 +03:00
Nikita Popov
8e5b139732
Evaluate arguments of new for classes without ctor
...
ML: http://markmail.org/message/4b3mk7jid64zvz34
2016-03-25 19:11:37 +01:00
Kalle Sommer Nielsen
fc49f1c411
Fix build
2016-03-17 03:53:01 +01:00
Nikita Popov
8d758e7be9
Fix dominator tree construction
...
The used dominator intersection algorithm assumes a postorder
numbering of the CFG. The reversal of our natural numbering is
quite similar to postorder, but not the same.
In the future we should precompute both preorder/postorder
numberings and orderings, as these are useful in many places.
2016-02-27 15:10:18 +01:00
Nikita Popov
7174af4074
Support CFG construction without live range splitting
...
We must not split at live range boundaries for SSA constructions,
otherwise an OP_DATA instruction may be separated into new block
and not picked up during renaming.
It's also unnecessary for this use case and only blows up the CFG.
2016-02-09 13:02:33 +01:00
Nikita Popov
949aaea66e
Don't insert duplicate predecessors
...
Otherwise we'll get corrupt phis
2016-01-24 23:03:57 +01:00
Dmitry Stogov
9b854ebab4
More accurate handling of isset() and unset()
2016-01-22 13:32:20 +03:00
Nikita Popov
dcf3db6ac8
Mark isset($$var) as INDIRECT_VAR_ACCESS
2016-01-19 22:26:32 +01:00
Dmitry Stogov
a8900b5636
Typo (ASSESS->ACCESS)
2016-01-19 15:54:44 +03:00
Dmitry Stogov
a2ff3a46a4
Use ZEND_FUNC_INDIRECT_VAR_ASSESS instead of ZEND_FUNC_TOO_DYNAMIC. Handle function with exceptions handlers and generators separately.
2016-01-19 15:33:08 +03:00
Lior Kaplan
71c1980025
Happy new year (Update copyright to 2016)
2016-01-01 20:06:12 +02:00
Nikita Popov
83c4417330
Mark uses of scope functions in namespaces as TOO_DYNAMIC
...
Of course they are not necessarily, but it's very likely and we have
to be conservative anyway.
Also use zend_string_equals_literal().
2015-12-30 23:38:03 +01:00
Nikita Popov
65e456f364
Introduce BIND_LEXICAL
...
This opcodes inserts a local CV into the closure static variable
table. This replaces the previous mechanism of having static
variables marked as LEXICAL, which perform a symtable lookup
during copying.
This means a) functions which contain closures no longer have to
rebuild their symtable (better performance) and b) we can now track
used variables in SSA.
2015-12-29 23:14:53 +01:00
Nikita Popov
88eae43ff9
Remove uses of VARs in extended_value
...
The DECLARE_(ANON_)INHERITED_CLASS(_DELAYED) opcodes were
referencing the parent ce VAR through extended_value. This is
hacky and we can't track the def-use chain in SSA.
To avoid this, the layout of declaration opcodes is changed
as follows: op1 points to the lcname and rtd_key literals, in
that order. (For anon/lambda declarations only one of lcname or
rtd_key is present.) This frees up op2, which is now used to
reference the parent ce VAR in inheriting declarations. The
jmp offset for anon class declarations is moved frop op2 to
extended_value.
The changes were applied both to class and function declarations
to keep everything symmetric.
2015-12-21 14:44:42 +01:00
Dmitry Stogov
9044f491cc
Use do_alloca() instead of alloca()
2015-12-16 04:59:05 +03:00
Dmitry Stogov
c88ffa9a56
Added e-SSA based DFA optimisation framework (incomplete)
2015-12-16 00:49:44 +03:00