diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-06-05 01:53:32 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2015-06-05 01:53:32 +0300 |
commit | 7f39ee7159e500c7971da99a9cfdbdab0648e8f9 (patch) | |
tree | 2b3315361a0560038308dd0e9407ddd16645d55d /Zend/zend_execute.c | |
parent | aca6a1a1c92d426b8b08eccc3cad242798a3cf93 (diff) | |
download | php-git-7f39ee7159e500c7971da99a9cfdbdab0648e8f9.tar.gz |
Delay checks for undefined CV variables after checks for fast paths.
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r-- | Zend/zend_execute.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 340cd9b481..40868f0dc8 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -57,6 +57,7 @@ typedef int (ZEND_FASTCALL *incdec_t)(zval *); #define get_zval_ptr_ptr(op_type, node, ex, should_free, type) _get_zval_ptr_ptr(op_type, node, ex, should_free, type) #define get_zval_ptr_ptr_undef(op_type, node, ex, should_free, type) _get_zval_ptr_ptr(op_type, node, ex, should_free, type) #define get_obj_zval_ptr(op_type, node, ex, should_free, type) _get_obj_zval_ptr(op_type, node, ex, should_free, type) +#define get_obj_zval_ptr_undef(op_type, node, ex, should_free, type) _get_obj_zval_ptr_undef(op_type, node, ex, should_free, type) #define get_obj_zval_ptr_ptr(op_type, node, ex, should_free, type) _get_obj_zval_ptr_ptr(op_type, node, ex, should_free, type) /* Prototypes */ @@ -516,6 +517,15 @@ static inline zval *_get_obj_zval_ptr(int op_type, znode_op op, zend_execute_dat return get_zval_ptr(op_type, op, execute_data, should_free, type); } +static inline zval *_get_obj_zval_ptr_undef(int op_type, znode_op op, zend_execute_data *execute_data, zend_free_op *should_free, int type) +{ + if (op_type == IS_UNUSED) { + *should_free = NULL; + return &EX(This); + } + return get_zval_ptr_undef(op_type, op, execute_data, should_free, type); +} + static inline zval *_get_obj_zval_ptr_ptr(int op_type, znode_op node, zend_execute_data *execute_data, zend_free_op *should_free, int type) { if (op_type == IS_UNUSED) { |