diff options
Diffstat (limited to 'Zend/zend_vm_execute.h')
| -rw-r--r-- | Zend/zend_vm_execute.h | 300 | 
1 files changed, 263 insertions, 37 deletions
| diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index bc369ae9b0..7136aa8790 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -6409,6 +6409,64 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER  	ZEND_VM_RETURN();  } +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE + +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = EX_CONSTANT(opline->op1); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_LONG) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_LONG) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} + +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE + +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = EX_CONSTANT(opline->op1); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_STRING) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_STRING) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_find(jumptable, Z_STR_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} +  static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)  {  	USE_OPLINE @@ -38305,6 +38363,64 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_STATIC_SPEC_CV_CONST_HAND  	ZEND_VM_NEXT_OPCODE();  } +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE + +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = _get_zval_ptr_cv_undef(execute_data, opline->op1.var); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_LONG) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_LONG) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} + +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE + +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = _get_zval_ptr_cv_undef(execute_data, opline->op1.var); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_STRING) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_STRING) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_find(jumptable, Z_STR_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} +  static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)  {  	USE_OPLINE @@ -49767,6 +49883,64 @@ try_instanceof:  	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();  } +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE +	zend_free_op free_op1; +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_LONG) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_LONG) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} + +static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ +	USE_OPLINE +	zend_free_op free_op1; +	zval *op, *jump_zv; +	HashTable *jumptable; + +	op = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); +	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2)); + +	if (Z_TYPE_P(op) != IS_STRING) { +		ZVAL_DEREF(op); +		if (Z_TYPE_P(op) != IS_STRING) { +			/* Wrong type, fall back to ZEND_CASE chain */ +			ZEND_VM_NEXT_OPCODE(); +		} +	} + +	jump_zv = zend_hash_find(jumptable, Z_STR_P(op)); +	if (jump_zv != NULL) { +		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv)); +		ZEND_VM_CONTINUE(); +	} else { +		/* default */ +		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); +		ZEND_VM_CONTINUE(); +	} +} +  static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)  {  	USE_OPLINE @@ -57752,6 +57926,56 @@ void zend_init_opcodes_handlers(void)  		ZEND_NULL_HANDLER,  		ZEND_NULL_HANDLER,  		ZEND_NULL_HANDLER, +		ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_LONG_SPEC_CV_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_SWITCH_STRING_SPEC_CV_CONST_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER, +		ZEND_NULL_HANDLER,  		ZEND_NULL_HANDLER,  		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,  		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER, @@ -58820,7 +59044,7 @@ void zend_init_opcodes_handlers(void)  		2257 | SPEC_RULE_OP1 | SPEC_RULE_OP2,  		2282 | SPEC_RULE_OP1 | SPEC_RULE_OP2,  		2307 | SPEC_RULE_OP1 | SPEC_RULE_OP2, -		4596, +		4646,  		2332,  		2333,  		2334, @@ -58905,9 +59129,11 @@ void zend_init_opcodes_handlers(void)  		3531 | SPEC_RULE_OP1 | SPEC_RULE_OP2,  		3556 | SPEC_RULE_OP1 | SPEC_RULE_OP2,  		3581 | SPEC_RULE_OP1 | SPEC_RULE_OP2, -		4596, +		4646,  		3606 | SPEC_RULE_OP1 | SPEC_RULE_OP2, -		4596 +		3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2, +		3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2, +		4646  	};  	zend_opcode_handlers = labels;  	zend_handlers_count = sizeof(labels) / sizeof(void*); @@ -59014,7 +59240,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3681 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59022,7 +59248,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59030,7 +59256,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3681 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59041,17 +59267,17 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  			}  			break;  		case ZEND_MUL: @@ -59059,7 +59285,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3831 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59067,7 +59293,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59075,7 +59301,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3831 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 3881 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59086,7 +59312,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 3906 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59094,7 +59320,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 3931 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 3981 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59105,7 +59331,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4006 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4056 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59113,7 +59339,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4081 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4131 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  				if (op->op1_type > op->op2_type) {  					zend_swap_operands(op);  				} @@ -59124,12 +59350,12 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4156 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4206 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4231 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4281 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  			}  			break;  		case ZEND_IS_SMALLER_OR_EQUAL: @@ -59137,70 +59363,70 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4306 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4356 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {  				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {  					break;  				} -				spec = 4381 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; +				spec = 4431 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;  			}  			break;  		case ZEND_QM_ASSIGN:  			if (op1_info == MAY_BE_DOUBLE) { -				spec = 4546 | SPEC_RULE_OP1; +				spec = 4596 | SPEC_RULE_OP1;  			} else if (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE)))) { -				spec = 4551 | SPEC_RULE_OP1; +				spec = 4601 | SPEC_RULE_OP1;  			}  			break;  		case ZEND_PRE_INC:  			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { -				spec = 4456 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4506 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			} else if (op1_info == MAY_BE_LONG) { -				spec = 4466 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4516 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) { -				spec = 4476 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4526 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			}  			break;  		case ZEND_PRE_DEC:  			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { -				spec = 4486 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4536 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			} else if (op1_info == MAY_BE_LONG) { -				spec = 4496 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4546 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) { -				spec = 4506 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL; +				spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;  			}  			break;  		case ZEND_POST_INC:  			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { -				spec = 4516 | SPEC_RULE_OP1; +				spec = 4566 | SPEC_RULE_OP1;  			} else if (op1_info == MAY_BE_LONG) { -				spec = 4521 | SPEC_RULE_OP1; +				spec = 4571 | SPEC_RULE_OP1;  			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) { -				spec = 4526 | SPEC_RULE_OP1; +				spec = 4576 | SPEC_RULE_OP1;  			}  			break;  		case ZEND_POST_DEC:  			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { -				spec = 4531 | SPEC_RULE_OP1; +				spec = 4581 | SPEC_RULE_OP1;  			} else if (op1_info == MAY_BE_LONG) { -				spec = 4536 | SPEC_RULE_OP1; +				spec = 4586 | SPEC_RULE_OP1;  			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) { -				spec = 4541 | SPEC_RULE_OP1; +				spec = 4591 | SPEC_RULE_OP1;  			}  			break;  		case ZEND_SEND_VAR_EX:  			if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) { -				spec = 4586 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG; +				spec = 4636 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG;  			}  			break;  		case ZEND_FETCH_DIM_R:  			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) { -				spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_OP2; +				spec = 4606 | SPEC_RULE_OP1 | SPEC_RULE_OP2;  			}  			break;  		case ZEND_SEND_VAR:  			if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) { -				spec = 4581 | SPEC_RULE_OP1; +				spec = 4631 | SPEC_RULE_OP1;  			}  			break;  		default: | 
