@@ -443,6 +443,16 @@ static PHP_FUNCTION(phpdbg_start_oplog)
443
443
PHPDBG_G (oplog_list )-> start = PHPDBG_G (oplog_cur );
444
444
}
445
445
446
+ static zend_always_inline zend_bool phpdbg_is_ignored_opcode (zend_uchar opcode ) {
447
+ return
448
+ opcode == ZEND_NOP || opcode == ZEND_OP_DATA || opcode == ZEND_FE_FREE || opcode == ZEND_FREE || opcode == ZEND_ASSERT_CHECK || opcode == ZEND_VERIFY_RETURN_TYPE
449
+ || opcode == ZEND_DECLARE_CONST || opcode == ZEND_DECLARE_CLASS || opcode == ZEND_DECLARE_INHERITED_CLASS || opcode == ZEND_DECLARE_FUNCTION
450
+ || opcode == ZEND_DECLARE_INHERITED_CLASS_DELAYED || opcode == ZEND_VERIFY_ABSTRACT_CLASS || opcode == ZEND_ADD_TRAIT || opcode == ZEND_BIND_TRAITS
451
+ || opcode == ZEND_DECLARE_ANON_CLASS || opcode == ZEND_DECLARE_ANON_INHERITED_CLASS || opcode == ZEND_FAST_RET || opcode == ZEND_TICKS
452
+ || opcode == ZEND_EXT_STMT || opcode == ZEND_EXT_FCALL_BEGIN || opcode == ZEND_EXT_FCALL_END || opcode == ZEND_EXT_NOP || opcode == ZEND_BIND_GLOBAL
453
+ ;
454
+ }
455
+
446
456
static void phpdbg_oplog_fill_executable (zend_op_array * op_array , HashTable * insert_ht , zend_bool by_opcode ) {
447
457
/* ignore RECV_* opcodes */
448
458
zend_op * cur = op_array -> opcodes + op_array -> num_args + !!(op_array -> fn_flags & ZEND_ACC_VARIADIC );
@@ -460,11 +470,8 @@ static void phpdbg_oplog_fill_executable(zend_op_array *op_array, HashTable *ins
460
470
}
461
471
462
472
for (; cur < end ; cur ++ ) {
463
- if (cur -> opcode == ZEND_NOP || cur -> opcode == ZEND_OP_DATA || cur -> opcode == ZEND_FE_FREE || cur -> opcode == ZEND_FREE || cur -> opcode == ZEND_ASSERT_CHECK || cur -> opcode == ZEND_VERIFY_RETURN_TYPE
464
- || cur -> opcode == ZEND_DECLARE_CONST || cur -> opcode == ZEND_DECLARE_CLASS || cur -> opcode == ZEND_DECLARE_INHERITED_CLASS || cur -> opcode == ZEND_DECLARE_FUNCTION
465
- || cur -> opcode == ZEND_DECLARE_INHERITED_CLASS_DELAYED || cur -> opcode == ZEND_VERIFY_ABSTRACT_CLASS || cur -> opcode == ZEND_ADD_TRAIT || cur -> opcode == ZEND_BIND_TRAITS
466
- || cur -> opcode == ZEND_DECLARE_ANON_CLASS || cur -> opcode == ZEND_DECLARE_ANON_INHERITED_CLASS || cur -> opcode == ZEND_FAST_RET || cur -> opcode == ZEND_TICKS
467
- || cur -> opcode == ZEND_EXT_STMT || cur -> opcode == ZEND_EXT_FCALL_BEGIN || cur -> opcode == ZEND_EXT_FCALL_END || cur -> opcode == ZEND_EXT_NOP || cur -> opcode == ZEND_BIND_GLOBAL ) {
473
+ zend_uchar opcode = cur -> opcode ;
474
+ if (phpdbg_is_ignored_opcode (opcode )) {
468
475
continue ;
469
476
}
470
477
@@ -474,7 +481,7 @@ static void phpdbg_oplog_fill_executable(zend_op_array *op_array, HashTable *ins
474
481
insert_idx = cur -> lineno ;
475
482
}
476
483
477
- if (cur -> opcode == ZEND_NEW && ( cur + 1 ) -> opcode == ZEND_DO_FCALL ) {
484
+ if (opcode == ZEND_NEW && cur [ 1 ]. opcode == ZEND_DO_FCALL ) {
478
485
cur ++ ;
479
486
}
480
487
@@ -492,7 +499,7 @@ static inline HashTable* phpdbg_add_empty_array(HashTable *ht, zend_string *name
492
499
return Z_ARR_P (ht_zv );
493
500
}
494
501
495
- /* {{{ proto void phpdbg_end_oplog () */
502
+ /* {{{ proto void phpdbg_get_executable () */
496
503
static PHP_FUNCTION (phpdbg_get_executable )
497
504
{
498
505
HashTable * options = NULL ;
@@ -669,6 +676,10 @@ static PHP_FUNCTION(phpdbg_end_oplog)
669
676
if (by_opcode ) {
670
677
insert_idx = cur -> op - cur -> opcodes ;
671
678
} else {
679
+ if (phpdbg_is_ignored_opcode (cur -> op -> opcode )) {
680
+ continue ;
681
+ }
682
+
672
683
insert_idx = cur -> op -> lineno ;
673
684
}
674
685
@@ -680,8 +691,7 @@ static PHP_FUNCTION(phpdbg_end_oplog)
680
691
Z_LVAL_P (num )++ ;
681
692
}
682
693
683
- cur = cur -> next ;
684
- } while (cur != NULL );
694
+ } while ((cur = cur -> next ));
685
695
}
686
696
687
697
if (!prev ) {
0 commit comments