]> granicus.if.org Git - php/commit
Introduce BIND_LEXICAL
authorNikita Popov <nikic@php.net>
Tue, 29 Dec 2015 10:16:08 +0000 (11:16 +0100)
committerNikita Popov <nikic@php.net>
Tue, 29 Dec 2015 22:14:53 +0000 (23:14 +0100)
commit65e456f3649c649d8450325fc677442380911598
tree5328e908895f890e22eba0f3c6b05bd4624d161b
parent4440436821404ff3c76682726e63d1aaf381f73a
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.
16 files changed:
Zend/zend_closures.c
Zend/zend_closures.h
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_types.h
Zend/zend_variables.c
Zend/zend_variables.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c
Zend/zend_vm_opcodes.h
ext/opcache/Optimizer/zend_cfg.c
ext/opcache/Optimizer/zend_dfg.c
ext/opcache/Optimizer/zend_dump.c
ext/opcache/Optimizer/zend_inference.c
ext/opcache/Optimizer/zend_ssa.c