Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 9, Position 2 = 18
Branch analysis from position: 9
2 jumps found. (Code = 78) Position 1 = 10, Position 2 = 18
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 18
2 jumps found. (Code = 77) Position 1 = 25, Position 2 = 34
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 34
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 34
2 jumps found. (Code = 77) Position 1 = 38, Position 2 = 47
Branch analysis from position: 38
2 jumps found. (Code = 78) Position 1 = 39, Position 2 = 47
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 38
Branch analysis from position: 38
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 47
Branch analysis from position: 34
Branch analysis from position: 18
filename: /in/7rs3N
function name: (null)
number of ops: 49
compiled vars: !0 = $order, !1 = $order_item
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
41 0 E > NEW $2 'Order'
1 SEND_VAL_EX 123
2 DO_FCALL 0
3 ASSIGN !0, $2
42 4 INIT_FCALL 'callandset'
5 FETCH_OBJ_W $5 !0, 'order_items'
6 SEND_REF $5
7 DO_FCALL 0 $6
8 > FE_RESET_R $7 $6, ->18
9 > > FE_FETCH_R $7, !1, ->18
43 10 > INIT_FCALL 'printf'
11 SEND_VAL '%25d+of+%25s%0A'
44 12 FETCH_OBJ_R ~8 !1, 'quantity'
13 SEND_VAL ~8
45 14 FETCH_OBJ_R ~9 !1, 'sku'
15 SEND_VAL ~9
43 16 DO_ICALL
42 17 > JMP ->9
18 > FE_FREE $7
47 19 ECHO '---%0A'
48 20 INIT_FCALL 'callandset'
21 FETCH_OBJ_W $11 !0, 'order_items'
22 SEND_REF $11
23 DO_FCALL 0 $12
24 > FE_RESET_R $13 $12, ->34
25 > > FE_FETCH_R $13, !1, ->34
49 26 > INIT_FCALL 'printf'
27 SEND_VAL '%25d+of+%25s%0A'
50 28 FETCH_OBJ_R ~14 !1, 'quantity'
29 SEND_VAL ~14
51 30 FETCH_OBJ_R ~15 !1, 'sku'
31 SEND_VAL ~15
49 32 DO_ICALL
48 33 > JMP ->25
34 > FE_FREE $13
53 35 ECHO '---%0A'
54 36 FETCH_OBJ_R ~17 !0, 'order_items'
37 > FE_RESET_R $18 ~17, ->47
38 > > FE_FETCH_R $18, !1, ->47
55 39 > INIT_FCALL 'printf'
40 SEND_VAL '%25d+of+%25s%0A'
56 41 FETCH_OBJ_R ~19 !1, 'quantity'
42 SEND_VAL ~19
57 43 FETCH_OBJ_R ~20 !1, 'sku'
44 SEND_VAL ~20
55 45 DO_ICALL
54 46 > JMP ->38
47 > FE_FREE $18
58 48 > RETURN 1
Function callandset:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 8
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/7rs3N
function name: callAndSet
number of ops: 11
compiled vars: !0 = $lazy
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
27 0 E > RECV !0
28 1 INSTANCEOF !0, 'Closure'
2 > JMPZ ~1, ->8
29 3 > INIT_DYNAMIC_CALL !0
4 DO_FCALL 0 $2
5 ASSIGN ~3 !0, $2
6 QM_ASSIGN ~4 ~3
7 > JMP ->9
30 8 > QM_ASSIGN ~4 !0
9 > > RETURN ~4
31 10* > RETURN null
End of function callandset
Class OrderItem: [no user functions]
Class OrderItems:
Function get:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 8
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
filename: /in/7rs3N
function name: get
number of ops: 32
compiled vars: !0 = $order_id, !1 = $times, !2 = $item, !3 = $item2
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
9 0 E > RECV !0
10 1 BIND_STATIC !1
11 2 IS_NOT_IDENTICAL !1, 0
3 > JMPZ ~4, ->8
12 4 > INIT_FCALL 'trigger_error'
5 SEND_VAL 'If+this+happens+then+the+second+call+to+callAndSet%28%29+evaluated+the+closure+again.'
6 DO_ICALL
13 7 ASSIGN !1, 1
16 8 > NEW $7 'OrderItem'
9 DO_FCALL 0
10 ASSIGN !2, $7
17 11 ASSIGN_OBJ !2, 'order_id'
12 OP_DATA !0
18 13 ASSIGN_OBJ !2, 'sku'
14 OP_DATA 'ABC-123'
19 15 ASSIGN_OBJ !2, 'quantity'
16 OP_DATA 12
20 17 NEW $13 'OrderItem'
18 DO_FCALL 0
19 ASSIGN !3, $13
21 20 ASSIGN_OBJ !3, 'order_id'
21 OP_DATA !0
22 22 ASSIGN_OBJ !3, 'sku'
23 OP_DATA 'XYZ-987'
23 24 ASSIGN_OBJ !3, 'quantity'
25 OP_DATA 5
24 26 INIT_ARRAY ~19 !2
27 ADD_ARRAY_ELEMENT ~19 !3
28 VERIFY_RETURN_TYPE ~19
29 > RETURN ~19
25 30* VERIFY_RETURN_TYPE
31* > RETURN null
End of function get
End of class OrderItems.
Class Order:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/7rs3N
function name: __construct
number of ops: 8
compiled vars: !0 = $order_id
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
36 0 E > RECV !0
37 1 ASSIGN_OBJ 'order_id'
2 OP_DATA !0
38 3 DECLARE_LAMBDA_FUNCTION ~3 [0]
4 BIND_LEXICAL ~3, !0
5 ASSIGN_OBJ 'order_items'
6 OP_DATA ~3
39 7 > RETURN null
Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/7rs3N
function name: {closure}
number of ops: 6
compiled vars: !0 = $order_id
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
38 0 E > BIND_STATIC !0
1 INIT_STATIC_METHOD_CALL 'OrderItems', 'get'
2 SEND_VAR !0
3 DO_FCALL 0 $1
4 > RETURN $1
5* > RETURN null
End of Dynamic Function 0
End of function __construct
End of class Order.
Generated using Vulcan Logic Dumper, using php 8.0.0