diff options
author | Dmitry Stogov <dmitry@zend.com> | 2021-01-11 19:26:08 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2021-01-11 19:26:08 +0300 |
commit | 65c789148b72e62d22fb23abaa1e0c97ba74c6da (patch) | |
tree | 1a5e0176a8d29fdae11267c4dced3a49bfb739be | |
parent | 91eb9a138383783371c6ec77357815e9241cd128 (diff) | |
parent | 9fc11762e588cebaf07818f320f1759b21e56391 (diff) | |
download | php-git-65c789148b72e62d22fb23abaa1e0c97ba74c6da.tar.gz |
PHP array cannot refer to EG(symbol_table) any more. Replace corresponding checks by ZEND_ASSERT().
-rw-r--r-- | Zend/zend_gc.c | 23 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 7 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 42 |
3 files changed, 20 insertions, 52 deletions
diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index bfc124719c..0546d589bf 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -740,11 +740,8 @@ tail_call: goto next; } } else if (GC_TYPE(ref) == IS_ARRAY) { - if ((zend_array*)ref != &EG(symbol_table)) { - ht = (zend_array*)ref; - } else { - goto next; - } + ZEND_ASSERT((zend_array*)ref != &EG(symbol_table)); + ht = (zend_array*)ref; } else if (GC_TYPE(ref) == IS_REFERENCE) { if (Z_REFCOUNTED(((zend_reference*)ref)->val)) { ref = Z_COUNTED(((zend_reference*)ref)->val); @@ -861,12 +858,8 @@ static void gc_mark_grey(zend_refcounted *ref, gc_stack *stack) goto next; } } else if (GC_TYPE(ref) == IS_ARRAY) { - if (((zend_array*)ref) == &EG(symbol_table)) { - GC_REF_SET_BLACK(ref); - goto next; - } else { - ht = (zend_array*)ref; - } + ZEND_ASSERT(((zend_array*)ref) != &EG(symbol_table)); + ht = (zend_array*)ref; } else if (GC_TYPE(ref) == IS_REFERENCE) { if (Z_REFCOUNTED(((zend_reference*)ref)->val)) { ref = Z_COUNTED(((zend_reference*)ref)->val); @@ -1046,12 +1039,8 @@ tail_call: goto next; } } else if (GC_TYPE(ref) == IS_ARRAY) { - if ((zend_array*)ref == &EG(symbol_table)) { - GC_REF_SET_BLACK(ref); - goto next; - } else { - ht = (zend_array*)ref; - } + ZEND_ASSERT((zend_array*)ref != &EG(symbol_table)); + ht = (zend_array*)ref; } else if (GC_TYPE(ref) == IS_REFERENCE) { if (Z_REFCOUNTED(((zend_reference*)ref)->val)) { ref = Z_COUNTED(((zend_reference*)ref)->val); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 236313a0df..3921a7eae0 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -6374,11 +6374,8 @@ ZEND_VM_C_LABEL(offset_again): } } ZEND_VM_C_LABEL(str_index_dim): - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); ZEND_VM_C_LABEL(num_index_dim): diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 856fe094c2..86edae867b 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -24360,11 +24360,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: @@ -26513,11 +26510,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: @@ -30527,11 +30521,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: @@ -41794,11 +41785,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: @@ -45240,11 +45228,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: @@ -50365,11 +50350,8 @@ offset_again: } } str_index_dim: - if (ht == &EG(symbol_table)) { - zend_delete_global_variable(key); - } else { - zend_hash_del(ht, key); - } + ZEND_ASSERT(ht != &EG(symbol_table)); + zend_hash_del(ht, key); } else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) { hval = Z_LVAL_P(offset); num_index_dim: |