Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: (null)
number of ops: 19
compiled vars: !0 = $fillCupsWithWater
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
8 0 E > DECLARE_CLASS 'infinitecupboard'
23 1 DECLARE_CLASS 'infinitetap'
121 2 NEW $1 'FillCupsWithWater'
3 NEW $2 'InfiniteTap'
4 SEND_VAL_EX 14
5 DO_FCALL 0
6 SEND_VAR_NO_REF_EX $2
7 NEW $4 'InfiniteCupBoard'
8 DO_FCALL 0
9 SEND_VAR_NO_REF_EX $4
10 DO_FCALL 0
11 ASSIGN !0, $1
123 12 INIT_FCALL 'print_r'
13 INIT_DYNAMIC_CALL !0
14 SEND_VAL_EX 4
15 DO_FCALL 0 $8
16 SEND_VAR $8
17 DO_ICALL
18 > RETURN 1
Class ICupboard:
Function getnextcup:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: getNextCup
number of ops: 2
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
4 0 E > VERIFY_RETURN_TYPE
1 > RETURN null
End of function getnextcup
Function havecups:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: haveCups
number of ops: 2
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
5 0 E > VERIFY_RETURN_TYPE
1 > RETURN null
End of function havecups
End of class ICupboard.
Class InfiniteCupBoard:
Function getnextcup:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: getNextCup
number of ops: 6
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
10 0 E > INIT_STATIC_METHOD_CALL 'Cup', 'createEmpty'
1 DO_FCALL 0 $0
2 VERIFY_RETURN_TYPE $0
3 > RETURN $0
11 4* VERIFY_RETURN_TYPE
5* > RETURN null
End of function getnextcup
Function havecups:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: haveCups
number of ops: 3
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
14 0 E > > RETURN <true>
15 1* VERIFY_RETURN_TYPE
2* > RETURN null
End of function havecups
End of class InfiniteCupBoard.
Class ITap:
Function getwater:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: getWater
number of ops: 2
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
19 0 E > VERIFY_RETURN_TYPE
1 > RETURN null
End of function getwater
End of class ITap.
Class InfiniteTap:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: __construct
number of ops: 4
compiled vars: !0 = $waterVolumePerReuqest
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
26 0 E > RECV !0
27 1 ASSIGN_OBJ 'waterVolumePerReuqest'
2 OP_DATA !0
28 3 > RETURN null
End of function __construct
Function getwater:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: getWater
number of ops: 9
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
31 0 E > INIT_STATIC_METHOD_CALL 'Liquid', 'createVolume'
1 CHECK_FUNC_ARG
2 FETCH_OBJ_FUNC_ARG $0 'waterVolumePerReuqest'
3 SEND_FUNC_ARG $0
4 DO_FCALL 0 $1
5 VERIFY_RETURN_TYPE $1
6 > RETURN $1
32 7* VERIFY_RETURN_TYPE
8* > RETURN null
End of function getwater
End of class InfiniteTap.
Class Cup:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: __construct
number of ops: 7
compiled vars: !0 = $liquid, !1 = $volume
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
39 0 E > RECV !0
1 RECV_INIT !1 300
40 2 ASSIGN_OBJ 'liquid'
3 OP_DATA !0
41 4 ASSIGN_OBJ 'volume'
5 OP_DATA !1
42 6 > RETURN null
End of function __construct
Function createempty:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: createEmpty
number of ops: 9
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
45 0 E > NEW self $0
1 INIT_STATIC_METHOD_CALL 'Liquid', 'createEmpty'
2 DO_FCALL 0 $1
3 SEND_VAR_NO_REF_EX $1
4 DO_FCALL 0
5 VERIFY_RETURN_TYPE $0
6 > RETURN $0
46 7* VERIFY_RETURN_TYPE
8* > RETURN null
End of function createempty
Function fill:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 22
Branch analysis from position: 6
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 22
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: fill
number of ops: 29
compiled vars: !0 = $liquid
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
48 0 E > RECV !0
49 1 INIT_METHOD_CALL 'canAddLiquid'
2 SEND_VAR_EX !0
3 DO_FCALL 0 $1
4 TYPE_CHECK 4 $1
5 > JMPZ ~2, ->22
50 6 > NEW $3 'DomainException'
51 7 INIT_FCALL 'sprintf'
52 8 SEND_VAL 'Cannot+hold+liquid+volume.+Expected+volume%3A+%25s.+Current+volume%3A+%25s.+Provided+volume%3A+%25s.'
53 9 FETCH_OBJ_R ~4 'volume'
10 SEND_VAL ~4
54 11 FETCH_OBJ_R ~5 'liquid'
12 INIT_METHOD_CALL ~5, 'getVolume'
13 DO_FCALL 0 $6
14 SEND_VAR $6
55 15 INIT_METHOD_CALL !0, 'getVolume'
16 DO_FCALL 0 $7
17 SEND_VAR $7
51 18 DO_ICALL $8
55 19 SEND_VAR_NO_REF_EX $8
50 20 DO_FCALL 0
55 21 > THROW 0 $3
60 22 > FETCH_OBJ_R ~11 'liquid'
23 INIT_METHOD_CALL ~11, 'add'
24 SEND_VAR_EX !0
25 DO_FCALL 0 $12
26 ASSIGN_OBJ 'liquid'
27 OP_DATA $12
61 28 > RETURN null
End of function fill
Function canaddliquid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: canAddLiquid
number of ops: 13
compiled vars: !0 = $liquid
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
63 0 E > RECV !0
64 1 FETCH_OBJ_R ~1 'volume'
2 FETCH_OBJ_R ~2 'liquid'
3 INIT_METHOD_CALL ~2, 'getVolume'
4 DO_FCALL 0 $3
5 INIT_METHOD_CALL !0, 'getVolume'
6 DO_FCALL 0 $4
7 ADD ~5 $3, $4
8 IS_SMALLER_OR_EQUAL ~6 ~5, ~1
9 VERIFY_RETURN_TYPE ~6
10 > RETURN ~6
65 11* VERIFY_RETURN_TYPE
12* > RETURN null
End of function canaddliquid
End of class Cup.
Class Liquid:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: __construct
number of ops: 4
compiled vars: !0 = $volume
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
71 0 E > RECV !0
72 1 ASSIGN_OBJ 'volume'
2 OP_DATA !0
73 3 > RETURN null
End of function __construct
Function createempty:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: createEmpty
number of ops: 7
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
76 0 E > NEW self $0
1 SEND_VAL_EX 0
2 DO_FCALL 0
3 VERIFY_RETURN_TYPE $0
4 > RETURN $0
77 5* VERIFY_RETURN_TYPE
6* > RETURN null
End of function createempty
Function createvolume:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: createVolume
number of ops: 8
compiled vars: !0 = $volume
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
79 0 E > RECV !0
80 1 NEW self $1
2 SEND_VAR_EX !0
3 DO_FCALL 0
4 VERIFY_RETURN_TYPE $1
5 > RETURN $1
81 6* VERIFY_RETURN_TYPE
7* > RETURN null
End of function createvolume
Function add:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: add
number of ops: 11
compiled vars: !0 = $liquid
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
83 0 E > RECV !0
84 1 NEW self $1
2 FETCH_OBJ_R ~2 'volume'
3 FETCH_OBJ_R ~3 !0, 'volume'
4 ADD ~4 ~2, ~3
5 SEND_VAL_EX ~4
6 DO_FCALL 0
7 VERIFY_RETURN_TYPE $1
8 > RETURN $1
85 9* VERIFY_RETURN_TYPE
10* > RETURN null
End of function add
Function getvolume:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: getVolume
number of ops: 5
compiled vars: none
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
88 0 E > FETCH_OBJ_R ~0 'volume'
1 VERIFY_RETURN_TYPE ~0
2 > RETURN ~0
89 3* VERIFY_RETURN_TYPE
4* > RETURN null
End of function getvolume
End of class Liquid.
Class FillCupsWithWater:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/AD5bt
function name: __construct
number of ops: 7
compiled vars: !0 = $tap, !1 = $cupboard
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
96 0 E > RECV !0
1 RECV !1
97 2 ASSIGN_OBJ 'tap'
3 OP_DATA !0
98 4 ASSIGN_OBJ 'cupboard'
5 OP_DATA !1
99 6 > RETURN null
End of function __construct
Function __invoke:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
2 jumps found. (Code = 46) Position 1 = 26, Position 2 = 27
Branch analysis from position: 26
2 jumps found. (Code = 44) Position 1 = 28, Position 2 = 3
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 15
Branch analysis from position: 15
2 jumps found. (Code = 44) Position 1 = 19, Position 2 = 12
Branch analysis from position: 19
2 jumps found. (Code = 46) Position 1 = 26, Position 2 = 27
Branch analysis from position: 26
Branch analysis from position: 27
Branch analysis from position: 12
2 jumps found. (Code = 44) Position 1 = 19, Position 2 = 12
Branch analysis from position: 19
Branch analysis from position: 12
Branch analysis from position: 27
filename: /in/AD5bt
function name: __invoke
number of ops: 32
compiled vars: !0 = $cupsToFillCount, !1 = $filledCups, !2 = $cup, !3 = $water
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
101 0 E > RECV !0
102 1 ASSIGN !1, <array>
104 2 > JMP ->22
105 3 > FETCH_OBJ_R ~5 'cupboard'
4 INIT_METHOD_CALL ~5, 'getNextCup'
5 DO_FCALL 0 $6
6 ASSIGN !2, $6
106 7 FETCH_OBJ_R ~8 'tap'
8 INIT_METHOD_CALL ~8, 'getWater'
9 DO_FCALL 0 $9
10 ASSIGN !3, $9
108 11 > JMP ->15
109 12 > INIT_METHOD_CALL !2, 'fill'
13 SEND_VAR_EX !3
14 DO_FCALL 0
108 15 > INIT_METHOD_CALL !2, 'canAddLiquid'
16 SEND_VAR_EX !3
17 DO_FCALL 0 $12
18 > JMPNZ $12, ->12
112 19 > ASSIGN_DIM !1
20 OP_DATA !2
114 21 PRE_DEC !0
104 22 > FETCH_OBJ_R ~15 'cupboard'
23 INIT_METHOD_CALL ~15, 'haveCups'
24 DO_FCALL 0 $16
25 > JMPZ_EX ~17 $16, ->27
26 > BOOL ~17 !0
27 > > JMPNZ ~17, ->3
117 28 > VERIFY_RETURN_TYPE !1
29 > RETURN !1
118 30* VERIFY_RETURN_TYPE
31* > RETURN null
End of function __invoke
End of class FillCupsWithWater.
Generated using Vulcan Logic Dumper, using php 8.0.0