@@ -1320,23 +1320,12 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1320
1320
{
1321
1321
zend_op *opline = EX(opline);
1322
1322
1323
- zval z_copy;
1324
1323
zval *z = &opline->op1.u.constant;
1325
1324
1326
- if (IS_CONST != IS_CONST &&
1327
- Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
1328
- if (IS_CONST == IS_TMP_VAR) {
1329
- INIT_PZVAL(z);
1330
- }
1331
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
1332
- zend_print_variable(&z_copy);
1333
- zval_dtor(&z_copy);
1334
- } else {
1335
- zend_print_variable(z);
1336
- }
1337
- } else {
1338
- zend_print_variable(z);
1325
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
1326
+ INIT_PZVAL(z);
1339
1327
}
1328
+ zend_print_variable(z);
1340
1329
1341
1330
ZEND_VM_NEXT_OPCODE();
1342
1331
}
@@ -4635,23 +4624,12 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4635
4624
{
4636
4625
zend_op *opline = EX(opline);
4637
4626
zend_free_op free_op1;
4638
- zval z_copy;
4639
4627
zval *z = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
4640
4628
4641
- if (IS_TMP_VAR != IS_CONST &&
4642
- Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
4643
- if (IS_TMP_VAR == IS_TMP_VAR) {
4644
- INIT_PZVAL(z);
4645
- }
4646
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
4647
- zend_print_variable(&z_copy);
4648
- zval_dtor(&z_copy);
4649
- } else {
4650
- zend_print_variable(z);
4651
- }
4652
- } else {
4653
- zend_print_variable(z);
4629
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
4630
+ INIT_PZVAL(z);
4654
4631
}
4632
+ zend_print_variable(z);
4655
4633
4656
4634
zval_dtor(free_op1.var);
4657
4635
ZEND_VM_NEXT_OPCODE();
@@ -7898,23 +7876,12 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7898
7876
{
7899
7877
zend_op *opline = EX(opline);
7900
7878
zend_free_op free_op1;
7901
- zval z_copy;
7902
7879
zval *z = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
7903
7880
7904
- if (IS_VAR != IS_CONST &&
7905
- Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
7906
- if (IS_VAR == IS_TMP_VAR) {
7907
- INIT_PZVAL(z);
7908
- }
7909
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
7910
- zend_print_variable(&z_copy);
7911
- zval_dtor(&z_copy);
7912
- } else {
7913
- zend_print_variable(z);
7914
- }
7915
- } else {
7916
- zend_print_variable(z);
7881
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
7882
+ INIT_PZVAL(z);
7917
7883
}
7884
+ zend_print_variable(z);
7918
7885
7919
7886
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
7920
7887
ZEND_VM_NEXT_OPCODE();
@@ -21823,23 +21790,12 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21823
21790
{
21824
21791
zend_op *opline = EX(opline);
21825
21792
21826
- zval z_copy;
21827
21793
zval *z = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
21828
21794
21829
- if (IS_CV != IS_CONST &&
21830
- Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
21831
- if (IS_CV == IS_TMP_VAR) {
21832
- INIT_PZVAL(z);
21833
- }
21834
- if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
21835
- zend_print_variable(&z_copy);
21836
- zval_dtor(&z_copy);
21837
- } else {
21838
- zend_print_variable(z);
21839
- }
21840
- } else {
21841
- zend_print_variable(z);
21795
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) {
21796
+ INIT_PZVAL(z);
21842
21797
}
21798
+ zend_print_variable(z);
21843
21799
21844
21800
ZEND_VM_NEXT_OPCODE();
21845
21801
}
0 commit comments