Lines Matching refs:opline

34 	fast_add_function(&EX_T(opline->result.var).tmp_var,
49 fast_sub_function(&EX_T(opline->result.var).tmp_var,
64 fast_mul_function(&EX_T(opline->result.var).tmp_var,
79 fast_div_function(&EX_T(opline->result.var).tmp_var,
94 fast_mod_function(&EX_T(opline->result.var).tmp_var,
109 shift_left_function(&EX_T(opline->result.var).tmp_var,
124 shift_right_function(&EX_T(opline->result.var).tmp_var,
139 concat_function(&EX_T(opline->result.var).tmp_var,
154 is_identical_function(&EX_T(opline->result.var).tmp_var,
167 zval *result = &EX_T(opline->result.var).tmp_var;
184 zval *result = &EX_T(opline->result.var).tmp_var;
200 zval *result = &EX_T(opline->result.var).tmp_var;
216 zval *result = &EX_T(opline->result.var).tmp_var;
232 zval *result = &EX_T(opline->result.var).tmp_var;
250 bitwise_or_function(&EX_T(opline->result.var).tmp_var,
265 bitwise_and_function(&EX_T(opline->result.var).tmp_var,
280 bitwise_xor_function(&EX_T(opline->result.var).tmp_var,
295 boolean_xor_function(&EX_T(opline->result.var).tmp_var,
310 bitwise_not_function(&EX_T(opline->result.var).tmp_var,
323 boolean_not_function(&EX_T(opline->result.var).tmp_var,
337 …zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, B…
352 if (RETURN_VALUE_USED(opline)) {
354 EX_T(opline->result.var).var.ptr = &EG(uninitialized_zval);
355 EX_T(opline->result.var).var.ptr_ptr = NULL;
364 if (opline->extended_value == ZEND_ASSIGN_OBJ
366 …_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
372 if (RETURN_VALUE_USED(opline)) {
374 EX_T(opline->result.var).var.ptr = *zptr;
375 EX_T(opline->result.var).var.ptr_ptr = NULL;
384 if (opline->extended_value == ZEND_ASSIGN_OBJ) {
386 …ct)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
407 if (opline->extended_value == ZEND_ASSIGN_OBJ) {
408 …Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? opline->op2.lite…
412 if (RETURN_VALUE_USED(opline)) {
414 EX_T(opline->result.var).var.ptr = z;
415 EX_T(opline->result.var).var.ptr_ptr = NULL;
420 if (RETURN_VALUE_USED(opline)) {
422 EX_T(opline->result.var).var.ptr = &EG(uninitialized_zval);
423 EX_T(opline->result.var).var.ptr_ptr = NULL;
452 switch (opline->extended_value) {
469 …zend_fetch_dimension_address(&EX_T((opline+1)->op2.var), container, dim, OP2_TYPE, BP_VAR_RW TSRML…
470 …value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_…
471 var_ptr = _get_zval_ptr_ptr_var((opline+1)->op2.var, execute_data, &free_op_data2 TSRMLS_CC);
487 if (RETURN_VALUE_USED(opline)) {
489 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
494 if (opline->extended_value == ZEND_ASSIGN_DIM) {
515 if (RETURN_VALUE_USED(opline)) {
517 AI_SET_PTR(&EX_T(opline->result.var), *var_ptr);
521 if (opline->extended_value == ZEND_ASSIGN_DIM) {
602 retval = &EX_T(opline->result.var).var.ptr;
614 if (RETURN_VALUE_USED(opline)) {
630 …_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
636 if (RETURN_VALUE_USED(opline)) {
648 …ct)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
664 …Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? opline->op2.lite…
666 SELECTIVE_PZVAL_LOCK(*retval, opline);
670 if (RETURN_VALUE_USED(opline)) {
710 retval = &EX_T(opline->result.var).tmp_var;
735 …_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
753 …ct)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
771 …Z_OBJ_HT_P(object)->write_property(object, property, z_copy, ((OP2_TYPE == IS_CONST) ? opline->op2…
814 if (RETURN_VALUE_USED(opline)) {
816 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
838 if (RETURN_VALUE_USED(opline)) {
840 AI_SET_PTR(&EX_T(opline->result.var), *var_ptr);
861 if (RETURN_VALUE_USED(opline)) {
863 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
885 if (RETURN_VALUE_USED(opline)) {
887 AI_SET_PTR(&EX_T(opline->result.var), *var_ptr);
908 ZVAL_NULL(&EX_T(opline->result.var).tmp_var);
914 retval = &EX_T(opline->result.var).tmp_var;
951 ZVAL_NULL(&EX_T(opline->result.var).tmp_var);
957 retval = &EX_T(opline->result.var).tmp_var;
1004 ZVAL_LONG(&EX_T(opline->result.var).tmp_var, 1);
1034 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
1035 ce = CACHED_PTR(opline->op2.literal->cache_slot);
1037 …ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.…
1046 CACHE_PTR(opline->op2.literal->cache_slot, ce);
1049 ce = EX_T(opline->op2.var).class_entry;
1051 …, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0, ((OP1_TYPE == IS_CONST) ? opline->op1.literal : NUL…
1054 …target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK T…
1088 switch (opline->extended_value & ZEND_FETCH_TYPE_MASK) {
1102 PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr);
1112 if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
1119 AI_SET_PTR(&EX_T(opline->result.var), *retval);
1133 EX_T(opline->result.var).var.ptr_ptr = retval;
1160 …ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, (opline->extended_value & ZEND_FETCH_ARG_MASK))?BP_VAR_W:…
1181 if (OP1_TYPE == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
1182 PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
1185 …zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R)…
1204 …zend_fetch_dimension_address(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2…
1207 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1212 if (UNEXPECTED(opline->extended_value != 0)) {
1213 zval **retval_ptr = EX_T(opline->result.var).var.ptr_ptr;
1238 …zend_fetch_dimension_address(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2…
1241 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1256 …zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R)…
1270 if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, (opline->extended_value & ZEND_FETCH_ARG_MASK))) {
1276 …zend_fetch_dimension_address(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2…
1278 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1289 …zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R)…
1314 …zend_fetch_dimension_address(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2…
1317 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1320 if (UNEXPECTED(EX_T(opline->result.var).var.ptr_ptr == NULL)) {
1325 zval **retval_ptr = EX_T(opline->result.var).var.ptr_ptr;
1354 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1364 …r)->read_property(container, offset, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
1367 AI_SET_PTR(&EX_T(opline->result.var), retval);
1404 …zend_fetch_property_address(&EX_T(opline->result.var), container, property, ((OP2_TYPE == IS_CONST…
1411 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1416 if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
1417 zval **retval_ptr = EX_T(opline->result.var).var.ptr_ptr;
1422 EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr;
1423 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
1447 …zend_fetch_property_address(&EX_T(opline->result.var), container, property, ((OP2_TYPE == IS_CONST…
1454 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1476 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1486 …)->read_property(container, offset, BP_VAR_IS, ((OP2_TYPE == IS_CONST) ? opline->op2.literal : NUL…
1489 AI_SET_PTR(&EX_T(opline->result.var), retval);
1507 if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, (opline->extended_value & ZEND_FETCH_ARG_MASK))) {
1523 …zend_fetch_property_address(&EX_T(opline->result.var), container, property, ((OP2_TYPE == IS_CONST…
1530 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1562 …zend_fetch_property_address(&EX_T(opline->result.var), container, property, ((OP2_TYPE == IS_CONST…
1569 EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
1573 PZVAL_UNLOCK(*EX_T(opline->result.var).var.ptr_ptr, &free_res);
1574 if (EX_T(opline->result.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
1575 SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.var).var.ptr_ptr);
1577 PZVAL_LOCK(*EX_T(opline->result.var).var.ptr_ptr);
1594 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1600 AI_SET_PTR(&EX_T(opline->result.var), value);
1624opline)?&EX_T(opline->result.var).var.ptr:NULL, object_ptr, property_name, (opline+1)->op1_type, &…
1656opline)?&EX_T(opline->result.var).var.ptr:NULL, object_ptr, property_name, (opline+1)->op1_type, &…
1668 …zend_fetch_dimension_address(&EX_T((opline+1)->op2.var), object_ptr, dim, OP2_TYPE, BP_VAR_W TSRML…
1671 …value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_…
1672 …variable_ptr_ptr = _get_zval_ptr_ptr_var((opline+1)->op2.var, execute_data, &free_op_data2 TSRMLS_…
1674 …if (zend_assign_to_string_offset(&EX_T((opline+1)->op2.var), value, (opline+1)->op1_type TSRMLS_CC…
1675 if (RETURN_VALUE_USED(opline)) {
1679 …ZVAL_STRINGL(retval, Z_STRVAL_P(EX_T((opline+1)->op2.var).str_offset.str)+EX_T((opline+1)->op2.var…
1681 AI_SET_PTR(&EX_T(opline->result.var), retval);
1683 } else if (RETURN_VALUE_USED(opline)) {
1685 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1691 if (RETURN_VALUE_USED(opline)) {
1693 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1696 if ((opline+1)->op1_type == IS_TMP_VAR) {
1698 } else if ((opline+1)->op1_type == IS_CONST) {
1703 if (RETURN_VALUE_USED(opline)) {
1705 AI_SET_PTR(&EX_T(opline->result.var), value);
1730 if (zend_assign_to_string_offset(&EX_T(opline->op1.var), value, OP2_TYPE TSRMLS_CC)) {
1731 if (RETURN_VALUE_USED(opline)) {
1735 …ZVAL_STRINGL(retval, Z_STRVAL_P(EX_T(opline->op1.var).str_offset.str)+EX_T(opline->op1.var).str_of…
1737 AI_SET_PTR(&EX_T(opline->result.var), retval);
1739 } else if (RETURN_VALUE_USED(opline)) {
1741 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1747 if (RETURN_VALUE_USED(opline)) {
1749 AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
1759 if (RETURN_VALUE_USED(opline)) {
1761 AI_SET_PTR(&EX_T(opline->result.var), value);
1789 opline->extended_value == ZEND_RETURNS_FUNCTION &&
1790 !EX_T(opline->op2.var).var.fcall_returned_reference) {
1800 } else if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
1803 …if (OP1_TYPE == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).v…
1814 if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
1818 if (RETURN_VALUE_USED(opline)) {
1820 AI_SET_PTR(&EX_T(opline->result.var), *variable_ptr_ptr);
1855 if (UNEXPECTED(opline->opcode == ZEND_INCLUDE_OR_EVAL)) { in ZEND_VM_HELPER()
1860 EG(opline_ptr) = &EX(opline); in ZEND_VM_HELPER()
1873 EG(opline_ptr) = &EX(opline); in ZEND_VM_HELPER()
1905 if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { in ZEND_VM_HELPER()
1906 zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
1964 zend_vm_stack_push((void*)(zend_uintptr_t)opline->extended_value TSRMLS_CC); in ZEND_VM_HELPER()
1971 ulong arg_count = opline->extended_value; in ZEND_VM_HELPER()
1980 temp_variable *ret = &EX_T(opline->result.var); in ZEND_VM_HELPER()
1989 …r(opline->extended_value, ret->var.ptr, (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? &ret-… in ZEND_VM_HELPER()
1991 zend_execute_internal(execute_data, NULL, RETURN_VALUE_USED(opline) TSRMLS_CC); in ZEND_VM_HELPER()
1994 if (!RETURN_VALUE_USED(opline)) { in ZEND_VM_HELPER()
1997 } else if (RETURN_VALUE_USED(opline)) { in ZEND_VM_HELPER()
1998 EX_T(opline->result.var).var.ptr = NULL; in ZEND_VM_HELPER()
2001 temp_variable *ret = &EX_T(opline->result.var); in ZEND_VM_HELPER()
2006 if (RETURN_VALUE_USED(opline)) { in ZEND_VM_HELPER()
2014 if (RETURN_VALUE_USED(opline)) { in ZEND_VM_HELPER()
2026 EG(opline_ptr) = &EX(opline); in ZEND_VM_HELPER()
2034 MAKE_STD_ZVAL(EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
2035 ZVAL_NULL(EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
2039 …ction_name, opline->extended_value, EX_T(opline->result.var).var.ptr, &EX_T(opline->result.var).va… in ZEND_VM_HELPER()
2049 if (!RETURN_VALUE_USED(opline)) { in ZEND_VM_HELPER()
2050 zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
2052 Z_UNSET_ISREF_P(EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
2053 Z_SET_REFCOUNT_P(EX_T(opline->result.var).var.ptr, 1); in ZEND_VM_HELPER()
2054 EX_T(opline->result.var).var.fcall_returned_reference = 0; in ZEND_VM_HELPER()
2055 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; in ZEND_VM_HELPER()
2085 if (RETURN_VALUE_USED(opline) && EX_T(opline->result.var).var.ptr) { in ZEND_VM_HELPER()
2086 zval_ptr_dtor(&EX_T(opline->result.var).var.ptr); in ZEND_VM_HELPER()
2099 printf("Jumping to %d\n", opline->op1.opline_num);
2101 ZEND_VM_SET_OPCODE(opline->op1.jmp_addr);
2126 printf("Conditional jmp to %d\n", opline->op2.opline_num);
2128 ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
2156 printf("Conditional jmp to %d\n", opline->op2.opline_num);
2158 ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
2186 printf("Conditional jmp on true to %d\n", opline->extended_value);
2188 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
2192 printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
2194 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.opline_num]);
2218 Z_LVAL(EX_T(opline->result.var).tmp_var) = retval;
2219 Z_TYPE(EX_T(opline->result.var).tmp_var) = IS_BOOL;
2222 printf("Conditional jmp to %d\n", opline->op2.opline_num);
2224 ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
2249 Z_LVAL(EX_T(opline->result.var).tmp_var) = retval;
2250 Z_TYPE(EX_T(opline->result.var).tmp_var) = IS_BOOL;
2253 printf("Conditional jmp to %d\n", opline->op2.opline_num);
2255 ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
2267 zendi_zval_dtor(EX_T(opline->op1.var).tmp_var);
2269 zval_ptr_dtor(&EX_T(opline->op1.var).var.ptr);
2278 zval *tmp = &EX_T(opline->result.var).tmp_var;
2294 zval *str = &EX_T(opline->result.var).tmp_var;
2307 add_char_to_string(str, str, opline->op2.zv);
2317 zval *str = &EX_T(opline->result.var).tmp_var;
2330 add_string_to_string(str, str, opline->op2.zv);
2341 zval *str = &EX_T(opline->result.var).tmp_var;
2391 …EX_T(opline->result.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
2399 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
2400 EX_T(opline->result.var).class_entry = CACHED_PTR(opline->op2.literal->cache_slot);
2402 …EX_T(opline->result.var).class_entry = zend_fetch_class_by_name(Z_STRVAL_P(class_name), Z_STRLEN_P…
2403 CACHE_PTR(opline->op2.literal->cache_slot, EX_T(opline->result.var).class_entry);
2406 EX_T(opline->result.var).class_entry = Z_OBJCE_P(class_name);
2408 …EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_n…
2429 call_slot *call = EX(call_slots) + opline->result.num;
2453 …(call->fbc = CACHED_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, call->called_scope)) == NULL)…
2461 …, function_name_strval, function_name_strlen, ((OP2_TYPE == IS_CONST) ? (opline->op2.literal + 1) …
2469 CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, call->called_scope, call->fbc);
2508 call_slot *call = EX(call_slots) + opline->result.num;
2514 if (CACHED_PTR(opline->op1.literal->cache_slot)) {
2515 ce = CACHED_PTR(opline->op1.literal->cache_slot);
2517 …= zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.lit…
2522 zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
2524 CACHE_PTR(opline->op1.literal->cache_slot, ce);
2528 ce = EX_T(opline->op1.var).class_entry;
2530 …if (opline->extended_value == ZEND_FETCH_CLASS_PARENT || opline->extended_value == ZEND_FETCH_CLAS…
2539 CACHED_PTR(opline->op2.literal->cache_slot)) {
2540 call->fbc = CACHED_PTR(opline->op2.literal->cache_slot);
2543 (call->fbc = CACHED_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, ce))) {
2551 function_name_strval = Z_STRVAL_P(opline->op2.zv);
2552 function_name_strlen = Z_STRLEN_P(opline->op2.zv);
2571 …, function_name_strval, function_name_strlen, ((OP2_TYPE == IS_CONST) ? (opline->op2.literal + 1) …
2580 CACHE_PTR(opline->op2.literal->cache_slot, call->fbc);
2582 CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, ce, call->fbc);
2630 call_slot *call = EX(call_slots) + opline->result.num;
2633 function_name = (zval*)(opline->op2.literal+1);
2634 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
2635 call->fbc = CACHED_PTR(opline->op2.literal->cache_slot);
2638 zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv));
2640 CACHE_PTR(opline->op2.literal->cache_slot, call->fbc);
2777 call_slot *call = EX(call_slots) + opline->result.num;
2779 func_name = opline->op2.literal + 1;
2780 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
2781 call->fbc = CACHED_PTR(opline->op2.literal->cache_slot);
2786 zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv));
2788 CACHE_PTR(opline->op2.literal->cache_slot, call->fbc);
2791 CACHE_PTR(opline->op2.literal->cache_slot, call->fbc);
2812 call_slot *call = EX(call_slots) + opline->op2.num;
2814 if (CACHED_PTR(opline->op1.literal->cache_slot)) {
2815 EX(function_state).function = CACHED_PTR(opline->op1.literal->cache_slot);
2820 CACHE_PTR(opline->op1.literal->cache_slot, EX(function_state).function);
2916 if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
2917 EX_T(opline->op1.var).var.fcall_returned_reference) {
2918 } else if (EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
2997 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
3000 if (CACHED_PTR(opline->op1.literal->cache_slot)) {
3001 catch_ce = CACHED_PTR(opline->op1.literal->cache_slot);
3003 …catch_ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline
3005 CACHE_PTR(opline->op1.literal->cache_slot, catch_ce);
3017 if (opline->result.num) {
3021 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
3028 if (EX_CV(opline->op2.var)) {
3029 zval_ptr_dtor(EX_CV(opline->op2.var));
3031 …EX_CV(opline->op2.var) = (zval**)EX_CV_NUM(execute_data, EX(op_array)->last_var + opline->op2.var);
3032 *EX_CV(opline->op2.var) = EG(exception);
3034 zend_compiled_variable *cv = &CV_DEF_OF(opline->op2.var);
3036 &EG(exception), sizeof(zval *), (void**)&EX_CV(opline->op2.var));
3052 if (opline->extended_value==ZEND_DO_FCALL_BY_NAME
3053 && ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.opline_num)) {
3054 zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.opline_num);
3110 if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */
3111 if (!(opline->extended_value & ZEND_ARG_SEND_BY_REF)) {
3114 } else if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.opline_num)) {
3119 (opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
3120 EX_T(opline->op1.var).var.fcall_returned_reference &&
3121 EX_T(opline->op1.var).var.ptr) {
3122 varptr = EX_T(opline->op1.var).var.ptr;
3127 if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
3128 EX_T(opline->op1.var).var.fcall_returned_reference) &&
3138 if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
3139 !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
3140 !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.opline_num)) {
3176 if (opline->extended_value == ZEND_DO_FCALL_BY_NAME &&
3178 !ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.opline_num)) {
3196 if ((opline->extended_value == ZEND_DO_FCALL_BY_NAME)
3197 && ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.opline_num)) {
3207 zend_uint arg_num = opline->op1.num;
3212 …if (zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, NULL, opline->extended_va…
3226 …line %d and defined", opline->op1.num, class_name, space, get_active_function_name(TSRMLS_C), ptr-…
3228 …zend_error(E_WARNING, "Missing argument %u for %s%s%s()", opline->op1.num, class_name, space, get_…
3234 …zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, *param, opline->extended_valu…
3235 var_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC);
3249 zend_uint arg_num = opline->op1.num;
3256 *assignment_value = *opline->op2.zv;
3270 …zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, assignment_value, opline->ext…
3271 var_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC);
3283 zval *retval = &EX_T(opline->result.var).tmp_var;
3300 el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num,
3311 el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num,
3323 el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->extended_value,
3340 ZEND_VM_JMP(opline->op1.jmp_addr);
3350 PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
3352 is_equal_function(&EX_T(opline->result.var).tmp_var,
3366 zval_ptr_dtor(&EX_T(opline->op1.var).var.ptr);
3378 …if (UNEXPECTED((EX_T(opline->op1.var).class_entry->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_IMPLICI…
3379 if (EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_INTERFACE) {
3380 …zend_error_noreturn(E_ERROR, "Cannot instantiate interface %s", EX_T(opline->op1.var).class_entry-…
3381 } else if ((EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT) {
3382 …zend_error_noreturn(E_ERROR, "Cannot instantiate trait %s", EX_T(opline->op1.var).class_entry->nam…
3384 …zend_error_noreturn(E_ERROR, "Cannot instantiate abstract class %s", EX_T(opline->op1.var).class_e…
3388 object_init_ex(object_zval, EX_T(opline->op1.var).class_entry);
3394 if (RETURN_VALUE_USED(opline)) {
3395 AI_SET_PTR(&EX_T(opline->result.var), object_zval);
3399 ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.opline_num);
3401 call_slot *call = EX(call_slots) + opline->extended_value;
3403 if (RETURN_VALUE_USED(opline)) {
3405 AI_SET_PTR(&EX_T(opline->result.var), object_zval);
3411 call->called_scope = EX_T(opline->op1.var).class_entry;
3413 call->is_ctor_result_used = RETURN_VALUE_USED(opline);
3476 if (!RETURN_VALUE_USED(opline) || UNEXPECTED(EG(exception) != NULL)) {
3479 AI_SET_PTR(&EX_T(opline->result.var), retval);
3496 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
3497 c = CACHED_PTR(opline->op2.literal->cache_slot);
3498 …} else if ((c = zend_quick_get_constant(opline->op2.literal + 1, opline->extended_value TSRMLS_CC)…
3499 if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
3500 … char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv));
3502 actual = Z_STRVAL_P(opline->op2.zv);
3508 …ZVAL_STRINGL(&EX_T(opline->result.var).tmp_var, actual, Z_STRLEN_P(opline->op2.zv)-(actual - Z_STR…
3512 zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(opline->op2.zv));
3515 CACHE_PTR(opline->op2.literal->cache_slot, c);
3517 retval = &EX_T(opline->result.var).tmp_var;
3528 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
3529 value = CACHED_PTR(opline->op2.literal->cache_slot);
3530 ZVAL_COPY_VALUE(&EX_T(opline->result.var).tmp_var, *value);
3531 zval_copy_ctor(&EX_T(opline->result.var).tmp_var);
3534 } else if (CACHED_PTR(opline->op1.literal->cache_slot)) {
3535 ce = CACHED_PTR(opline->op1.literal->cache_slot);
3537 …= zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.lit…
3542 zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
3544 CACHE_PTR(opline->op1.literal->cache_slot, ce);
3547 ce = EX_T(opline->op1.var).class_entry;
3548 if ((value = CACHED_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, ce)) != NULL) {
3549 ZVAL_COPY_VALUE(&EX_T(opline->result.var).tmp_var, *value);
3550 zval_copy_ctor(&EX_T(opline->result.var).tmp_var);
3556 …_quick_find(&ce->constants_table, Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv)+1, Z_HASH…
3566 CACHE_PTR(opline->op2.literal->cache_slot, value);
3568 CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, ce, value);
3570 ZVAL_COPY_VALUE(&EX_T(opline->result.var).tmp_var, *value);
3571 zval_copy_ctor(&EX_T(opline->result.var).tmp_var);
3572 …} else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && strcmp(Z_STRVAL_P(opline->op2.zv), "…
3574 ZVAL_STRINGL(&EX_T(opline->result.var).tmp_var, ce->name, ce->name_length, 1);
3576 zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv));
3591 if ((OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) && opline->extended_value) {
3633 …zend_hash_index_update(Z_ARRVAL(EX_T(opline->result.var).tmp_var), hval, &expr_ptr, sizeof(zval *)…
3646 …zend_hash_quick_update(Z_ARRVAL(EX_T(opline->result.var).tmp_var), Z_STRVAL_P(offset), Z_STRLEN_P(…
3649 …zend_hash_update(Z_ARRVAL(EX_T(opline->result.var).tmp_var), "", sizeof(""), &expr_ptr, sizeof(zva…
3659 …zend_hash_next_index_insert(Z_ARRVAL(EX_T(opline->result.var).tmp_var), &expr_ptr, sizeof(zval *),…
3661 if ((OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) && opline->extended_value) {
3674 array_init(&EX_T(opline->result.var).tmp_var);
3689 zval *result = &EX_T(opline->result.var).tmp_var;
3694 if (opline->extended_value != IS_STRING) {
3700 switch (opline->extended_value) {
3763 …if (opline->extended_value != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_file…
3764 if (opline->extended_value == ZEND_INCLUDE_ONCE || opline->extended_value == ZEND_INCLUDE) {
3770 switch (opline->extended_value) {
3792 …new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INC…
3799 if (opline->extended_value == ZEND_INCLUDE_ONCE) {
3812 new_op_array = compile_filename(opline->extended_value, inc_filename TSRMLS_CC);
3833 if (RETURN_VALUE_USED(opline)) {
3834 EX_T(opline->result.var).var.ptr = NULL;
3835 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
3836 EG(return_value_ptr_ptr) = EX_T(opline->result.var).var.ptr_ptr;
3856 EG(opline_ptr) = &EX(opline);
3866 } else if (RETURN_VALUE_USED(opline)) {
3872 AI_SET_PTR(&EX_T(opline->result.var), retval);
3887 (opline->extended_value & ZEND_QUICK_SET)) {
3889 zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var);
3892 EX_CV(opline->op1.var) = NULL;
3893 } else if (EX_CV(opline->op1.var)) {
3894 zval_ptr_dtor(EX_CV(opline->op1.var));
3895 EX_CV(opline->op1.var) = NULL;
3916 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
3917 ce = CACHED_PTR(opline->op2.literal->cache_slot);
3919 …ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.…
3930 zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
3932 CACHE_PTR(opline->op2.literal->cache_slot, ce);
3935 ce = EX_T(opline->op2.var).class_entry;
3937 …(ce, Z_STRVAL_P(varname), Z_STRLEN_P(varname), ((OP1_TYPE == IS_CONST) ? opline->op1.literal : NUL…
3941 …target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK T…
4075 …Z_OBJ_HT_P(*container)->unset_property(*container, offset, ((OP2_TYPE == IS_CONST) ? opline->op2.l…
4109 (opline->extended_value & ZEND_FE_RESET_VARIABLE)) {
4117 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4129 if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
4171 …iter = ce->get_iterator(ce, array_ptr, opline->extended_value & ZEND_FE_RESET_REFERENCE TSRMLS_CC);
4185 EX_T(opline->result.var).fe.ptr = array_ptr;
4224 zend_hash_get_pointer(fe_ht, &EX_T(opline->result.var).fe.fe_pos);
4232 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4243 zval *array = EX_T(opline->op1.var).fe.ptr;
4249 if (opline->extended_value & ZEND_FE_FETCH_WITH_KEY) {
4250 key = &EX_T((opline+1)->result.var).tmp_var;
4259 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4269 zend_hash_set_pointer(fe_ht, &EX_T(opline->op1.var).fe.fe_pos);
4273 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4294 zend_hash_get_pointer(fe_ht, &EX_T(opline->op1.var).fe.fe_pos);
4300 zend_hash_set_pointer(fe_ht, &EX_T(opline->op1.var).fe.fe_pos);
4303 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4309 zend_hash_get_pointer(fe_ht, &EX_T(opline->op1.var).fe.fe_pos);
4330 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4339 ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.opline_num);
4355 if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
4358 EX_T(opline->result.var).var.ptr_ptr = value;
4362 AI_SET_PTR(&EX_T(opline->result.var), *value);
4379 (opline->extended_value & ZEND_QUICK_SET)) {
4380 if (EX_CV(opline->op1.var)) {
4381 value = EX_CV(opline->op1.var);
4383 zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var);
4407 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
4408 ce = CACHED_PTR(opline->op2.literal->cache_slot);
4410 …ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.…
4415 CACHE_PTR(opline->op2.literal->cache_slot, ce);
4418 ce = EX_T(opline->op2.var).class_entry;
4420 …, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 1, ((OP1_TYPE == IS_CONST) ? opline->op1.literal : NUL…
4425 …target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK T…
4437 if (opline->extended_value & ZEND_ISSET) {
4439 ZVAL_BOOL(&EX_T(opline->result.var).tmp_var, 1);
4441 ZVAL_BOOL(&EX_T(opline->result.var).tmp_var, 0);
4445 ZVAL_BOOL(&EX_T(opline->result.var).tmp_var, 1);
4447 ZVAL_BOOL(&EX_T(opline->result.var).tmp_var, 0);
4514 if (opline->extended_value & ZEND_ISSET) {
4534 …er)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY) != 0, ((OP2_TYPE == I…
4541 …result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_IS…
4569 if (opline->extended_value & ZEND_ISSET) {
4584 Z_TYPE(EX_T(opline->result.var).tmp_var) = IS_BOOL;
4585 if (opline->extended_value & ZEND_ISSET) {
4586 Z_LVAL(EX_T(opline->result.var).tmp_var) = result;
4588 Z_LVAL(EX_T(opline->result.var).tmp_var) = !result;
4634 Z_LVAL(EX_T(opline->result.var).tmp_var) = EG(error_reporting);
4635 Z_TYPE(EX_T(opline->result.var).tmp_var) = IS_LONG; /* shouldn't be necessary */
4637 EX(old_error_reporting) = &EX_T(opline->result.var).tmp_var;
4683 if (!EG(error_reporting) && Z_LVAL(EX_T(opline->op1.var).tmp_var) != 0) {
4685 Z_LVAL(restored_error_reporting) = Z_LVAL(EX_T(opline->op1.var).tmp_var);
4699 if (EX(old_error_reporting) == &EX_T(opline->op1.var).tmp_var) {
4716 ZVAL_COPY_VALUE(&EX_T(opline->result.var).tmp_var, value);
4718 zendi_zval_copy_ctor(EX_T(opline->result.var).tmp_var);
4722 printf("Conditional jmp to %d\n", opline->op2.opline_num);
4724 ZEND_VM_JMP(opline->op2.jmp_addr);
4744 EX_T(opline->result.var).var.ptr = value;
4745 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
4749 EX_T(opline->result.var).var.ptr = ret;
4750 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
4752 zval_copy_ctor(EX_T(opline->result.var).var.ptr);
4757 printf("Conditional jmp to %d\n", opline->op2.opline_num);
4759 ZEND_VM_JMP(opline->op2.jmp_addr);
4776 ZVAL_COPY_VALUE(&EX_T(opline->result.var).tmp_var, value);
4778 zval_copy_ctor(&EX_T(opline->result.var).tmp_var);
4796 EX_T(opline->result.var).var.ptr = value;
4797 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
4801 EX_T(opline->result.var).var.ptr = ret;
4802 EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr;
4804 zval_copy_ctor(EX_T(opline->result.var).var.ptr);
4848 …EX_T(opline->result.var).class_entry = do_bind_class(EX(op_array), opline, EG(class_table), 0 TSRM…
4858 …EX_T(opline->result.var).class_entry = do_bind_inherited_class(EX(op_array), opline, EG(class_tabl…
4869 …_hash_quick_find(EG(class_table), Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv)+1, Z_HASH…
4870 …d_hash_quick_find(EG(class_table), Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), Z_HASH_…
4872 …do_bind_inherited_class(EX(op_array), opline, EG(class_table), EX_T(opline->extended_value).class_…
4883 do_bind_function(EX(op_array), opline, EG(function_table), 0);
4893 if (++EG(ticks_count)>=opline->extended_value) {
4896 zend_ticks_function(opline->extended_value);
4914 result = instanceof_function(Z_OBJCE_P(expr), EX_T(opline->op2.var).class_entry TSRMLS_CC);
4918 ZVAL_BOOL(&EX_T(opline->result.var).tmp_var, result);
4937 zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
4941 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
4942 iface = CACHED_PTR(opline->op2.literal->cache_slot);
4944 …= zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.lit…
4949 CACHE_PTR(opline->op2.literal->cache_slot, iface);
4964 zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
4968 if (CACHED_PTR(opline->op2.literal->cache_slot)) {
4969 trait = CACHED_PTR(opline->op2.literal->cache_slot);
4971 trait = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv),
4972 Z_STRLEN_P(opline->op2.zv),
4973 opline->op2.literal + 1,
4974 opline->extended_value TSRMLS_CC);
4982 CACHE_PTR(opline->op2.literal->cache_slot, trait);
4994 zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
5117 zend_verify_abstract_class(EX_T(opline->op1.var).class_entry TSRMLS_CC);
5128 ret = zend_user_opcode_handlers[opline->opcode](ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL);
5145 ZEND_VM_DISPATCH(opline->opcode, opline);
5147 ZEND_VM_DISPATCH((zend_uchar)(ret & 0xff), opline);
5199 …ash_quick_find(EG(function_table), Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), Z_HASH_…
5207 …zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(called_scop…
5209 …zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(…
5222 var_ptr = EX_T(opline->op1.var).var.ptr;
5232 EX_T(opline->op1.var).var.ptr = var_ptr;
5290 && !(opline->extended_value == ZEND_RETURNS_FUNCTION
5291 && EX_T(opline->op1.var).var.fcall_returned_reference)
5292 && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
5376 if (RETURN_VALUE_USED(opline)) {
5379 generator->send_target = &EX_T(opline->result.var).var.ptr;
5381 EX_T(opline->result.var).var.ptr = &EG(uninitialized_zval);
5412 if ((opline->extended_value & ZEND_FAST_CALL_FROM_CATCH) &&
5415 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.opline_num]);
5418 EX(fast_ret) = opline;
5419 ZEND_VM_SET_OPCODE(opline->op1.jmp_addr);
5435 if (opline->extended_value == ZEND_FAST_RET_TO_FINALLY) {
5436 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.opline_num]);
5438 } else if (opline->extended_value == ZEND_FAST_RET_TO_CATCH) {
5440 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.opline_num]);