}
fe_ht = Z_OBJPROP_P(array_ptr);
pos = 0;
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
SEPARATE_ARRAY(array_ptr);
}
fe_ht = Z_ARRVAL_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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);
ZVAL_COPY_VALUE(array_ptr, array_ref);
}
fe_ht = Z_OBJPROP_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
fe_ht = Z_ARRVAL_P(array);
pos = Z_FE_POS_P(EX_VAR(opline->op1.var));
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (Z_TYPE_INFO_P(value) == IS_UNDEF) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
break;
}
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ Z_FE_POS_P(EX_VAR(opline->op1.var)) = pos + 1;
if (opline->extended_value) {
if (!p->key) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key);
}
}
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- Z_FE_POS_P(EX_VAR(opline->op1.var)) = pos + 1;
ZEND_VM_INC_OPCODE();
ZEND_VM_NEXT_OPCODE();
} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
fe_ht = Z_OBJPROP_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
- if (!p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS) {
+ if (UNEXPECTED(!p->key) ||
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
break;
}
pos++;
+ p++;
}
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
if (opline->extended_value) {
if (UNEXPECTED(!p->key)) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STRINGL(EX_VAR((opline+1)->result.var), prop_name, prop_name_len);
}
}
- ZVAL_COPY(EX_VAR(opline->result.var), value);
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (Z_TYPE_P(array) != IS_OBJECT ||
- !p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ 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 (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
fe_ht = Z_ARRVAL_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
break;
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (!p->key) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key);
}
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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;
}
}
fe_ht = Z_OBJPROP_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
- if (!p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS) {
+ if (UNEXPECTED(!p->key) ||
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
break;
}
pos++;
+ p++;
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (UNEXPECTED(!p->key)) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STRINGL(EX_VAR((opline+1)->result.var), prop_name, prop_name_len);
}
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (Z_TYPE_P(array) != IS_OBJECT ||
- !p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ 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;
}
}
}
fe_ht = Z_OBJPROP_P(array_ptr);
pos = 0;
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
SEPARATE_ARRAY(array_ptr);
}
fe_ht = Z_ARRVAL_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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);
ZVAL_COPY_VALUE(array_ptr, array_ref);
}
fe_ht = Z_OBJPROP_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
}
fe_ht = Z_OBJPROP_P(array_ptr);
pos = 0;
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
SEPARATE_ARRAY(array_ptr);
}
fe_ht = Z_ARRVAL_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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);
ZVAL_COPY_VALUE(array_ptr, array_ref);
}
fe_ht = Z_OBJPROP_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
}
fe_ht = Z_OBJPROP_P(array_ptr);
pos = 0;
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
SEPARATE_ARRAY(array_ptr);
}
fe_ht = Z_ARRVAL_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
if (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));
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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);
ZVAL_COPY_VALUE(array_ptr, array_ref);
}
fe_ht = Z_OBJPROP_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
if (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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
fe_ht = Z_ARRVAL_P(array);
pos = Z_FE_POS_P(EX_VAR(opline->op1.var));
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (Z_TYPE_INFO_P(value) == IS_UNDEF) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
break;
}
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ Z_FE_POS_P(EX_VAR(opline->op1.var)) = pos + 1;
if (opline->extended_value) {
if (!p->key) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key);
}
}
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- Z_FE_POS_P(EX_VAR(opline->op1.var)) = pos + 1;
ZEND_VM_INC_OPCODE();
ZEND_VM_NEXT_OPCODE();
} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
fe_ht = Z_OBJPROP_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_INFO_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
- if (!p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS) {
+ if (UNEXPECTED(!p->key) ||
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
break;
}
pos++;
+ p++;
}
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
if (opline->extended_value) {
if (UNEXPECTED(!p->key)) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STRINGL(EX_VAR((opline+1)->result.var), prop_name, prop_name_len);
}
}
- ZVAL_COPY(EX_VAR(opline->result.var), value);
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (Z_TYPE_P(array) != IS_OBJECT ||
- !p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ 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 (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
fe_ht = Z_ARRVAL_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
break;
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (!p->key) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STR_COPY(EX_VAR((opline+1)->result.var), p->key);
}
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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;
}
}
fe_ht = Z_OBJPROP_P(array);
pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
+ p = fe_ht->arData + pos;
while (1) {
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
/* reached end of iteration */
ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
}
- p = fe_ht->arData + pos;
value = &p->val;
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
- } else if (Z_TYPE_P(value) == IS_INDIRECT) {
+ } else if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
value = Z_INDIRECT_P(value);
- if (Z_TYPE_P(value) == IS_UNDEF) {
+ if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
pos++;
+ p++;
continue;
}
}
- if (!p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS) {
+ if (UNEXPECTED(!p->key) ||
+ EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
break;
}
pos++;
+ p++;
}
+ ZVAL_MAKE_REF(value);
+ Z_ADDREF_P(value);
+ ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
if (opline->extended_value) {
if (UNEXPECTED(!p->key)) {
ZVAL_LONG(EX_VAR((opline+1)->result.var), p->h);
ZVAL_STRINGL(EX_VAR((opline+1)->result.var), prop_name, prop_name_len);
}
}
- ZVAL_MAKE_REF(value);
- Z_ADDREF_P(value);
- ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(value));
while (1) {
pos++;
if (pos >= fe_ht->nNumUsed) {
pos = HT_INVALID_IDX;
break;
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (Z_TYPE_P(array) != IS_OBJECT ||
- !p->key ||
- zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
+ 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;
}
}
}
fe_ht = Z_OBJPROP_P(array_ptr);
pos = 0;
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);
SEPARATE_ARRAY(array_ptr);
}
fe_ht = Z_ARRVAL_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if (Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) {
+ 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);
ZVAL_COPY_VALUE(array_ptr, array_ref);
}
fe_ht = Z_OBJPROP_P(array_ptr);
+ p = fe_ht->arData;
while (1) {
- if (pos >= fe_ht->nNumUsed) {
+ 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));
}
- p = fe_ht->arData + pos;
- if ((Z_TYPE(p->val) != IS_UNDEF &&
- (Z_TYPE(p->val) != IS_INDIRECT ||
- Z_TYPE_P(Z_INDIRECT(p->val)) != IS_UNDEF)) &&
- (!p->key ||
- zend_check_property_access(Z_OBJ_P(array_ptr), p->key) == SUCCESS)) {
+ 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_ptr), p->key) == SUCCESS))) {
break;
}
pos++;
+ p++;
}
Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(fe_ht, pos);