diff options
author | Nikita Popov <nikic@php.net> | 2015-12-20 13:42:26 +0100 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2015-12-21 14:44:42 +0100 |
commit | 88eae43ff94ed3ba7eb663a896d65cece0113808 (patch) | |
tree | 8fc5de5446f37c5d8c3fbb224e8649fb1c4f831d /Zend/zend_vm_opcodes.h | |
parent | 1fe8a1dec9aae41ee2f8216179b33a59bccbd3eb (diff) | |
download | php-git-88eae43ff94ed3ba7eb663a896d65cece0113808.tar.gz |
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.
Diffstat (limited to 'Zend/zend_vm_opcodes.h')
-rw-r--r-- | Zend/zend_vm_opcodes.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 760b18c31c..21f48cdb2b 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -59,7 +59,6 @@ #define ZEND_VM_EXT_REF 0x00100000 #define ZEND_VM_EXT_MASK 0xff000000 #define ZEND_VM_EXT_NUM 0x01000000 -#define ZEND_VM_EXT_VAR 0x02000000 #define ZEND_VM_EXT_JMP_ADDR 0x03000000 #define ZEND_VM_EXT_DIM_OBJ 0x04000000 #define ZEND_VM_EXT_CLASS_FETCH 0x05000000 |