USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *result;
- HashTable *fe_ht;
SAVE_OPLINE();
ZEND_VM_NEXT_OPCODE();
} else if (OP1_TYPE != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
if (!Z_OBJCE_P(array_ptr)->get_iterator) {
- HashPosition pos = 0;
- Bucket *p;
-
result = EX_VAR(opline->result.var);
ZVAL_COPY_VALUE(result, array_ptr);
if (OP1_TYPE != IS_TMP_VAR) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- pos = 0;
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- FREE_OP1_IF_VAR();
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
FREE_OP1_IF_VAR();
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *array_ref;
- HashTable *fe_ht;
- HashPosition pos = 0;
- Bucket *p;
SAVE_OPLINE();
} else {
SEPARATE_ARRAY(array_ptr);
}
- fe_ht = Z_ARRVAL_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- FREE_OP1_VAR_PTR();
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
FREE_OP1_VAR_PTR();
ZEND_VM_NEXT_OPCODE();
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- FREE_OP1_VAR_PTR();
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
FREE_OP1_VAR_PTR();
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (value_type == IS_UNDEF) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
Z_FE_POS_P(array) = pos + 1;
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- }
- if (UNEXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == FAILURE)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)
+ && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (UNEXPECTED(!p->key)) {
ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)))
- ) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos;
} else {
}
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (!p->key) {
ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)
+ && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ break;
+ }
+ } else {
+ break;
}
}
- if (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
- break;
- }
pos++;
p++;
}
ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS))) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
} else {
USE_OPLINE
zval *array_ptr, *result;
- HashTable *fe_ht;
SAVE_OPLINE();
ZEND_VM_NEXT_OPCODE();
} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
if (!Z_OBJCE_P(array_ptr)->get_iterator) {
- HashPosition pos = 0;
- Bucket *p;
-
result = EX_VAR(opline->result.var);
ZVAL_COPY_VALUE(result, array_ptr);
if (IS_CONST != IS_TMP_VAR) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- pos = 0;
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {
USE_OPLINE
zval *array_ptr, *array_ref;
- HashTable *fe_ht;
- HashPosition pos = 0;
- Bucket *p;
SAVE_OPLINE();
} else {
SEPARATE_ARRAY(array_ptr);
}
- fe_ht = Z_ARRVAL_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE();
} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {
USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *result;
- HashTable *fe_ht;
SAVE_OPLINE();
ZEND_VM_NEXT_OPCODE();
} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
if (!Z_OBJCE_P(array_ptr)->get_iterator) {
- HashPosition pos = 0;
- Bucket *p;
-
result = EX_VAR(opline->result.var);
ZVAL_COPY_VALUE(result, array_ptr);
if (IS_TMP_VAR != IS_TMP_VAR) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- pos = 0;
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {
USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *array_ref;
- HashTable *fe_ht;
- HashPosition pos = 0;
- Bucket *p;
SAVE_OPLINE();
} else {
SEPARATE_ARRAY(array_ptr);
}
- fe_ht = Z_ARRVAL_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE();
} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {
USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *result;
- HashTable *fe_ht;
SAVE_OPLINE();
ZEND_VM_NEXT_OPCODE();
} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
if (!Z_OBJCE_P(array_ptr)->get_iterator) {
- HashPosition pos = 0;
- Bucket *p;
-
result = EX_VAR(opline->result.var);
ZVAL_COPY_VALUE(result, array_ptr);
if (IS_VAR != IS_TMP_VAR) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- pos = 0;
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- zval_ptr_dtor_nogc(free_op1);
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
USE_OPLINE
zend_free_op free_op1;
zval *array_ptr, *array_ref;
- HashTable *fe_ht;
- HashPosition pos = 0;
- Bucket *p;
SAVE_OPLINE();
} else {
SEPARATE_ARRAY(array_ptr);
}
- fe_ht = Z_ARRVAL_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
ZEND_VM_NEXT_OPCODE();
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (value_type == IS_UNDEF) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
Z_FE_POS_P(array) = pos + 1;
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- }
- if (UNEXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == FAILURE)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)
+ && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (UNEXPECTED(!p->key)) {
ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)))
- ) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos;
} else {
}
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ break;
+ }
+ } else {
+ break;
}
}
- break;
+ pos++;
+ p++;
}
if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
if (!p->key) {
ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
value = &p->val;
value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
- } else if (UNEXPECTED(value_type == IS_INDIRECT)) {
- value = Z_INDIRECT_P(value);
- value_type = Z_TYPE_INFO_P(value);
- if (UNEXPECTED(value_type == IS_UNDEF)) {
- pos++;
- p++;
- continue;
+ if (EXPECTED(value_type != IS_UNDEF)) {
+ if (UNEXPECTED(value_type == IS_INDIRECT)) {
+ value = Z_INDIRECT_P(value);
+ value_type = Z_TYPE_INFO_P(value);
+ if (EXPECTED(value_type != IS_UNDEF)
+ && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ break;
+ }
+ } else {
+ break;
}
}
- if (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
- break;
- }
pos++;
p++;
}
ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
}
}
- while (1) {
- pos++;
- if (pos >= fe_ht->nNumUsed) {
- pos = HT_INVALID_IDX;
- break;
- }
- p++;
- if ((EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) &&
- (UNEXPECTED(!p->key) ||
- EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS))) {
- break;
- }
+ if (++pos >= fe_ht->nNumUsed) {
+ pos = HT_INVALID_IDX;
}
EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
} else {
USE_OPLINE
zval *array_ptr, *result;
- HashTable *fe_ht;
SAVE_OPLINE();
ZEND_VM_NEXT_OPCODE();
} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
if (!Z_OBJCE_P(array_ptr)->get_iterator) {
- HashPosition pos = 0;
- Bucket *p;
-
result = EX_VAR(opline->result.var);
ZVAL_COPY_VALUE(result, array_ptr);
if (IS_CV != IS_TMP_VAR) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- pos = 0;
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {
USE_OPLINE
zval *array_ptr, *array_ref;
- HashTable *fe_ht;
- HashPosition pos = 0;
- Bucket *p;
SAVE_OPLINE();
} else {
SEPARATE_ARRAY(array_ptr);
}
- fe_ht = Z_ARRVAL_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF))) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE();
} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
}
Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
}
- fe_ht = Z_OBJPROP_P(array_ptr);
- p = fe_ht->arData;
- while (1) {
- if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
-
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
- ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
- }
- if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
- (EXPECTED(Z_TYPE(p->val) != IS_INDIRECT) ||
- (EXPECTED(Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF) &&
- EXPECTED(zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)))
- ) {
- break;
- }
- pos++;
- p++;
- }
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
} else {