@@ -1523,22 +1523,14 @@ ZEND_VM_HANDLER(41, ZEND_POST_DEC_STATIC_PROP, ANY, ANY, CACHE_SLOT)
1523
1523
ZEND_VM_DISPATCH_TO_HANDLER (ZEND_POST_INC_STATIC_PROP );
1524
1524
}
1525
1525
1526
- ZEND_VM_HANDLER ( 34 , ZEND_PRE_INC , VAR |CV , ANY , SPEC ( RETVAL ) )
1526
+ ZEND_VM_HELPER ( zend_pre_inc_helper , VAR |CV , ANY )
1527
1527
{
1528
1528
USE_OPLINE
1529
1529
zend_free_op free_op1 ;
1530
1530
zval * var_ptr ;
1531
1531
1532
1532
var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1533
1533
1534
- if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
1535
- fast_long_increment_function (var_ptr );
1536
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
1537
- ZVAL_COPY_VALUE (EX_VAR (opline -> result .var ), var_ptr );
1538
- }
1539
- ZEND_VM_NEXT_OPCODE ();
1540
- }
1541
-
1542
1534
if (OP1_TYPE == IS_VAR && UNEXPECTED (Z_ISERROR_P (var_ptr ))) {
1543
1535
if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
1544
1536
ZVAL_NULL (EX_VAR (opline -> result .var ));
@@ -1572,7 +1564,7 @@ ZEND_VM_HANDLER(34, ZEND_PRE_INC, VAR|CV, ANY, SPEC(RETVAL))
1572
1564
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1573
1565
}
1574
1566
1575
- ZEND_VM_HANDLER ( 35 , ZEND_PRE_DEC , VAR |CV , ANY , SPEC (RETVAL ))
1567
+ ZEND_VM_HOT_HANDLER ( 34 , ZEND_PRE_INC , VAR |CV , ANY , SPEC (RETVAL ))
1576
1568
{
1577
1569
USE_OPLINE
1578
1570
zend_free_op free_op1 ;
@@ -1581,13 +1573,24 @@ ZEND_VM_HANDLER(35, ZEND_PRE_DEC, VAR|CV, ANY, SPEC(RETVAL))
1581
1573
var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1582
1574
1583
1575
if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
1584
- fast_long_decrement_function (var_ptr );
1576
+ fast_long_increment_function (var_ptr );
1585
1577
if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
1586
1578
ZVAL_COPY_VALUE (EX_VAR (opline -> result .var ), var_ptr );
1587
1579
}
1588
1580
ZEND_VM_NEXT_OPCODE ();
1589
1581
}
1590
1582
1583
+ ZEND_VM_DISPATCH_TO_HELPER (zend_pre_inc_helper );
1584
+ }
1585
+
1586
+ ZEND_VM_HELPER (zend_pre_dec_helper , VAR |CV , ANY )
1587
+ {
1588
+ USE_OPLINE
1589
+ zend_free_op free_op1 ;
1590
+ zval * var_ptr ;
1591
+
1592
+ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1593
+
1591
1594
if (OP1_TYPE == IS_VAR && UNEXPECTED (Z_ISERROR_P (var_ptr ))) {
1592
1595
if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
1593
1596
ZVAL_NULL (EX_VAR (opline -> result .var ));
@@ -1622,7 +1625,7 @@ ZEND_VM_HANDLER(35, ZEND_PRE_DEC, VAR|CV, ANY, SPEC(RETVAL))
1622
1625
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1623
1626
}
1624
1627
1625
- ZEND_VM_HANDLER ( 36 , ZEND_POST_INC , VAR |CV , ANY )
1628
+ ZEND_VM_HOT_HANDLER ( 35 , ZEND_PRE_DEC , VAR |CV , ANY , SPEC ( RETVAL ) )
1626
1629
{
1627
1630
USE_OPLINE
1628
1631
zend_free_op free_op1 ;
@@ -1631,11 +1634,24 @@ ZEND_VM_HANDLER(36, ZEND_POST_INC, VAR|CV, ANY)
1631
1634
var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1632
1635
1633
1636
if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
1634
- ZVAL_LONG (EX_VAR (opline -> result .var ), Z_LVAL_P (var_ptr ));
1635
- fast_long_increment_function (var_ptr );
1637
+ fast_long_decrement_function (var_ptr );
1638
+ if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
1639
+ ZVAL_COPY_VALUE (EX_VAR (opline -> result .var ), var_ptr );
1640
+ }
1636
1641
ZEND_VM_NEXT_OPCODE ();
1637
1642
}
1638
1643
1644
+ ZEND_VM_DISPATCH_TO_HELPER (zend_pre_dec_helper );
1645
+ }
1646
+
1647
+ ZEND_VM_HELPER (zend_post_inc_helper , VAR |CV , ANY )
1648
+ {
1649
+ USE_OPLINE
1650
+ zend_free_op free_op1 ;
1651
+ zval * var_ptr ;
1652
+
1653
+ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1654
+
1639
1655
if (OP1_TYPE == IS_VAR && UNEXPECTED (Z_ISERROR_P (var_ptr ))) {
1640
1656
ZVAL_NULL (EX_VAR (opline -> result .var ));
1641
1657
ZEND_VM_NEXT_OPCODE ();
@@ -1666,7 +1682,7 @@ ZEND_VM_HANDLER(36, ZEND_POST_INC, VAR|CV, ANY)
1666
1682
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1667
1683
}
1668
1684
1669
- ZEND_VM_HANDLER ( 37 , ZEND_POST_DEC , VAR |CV , ANY )
1685
+ ZEND_VM_HOT_HANDLER ( 36 , ZEND_POST_INC , VAR |CV , ANY )
1670
1686
{
1671
1687
USE_OPLINE
1672
1688
zend_free_op free_op1 ;
@@ -1676,10 +1692,21 @@ ZEND_VM_HANDLER(37, ZEND_POST_DEC, VAR|CV, ANY)
1676
1692
1677
1693
if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
1678
1694
ZVAL_LONG (EX_VAR (opline -> result .var ), Z_LVAL_P (var_ptr ));
1679
- fast_long_decrement_function (var_ptr );
1695
+ fast_long_increment_function (var_ptr );
1680
1696
ZEND_VM_NEXT_OPCODE ();
1681
1697
}
1682
1698
1699
+ ZEND_VM_DISPATCH_TO_HELPER (zend_post_inc_helper );
1700
+ }
1701
+
1702
+ ZEND_VM_HELPER (zend_post_dec_helper , VAR |CV , ANY )
1703
+ {
1704
+ USE_OPLINE
1705
+ zend_free_op free_op1 ;
1706
+ zval * var_ptr ;
1707
+
1708
+ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1709
+
1683
1710
if (OP1_TYPE == IS_VAR && UNEXPECTED (Z_ISERROR_P (var_ptr ))) {
1684
1711
ZVAL_NULL (EX_VAR (opline -> result .var ));
1685
1712
ZEND_VM_NEXT_OPCODE ();
@@ -1710,6 +1737,23 @@ ZEND_VM_HANDLER(37, ZEND_POST_DEC, VAR|CV, ANY)
1710
1737
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1711
1738
}
1712
1739
1740
+ ZEND_VM_HOT_HANDLER (37 , ZEND_POST_DEC , VAR |CV , ANY )
1741
+ {
1742
+ USE_OPLINE
1743
+ zend_free_op free_op1 ;
1744
+ zval * var_ptr ;
1745
+
1746
+ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
1747
+
1748
+ if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
1749
+ ZVAL_LONG (EX_VAR (opline -> result .var ), Z_LVAL_P (var_ptr ));
1750
+ fast_long_decrement_function (var_ptr );
1751
+ ZEND_VM_NEXT_OPCODE ();
1752
+ }
1753
+
1754
+ ZEND_VM_DISPATCH_TO_HELPER (zend_post_dec_helper );
1755
+ }
1756
+
1713
1757
ZEND_VM_HANDLER (136 , ZEND_ECHO , CONST |TMPVAR |CV , ANY )
1714
1758
{
1715
1759
USE_OPLINE
@@ -8996,23 +9040,6 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_INC, (op1_info == MAY_BE_LONG), ZEND_PRE_
8996
9040
ZEND_VM_NEXT_OPCODE ();
8997
9041
}
8998
9042
8999
- ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_PRE_INC , (op1_info == (MAY_BE_LONG |MAY_BE_DOUBLE )), ZEND_PRE_INC_LONG_OR_DOUBLE , CV , ANY , SPEC (RETVAL ))
9000
- {
9001
- USE_OPLINE
9002
- zval * var_ptr ;
9003
-
9004
- var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
9005
- if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
9006
- fast_long_increment_function (var_ptr );
9007
- } else {
9008
- Z_DVAL_P (var_ptr )++ ;
9009
- }
9010
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
9011
- ZVAL_COPY_VALUE (EX_VAR (opline -> result .var ), var_ptr );
9012
- }
9013
- ZEND_VM_NEXT_OPCODE ();
9014
- }
9015
-
9016
9043
ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_PRE_DEC , (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG ), ZEND_PRE_DEC_LONG_NO_OVERFLOW , CV , ANY , SPEC (RETVAL ))
9017
9044
{
9018
9045
USE_OPLINE
@@ -9039,23 +9066,6 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_DEC, (op1_info == MAY_BE_LONG), ZEND_PRE_
9039
9066
ZEND_VM_NEXT_OPCODE ();
9040
9067
}
9041
9068
9042
- ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_PRE_DEC , (op1_info == (MAY_BE_LONG |MAY_BE_DOUBLE )), ZEND_PRE_DEC_LONG_OR_DOUBLE , CV , ANY , SPEC (RETVAL ))
9043
- {
9044
- USE_OPLINE
9045
- zval * var_ptr ;
9046
-
9047
- var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
9048
- if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
9049
- fast_long_decrement_function (var_ptr );
9050
- } else {
9051
- Z_DVAL_P (var_ptr )-- ;
9052
- }
9053
- if (UNEXPECTED (RETURN_VALUE_USED (opline ))) {
9054
- ZVAL_COPY_VALUE (EX_VAR (opline -> result .var ), var_ptr );
9055
- }
9056
- ZEND_VM_NEXT_OPCODE ();
9057
- }
9058
-
9059
9069
ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_POST_INC , (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG ), ZEND_POST_INC_LONG_NO_OVERFLOW , CV , ANY )
9060
9070
{
9061
9071
USE_OPLINE
@@ -9078,22 +9088,6 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_INC, (op1_info == MAY_BE_LONG), ZEND_POS
9078
9088
ZEND_VM_NEXT_OPCODE ();
9079
9089
}
9080
9090
9081
- ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_POST_INC , (op1_info == (MAY_BE_LONG |MAY_BE_DOUBLE )), ZEND_POST_INC_LONG_OR_DOUBLE , CV , ANY )
9082
- {
9083
- USE_OPLINE
9084
- zval * var_ptr ;
9085
-
9086
- var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
9087
- if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
9088
- ZVAL_LONG (EX_VAR (opline -> result .var ), Z_LVAL_P (var_ptr ));
9089
- fast_long_increment_function (var_ptr );
9090
- } else {
9091
- ZVAL_DOUBLE (EX_VAR (opline -> result .var ), Z_DVAL_P (var_ptr ));
9092
- Z_DVAL_P (var_ptr )++ ;
9093
- }
9094
- ZEND_VM_NEXT_OPCODE ();
9095
- }
9096
-
9097
9091
ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_POST_DEC , (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG ), ZEND_POST_DEC_LONG_NO_OVERFLOW , CV , ANY )
9098
9092
{
9099
9093
USE_OPLINE
@@ -9116,22 +9110,6 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_DEC, (op1_info == MAY_BE_LONG), ZEND_POS
9116
9110
ZEND_VM_NEXT_OPCODE ();
9117
9111
}
9118
9112
9119
- ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_POST_DEC , (op1_info == (MAY_BE_LONG |MAY_BE_DOUBLE )), ZEND_POST_DEC_LONG_OR_DOUBLE , CV , ANY )
9120
- {
9121
- USE_OPLINE
9122
- zval * var_ptr ;
9123
-
9124
- var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
9125
- if (EXPECTED (Z_TYPE_P (var_ptr ) == IS_LONG )) {
9126
- ZVAL_LONG (EX_VAR (opline -> result .var ), Z_LVAL_P (var_ptr ));
9127
- fast_long_decrement_function (var_ptr );
9128
- } else {
9129
- ZVAL_DOUBLE (EX_VAR (opline -> result .var ), Z_DVAL_P (var_ptr ));
9130
- Z_DVAL_P (var_ptr )-- ;
9131
- }
9132
- ZEND_VM_NEXT_OPCODE ();
9133
- }
9134
-
9135
9113
ZEND_VM_HOT_TYPE_SPEC_HANDLER (ZEND_QM_ASSIGN , (op1_info == MAY_BE_DOUBLE ), ZEND_QM_ASSIGN_DOUBLE , CONST |TMPVARCV , ANY )
9136
9114
{
9137
9115
USE_OPLINE
0 commit comments