Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/Ad9CN
function name: (null)
number of ops: 40
compiled vars: !0 = $d, !1 = $x, !2 = $r, !3 = $z, !4 = $_
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
54 0 E > NEW $5 'RecursionDetector'
1 DO_FCALL 0
2 ASSIGN !0, $5
60 3 NEW $8 'X'
4 DO_FCALL 0
5 ASSIGN !1, $8
62 6 NEW $11 'ReflectionClass'
7 SEND_VAL_EX 'X'
8 DO_FCALL 0
9 ASSIGN !2, $11
63 10 INIT_METHOD_CALL !2, 'newLazyProxy'
11 DECLARE_LAMBDA_FUNCTION ~14 [0]
12 BIND_LEXICAL ~14, !1
13 SEND_VAL_EX ~14
14 DO_FCALL 0 $15
15 ASSIGN !3, $15
65 16 INIT_ARRAY ~19 !3
17 INIT_ARRAY ~20 ~19
18 FETCH_OBJ_W $17 !1, 'y'
19 ASSIGN_DIM $17
20 OP_DATA ~20
66 21 FETCH_OBJ_R ~21 !3, 'y'
22 ASSIGN !4, ~21
68 23 INIT_FCALL 'var_dump'
24 SEND_VAR !1
25 SEND_VAR !3
26 DO_ICALL
69 27 INIT_FCALL 'var_dump'
28 INIT_METHOD_CALL !0, 'detect'
29 SEND_VAR_EX !1
30 DO_FCALL 0 $24
31 SEND_VAR $24
32 DO_ICALL
70 33 INIT_FCALL 'var_dump'
34 INIT_METHOD_CALL !0, 'detect'
35 SEND_VAR_EX !3
36 DO_FCALL 0 $26
37 SEND_VAR $26
38 DO_ICALL
39 > RETURN 1
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/Ad9CN
function name: {closure}
number of ops: 3
compiled vars: !0 = $x
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
63 0 E > BIND_STATIC !0
1 > RETURN !0
2* > RETURN null
End of Dynamic Function 0
Class RecursionDetector:
Function detect:
Finding entry points
Branch analysis from position: 0
4 jumps found. (Code = 188) Position 1 = 8, Position 2 = 28, Position 3 = 48, Position 4 = 3
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 22
Branch analysis from position: 18
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 50
Branch analysis from position: 50
2 jumps found. (Code = 77) Position 1 = 53, Position 2 = 64
Branch analysis from position: 53
2 jumps found. (Code = 78) Position 1 = 54, Position 2 = 64
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 61, Position 2 = 63
Branch analysis from position: 61
1 jumps found. (Code = 42) Position 1 = 64
Branch analysis from position: 64
4 jumps found. (Code = 188) Position 1 = 72, Position 2 = 75, Position 3 = 78, Position 4 = 67
Branch analysis from position: 72
1 jumps found. (Code = 42) Position 1 = 78
Branch analysis from position: 78
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 75
1 jumps found. (Code = 42) Position 1 = 78
Branch analysis from position: 78
Branch analysis from position: 78
Branch analysis from position: 67
2 jumps found. (Code = 44) Position 1 = 69, Position 2 = 72
Branch analysis from position: 69
2 jumps found. (Code = 44) Position 1 = 71, Position 2 = 75
Branch analysis from position: 71
1 jumps found. (Code = 42) Position 1 = 78
Branch analysis from position: 78
Branch analysis from position: 75
Branch analysis from position: 72
Branch analysis from position: 63
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
Branch analysis from position: 64
Branch analysis from position: 64
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 43
Branch analysis from position: 39
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 50
Branch analysis from position: 50
Branch analysis from position: 48
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
2 jumps found. (Code = 44) Position 1 = 5, Position 2 = 8
Branch analysis from position: 5
2 jumps found. (Code = 44) Position 1 = 7, Position 2 = 28
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 48
Branch analysis from position: 48
Branch analysis from position: 28
Branch analysis from position: 8
filename: /in/Ad9CN
function name: detect
number of ops: 83
compiled vars: !0 = $val, !1 = $hash, !2 = $copy, !3 = $ref, !4 = $var, !5 = $recurse, !6 = $_, !7 = $k
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
7 0 E > RECV !0
8 1 GET_TYPE ~8 !0
2 > SWITCH_STRING ~8, [ 'object':->8, 'array':->28, ], ->48
9 3 > CASE ~8, 'object'
4 > JMPNZ ~9, ->8
19 5 > CASE ~8, 'array'
6 > JMPNZ ~9, ->28
7 > > JMP ->48
10 8 > INIT_FCALL 'spl_object_hash'
9 SEND_VAR !0
10 DO_ICALL $10
11 ASSIGN !1, $10
11 12 INIT_FCALL 'var_dump'
13 SEND_VAR !1
14 DO_ICALL
12 15 FETCH_OBJ_IS ~13 'obj_ref_stack'
16 ISSET_ISEMPTY_DIM_OBJ 0 ~13, !1
17 > JMPZ ~14, ->22
13 18 > INIT_FCALL 'debug_print_backtrace'
19 DO_ICALL
14 20 FREE ~8
21 > RETURN <true>
16 22 > FETCH_OBJ_W $16 'obj_ref_stack'
23 ASSIGN_DIM $16, !1
24 OP_DATA <true>
17 25 CAST 7 ~18 !0
26 ASSIGN !2, ~18
18 27 > JMP ->50
20 28 > INIT_STATIC_METHOD_CALL 'ReflectionReference', 'fromArrayElement'
29 INIT_ARRAY ~20 !4
30 SEND_VAL ~20
31 SEND_VAL 0
32 DO_FCALL 0 $21
33 INIT_METHOD_CALL $21, 'getId'
34 DO_FCALL 0 $22
35 ASSIGN !3, $22
21 36 FETCH_OBJ_IS ~24 'arr_ref_stack'
37 ISSET_ISEMPTY_DIM_OBJ 0 ~24, !3
38 > JMPZ ~25, ->43
22 39 > INIT_FCALL 'debug_print_backtrace'
40 DO_ICALL
23 41 FREE ~8
42 > RETURN <true>
25 43 > FETCH_OBJ_W $27 'arr_ref_stack'
44 ASSIGN_DIM $27, !3
45 OP_DATA <true>
26 46 ASSIGN !2, !0
27 47 > JMP ->50
29 48 > FREE ~8
49 > RETURN <false>
50 > FREE ~8
32 51 ASSIGN !5, <false>
34 52 > FE_RESET_R $31 !2, ->64
53 > > FE_FETCH_R ~32 $31, !6, ->64
54 > ASSIGN !7, ~32
35 55 INIT_METHOD_CALL 'detect'
56 CHECK_FUNC_ARG
57 FETCH_DIM_FUNC_ARG $34 !2, !7
58 SEND_FUNC_ARG $34
59 DO_FCALL 0 $35
60 > JMPZ $35, ->63
36 61 > ASSIGN !5, <true>
37 62 > JMP ->64
34 63 > > JMP ->53
64 > FE_FREE $31
41 65 GET_TYPE ~37 !0
66 > SWITCH_STRING ~37, [ 'object':->72, 'array':->75, ], ->78
42 67 > CASE ~37, 'object'
68 > JMPNZ ~38, ->72
45 69 > CASE ~37, 'array'
70 > JMPNZ ~38, ->75
71 > > JMP ->78
43 72 > FETCH_OBJ_UNSET $39 'obj_ref_stack'
73 UNSET_DIM $39, !1
44 74 > JMP ->78
46 75 > FETCH_OBJ_UNSET $40 'arr_ref_stack'
76 UNSET_DIM $40, !3
47 77 > JMP ->78
78 > FREE ~37
50 79 VERIFY_RETURN_TYPE !5
80 > RETURN !5
51 81* VERIFY_RETURN_TYPE
82* > RETURN null
End of function detect
End of class RecursionDetector.
Class X: [no user functions]
Generated using Vulcan Logic Dumper, using php 8.0.0