Created
January 18, 2014 20:46
-
-
Save ptarjan/8496150 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[22;30;42m-------------------------- after initial translation --------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 27, spOff 0 (A::c) | |
27: String "b.php" | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<0> t0:FramePtr | |
--- bc 32, spOff 1 (A::c) | |
32: Incl | |
(04) t4:StkPtr = SpillStack t1:StkPtr, 0, "b.php" | |
(08) t6:StkPtr = InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4:StkPtr, t0:FramePtr -> B1<Catch> | |
no fallthrough | |
B1<Catch>: (preds B0) | |
(05) BeginCatch | |
(06) t5:StkPtr = SpillStack t4:StkPtr, 0 | |
(07) EndCatch t0:FramePtr, t5:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m------------------------------- after optimizing ------------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 27, spOff 0 (A::c) | |
27: String "b.php" | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<0> t0:FramePtr | |
--- bc 32, spOff 1 (A::c) | |
32: Incl | |
(04) t4:StkPtr = SpillStack t1:StkPtr, 0, "b.php" | |
(08) t6:StkPtr = InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4:StkPtr, t0:FramePtr -> B1<Catch> | |
no fallthrough | |
B1<Catch>: (preds B0) | |
(05) BeginCatch | |
(07) EndCatch t0:FramePtr, t4:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
Intervals after building intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillStack t1(%rbx):StkPtr, 0, "b.php" => t4(%rbx):StkPtr | |
6 -InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B1 | |
B1 8 BeginCatch | |
10 EndCatch t0(%rbp):FramePtr, t4(%rbx):StkPtr | |
Intervals after walking intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillStack t1(%rbx):StkPtr, 0, "b.php" => t4(%rbx):StkPtr | |
6 -InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B1 | |
B1 8 BeginCatch | |
10 EndCatch t0(%rbp):FramePtr, t4(%rbx):StkPtr | |
Splits 0 Spills 0 | |
Intervals after resolving intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillStack t1(%rbx):StkPtr, 0, "b.php" => t4(%rbx):StkPtr | |
6 -InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B1 | |
B1 8 BeginCatch | |
10 EndCatch t0(%rbp):FramePtr, t4(%rbx):StkPtr | |
[22;30;42m----------------------------- after extended alloc ----------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 27, spOff 0 (A::c) | |
27: String "b.php" | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<0> t0(%rbp):FramePtr | |
--- bc 32, spOff 1 (A::c) | |
32: Incl | |
(04) t4(%rbx):StkPtr = SpillStack t1(%rbx):StkPtr, 0, "b.php" | |
(08) t6(%rbx):StkPtr = InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4(%rbx):StkPtr, t0(%rbp):FramePtr -> B1<Catch> | |
no fallthrough | |
B1<Catch>: (preds B0) | |
(05) BeginCatch | |
(07) EndCatch t0(%rbp):FramePtr, t4(%rbx):StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m-------------------------------- after code gen -------------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 27, spOff 0 (A::c) | |
27: String "b.php" | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<0> t0(%rbp):FramePtr | |
--- bc 32, spOff 1 (A::c) | |
32: Incl | |
(04) t4(%rbx):StkPtr = SpillStack t1(%rbx):StkPtr, 0, "b.php" | |
0x8c082c0: mov byte ptr [rbx-0x8], 0xc | |
0x8c082c4: mov qword ptr [rbx-0x10], 0x8b77620 | |
0x8c082cc: add rbx, 0xfffffffffffffff0 | |
(08) t6(%rbx):StkPtr = InterpOneCF<Gen,Incl: bcOff:32, popped:1, pushed:1> t4(%rbx):StkPtr, t0(%rbp):FramePtr -> B1<Catch> | |
0x8c082d0: mov rsi, rbx | |
0x8c082d3: mov rdi, rbp | |
0x8c082d6: mov edx, 0x20 | |
0x8c082db: call 0x21d2480 <HPHP::JIT::interpOneIncl> | |
0x8c082e0: mov rbp, qword ptr [rax+0x20] | |
0x8c082e4: mov rbx, qword ptr [rax+0x10] | |
0x8c082e8: mov r10, qword ptr fs:[0xfff759b8] | |
0x8c082f1: add r10, 0x10 | |
0x8c082f5: mov qword ptr [r10], rbx | |
0x8c082f8: mov qword ptr [r10+0x10], rbp | |
0x8c082fc: xor r10d, r10d | |
0x8c082ff: mov edi, 0xd | |
0x8c08304: ret | |
no fallthrough | |
B1<Catch>: (preds B0) | |
(05) BeginCatch | |
(07) EndCatch t0(%rbp):FramePtr, t4(%rbx):StkPtr | |
0xc800108: mov rdi, qword ptr [r12+0x8] | |
0xc80010d: call 0x2004650 | |
0xc800112: ud2 | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m-------------------------- after initial translation --------------------------- | |
B0: | |
Pseudo-main at 0 (ID 0) | |
--- bc 0, spOff 0 (A::) | |
0: FPushFuncD 1 "var_dump" | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<0> t0:FramePtr | |
(05) t5:StkPtr = SpillFrame<1> t1:StkPtr, t0:FramePtr, Func(var_dump), InitNull | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(07) t7:StkPtr = SpillStack t5:StkPtr, 0, Cls(A) | |
(11) t9:StkPtr = InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7:StkPtr, t0:FramePtr -> B1<Catch> | |
-> B2 | |
B2: (preds B0) | |
--- bc 12, spOff 4 (A::) | |
12: FPassCE 0 | |
(12) t10:StkPtr = AssertStk<Cell,0> t9:StkPtr | |
--- bc 14, spOff 4 (A::) | |
14: FCall 1 | |
(13) t11:Cell = LdStack<Cell,0> t10:StkPtr | |
(15) t13:StkPtr = SpillStack t10:StkPtr, 1 | |
(18) t16:StkPtr = Call<> t13:StkPtr, 16, Func(var_dump), None:0 | |
--- bc 16, spOff 1 (A::) | |
16: PopR | |
(19) DecRefStack<Gen,0> t16:StkPtr | |
--- bc 17, spOff 0 (A::) | |
17: FPushFuncD 1 "var_dump" | |
(20) t17:StkPtr = SpillStack t16:StkPtr, 1 | |
(21) t18:StkPtr = SpillFrame<1> t17:StkPtr, t0:FramePtr, Func(var_dump), InitNull | |
--- bc 23, spOff 3 (A::) | |
23: LateBoundCls | |
(22) t19:Ctx = LdCtx<A::> t0:FramePtr | |
(23) t20:Cls = LdClsCtx t19:Ctx | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(24) t21:StkPtr = SpillStack t18:StkPtr, 0, t20:Cls | |
(28) t23:StkPtr = InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21:StkPtr, t0:FramePtr -> B3<Catch> | |
-> B4 | |
B4: (preds B2) | |
--- bc 29, spOff 4 (A::) | |
29: FPassCE 0 | |
(29) t24:StkPtr = AssertStk<Cell,0> t23:StkPtr | |
--- bc 31, spOff 4 (A::) | |
31: FCall 1 | |
(30) t25:Cell = LdStack<Cell,0> t24:StkPtr | |
(31) t26:StkPtr = SpillStack t24:StkPtr, 1 | |
(33) t28:StkPtr = Call<> t26:StkPtr, 33, Func(var_dump), None:0 | |
--- bc 33, spOff 1 (A::) | |
33: PopR | |
(34) DecRefStack<Gen,0> t28:StkPtr | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(40) ReleaseVVOrExit t0:FramePtr -> B5<Unlikely> | |
-> B7 | |
B7: (preds B4) | |
(41) DecRefThis t0:FramePtr | |
(42) StRetVal t0:FramePtr, 1 | |
(43) t31:StkPtr = RetAdjustStack t0:FramePtr | |
(47) CheckSurpriseFlags -> B9<Unlikely> | |
-> B10 | |
B10: (preds B9 B7) | |
(49) t33:RetAddr = LdRetAddr t0:FramePtr | |
(50) t34:FramePtr = FreeActRec t0:FramePtr | |
(51) RetCtrl<> t31:StkPtr, t34:FramePtr, t33:RetAddr | |
no fallthrough | |
B9<Unlikely>: (preds B7) | |
(48) FunctionExitSurpriseHook<> t0:FramePtr, t28:StkPtr, 1 -> B8<Catch> | |
-> B10 | |
B8<Catch>: (preds B9) | |
--- bc 43, spOff 0 (A::) | |
43: RetC | |
(44) BeginCatch | |
(45) t32:StkPtr = SpillStack t28:StkPtr, 1 | |
(46) EndCatch t0:FramePtr, t32:StkPtr | |
no fallthrough | |
B5<Unlikely>: (preds B4) | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(35) t29:StkPtr = SpillStack t28:StkPtr, 1, 1 | |
(36) SyncABIRegs t0:FramePtr, t29:StkPtr | |
(39) t30:StkPtr = InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29:StkPtr, t0:FramePtr -> B6<Catch> | |
no fallthrough | |
B6<Catch>: (preds B5) | |
(37) BeginCatch | |
(38) EndCatch t0:FramePtr, t28:StkPtr | |
no fallthrough | |
B3<Catch>: (preds B2) | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(25) BeginCatch | |
(26) t22:StkPtr = SpillStack t21:StkPtr, 0 | |
(27) EndCatch t0:FramePtr, t22:StkPtr | |
no fallthrough | |
B1<Catch>: (preds B0) | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(08) BeginCatch | |
(09) t8:StkPtr = SpillStack t7:StkPtr, 0 | |
(10) EndCatch t0:FramePtr, t8:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m------------------------------- after optimizing ------------------------------- | |
B0: | |
Pseudo-main at 0 (ID 0) | |
--- bc 0, spOff 0 (A::) | |
0: FPushFuncD 1 "var_dump" | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<0> t0:FramePtr | |
(05) t5:StkPtr = SpillFrame<1> t1:StkPtr, t0:FramePtr, Func(var_dump), InitNull | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(07) t7:StkPtr = SpillStack t5:StkPtr, 0, Cls(A) | |
(11) t9:StkPtr = InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7:StkPtr, t0:FramePtr -> B1<Catch> | |
-> B2 | |
B2: (preds B0) | |
--- bc 12, spOff 4 (A::) | |
12: FPassCE 0 | |
(12) t10:StkPtr = AssertStk<Cell,0> t9:StkPtr | |
--- bc 14, spOff 4 (A::) | |
14: FCall 1 | |
(15) t13:StkPtr = SpillStack t10:StkPtr, 1 | |
(18) t16:StkPtr = Call<> t13:StkPtr, 16, Func(var_dump), None:0 | |
--- bc 16, spOff 1 (A::) | |
16: PopR | |
(19) DecRefStack<Gen,0> t16:StkPtr | |
--- bc 17, spOff 0 (A::) | |
17: FPushFuncD 1 "var_dump" | |
(20) t17:StkPtr = SpillStack t16:StkPtr, 1 | |
(21) t18:StkPtr = SpillFrame<1> t17:StkPtr, t0:FramePtr, Func(var_dump), InitNull | |
--- bc 23, spOff 3 (A::) | |
23: LateBoundCls | |
(22) t19:Ctx = LdCtx<A::> t0:FramePtr | |
(23) t20:Cls = LdClsCtx t19:Ctx | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(24) t21:StkPtr = SpillStack t18:StkPtr, 0, t20:Cls | |
(28) t23:StkPtr = InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21:StkPtr, t0:FramePtr -> B3<Catch> | |
-> B4 | |
B4: (preds B2) | |
--- bc 29, spOff 4 (A::) | |
29: FPassCE 0 | |
(29) t24:StkPtr = AssertStk<Cell,0> t23:StkPtr | |
--- bc 31, spOff 4 (A::) | |
31: FCall 1 | |
(31) t26:StkPtr = SpillStack t24:StkPtr, 1 | |
(33) t28:StkPtr = Call<> t26:StkPtr, 33, Func(var_dump), None:0 | |
--- bc 33, spOff 1 (A::) | |
33: PopR | |
(34) DecRefStack<Gen,0> t28:StkPtr | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(40) ReleaseVVOrExit t0:FramePtr -> B5<Unlikely> | |
-> B7 | |
B7: (preds B4) | |
(41) DecRefThis t0:FramePtr | |
(42) StRetVal t0:FramePtr, 1 | |
(43) t31:StkPtr = RetAdjustStack t0:FramePtr | |
(47) CheckSurpriseFlags -> B9<Unlikely> | |
-> B12 | |
B12: (preds B7) | |
(53) t36:None = Jmp -> B10 | |
no fallthrough | |
B10: (preds B12 B11) | |
(49) t33:RetAddr = LdRetAddr t0:FramePtr | |
(50) t34:FramePtr = FreeActRec t0:FramePtr | |
(51) RetCtrl<> t31:StkPtr, t34:FramePtr, t33:RetAddr | |
no fallthrough | |
B9<Unlikely>: (preds B7) | |
(48) FunctionExitSurpriseHook<> t0:FramePtr, t28:StkPtr, 1 -> B8<Catch> | |
-> B11<Unlikely> | |
B11<Unlikely>: (preds B9) | |
(52) t35:None = Jmp -> B10 | |
no fallthrough | |
B8<Catch>: (preds B9) | |
--- bc 43, spOff 0 (A::) | |
43: RetC | |
(44) BeginCatch | |
(45) t32:StkPtr = SpillStack t28:StkPtr, 1 | |
(46) EndCatch t0:FramePtr, t32:StkPtr | |
no fallthrough | |
B5<Unlikely>: (preds B4) | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(35) t29:StkPtr = SpillStack t28:StkPtr, 1, 1 | |
(36) SyncABIRegs t0:FramePtr, t29:StkPtr | |
(39) t30:StkPtr = InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29:StkPtr, t0:FramePtr -> B6<Catch> | |
no fallthrough | |
B6<Catch>: (preds B5) | |
(37) BeginCatch | |
(38) EndCatch t0:FramePtr, t28:StkPtr | |
no fallthrough | |
B3<Catch>: (preds B2) | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(25) BeginCatch | |
(27) EndCatch t0:FramePtr, t21:StkPtr | |
no fallthrough | |
B1<Catch>: (preds B0) | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(08) BeginCatch | |
(10) EndCatch t0:FramePtr, t7:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
Intervals after building intervals | |
19 20 | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillFrame<1> t1(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t5(%rbx):StkPtr | |
6 SpillStack t5(%rbx):StkPtr, 0, Cls(A) => t7(%rbx):StkPtr | |
8 -InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7(%rbx):StkPtr, t0(%rbp):FramePtr => t9(%rbx):StkPtr next->B2 taken->B1 | |
B2 10 AssertStk<Cell,0> t9(%rbx):StkPtr => t10(%rbx):StkPtr | |
12 SpillStack t10(%rbx):StkPtr, 1 => t13(%rbx):StkPtr | |
14 Call<> t13(%rbx):StkPtr, 16, Func(var_dump), None:0 => t16(%rbx):StkPtr | |
16 -DecRefStack<Gen,0> t16(%rbx):StkPtr | |
18 SpillStack t16(%rbx):StkPtr, 1 => t17(%rbx):StkPtr | |
20 SpillFrame<1> t17(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t18(%rbx):StkPtr | |
╷╻ 22 LdCtx<A::> t0(%rbp):FramePtr => t19:Ctx | |
╵╹ ╷╻ 24 LdClsCtx t19:Ctx => t20:Cls | |
╵╹ 26 SpillStack t18(%rbx):StkPtr, 0, t20:Cls => t21(%rbx):StkPtr | |
28 -InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21(%rbx):StkPtr, t0(%rbp):FramePtr => t23(%rbx):StkPtr next->B4 taken->B3 | |
B4 30 AssertStk<Cell,0> t23(%rbx):StkPtr => t24(%rbx):StkPtr | |
32 SpillStack t24(%rbx):StkPtr, 1 => t26(%rbx):StkPtr | |
34 Call<> t26(%rbx):StkPtr, 33, Func(var_dump), None:0 => t28(%rbx):StkPtr | |
36 -DecRefStack<Gen,0> t28(%rbx):StkPtr | |
38 -ReleaseVVOrExit t0(%rbp):FramePtr next->B7 taken->B5 | |
B7 40 -DecRefThis t0(%rbp):FramePtr | |
42 StRetVal t0(%rbp):FramePtr, 1 | |
44 RetAdjustStack t0(%rbp):FramePtr => t31(%rbx):StkPtr | |
46 CheckSurpriseFlags next->B12 taken->B9 | |
B12 48 Jmp => t36:None taken->B10 | |
B9 50 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t28(%rbx):StkPtr, 1 next->B11 taken->B8 | |
B8 52 BeginCatch | |
54 SpillStack t28(%rbx):StkPtr, 1 => t32(%rbx):StkPtr | |
56 EndCatch t0(%rbp):FramePtr, t32(%rbx):StkPtr | |
B11 58 Jmp => t35:None taken->B10 | |
B10 60 LdRetAddr t0(%rbp):FramePtr => t33:RetAddr | |
62 FreeActRec t0(%rbp):FramePtr => t34(%rbp):FramePtr | |
64 RetCtrl<> t31(%rbx):StkPtr, t34(%rbp):FramePtr, t33:RetAddr | |
B5 66 SpillStack t28(%rbx):StkPtr, 1, 1 => t29(%rbx):StkPtr | |
68 SyncABIRegs t0(%rbp):FramePtr, t29(%rbx):StkPtr | |
70 -InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29(%rbx):StkPtr, t0(%rbp):FramePtr => t30(%rbx):StkPtr taken->B6 | |
B6 72 BeginCatch | |
74 EndCatch t0(%rbp):FramePtr, t28(%rbx):StkPtr | |
B3 76 BeginCatch | |
78 EndCatch t0(%rbp):FramePtr, t21(%rbx):StkPtr | |
B1 80 BeginCatch | |
82 EndCatch t0(%rbp):FramePtr, t7(%rbx):StkPtr | |
Intervals after walking intervals | |
19 20 | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillFrame<1> t1(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t5(%rbx):StkPtr | |
6 SpillStack t5(%rbx):StkPtr, 0, Cls(A) => t7(%rbx):StkPtr | |
8 -InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7(%rbx):StkPtr, t0(%rbp):FramePtr => t9(%rbx):StkPtr next->B2 taken->B1 | |
B2 10 AssertStk<Cell,0> t9(%rbx):StkPtr => t10(%rbx):StkPtr | |
12 SpillStack t10(%rbx):StkPtr, 1 => t13(%rbx):StkPtr | |
14 Call<> t13(%rbx):StkPtr, 16, Func(var_dump), None:0 => t16(%rbx):StkPtr | |
16 -DecRefStack<Gen,0> t16(%rbx):StkPtr | |
18 SpillStack t16(%rbx):StkPtr, 1 => t17(%rbx):StkPtr | |
20 SpillFrame<1> t17(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t18(%rbx):StkPtr | |
╷╻ 22 LdCtx<A::> t0(%rbp):FramePtr => t19:Ctx | |
╵╹ ╷╻ 24 LdClsCtx t19:Ctx => t20:Cls | |
╵╹ 26 SpillStack t18(%rbx):StkPtr, 0, t20:Cls => t21(%rbx):StkPtr | |
28 -InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21(%rbx):StkPtr, t0(%rbp):FramePtr => t23(%rbx):StkPtr next->B4 taken->B3 | |
B4 30 AssertStk<Cell,0> t23(%rbx):StkPtr => t24(%rbx):StkPtr | |
32 SpillStack t24(%rbx):StkPtr, 1 => t26(%rbx):StkPtr | |
34 Call<> t26(%rbx):StkPtr, 33, Func(var_dump), None:0 => t28(%rbx):StkPtr | |
36 -DecRefStack<Gen,0> t28(%rbx):StkPtr | |
38 -ReleaseVVOrExit t0(%rbp):FramePtr next->B7 taken->B5 | |
B7 40 -DecRefThis t0(%rbp):FramePtr | |
42 StRetVal t0(%rbp):FramePtr, 1 | |
44 RetAdjustStack t0(%rbp):FramePtr => t31(%rbx):StkPtr | |
46 CheckSurpriseFlags next->B12 taken->B9 | |
B12 48 Jmp => t36:None taken->B10 | |
B9 50 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t28(%rbx):StkPtr, 1 next->B11 taken->B8 | |
B8 52 BeginCatch | |
54 SpillStack t28(%rbx):StkPtr, 1 => t32(%rbx):StkPtr | |
56 EndCatch t0(%rbp):FramePtr, t32(%rbx):StkPtr | |
B11 58 Jmp => t35:None taken->B10 | |
B10 60 LdRetAddr t0(%rbp):FramePtr => t33:RetAddr | |
62 FreeActRec t0(%rbp):FramePtr => t34(%rbp):FramePtr | |
64 RetCtrl<> t31(%rbx):StkPtr, t34(%rbp):FramePtr, t33:RetAddr | |
B5 66 SpillStack t28(%rbx):StkPtr, 1, 1 => t29(%rbx):StkPtr | |
68 SyncABIRegs t0(%rbp):FramePtr, t29(%rbx):StkPtr | |
70 -InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29(%rbx):StkPtr, t0(%rbp):FramePtr => t30(%rbx):StkPtr taken->B6 | |
B6 72 BeginCatch | |
74 EndCatch t0(%rbp):FramePtr, t28(%rbx):StkPtr | |
B3 76 BeginCatch | |
78 EndCatch t0(%rbp):FramePtr, t21(%rbx):StkPtr | |
B1 80 BeginCatch | |
82 EndCatch t0(%rbp):FramePtr, t7(%rbx):StkPtr | |
Splits 0 Spills 0 | |
i19 (%rax) [23-25) {23,24} | |
i20 (%rax) [25-27) {25,26} | |
Intervals after resolving intervals | |
19 20 | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<0> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 SpillFrame<1> t1(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t5(%rbx):StkPtr | |
6 SpillStack t5(%rbx):StkPtr, 0, Cls(A) => t7(%rbx):StkPtr | |
8 -InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7(%rbx):StkPtr, t0(%rbp):FramePtr => t9(%rbx):StkPtr next->B2 taken->B1 | |
B2 10 AssertStk<Cell,0> t9(%rbx):StkPtr => t10(%rbx):StkPtr | |
12 SpillStack t10(%rbx):StkPtr, 1 => t13(%rbx):StkPtr | |
14 Call<> t13(%rbx):StkPtr, 16, Func(var_dump), None:0 => t16(%rbx):StkPtr | |
16 -DecRefStack<Gen,0> t16(%rbx):StkPtr | |
18 SpillStack t16(%rbx):StkPtr, 1 => t17(%rbx):StkPtr | |
20 SpillFrame<1> t17(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull => t18(%rbx):StkPtr | |
╷╻ 22 LdCtx<A::> t0(%rbp):FramePtr => t19(%rax):Ctx | |
╵╹ ╷╻ 24 LdClsCtx t19(%rax):Ctx => t20(%rax):Cls | |
╵╹ 26 SpillStack t18(%rbx):StkPtr, 0, t20(%rax):Cls => t21(%rbx):StkPtr | |
28 -InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21(%rbx):StkPtr, t0(%rbp):FramePtr => t23(%rbx):StkPtr next->B4 taken->B3 | |
B4 30 AssertStk<Cell,0> t23(%rbx):StkPtr => t24(%rbx):StkPtr | |
32 SpillStack t24(%rbx):StkPtr, 1 => t26(%rbx):StkPtr | |
34 Call<> t26(%rbx):StkPtr, 33, Func(var_dump), None:0 => t28(%rbx):StkPtr | |
36 -DecRefStack<Gen,0> t28(%rbx):StkPtr | |
38 -ReleaseVVOrExit t0(%rbp):FramePtr next->B7 taken->B5 | |
B7 40 -DecRefThis t0(%rbp):FramePtr | |
42 StRetVal t0(%rbp):FramePtr, 1 | |
44 RetAdjustStack t0(%rbp):FramePtr => t31(%rbx):StkPtr | |
46 CheckSurpriseFlags next->B12 taken->B9 | |
B12 48 Jmp => t36:None taken->B10 | |
B9 50 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t28(%rbx):StkPtr, 1 next->B11 taken->B8 | |
B8 52 BeginCatch | |
54 SpillStack t28(%rbx):StkPtr, 1 => t32(%rbx):StkPtr | |
56 EndCatch t0(%rbp):FramePtr, t32(%rbx):StkPtr | |
B11 58 Jmp => t35:None taken->B10 | |
B10 60 LdRetAddr t0(%rbp):FramePtr => t33:RetAddr | |
62 FreeActRec t0(%rbp):FramePtr => t34(%rbp):FramePtr | |
64 RetCtrl<> t31(%rbx):StkPtr, t34(%rbp):FramePtr, t33:RetAddr | |
B5 66 SpillStack t28(%rbx):StkPtr, 1, 1 => t29(%rbx):StkPtr | |
68 SyncABIRegs t0(%rbp):FramePtr, t29(%rbx):StkPtr | |
70 -InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29(%rbx):StkPtr, t0(%rbp):FramePtr => t30(%rbx):StkPtr taken->B6 | |
B6 72 BeginCatch | |
74 EndCatch t0(%rbp):FramePtr, t28(%rbx):StkPtr | |
B3 76 BeginCatch | |
78 EndCatch t0(%rbp):FramePtr, t21(%rbx):StkPtr | |
B1 80 BeginCatch | |
82 EndCatch t0(%rbp):FramePtr, t7(%rbx):StkPtr | |
[22;30;42m----------------------------- after extended alloc ----------------------------- | |
B0: | |
Pseudo-main at 0 (ID 0) | |
--- bc 0, spOff 0 (A::) | |
0: FPushFuncD 1 "var_dump" | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<0> t0(%rbp):FramePtr | |
(05) t5(%rbx):StkPtr = SpillFrame<1> t1(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(07) t7(%rbx):StkPtr = SpillStack t5(%rbx):StkPtr, 0, Cls(A) | |
(11) t9(%rbx):StkPtr = InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7(%rbx):StkPtr, t0(%rbp):FramePtr -> B1<Catch> | |
-> B2 | |
B2: (preds B0) | |
--- bc 12, spOff 4 (A::) | |
12: FPassCE 0 | |
(12) t10(%rbx):StkPtr = AssertStk<Cell,0> t9(%rbx):StkPtr | |
--- bc 14, spOff 4 (A::) | |
14: FCall 1 | |
(15) t13(%rbx):StkPtr = SpillStack t10(%rbx):StkPtr, 1 | |
(18) t16(%rbx):StkPtr = Call<> t13(%rbx):StkPtr, 16, Func(var_dump), None:0 | |
--- bc 16, spOff 1 (A::) | |
16: PopR | |
(19) DecRefStack<Gen,0> t16(%rbx):StkPtr | |
--- bc 17, spOff 0 (A::) | |
17: FPushFuncD 1 "var_dump" | |
(20) t17(%rbx):StkPtr = SpillStack t16(%rbx):StkPtr, 1 | |
(21) t18(%rbx):StkPtr = SpillFrame<1> t17(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull | |
--- bc 23, spOff 3 (A::) | |
23: LateBoundCls | |
(22) t19(%rax):Ctx = LdCtx<A::> t0(%rbp):FramePtr | |
(23) t20(%rax):Cls = LdClsCtx t19(%rax):Ctx | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(24) t21(%rbx):StkPtr = SpillStack t18(%rbx):StkPtr, 0, t20(%rax):Cls | |
(28) t23(%rbx):StkPtr = InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21(%rbx):StkPtr, t0(%rbp):FramePtr -> B3<Catch> | |
-> B4 | |
B4: (preds B2) | |
--- bc 29, spOff 4 (A::) | |
29: FPassCE 0 | |
(29) t24(%rbx):StkPtr = AssertStk<Cell,0> t23(%rbx):StkPtr | |
--- bc 31, spOff 4 (A::) | |
31: FCall 1 | |
(31) t26(%rbx):StkPtr = SpillStack t24(%rbx):StkPtr, 1 | |
(33) t28(%rbx):StkPtr = Call<> t26(%rbx):StkPtr, 33, Func(var_dump), None:0 | |
--- bc 33, spOff 1 (A::) | |
33: PopR | |
(34) DecRefStack<Gen,0> t28(%rbx):StkPtr | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(40) ReleaseVVOrExit t0(%rbp):FramePtr -> B5<Unlikely> | |
-> B7 | |
B7: (preds B4) | |
(41) DecRefThis t0(%rbp):FramePtr | |
(42) StRetVal t0(%rbp):FramePtr, 1 | |
(43) t31(%rbx):StkPtr = RetAdjustStack t0(%rbp):FramePtr | |
(47) CheckSurpriseFlags -> B9<Unlikely> | |
-> B12 | |
B12: (preds B7) | |
(53) t36:None = Jmp -> B10 | |
no fallthrough | |
B10: (preds B12 B11) | |
(49) t33:RetAddr = LdRetAddr t0(%rbp):FramePtr | |
(50) t34(%rbp):FramePtr = FreeActRec t0(%rbp):FramePtr | |
(51) RetCtrl<> t31(%rbx):StkPtr, t34(%rbp):FramePtr, t33:RetAddr | |
no fallthrough | |
B9<Unlikely>: (preds B7) | |
(48) FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t28(%rbx):StkPtr, 1 -> B8<Catch> | |
-> B11<Unlikely> | |
B11<Unlikely>: (preds B9) | |
(52) t35:None = Jmp -> B10 | |
no fallthrough | |
B8<Catch>: (preds B9) | |
--- bc 43, spOff 0 (A::) | |
43: RetC | |
(44) BeginCatch | |
(45) t32(%rbx):StkPtr = SpillStack t28(%rbx):StkPtr, 1 | |
(46) EndCatch t0(%rbp):FramePtr, t32(%rbx):StkPtr | |
no fallthrough | |
B5<Unlikely>: (preds B4) | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(35) t29(%rbx):StkPtr = SpillStack t28(%rbx):StkPtr, 1, 1 | |
(36) SyncABIRegs t0(%rbp):FramePtr, t29(%rbx):StkPtr | |
(39) t30(%rbx):StkPtr = InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29(%rbx):StkPtr, t0(%rbp):FramePtr -> B6<Catch> | |
no fallthrough | |
B6<Catch>: (preds B5) | |
(37) BeginCatch | |
(38) EndCatch t0(%rbp):FramePtr, t28(%rbx):StkPtr | |
no fallthrough | |
B3<Catch>: (preds B2) | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(25) BeginCatch | |
(27) EndCatch t0(%rbp):FramePtr, t21(%rbx):StkPtr | |
no fallthrough | |
B1<Catch>: (preds B0) | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(08) BeginCatch | |
(10) EndCatch t0(%rbp):FramePtr, t7(%rbx):StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m-------------------------------- after code gen -------------------------------- | |
B0: | |
Pseudo-main at 0 (ID 0) | |
--- bc 0, spOff 0 (A::) | |
0: FPushFuncD 1 "var_dump" | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<0> t0(%rbp):FramePtr | |
(05) t5(%rbx):StkPtr = SpillFrame<1> t1(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull | |
0x8c08340: mov qword ptr [rbx-0x10], 0x0 | |
0x8c08348: mov qword ptr [rbx-0x8], 0x0 | |
0x8c08350: mov qword ptr [rbx-0x20], 0x8ad0600 | |
0x8c08358: mov qword ptr [rbx-0x30], rbp | |
0x8c0835c: mov dword ptr [rbx-0x14], 0x1 | |
0x8c08363: add rbx, 0xffffffffffffffd0 | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(07) t7(%rbx):StkPtr = SpillStack t5(%rbx):StkPtr, 0, Cls(A) | |
0x8c08367: mov byte ptr [rbx-0x8], 0xf3 | |
0x8c0836b: mov qword ptr [rbx-0x10], 0x8ba1840 | |
0x8c08373: add rbx, 0xfffffffffffffff0 | |
(11) t9(%rbx):StkPtr = InterpOne<Gen,ClsCns: bcOff:7, popped:1, pushed:1> t7(%rbx):StkPtr, t0(%rbp):FramePtr -> B1<Catch> | |
0x8c08377: mov rsi, rbx | |
0x8c0837a: mov rdi, rbp | |
0x8c0837d: mov edx, 0x7 | |
0x8c08382: call 0x21ceb30 <HPHP::JIT::interpOneClsCns> | |
-> B2 | |
B2: (preds B0) | |
--- bc 12, spOff 4 (A::) | |
12: FPassCE 0 | |
(12) t10(%rbx):StkPtr = AssertStk<Cell,0> t9(%rbx):StkPtr | |
--- bc 14, spOff 4 (A::) | |
14: FCall 1 | |
(15) t13(%rbx):StkPtr = SpillStack t10(%rbx):StkPtr, 1 | |
0x8c08387: add rbx, 0x10 | |
(18) t16(%rbx):StkPtr = Call<> t13(%rbx):StkPtr, 16, Func(var_dump), None:0 | |
0x8c0838b: mov dword ptr [rbx+0x18], 0x10 | |
0x8c08392: add rbx, 0xfffffffffffffff0 | |
0x8c08396: mov qword ptr [rbx+0x18], 0x8c083b9 | |
0x8c0839e: lea rbp, ptr [rbx+0x10] | |
0x8c083a2: test byte ptr [r12], 0xff | |
0x8c083a7: jnz 0xc800133 | |
0x8c083ad: mov rdi, rbp | |
0x8c083b0: call 0x1862850 <HPHP::fg_var_dump> | |
0x8c083b5: mov rbp, qword ptr [rbp] | |
0x8c083b9: add rbx, 0x30 | |
--- bc 16, spOff 1 (A::) | |
16: PopR | |
(19) DecRefStack<Gen,0> t16(%rbx):StkPtr | |
0x8c083bd: cmp byte ptr [rbx+0x8], 0xc | |
0x8c083c1: jle 0x8c083d5 | |
0x8c083c3: mov rax, qword ptr [rbx] | |
0x8c083c6: cmp dword ptr [rax+0xc], 0x1 | |
0x8c083ca: jz 0xc800140 | |
0x8c083d0: jl 0x8c083d5 | |
0x8c083d2: dec dword ptr [rax+0xc] | |
--- bc 17, spOff 0 (A::) | |
17: FPushFuncD 1 "var_dump" | |
(20) t17(%rbx):StkPtr = SpillStack t16(%rbx):StkPtr, 1 | |
0x8c083d5: add rbx, 0x10 | |
(21) t18(%rbx):StkPtr = SpillFrame<1> t17(%rbx):StkPtr, t0(%rbp):FramePtr, Func(var_dump), InitNull | |
0x8c083d9: mov qword ptr [rbx-0x10], 0x0 | |
0x8c083e1: mov qword ptr [rbx-0x8], 0x0 | |
0x8c083e9: mov qword ptr [rbx-0x20], 0x8ad0600 | |
0x8c083f1: mov qword ptr [rbx-0x30], rbp | |
0x8c083f5: mov dword ptr [rbx-0x14], 0x1 | |
0x8c083fc: add rbx, 0xffffffffffffffd0 | |
--- bc 23, spOff 3 (A::) | |
23: LateBoundCls | |
(22) t19(%rax):Ctx = LdCtx<A::> t0(%rbp):FramePtr | |
0x8c08400: mov rax, qword ptr [rbp+0x20] | |
(23) t20(%rax):Cls = LdClsCtx t19(%rax):Ctx | |
0x8c08404: test al, 0x1 | |
0x8c08407: jz 0x8c0840e | |
0x8c08409: dec rax | |
0x8c0840c: jmp 0x8c08411 | |
0x8c0840e: mov rax, qword ptr [rax] | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(24) t21(%rbx):StkPtr = SpillStack t18(%rbx):StkPtr, 0, t20(%rax):Cls | |
0x8c08411: mov byte ptr [rbx-0x8], 0xf3 | |
0x8c08415: mov qword ptr [rbx-0x10], rax | |
0x8c08419: add rbx, 0xfffffffffffffff0 | |
(28) t23(%rbx):StkPtr = InterpOne<Gen,ClsCns: bcOff:24, popped:1, pushed:1> t21(%rbx):StkPtr, t0(%rbp):FramePtr -> B3<Catch> | |
0x8c0841d: mov rsi, rbx | |
0x8c08420: mov rdi, rbp | |
0x8c08423: mov edx, 0x18 | |
0x8c08428: call 0x21ceb30 <HPHP::JIT::interpOneClsCns> | |
AStubs: | |
0xc800133: mov rdi, rbp | |
0xc800136: call 0x8c08280 | |
0xc80013b: jmp 0x8c083ad | |
0xc800140: lea rax, ptr [rbx] | |
0xc800143: mov rdi, rax | |
0xc800146: call 0x1000750 <HPHP::JIT::tv_release_generic> | |
0xc80014b: jmp 0x8c083d5 | |
-> B4 | |
B4: (preds B2) | |
--- bc 29, spOff 4 (A::) | |
29: FPassCE 0 | |
(29) t24(%rbx):StkPtr = AssertStk<Cell,0> t23(%rbx):StkPtr | |
--- bc 31, spOff 4 (A::) | |
31: FCall 1 | |
(31) t26(%rbx):StkPtr = SpillStack t24(%rbx):StkPtr, 1 | |
0x8c0842d: add rbx, 0x10 | |
(33) t28(%rbx):StkPtr = Call<> t26(%rbx):StkPtr, 33, Func(var_dump), None:0 | |
0x8c08431: mov dword ptr [rbx+0x18], 0x21 | |
0x8c08438: add rbx, 0xfffffffffffffff0 | |
0x8c0843c: mov qword ptr [rbx+0x18], 0x8c0845f | |
0x8c08444: lea rbp, ptr [rbx+0x10] | |
0x8c08448: test byte ptr [r12], 0xff | |
0x8c0844d: jnz 0xc800150 | |
0x8c08453: mov rdi, rbp | |
0x8c08456: call 0x1862850 <HPHP::fg_var_dump> | |
0x8c0845b: mov rbp, qword ptr [rbp] | |
0x8c0845f: add rbx, 0x30 | |
--- bc 33, spOff 1 (A::) | |
33: PopR | |
(34) DecRefStack<Gen,0> t28(%rbx):StkPtr | |
0x8c08463: cmp byte ptr [rbx+0x8], 0xc | |
0x8c08467: jle 0x8c0847b | |
0x8c08469: mov rax, qword ptr [rbx] | |
0x8c0846c: cmp dword ptr [rax+0xc], 0x1 | |
0x8c08470: jz 0xc80015d | |
0x8c08476: jl 0x8c0847b | |
0x8c08478: dec dword ptr [rax+0xc] | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(40) ReleaseVVOrExit t0(%rbp):FramePtr -> B5<Unlikely> | |
0x8c0847b: cmp qword ptr [rbp+0x28], 0x0 | |
0x8c08480: jnz 0xc80016d | |
AStubs: | |
0xc800150: mov rdi, rbp | |
0xc800153: call 0x8c08280 | |
0xc800158: jmp 0x8c08453 | |
0xc80015d: lea rax, ptr [rbx] | |
0xc800160: mov rdi, rax | |
0xc800163: call 0x1000750 <HPHP::JIT::tv_release_generic> | |
0xc800168: jmp 0x8c0847b | |
0xc80016d: test dword ptr [rbp+0x28], 0x2 | |
0xc800174: jz 0xc8001bd | |
0xc80017a: mov rdi, rbp | |
0xc80017d: call 0xff2fa0 <HPHP::ExtraArgs::deallocate> | |
0xc800182: jmp 0x8c08486 | |
-> B7 | |
B7: (preds B4) | |
(41) DecRefThis t0(%rbp):FramePtr | |
0x8c08486: mov rax, qword ptr [rbp+0x20] | |
0x8c0848a: test rax, rax | |
0x8c0848d: jz 0x8c0849d | |
0x8c0848f: test al, 0x1 | |
0x8c08492: jnz 0x8c0849d | |
0x8c08494: dec dword ptr [rax+0xc] | |
0x8c08497: jz 0xc800187 | |
(42) StRetVal t0(%rbp):FramePtr, 1 | |
0x8c0849d: mov byte ptr [rbp+0x28], 0xa | |
0x8c084a1: mov qword ptr [rbp+0x20], 0x1 | |
(43) t31(%rbx):StkPtr = RetAdjustStack t0(%rbp):FramePtr | |
0x8c084a9: lea rbx, ptr [rbp+0x20] | |
(47) CheckSurpriseFlags -> B9<Unlikely> | |
0x8c084ad: test byte ptr [r12], 0xff | |
0x8c084b2: jnz 0xc800194 | |
AStubs: | |
0xc800187: mov rdi, rax | |
0xc80018a: call 0xff05c0 <HPHP::ObjectData::release> | |
0xc80018f: jmp 0x8c0849d | |
-> B12 | |
B12: (preds B7) | |
(53) t36:None = Jmp -> B10 | |
no fallthrough | |
B10: (preds B12 B11) | |
(49) t33:RetAddr = LdRetAddr t0(%rbp):FramePtr | |
0x8c084b8: push qword ptr [rbp+0x8] | |
(50) t34(%rbp):FramePtr = FreeActRec t0(%rbp):FramePtr | |
0x8c084bb: mov rbp, qword ptr [rbp] | |
(51) RetCtrl<> t31(%rbx):StkPtr, t34(%rbp):FramePtr, t33:RetAddr | |
0x8c084bf: ret | |
no fallthrough | |
B9<Unlikely>: (preds B7) | |
(48) FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t28(%rbx):StkPtr, 1 -> B8<Catch> | |
0xc800194: mov byte ptr [rbx-0x28], 0xa | |
0xc800198: mov qword ptr [rbx-0x30], 0x1 | |
0xc8001a0: mov rdi, rbp | |
0xc8001a3: call 0x231d500 <HPHP::EventHook::onFunctionExit> | |
-> B11<Unlikely> | |
B11<Unlikely>: (preds B9) | |
(52) t35:None = Jmp -> B10 | |
0xc8001a8: jmp 0x8c084b8 | |
no fallthrough | |
B8<Catch>: (preds B9) | |
--- bc 43, spOff 0 (A::) | |
43: RetC | |
(44) BeginCatch | |
(45) t32(%rbx):StkPtr = SpillStack t28(%rbx):StkPtr, 1 | |
0xc8001ad: add rbx, 0x10 | |
(46) EndCatch t0(%rbp):FramePtr, t32(%rbx):StkPtr | |
0xc8001b1: mov rdi, qword ptr [r12+0x8] | |
0xc8001b6: call 0x2004650 | |
0xc8001bb: ud2 | |
no fallthrough | |
B5<Unlikely>: (preds B4) | |
--- bc 43, spOff 1 (A::) | |
43: RetC | |
(35) t29(%rbx):StkPtr = SpillStack t28(%rbx):StkPtr, 1, 1 | |
0xc8001bd: mov byte ptr [rbx+0x8], 0xa | |
0xc8001c1: mov qword ptr [rbx], 0x1 | |
(36) SyncABIRegs t0(%rbp):FramePtr, t29(%rbx):StkPtr | |
(39) t30(%rbx):StkPtr = InterpOneCF<RetC: bcOff:43, popped:0, pushed:0> t29(%rbx):StkPtr, t0(%rbp):FramePtr -> B6<Catch> | |
0xc8001c8: mov rsi, rbx | |
0xc8001cb: mov rdi, rbp | |
0xc8001ce: mov edx, 0x2b | |
0xc8001d3: call 0x21cfaf0 <HPHP::JIT::interpOneRetC> | |
0xc8001d8: mov rbp, qword ptr [rax+0x20] | |
0xc8001dc: mov rbx, qword ptr [rax+0x10] | |
0xc8001e0: mov r10, qword ptr fs:[0xfff759b8] | |
0xc8001e9: add r10, 0x10 | |
0xc8001ed: mov qword ptr [r10], rbx | |
0xc8001f0: mov qword ptr [r10+0x10], rbp | |
0xc8001f4: xor r10d, r10d | |
0xc8001f7: mov edi, 0xd | |
0xc8001fc: ret | |
no fallthrough | |
B6<Catch>: (preds B5) | |
(37) BeginCatch | |
(38) EndCatch t0(%rbp):FramePtr, t28(%rbx):StkPtr | |
0xc8001fd: mov rdi, qword ptr [r12+0x8] | |
0xc800202: call 0x2004650 | |
0xc800207: ud2 | |
no fallthrough | |
B3<Catch>: (preds B2) | |
--- bc 24, spOff 4 (A::) | |
24: ClsCns "class" | |
(25) BeginCatch | |
(27) EndCatch t0(%rbp):FramePtr, t21(%rbx):StkPtr | |
0xc800209: mov rdi, qword ptr [r12+0x8] | |
0xc80020e: call 0x2004650 | |
0xc800213: ud2 | |
no fallthrough | |
B1<Catch>: (preds B0) | |
--- bc 7, spOff 4 (A::) | |
7: ClsCns "class" | |
(08) BeginCatch | |
(10) EndCatch t0(%rbp):FramePtr, t7(%rbx):StkPtr | |
0xc800215: mov rdi, qword ptr [r12+0x8] | |
0xc80021a: call 0x2004650 | |
0xc80021f: ud2 | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
string(1) "A" | |
string(1) "B" | |
[22;30;42m-------------------------- after initial translation --------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 33, spOff 1 (A::c) | |
33: PopC | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<1> t0:FramePtr | |
(02) t2:StkPtr = AssertStk<Cell,0> t1:StkPtr | |
(03) DecRefStack<Cell,0> t2:StkPtr | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(11) ReleaseVVOrExit t0:FramePtr -> B1<Unlikely> | |
-> B3 | |
B3: (preds B0) | |
(12) DecRefThis t0:FramePtr | |
(13) StRetVal t0:FramePtr, InitNull | |
(14) t7:StkPtr = RetAdjustStack t0:FramePtr | |
(18) CheckSurpriseFlags -> B5<Unlikely> | |
-> B6 | |
B6: (preds B5 B3) | |
(20) t9:RetAddr = LdRetAddr t0:FramePtr | |
(21) t10:FramePtr = FreeActRec t0:FramePtr | |
(22) RetCtrl<> t7:StkPtr, t10:FramePtr, t9:RetAddr | |
no fallthrough | |
B5<Unlikely>: (preds B3) | |
(19) FunctionExitSurpriseHook<> t0:FramePtr, t2:StkPtr, InitNull -> B4<Catch> | |
-> B6 | |
B4<Catch>: (preds B5) | |
--- bc 35, spOff 0 (A::c) | |
35: RetC | |
(15) BeginCatch | |
(16) t8:StkPtr = SpillStack t2:StkPtr, 1 | |
(17) EndCatch t0:FramePtr, t8:StkPtr | |
no fallthrough | |
B1<Unlikely>: (preds B0) | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(06) t5:StkPtr = SpillStack t2:StkPtr, 1, InitNull | |
(07) SyncABIRegs t0:FramePtr, t5:StkPtr | |
(10) t6:StkPtr = InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5:StkPtr, t0:FramePtr -> B2<Catch> | |
no fallthrough | |
B2<Catch>: (preds B1) | |
(08) BeginCatch | |
(09) EndCatch t0:FramePtr, t2:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m------------------------------- after optimizing ------------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 33, spOff 1 (A::c) | |
33: PopC | |
(00) t0:FramePtr = DefFP | |
(01) t1:StkPtr = DefSP<1> t0:FramePtr | |
(02) t2:StkPtr = AssertStk<Cell,0> t1:StkPtr | |
(03) DecRefStack<Cell,0> t2:StkPtr | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(11) ReleaseVVOrExit t0:FramePtr -> B1<Unlikely> | |
-> B3 | |
B3: (preds B0) | |
(12) DecRefThis t0:FramePtr | |
(13) StRetVal t0:FramePtr, InitNull | |
(14) t7:StkPtr = RetAdjustStack t0:FramePtr | |
(18) CheckSurpriseFlags -> B5<Unlikely> | |
-> B8 | |
B8: (preds B3) | |
(24) t12:None = Jmp -> B6 | |
no fallthrough | |
B6: (preds B8 B7) | |
(20) t9:RetAddr = LdRetAddr t0:FramePtr | |
(21) t10:FramePtr = FreeActRec t0:FramePtr | |
(22) RetCtrl<> t7:StkPtr, t10:FramePtr, t9:RetAddr | |
no fallthrough | |
B5<Unlikely>: (preds B3) | |
(19) FunctionExitSurpriseHook<> t0:FramePtr, t2:StkPtr, InitNull -> B4<Catch> | |
-> B7<Unlikely> | |
B7<Unlikely>: (preds B5) | |
(23) t11:None = Jmp -> B6 | |
no fallthrough | |
B4<Catch>: (preds B5) | |
--- bc 35, spOff 0 (A::c) | |
35: RetC | |
(15) BeginCatch | |
(16) t8:StkPtr = SpillStack t2:StkPtr, 1 | |
(17) EndCatch t0:FramePtr, t8:StkPtr | |
no fallthrough | |
B1<Unlikely>: (preds B0) | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(06) t5:StkPtr = SpillStack t2:StkPtr, 1, InitNull | |
(07) SyncABIRegs t0:FramePtr, t5:StkPtr | |
(10) t6:StkPtr = InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5:StkPtr, t0:FramePtr -> B2<Catch> | |
no fallthrough | |
B2<Catch>: (preds B1) | |
(08) BeginCatch | |
(09) EndCatch t0:FramePtr, t2:StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
Intervals after building intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<1> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 AssertStk<Cell,0> t1(%rbx):StkPtr => t2(%rbx):StkPtr | |
6 -DecRefStack<Cell,0> t2(%rbx):StkPtr | |
8 -ReleaseVVOrExit t0(%rbp):FramePtr next->B3 taken->B1 | |
B3 10 -DecRefThis t0(%rbp):FramePtr | |
12 StRetVal t0(%rbp):FramePtr, InitNull | |
14 RetAdjustStack t0(%rbp):FramePtr => t7(%rbx):StkPtr | |
16 CheckSurpriseFlags next->B8 taken->B5 | |
B8 18 Jmp => t12:None taken->B6 | |
B5 20 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t2(%rbx):StkPtr, InitNull next->B7 taken->B4 | |
B4 22 BeginCatch | |
24 SpillStack t2(%rbx):StkPtr, 1 => t8(%rbx):StkPtr | |
26 EndCatch t0(%rbp):FramePtr, t8(%rbx):StkPtr | |
B7 28 Jmp => t11:None taken->B6 | |
B6 30 LdRetAddr t0(%rbp):FramePtr => t9:RetAddr | |
32 FreeActRec t0(%rbp):FramePtr => t10(%rbp):FramePtr | |
34 RetCtrl<> t7(%rbx):StkPtr, t10(%rbp):FramePtr, t9:RetAddr | |
B1 36 SpillStack t2(%rbx):StkPtr, 1, InitNull => t5(%rbx):StkPtr | |
38 SyncABIRegs t0(%rbp):FramePtr, t5(%rbx):StkPtr | |
40 -InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B2 | |
B2 42 BeginCatch | |
44 EndCatch t0(%rbp):FramePtr, t2(%rbx):StkPtr | |
Intervals after walking intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<1> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 AssertStk<Cell,0> t1(%rbx):StkPtr => t2(%rbx):StkPtr | |
6 -DecRefStack<Cell,0> t2(%rbx):StkPtr | |
8 -ReleaseVVOrExit t0(%rbp):FramePtr next->B3 taken->B1 | |
B3 10 -DecRefThis t0(%rbp):FramePtr | |
12 StRetVal t0(%rbp):FramePtr, InitNull | |
14 RetAdjustStack t0(%rbp):FramePtr => t7(%rbx):StkPtr | |
16 CheckSurpriseFlags next->B8 taken->B5 | |
B8 18 Jmp => t12:None taken->B6 | |
B5 20 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t2(%rbx):StkPtr, InitNull next->B7 taken->B4 | |
B4 22 BeginCatch | |
24 SpillStack t2(%rbx):StkPtr, 1 => t8(%rbx):StkPtr | |
26 EndCatch t0(%rbp):FramePtr, t8(%rbx):StkPtr | |
B7 28 Jmp => t11:None taken->B6 | |
B6 30 LdRetAddr t0(%rbp):FramePtr => t9:RetAddr | |
32 FreeActRec t0(%rbp):FramePtr => t10(%rbp):FramePtr | |
34 RetCtrl<> t7(%rbx):StkPtr, t10(%rbp):FramePtr, t9:RetAddr | |
B1 36 SpillStack t2(%rbx):StkPtr, 1, InitNull => t5(%rbx):StkPtr | |
38 SyncABIRegs t0(%rbp):FramePtr, t5(%rbx):StkPtr | |
40 -InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B2 | |
B2 42 BeginCatch | |
44 EndCatch t0(%rbp):FramePtr, t2(%rbx):StkPtr | |
Splits 0 Spills 0 | |
Intervals after resolving intervals | |
B0 0 DefFP => t0(%rbp):FramePtr | |
2 DefSP<1> t0(%rbp):FramePtr => t1(%rbx):StkPtr | |
4 AssertStk<Cell,0> t1(%rbx):StkPtr => t2(%rbx):StkPtr | |
6 -DecRefStack<Cell,0> t2(%rbx):StkPtr | |
8 -ReleaseVVOrExit t0(%rbp):FramePtr next->B3 taken->B1 | |
B3 10 -DecRefThis t0(%rbp):FramePtr | |
12 StRetVal t0(%rbp):FramePtr, InitNull | |
14 RetAdjustStack t0(%rbp):FramePtr => t7(%rbx):StkPtr | |
16 CheckSurpriseFlags next->B8 taken->B5 | |
B8 18 Jmp => t12:None taken->B6 | |
B5 20 -FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t2(%rbx):StkPtr, InitNull next->B7 taken->B4 | |
B4 22 BeginCatch | |
24 SpillStack t2(%rbx):StkPtr, 1 => t8(%rbx):StkPtr | |
26 EndCatch t0(%rbp):FramePtr, t8(%rbx):StkPtr | |
B7 28 Jmp => t11:None taken->B6 | |
B6 30 LdRetAddr t0(%rbp):FramePtr => t9:RetAddr | |
32 FreeActRec t0(%rbp):FramePtr => t10(%rbp):FramePtr | |
34 RetCtrl<> t7(%rbx):StkPtr, t10(%rbp):FramePtr, t9:RetAddr | |
B1 36 SpillStack t2(%rbx):StkPtr, 1, InitNull => t5(%rbx):StkPtr | |
38 SyncABIRegs t0(%rbp):FramePtr, t5(%rbx):StkPtr | |
40 -InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5(%rbx):StkPtr, t0(%rbp):FramePtr => t6(%rbx):StkPtr taken->B2 | |
B2 42 BeginCatch | |
44 EndCatch t0(%rbp):FramePtr, t2(%rbx):StkPtr | |
[22;30;42m----------------------------- after extended alloc ----------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 33, spOff 1 (A::c) | |
33: PopC | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<1> t0(%rbp):FramePtr | |
(02) t2(%rbx):StkPtr = AssertStk<Cell,0> t1(%rbx):StkPtr | |
(03) DecRefStack<Cell,0> t2(%rbx):StkPtr | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(11) ReleaseVVOrExit t0(%rbp):FramePtr -> B1<Unlikely> | |
-> B3 | |
B3: (preds B0) | |
(12) DecRefThis t0(%rbp):FramePtr | |
(13) StRetVal t0(%rbp):FramePtr, InitNull | |
(14) t7(%rbx):StkPtr = RetAdjustStack t0(%rbp):FramePtr | |
(18) CheckSurpriseFlags -> B5<Unlikely> | |
-> B8 | |
B8: (preds B3) | |
(24) t12:None = Jmp -> B6 | |
no fallthrough | |
B6: (preds B8 B7) | |
(20) t9:RetAddr = LdRetAddr t0(%rbp):FramePtr | |
(21) t10(%rbp):FramePtr = FreeActRec t0(%rbp):FramePtr | |
(22) RetCtrl<> t7(%rbx):StkPtr, t10(%rbp):FramePtr, t9:RetAddr | |
no fallthrough | |
B5<Unlikely>: (preds B3) | |
(19) FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t2(%rbx):StkPtr, InitNull -> B4<Catch> | |
-> B7<Unlikely> | |
B7<Unlikely>: (preds B5) | |
(23) t11:None = Jmp -> B6 | |
no fallthrough | |
B4<Catch>: (preds B5) | |
--- bc 35, spOff 0 (A::c) | |
35: RetC | |
(15) BeginCatch | |
(16) t8(%rbx):StkPtr = SpillStack t2(%rbx):StkPtr, 1 | |
(17) EndCatch t0(%rbp):FramePtr, t8(%rbx):StkPtr | |
no fallthrough | |
B1<Unlikely>: (preds B0) | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(06) t5(%rbx):StkPtr = SpillStack t2(%rbx):StkPtr, 1, InitNull | |
(07) SyncABIRegs t0(%rbp):FramePtr, t5(%rbx):StkPtr | |
(10) t6(%rbx):StkPtr = InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5(%rbx):StkPtr, t0(%rbp):FramePtr -> B2<Catch> | |
no fallthrough | |
B2<Catch>: (preds B1) | |
(08) BeginCatch | |
(09) EndCatch t0(%rbp):FramePtr, t2(%rbx):StkPtr | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- | |
[22;30;42m-------------------------------- after code gen -------------------------------- | |
B0: | |
Method public (leaf) A::c at 27 | |
--- bc 33, spOff 1 (A::c) | |
33: PopC | |
(00) t0(%rbp):FramePtr = DefFP | |
(01) t1(%rbx):StkPtr = DefSP<1> t0(%rbp):FramePtr | |
(02) t2(%rbx):StkPtr = AssertStk<Cell,0> t1(%rbx):StkPtr | |
(03) DecRefStack<Cell,0> t2(%rbx):StkPtr | |
0x8c084c0: cmp byte ptr [rbx+0x8], 0xc | |
0x8c084c4: jle 0x8c084d8 | |
0x8c084c6: mov rax, qword ptr [rbx] | |
0x8c084c9: cmp dword ptr [rax+0xc], 0x1 | |
0x8c084cd: jz 0xc800243 | |
0x8c084d3: jl 0x8c084d8 | |
0x8c084d5: dec dword ptr [rax+0xc] | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(11) ReleaseVVOrExit t0(%rbp):FramePtr -> B1<Unlikely> | |
0x8c084d8: cmp qword ptr [rbp+0x28], 0x0 | |
0x8c084dd: jnz 0xc800253 | |
AStubs: | |
0xc800243: lea rax, ptr [rbx] | |
0xc800246: mov rdi, rax | |
0xc800249: call 0x1000750 <HPHP::JIT::tv_release_generic> | |
0xc80024e: jmp 0x8c084d8 | |
0xc800253: test dword ptr [rbp+0x28], 0x2 | |
0xc80025a: jz 0xc80029b | |
0xc800260: mov rdi, rbp | |
0xc800263: call 0xff2fa0 <HPHP::ExtraArgs::deallocate> | |
0xc800268: jmp 0x8c084e3 | |
-> B3 | |
B3: (preds B0) | |
(12) DecRefThis t0(%rbp):FramePtr | |
0x8c084e3: mov rax, qword ptr [rbp+0x20] | |
0x8c084e7: test al, 0x1 | |
0x8c084ea: jnz 0x8c084f5 | |
0x8c084ec: dec dword ptr [rax+0xc] | |
0x8c084ef: jz 0xc80026d | |
(13) StRetVal t0(%rbp):FramePtr, InitNull | |
0x8c084f5: mov byte ptr [rbp+0x28], 0x8 | |
(14) t7(%rbx):StkPtr = RetAdjustStack t0(%rbp):FramePtr | |
0x8c084f9: lea rbx, ptr [rbp+0x20] | |
(18) CheckSurpriseFlags -> B5<Unlikely> | |
0x8c084fd: test byte ptr [r12], 0xff | |
0x8c08502: jnz 0xc80027a | |
AStubs: | |
0xc80026d: mov rdi, rax | |
0xc800270: call 0xff05c0 <HPHP::ObjectData::release> | |
0xc800275: jmp 0x8c084f5 | |
-> B8 | |
B8: (preds B3) | |
(24) t12:None = Jmp -> B6 | |
no fallthrough | |
B6: (preds B8 B7) | |
(20) t9:RetAddr = LdRetAddr t0(%rbp):FramePtr | |
0x8c08508: push qword ptr [rbp+0x8] | |
(21) t10(%rbp):FramePtr = FreeActRec t0(%rbp):FramePtr | |
0x8c0850b: mov rbp, qword ptr [rbp] | |
(22) RetCtrl<> t7(%rbx):StkPtr, t10(%rbp):FramePtr, t9:RetAddr | |
0x8c0850f: ret | |
no fallthrough | |
B5<Unlikely>: (preds B3) | |
(19) FunctionExitSurpriseHook<> t0(%rbp):FramePtr, t2(%rbx):StkPtr, InitNull -> B4<Catch> | |
0xc80027a: mov byte ptr [rbx-0x28], 0x8 | |
0xc80027e: mov rdi, rbp | |
0xc800281: call 0x231d500 <HPHP::EventHook::onFunctionExit> | |
-> B7<Unlikely> | |
B7<Unlikely>: (preds B5) | |
(23) t11:None = Jmp -> B6 | |
0xc800286: jmp 0x8c08508 | |
no fallthrough | |
B4<Catch>: (preds B5) | |
--- bc 35, spOff 0 (A::c) | |
35: RetC | |
(15) BeginCatch | |
(16) t8(%rbx):StkPtr = SpillStack t2(%rbx):StkPtr, 1 | |
0xc80028b: add rbx, 0x10 | |
(17) EndCatch t0(%rbp):FramePtr, t8(%rbx):StkPtr | |
0xc80028f: mov rdi, qword ptr [r12+0x8] | |
0xc800294: call 0x2004650 | |
0xc800299: ud2 | |
no fallthrough | |
B1<Unlikely>: (preds B0) | |
--- bc 35, spOff 1 (A::c) | |
35: RetC | |
(06) t5(%rbx):StkPtr = SpillStack t2(%rbx):StkPtr, 1, InitNull | |
0xc80029b: mov byte ptr [rbx+0x8], 0x8 | |
(07) SyncABIRegs t0(%rbp):FramePtr, t5(%rbx):StkPtr | |
(10) t6(%rbx):StkPtr = InterpOneCF<RetC: bcOff:35, popped:0, pushed:0> t5(%rbx):StkPtr, t0(%rbp):FramePtr -> B2<Catch> | |
0xc80029f: mov rsi, rbx | |
0xc8002a2: mov rdi, rbp | |
0xc8002a5: mov edx, 0x23 | |
0xc8002aa: call 0x21cfaf0 <HPHP::JIT::interpOneRetC> | |
0xc8002af: mov rbp, qword ptr [rax+0x20] | |
0xc8002b3: mov rbx, qword ptr [rax+0x10] | |
0xc8002b7: mov r10, qword ptr fs:[0xfff759b8] | |
0xc8002c0: add r10, 0x10 | |
0xc8002c4: mov qword ptr [r10], rbx | |
0xc8002c7: mov qword ptr [r10+0x10], rbp | |
0xc8002cb: xor r10d, r10d | |
0xc8002ce: mov edi, 0xd | |
0xc8002d3: ret | |
no fallthrough | |
B2<Catch>: (preds B1) | |
(08) BeginCatch | |
(09) EndCatch t0(%rbp):FramePtr, t2(%rbx):StkPtr | |
0xc8002d4: mov rdi, qword ptr [r12+0x8] | |
0xc8002d9: call 0x2004650 | |
0xc8002de: ud2 | |
no fallthrough | |
[22;30;42m-------------------------------------------------------------------------------- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment