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
6276268b77
Separate constants propagation code shatred between "first" and "block" passes into helper functions.
2017-07-04 15:10:33 +03:00
Dmitry Stogov
10dbc0b2e7
Compile/optimisation-time constants can't be circular, but in general may be reference-countable. It's better to use zval_ptr_dtor_nogc() to release them.
2017-07-04 10:43:34 +03:00
Dmitry Stogov
b685991b44
Get rid of old compatibility macros
2017-07-04 09:50:57 +03:00
Nikita Popov
4cd5e6816b
Drop dead zend_optimizer_lookup_cv() function
2017-04-17 12:20:25 +02:00
Nikita Popov
ad8652818a
Implement jumptable optimization
2017-04-10 22:23:14 +02:00
Sammy Kaye Powers
9e29f841ce
Update copyright headers to 2017
2017-01-02 09:30:12 -06: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
Nikita Popov
d94b9545d6
Support known static/method calls in call graph
...
For this purpose extract the function lookup call into a helper
zend_optimizer_get_called_func().
2016-04-27 17:10:45 +02:00
Nikita Popov
5faedf5b3e
Remove EXT_TYPE_UNUSED in favor of IS_UNUSED
...
This means we no longer allocate an unused VAR for the retval of
instructions that support unused results.
Nearly all instructions already used the result variable only if
it was used. The only exception to this was the return value
variable for internal function call results. I've adjusted the code
to use a stack zval for the unused return case now. As we have
retval specialization now, we know that it doesn't matter.
2016-02-11 18:02:19 +01:00
Xinchen Hui
63fb2b7118
Improve the names
2016-01-25 16:00:10 +08:00
Lior Kaplan
3d5438bf7b
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Update header to PHP Version 7
Happy new year (Update copyright to 2016)
Happy new year (Update copyright to 2016)
2016-01-01 20:04:31 +02:00
Lior Kaplan
ed35de784f
Merge branch 'PHP-5.6' into PHP-7.0
...
* PHP-5.6:
Happy new year (Update copyright to 2016)
2016-01-01 19:48:25 +02:00
Lior Kaplan
49493a2dcf
Happy new year (Update copyright to 2016)
2016-01-01 19:21:47 +02:00
Dmitry Stogov
b3d0178915
Rearrange code to enable inner precedure inference
2015-12-24 19:05:27 +03:00
Dmitry Stogov
f243aaf985
Added e-SSA based DFA optimisation framework (incomplete)
2015-12-11 17:24:55 +03:00
Dmitry Stogov
d2597ad20b
Improved optimizer dubugging facility
2015-12-09 14:52:00 +03:00
Dmitry Stogov
b3393baa5d
Refactored CFG based optimization using new CFG representation.
...
Squashed commit of the following:
commit 907533390678f58eac738040ef62a40788048bef
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 21:25:28 2015 +0300
cleanup
commit 82f7e6f5bb434f12e9fdf45f597be351527f383c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 21:22:01 2015 +0300
Update build system
commit 8fd83d843fde3f486692de4e2c6b7d64d4192704
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 20:50:32 2015 +0300
Reachable blocks can't be empty
commit 5822a36269833930a35cb3547222357118b11310
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 19:11:02 2015 +0300
added missing constraints
commit 2d0c00b243479924de0260ae8d80d624c36994a3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 19:03:12 2015 +0300
optimization
commit 29d1e5eb210c51b052cac4d6c232aaa2c724dbbb
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 18:34:11 2015 +0300
Added missing optimization patterns
commit 38dd3b3f2459f5193c742633213f41d78326ea28
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 17:47:06 2015 +0300
zend_optimize_block() refactoring
commit 3dc97bd1f6d433dff0617338382347b6d0c08f84
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 14:30:32 2015 +0300
We don't use CFG back-references anymore
commit 2242c9e0aa741d287146ad43179650796f199f2d
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 14:16:03 2015 +0300
Consistent naming
commit 64f2856716069390ed7703ac88905cebf5e04023
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 13:29:32 2015 +0300
Optimization and separate building of direct CFG from predecessrs calculation
commit 9389be4869b13ec45df5dbd443015d2ac539a347
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 10:44:19 2015 +0300
Use CFG without back references (incomplete, but works)
commit 3d3ecd4b883959cf7b86c33622183295f913924e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Nov 20 00:50:09 2015 +0300
Fixed iteration in reverse order
commit 52f7fde0c3dfa4b4591519828ebdb238c2377936
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Nov 19 18:35:09 2015 +0300
Separate debugging code into zend_dump.c
commit 4193a039ea96bae41baf97c6e458f419e8dbf9c5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Nov 19 17:22:04 2015 +0300
Remove unused code
commit 4228fdc57d8d120e1dad4e4d44045fa1a6f06fe0
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Nov 19 17:21:20 2015 +0300
Remove dead live-ranges only on assembling basic blocks
commit 9a4a7966edf19b92678876f85565700694205598
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Nov 19 15:26:29 2015 +0300
New CFG representation (incomplete)
2015-11-20 22:06:36 +03:00
Dmitry Stogov
854e8ebb4f
Move JMPZNZ L,L; L: JMPZ L+1; L: JMPNZ L+1 optimization patterns from zend_jmp_optimization() into zend_optimize_block() because the value of Tsource in zend_jmp_optimization() is inconsistent.
...
Fixed compilation warnings.
2015-11-17 21:07:01 +03:00
Dmitry Stogov
7de190898d
cleanup
2015-11-17 11:24:16 +03:00
Dmitry Stogov
843c165735
Don't undo/redo "pass two" for jump targets in opcache optimizer.
2015-11-17 07:15:35 +03:00
Dmitry Stogov
09aa68b294
Break dependency between opcache and optimizer. Remove copatibility macros.
2015-11-12 02:02:24 +03:00
Dmitry Stogov
baf97b1fcc
We don't nees zend_op_array->brk_cont_array at run-time anymore.
...
Move zend_op_array->brk_cont_array into CG(context).brk_cont_array.
Use more compact zend_op_array->live_range instead of zend_op_array->brk_cont_array.
Semantic is kept unchanged.
2015-11-10 21:48:03 +03:00
Nikita Popov
99d818f1e9
Don't propagate into ops that error on non-string
...
To properly support this make update_opN_const fallible -- they
are not always called through replace_with_const.
2015-11-07 12:04:51 +01:00
Dmitry Stogov
6d681876ee
Get rid of memcpy() in MAKE_NOP()
2015-08-06 15:40:40 +03:00
Dmitry Stogov
549e8c4959
Squashed commit of the following:
...
commit 03cf871f1576f08b2348c141b209894a7bf17a86
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:31 2015 +0300
Revert "Fixed bug #62210 (Exceptions can leak temporary variables. As a part of the fix serious refactoring was done. op_array->brk_cont_array was removed, and replaced with more general and speed efficient op_array->T_liveliness. ZEND_GOTO opcode is always replaced by ZEND_JMP at compile time). (Bob, Dmitry, Laruence)"
This reverts commit 5ee8413259
.
commit 285a68227ce3d380e821a24fa389aa5239bd3fe1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:26 2015 +0300
Revert "Tuned off dubugging of live ranges"
This reverts commit 404dc93d35
.
commit 93d9d11157301ee2ec99afb6f5744b126d17f637
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:17 2015 +0300
Revert "Remove loop_var_stack"
This reverts commit b3a4c05071
.
commit ede68ebbc284aec79e3f719f2c8dbf9da6907752
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:12 2015 +0300
Revert "ZEND_SEPARATE reuses temporaries"
This reverts commit 1852f538b9
.
commit 96d8995dc1f517fb01b481736273767509f76c47
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:10 2015 +0300
Revert "Add assertion in liveliness computation"
This reverts commit ed14019e8c
.
commit 0649d7bfef152e6cc8e67b922534e9946c634d9c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:07 2015 +0300
Revert "Fixed invalid live-range detection"
This reverts commit 54f367ee2a
.
commit dfe8f3851f6b04595eb089323e3492115a59363e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:04 2015 +0300
Revert "Add test guaranteeing that loop vars are only freed after potential return type exceptions"
This reverts commit f5db5a558d
.
commit 52a94aad6f48a199358cc07f7e4f56bb73050504
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:01 2015 +0300
Revert "Fixed exception habdling on "return" statement."
This reverts commit 17c5315bdf
.
commit 6e90ad7331901711e89c2ceb2bcab5023e5cee60
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:44:58 2015 +0300
Revert "Fix too early terminated temporary range with break/cont/goto"
This reverts commit cc876c04b4
.
commit 7b766e44b1970e4031f75109c302c07ead2c05cb
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:44:55 2015 +0300
Revert "Fixed exception catching on break/continue"
This reverts commit 8c3f701eeb
.
2015-07-10 03:31:52 +03:00
Dmitry Stogov
5ee8413259
Fixed bug #62210 (Exceptions can leak temporary variables. As a part of the fix serious refactoring was done. op_array->brk_cont_array was removed, and replaced with more general and speed efficient op_array->T_liveliness. ZEND_GOTO opcode is always replaced by ZEND_JMP at compile time). (Bob, Dmitry, Laruence)
...
Squashed commit of the following:
commit 38e22106d4
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:12:19 2015 +0300
Added NEWS entry
commit 0a355935bf
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:06:32 2015 +0300
Inline function, to eliminate repeatable checks
commit d937584f3a
Merge: 0341626
32677f5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 14:35:49 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Fixed bug #70006 (cli - function with default arg = STDOUT crash output).
Fix x86 build
Fixed use after free on closure_call_leak_with_exception.phpt
Fixed test
commit 0341626ea9
Merge: 74869fa
dec35de
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 12:00:53 2015 +0300
Merge branch 'temporary_cleaning' of https://github.com/laruence/php-src into temporary_cleaning
* 'temporary_cleaning' of https://github.com/laruence/php-src :
Fixed checkpoint get
Fixed crash of invalid pointer derefer
cleanup
commit 74869fa673
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 11:45:34 2015 +0300
Fixed wrong GOTO resolution
commit dec35ded32
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 15:58:49 2015 +0800
Fixed checkpoint get
commit b0f419540a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:47:11 2015 +0300
Fixed crash of invalid pointer derefer (laruence)
commit 7a428d98ca
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:35:47 2015 +0300
Fixed identation
commit 9c3a4dce9c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:33:52 2015 +0300
Fixed invalid size
commit 653abc670b
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:29:14 2015 +0800
Fixed crash of invalid pointer derefer
commit e04500ceda
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:28:26 2015 +0800
cleanup
commit 34183e1687
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:49:46 2015 +0300
op_array->T_liveliness compression
commit 2f6ad84579
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:44:44 2015 +0300
White spaces
commit be83f115a3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:42:26 2015 +0300
Identation
commit 1f5084b990
Merge: 91b620d
1adf3df
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:41:54 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Throw TypeError for invalid callback
Fix crash when exception occurs during nested rope
Fix crash when exception is thrown during ROPE_END
Small cleanup in ternary compilation
move the define to the right place
fix ext/ldap build
Rectify information about invalid shift warning being now ArithmeticError
commit 91b620d684
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:32:04 2015 +0300
Replace GOTO by FREE/FE_FREE and JMP at compile time
commit 7052e56979
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 02:25:08 2015 +0300
Use zend_regenerate_var_liveliness_info() to regenerate information after pass two.
commit ae72b0dc67
Merge: a81c4bb
a919fe8
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 21:02:34 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Do not display EXT_TYPE_UNUSED in phpdbg opcodes
Run debug build with opcache on travis
commit a81c4bb8c6
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 20:59:34 2015 +0300
Improved algorithm. It's actually the same algorithm with second loop removed and simpler temporary data structures. The only difference may be in "re-defined" vatriable handling. Now live-range in that case started from the seconnd definition (this must be more safe).
commit 9a16810f7a
Merge: bbfbe47
001ecd3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 17:57:45 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Simplify TMP var number decoding (without HashTable)
commit bbfbe470c8
Merge: 0bda4ab
436b01e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 17:02:01 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Avoid dangerous optimization
Fixed JMPZNZ instruction printing
Attempt at falling back on ldap_find_control for Mac OS
commit 0bda4abea7
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 16:05:33 2015 +0300
Fixed live-range construction for OP_DATA opcode
Added comments about algorithm assumtions
commit 521ad9df98
Merge: 4398dab
a09dcb0
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 14:54:15 2015 +0200
Merge branch 'master' of https://github.com/php/php-src into temporary_cleaning
commit 4398dab82f
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 13:51:27 2015 +0200
Add a few phpt tests related to temporary cleaning
commit 739656f83f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 14:28:49 2015 +0300
Fixed Zend/tests/foreach_004.phpt failure (FE_FETCH shouldn't be included into TMP vatriablr live range)
commit 3df462a2bc
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 13:41:02 2015 +0300
Improve data layout (reduce the op_array structure size on 64-bit systems)
commit 883b73c56e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 13:28:45 2015 +0300
Removed op_array->brk_cont_array
commit ae5e58b598
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 04:22:58 2015 +0200
Fix bug with brk_cont variable free / free loop vars via temporary liveliness info
commit b4223ca627
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 04:07:07 2015 +0200
Fix bugs / cleanup fixes
commit ea33189d22
Author: Xinchen Hui <laruence@gmail.com>
Date: Sun Jul 5 20:58:38 2015 +0800
Removed useless TsTop
commit 1dbb007e4a
Merge: 550bbf8
3a8af24
Author: Xinchen Hui <laruence@gmail.com>
Date: Sat Jul 4 15:06:44 2015 +0800
Merge branch 'temporary_cleaning' of https://github.com/dstogov/php-src into temporary_cleaning
commit 3a8af24529
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 16:15:36 2015 +0300
More exceptions from regular liveliness analyses (with explanation in comments).
Mark old "unexplained" exceptions with ???.
commit ba721efa2c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 14:16:09 2015 +0300
Print list of live temp variables (at least for internal debugging)
commit 8d1f88fe91
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 13:31:56 2015 +0300
Use op_array->T_liveliness to free incomplete ropes and restore error_reporting level on exception
commit 80c1d0d779
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 11:05:39 2015 +0300
Don't keep empty T_liveliness
commit 501ae8aaac
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 2 22:31:48 2015 +0300
Reverted changes to Zend/zend_arena.h.
Reuse CG(arena) instead of creating a new one.
commit a4fce36907
Merge: 6ff7246
fd0fcce
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 2 22:01:42 2015 +0300
Merge branch 'temporary_cleaning' of github.com:bwoebi/php-src into temporary_cleaning
* 'temporary_cleaning' of github.com:bwoebi/php-src:
Fix remaining issues with compacted temporaries
Fix regression from last commit (+1 ?!)
Fix off-by-one (opcache may remove last ZEND_RETURN)
Speed algorithm up, more fail safety when reusing temporaries
Dumb bug in opcode.c (forgot to update Ts[i])
Fix opcache support
Exempt ROPE temporaries from freeing
Hmm, we need temporary info for all the opcodes
Add opcache support for cleaning in optimization step (Opcache seems to have a few unrelated issues which blow up together with that patch)
Add proper temporary cleaning upon frame abortion
Fix arena on small sizes (size < sizeof(zend_arena))
commit fd0fcce811
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jul 2 20:00:33 2015 +0200
Fix remaining issues with compacted temporaries
commit 427dc58bbb
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 22:49:12 2015 +0200
Fix regression from last commit (+1 ?!)
commit 1adcf56a6e
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 22:17:07 2015 +0200
Fix off-by-one (opcache may remove last ZEND_RETURN)
commit 25b231b784
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 20:59:24 2015 +0200
Speed algorithm up, more fail safety when reusing temporaries
commit 22d9d05350
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 16:48:46 2015 +0200
Dumb bug in opcode.c (forgot to update Ts[i])
commit 6538269bfa
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 13:05:52 2015 +0200
Fix opcache support
commit 333a7c4a88
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Sat Jun 27 22:40:21 2015 +0200
Exempt ROPE temporaries from freeing
commit 02585f7708
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 16:20:55 2015 +0200
Hmm, we need temporary info for all the opcodes
commit cbcaedbd78
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 01:04:09 2015 +0200
Add opcache support for cleaning in optimization step
(Opcache seems to have a few unrelated issues which blow up together with that patch)
commit fef649f406
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 01:02:27 2015 +0200
Add proper temporary cleaning upon frame abortion
commit 1cec2e7271
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jun 25 23:33:21 2015 +0200
Fix arena on small sizes (size < sizeof(zend_arena))
2015-07-07 15:41:12 +03:00
Xinchen Hui
84d9426730
Fixed bug #69315
2015-03-27 17:50:36 +08:00
Dmitry Stogov
6289f7e52f
Executor cleanup: fix GOTO and SWITCH VMs, remove aility to build additional PHP-5.0 compatible VM, hide executor implementation details.
2015-03-12 20:39:04 +03:00
Xinchen Hui
a1d9ceac7a
Fixed annoying warnings
2015-01-29 11:59:37 +08:00
Xinchen Hui
fc33f52d8c
bump year
2015-01-15 23:27:30 +08:00
Xinchen Hui
0579e8278d
bump year
2015-01-15 23:26:37 +08:00
Anatol Belski
bdeb220f48
first shot remove TSRMLS_* things
2014-12-13 23:06:14 +01:00
Dmitry Stogov
dcfe58773e
Rename EX_VAR_2() into ZEND_CALL_VAR() and EX_VAR_NUM_2() into ZEND_CALL_VAR_NUM().
2014-11-28 11:11:33 +03:00
Dmitry Stogov
58a41cf795
Make QM_ASSIGN, JMP_SET and CAST return IS_TMP_VAR.
2014-09-24 01:57:40 +04:00
Dmitry Stogov
234af84c04
Refactored optimizer (compile different opimizer passes separately, instead of including *.c file)
2014-08-28 17:23:12 +04:00
Anatol Belski
6f9f0bf205
master renames phase 2
2014-08-25 19:28:33 +02:00
Xinchen Hui
e2522b4f1d
Remove old version PHP supports
2014-08-15 16:40:07 +08:00
Dmitry Stogov
b7715c7e8a
Refactored parameter passing mechanism.
...
In PHP-5.6 and below each argument passed to user function was copies on VM stack twice.
Now we always have ZEND_INIT_FCALL (or simular) opcode that pushes "call frame" on top of VM stack.
"Call frame" is actually the same zend_execute_data structure.
All the following ZEND_SEND instructions push arguments on top of the stack in a way that they directly comes into corresponding CV variables of the called frame. Extra arguments are copied at the end of stack frame (after all CV and TMP variables) on function enterance.
There are two minor incompatibilities:
1) It's not allowed to decalre functions redefining arguments e.g. "function foo($a,$a) {}".
2) func_get_arg() and func_get args() return the current value of argument and not the original value that was sent.
2014-06-30 15:43:45 +04:00
Dmitry Stogov
a4f38192ec
Use arena allocator for optimizer temporary data structures
2014-06-18 17:09:37 +04:00
Dmitry Stogov
f9b26bc39a
Cleanup (2-nd round)
2014-04-15 21:56:30 +04:00
Dmitry Stogov
5324f22f59
ext/opcache refactoring (incomplete)
2014-03-28 23:34:49 +04:00
Xinchen Hui
c081ce628f
Bump year
2014-01-03 11:08:10 +08:00
Xinchen Hui
a88543a106
Fixed bug #66298 (ext/opcache/Optimizer/zend_optimizer.c has dos-style ^M as lineend)
2013-12-30 10:51:47 +08:00
Dmitry Stogov
94816ed9bf
Fixed compatibility with php-5.2
2013-08-29 10:44:07 +04:00
Dmitry Stogov
790db9ff9b
Fixed bug #65561 (Zend Opcache on Solaris 11 x86 needs ZEND_MM_ALIGNMENT=4). (Terry Ellison)
2013-08-29 10:29:48 +04:00
Dmitry Stogov
a5b4eeb5f0
Fixed compilation warnings (issue #92 )
2013-04-29 10:32:08 +04:00
Dmitry Stogov
a62ffb72f4
Renamed Zend Optimizer+ into Zend OPcache
2013-03-19 10:32:24 +04:00
Dmitry Stogov
34d3202eda
Merge Zend Optimizer+
...
git-subtree-dir: ext/opcache
git-subtree-mainline: b1dbfb7357
git-subtree-split: 8d35170c5f
2013-03-16 00:41:46 +04:00