]> granicus.if.org Git - php/commitdiff
A better fix(do the convertion in compile time)
authorXinchen Hui <laruence@php.net>
Mon, 10 Nov 2014 15:35:45 +0000 (23:35 +0800)
committerXinchen Hui <laruence@php.net>
Mon, 10 Nov 2014 15:35:45 +0000 (23:35 +0800)
Zend/tests/class_properties_const.phpt [new file with mode: 0644]
Zend/zend_compile.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

diff --git a/Zend/tests/class_properties_const.phpt b/Zend/tests/class_properties_const.phpt
new file mode 100644 (file)
index 0000000..ac871b5
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+Const class properties(runtime cache)
+--FILE--
+<?php
+class A {
+}
+
+$a = new A;
+
+echo "runtime\n";
+var_dump($a->{array()});
+var_dump($a->{1});
+var_dump($a->{function(){}});
+?>
+--EXPECTF--
+Notice: Array to string conversion in %sclass_properties_const.php on line %d
+runtime
+
+Notice: Undefined property: A::$Array in %sclass_properties_const.php on line %d
+NULL
+
+Notice: Undefined property: A::$1 in %sclass_properties_const.php on line %d
+NULL
+
+Catchable fatal error: Object of class Closure could not be converted to string in %sclass_properties_const.php on line %d
index babf39ff4039c7a7413fcc1c474a901945b2e5ac..d66ed5db3573484fcf016bb774109c37e1f719ed 100644 (file)
@@ -2109,7 +2109,8 @@ static zend_op *zend_delayed_compile_prop(znode *result, zend_ast *ast, uint32_t
        zend_compile_expr(&prop_node, prop_ast TSRMLS_CC);
 
        opline = zend_delayed_emit_op(result, ZEND_FETCH_OBJ_R, &obj_node, &prop_node TSRMLS_CC);
-       if (opline->op2_type == IS_CONST && Z_TYPE(CONSTANT(opline->op2.constant)) == IS_STRING) {
+       if (opline->op2_type == IS_CONST) {
+               convert_to_string(&CONSTANT(opline->op2.constant));
                zend_alloc_polymorphic_cache_slot(opline->op2.constant TSRMLS_CC);
        }
 
index 81d5cfc1e6507812befc47b38a212e41fa506cd7..9e8e628362babd6e2e2ff6cc0ee9694dbc3a01b1 100644 (file)
@@ -1326,7 +1326,6 @@ ZEND_VM_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                /* here we are sure we are dealing with an object */
                do {
                        if (OP2_TYPE == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -1430,7 +1429,6 @@ ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV
                /* here we are sure we are dealing with an object */
                do {
                        if (OP2_TYPE == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
index 07507f3b8104ad0f7eb378ada54c97c1d4abd686..8f4de2f8f6f75b5792606783609c9359258d36d8 100644 (file)
@@ -3986,7 +3986,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -4040,7 +4039,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -5380,7 +5378,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -5435,7 +5432,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -6619,7 +6615,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -6674,7 +6669,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -8583,7 +8577,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -8637,7 +8630,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -10956,7 +10948,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -11010,7 +11001,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -12226,7 +12216,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -12281,7 +12270,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -13438,7 +13426,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -13493,7 +13480,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -15267,7 +15253,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -15321,7 +15306,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -18762,7 +18746,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -18865,7 +18848,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -21100,7 +21082,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -21204,7 +21185,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -23276,7 +23256,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -23380,7 +23359,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -26712,7 +26690,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -26815,7 +26792,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -28462,7 +28438,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -28565,7 +28540,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -29870,7 +29844,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -29974,7 +29947,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -31191,7 +31163,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -31295,7 +31266,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -32999,7 +32969,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -33102,7 +33071,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -36248,7 +36216,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -36351,7 +36318,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -38416,7 +38382,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -38520,7 +38485,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -40464,7 +40428,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -40568,7 +40531,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -43625,7 +43587,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
@@ -43728,7 +43689,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
                                EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);