Bug 130106
Summary: | DYEBench hits an assertion in JSC::DFG::DCEPhase::fixupBlock DFGDCEPhase.cpp(186) | ||
---|---|---|---|
Product: | WebKit | Reporter: | Ryosuke Niwa <rniwa> |
Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Normal | CC: | fpizlo, ggaren, mhahnenberg |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Bug Depends on: | 130069 | ||
Bug Blocks: |
Ryosuke Niwa
With the patch on the bug 130069, we're not hitting the following assertion:
SHOULD NEVER BE REACHED
/Volumes/Data/webkit3/Source/JavaScriptCore/dfg/DFGDCEPhase.cpp(186) : void JSC::DFG::DCEPhase::fixupBlock(JSC::DFG::BasicBlock *)
1 0x10c95c3d0 WTFCrash
2 0x10c3f16a1 JSC::DFG::DCEPhase::fixupBlock(JSC::DFG::BasicBlock*)
3 0x10c3f11ce JSC::DFG::DCEPhase::run()
4 0x10c3f03a5 bool JSC::DFG::runAndLog<JSC::DFG::DCEPhase>(JSC::DFG::DCEPhase&)
5 0x10c3f032e bool JSC::DFG::runPhase<JSC::DFG::DCEPhase>(JSC::DFG::Graph&)
6 0x10c3f02e8 JSC::DFG::performDCE(JSC::DFG::Graph&)
7 0x10c4a6360 JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&)
8 0x10c4a5a94 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&, JSC::DFG::ThreadData*)
9 0x10c548ef0 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*)
10 0x10c547b44 JSC::DFG::Worklist::threadFunction(void*)
11 0x10c9abbf0 WTF::threadEntryPoint(void*)
12 0x10c9ac878 WTF::wtfThreadEntryPoint(void*)
13 0x7fff8f8d4899 _pthread_body
14 0x7fff8f8d472a _pthread_struct_init
15 0x7fff8f8d8fc9 thread_start
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Ryosuke Niwa
Here's the graph dump:
block=0x7fa364851600 index=6
DFG for adapterDidCommit#EP3AeT:[0x7fa36895d300->0x7fa368146200->0x11b579470, DFGFunctionCall, 192]:
Fixpoint state: FixpointConverged; Form: LoadStore; Unification state: GloballyUnified; Ref count state: EverythingIsLive
Block #0 (bc#0): (OSR target)
Predecessors:
Dominated by: #0
Dominates: #0 #1 #2 #6 #7 #8 #9 #10 #14 #15 #16
vars before: arg1:(Top, TOP, TOP, TOP) arg0:(Top, TOP, TOP, TOP)
var links: arg1:@1 arg0:@0
0: < 1:-> SetArgument(arg0(a), W:SideState, bc#0) predicting Final
1: < 3:-> SetArgument(arg1(B~<Other>/FlushedJSValue), W:SideState, bc#0) predicting Other
2: < 3:-> GetLocal(@0, JS|UseAsOther, Final, arg0(a), R:Variables(6), bc#1) predicting Final
3: <!0:-> Phantom(Check:FinalObject:@2<Final>, MustGen|CanExit, Final, bc#1)
4: skipped < 0:-> MovHint(@2<Final>, arg0, W:SideState, bc#1)
5: < 2:-> SetLocal(Cell:@2<Final>, arg0(C<Final>/FlushedCell), W:Variables(6), bc#4) predicting Final
6: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#4)
7: < 2:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x11a918930 (%Be:JSActivation), bc#4)
8: skipped < 0:-> MovHint(@7<Object>, loc5, W:SideState, bc#4)
9: <!0:-> Phantom(MustGen|CanExit, bc#10)
10: <!0:-> Phantom(@7<Object>, MustGen, bc#10)
11: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa3685bc100, R:Watchpoint_fire, W:SideState, bc#10)
12: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x11a7a8030 (%AT:Function), bc#10)
13: skipped < 0:-> MovHint(@12<Function>, loc0, W:SideState, bc#10)
14: <!0:-> Phantom(MustGen|CanExit, bc#18)
15: skipped < 0:-> MovHint(@2<Final>, loc4, W:SideState, bc#18)
16: <!0:-> Phantom(MustGen|CanExit, bc#21)
17: < 1:-> JSConstant(JS|UseAsOther, Stringident, $0 = String (identifier): isError, ID: 5, bc#21)
18: skipped < 0:-> MovHint(@17<StringIdent>, loc3, W:SideState, bc#21)
19: <!0:-> Phantom(MustGen|CanExit, bc#24)
20: < 1:-> JSConstant(JS|UseAsOther, Bool, $1 = False, bc#24)
21: skipped < 0:-> MovHint(@20<Boolean>, loc2, W:SideState, bc#24)
22: <!0:-> Phantom(MustGen|CanExit, bc#27)
23: <!0:-> Call(@12<Function>, @7<Object>, @2<Final>, @17<StringIdent>, @20<Boolean>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, Bool, R:World, W:World, bc#27) predicting Bool
24: skipped < 0:-> MovHint(@23<Boolean>, loc0, W:SideState, bc#27)
364: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#36)
25: <!0:-> Phantom(MustGen|CanExit, bc#36)
26: < 1:-> GetLocal(@1, JS|UseAsOther, Other, arg1(B~<Other>/FlushedJSValue), R:Variables(7), bc#36) predicting Other
27: <!0:-> Branch(Check:ObjectOrOther:@26<Other>, MustGen|CanExit, T:#1, F:#2, W:SideState, bc#36)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc0:(Top, TOP, TOP, TOP) loc2:(Bool, False) loc3:(Stringident, TOP, TOP, [%C2:string], String (identifier): isError, ID: 5) loc4:(Final, TOP, TOP, TOP) loc5:(Otherobj, TOP, TOP, [%Be:JSActivation], Cell: 0x11a918930 (%Be:JSActivation), ID: 489)
var links: arg1:@26<Other> arg0:@5
Block #1 (bc#39):
Predecessors: #0
Dominated by: #0 #1
Dominates: #1
Phi Nodes: @449<2>->(), @470<2>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@449 arg0:@470
28: < 1:-> GetLocal(@449, JS|UseAsOther, Other, arg1(B~<Other>/FlushedJSValue), R:Variables(7), bc#39) predicting Other
29: < 2:-> GetLocal(@470, JS|UseAsOther, Final, arg0(C<Final>/FlushedCell), R:Variables(6), bc#39) predicting Final
30: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#39)
489: <!0:-> StoreBarrier(Check:Cell:@29<Final>, MustGen|CanExit, R:BarrierState, W:BarrierState, bc#39)
31: <!0:-> PutById(Check:Cell:@29<Final>, @28<Other>, MustGen|Clobbers|CanExit, id1{_data}, R:World, W:World, bc#39)
510: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#48)
32: <!0:-> Jump(MustGen|CanExit, T:#6, W:SideState, bc#48)
vars after:
var links: arg1:@28<Other> arg0:@29<Final>
Block #2 (bc#50):
Predecessors: #0
Dominated by: #0 #2
Dominates: #2
Phi Nodes: @448<2>->(), @457<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@457 arg0:@448
33: < 4:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x117f2e870 (%Dj:Window), bc#50)
34: skipped < 0:-> MovHint(@33<Object>, loc3, W:SideState, bc#50)
35: <!0:-> Phantom(MustGen|CanExit, bc#56)
36: <!0:-> StructureTransitionWatchpoint(Cell:@33<Object>, MustGen|CanExit, %Dj:Window, R:JSCell_structureID, bc#56)
37: <!0:-> Phantom(@33<Object>, MustGen, bc#56)
38: < 1:-> GetButterfly(Cell:@33<Object>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#56)
39: < 4:-> GetByOffset(@38<Other>, KnownCell:@33<Object>, JS|UseAsOther, Final, id2{Ember}, 152, R:NamedProperties(2), bc#56) predicting Final
40: skipped < 0:-> MovHint(@39<Final>, loc3, W:SideState, bc#56)
41: <!0:-> Phantom(MustGen|CanExit, bc#64)
42: <!0:-> CheckStructure(Check:Cell:@39<Final>, MustGen|CanExit, [%Cv:Object], R:JSCell_structureID, bc#64)
43: < 1:-> GetButterfly(Cell:@39<Final>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#64)
44: < 1:-> GetByOffset(@43<Other>, KnownCell:@39<Final>, JS|UseAsOther, Function, id3{mixin}, 218, R:NamedProperties(3), bc#64) predicting Function
45: skipped < 0:-> MovHint(@44<Function>, loc0, W:SideState, bc#64)
46: <!0:-> Phantom(MustGen|CanExit, bc#73)
47: < 2:-> GetLocal(@448, JS|UseAsOther, Final, arg0(C<Final>/FlushedCell), R:Variables(6), bc#73) predicting Final
48: <!1:-> GetById(Cell:@47<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, Final, id1{_data}, R:World, W:World, bc#73) predicting Final
49: skipped < 0:-> MovHint(@48<Final>, loc2, W:SideState, bc#73)
508: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#82)
50: < 2:-> SetLocal(@48<Final>, loc2(P*<Final>/FlushedJSValue), W:Variables(-3), bc#82) predicting Final
51: <!1:-> GetById(Cell:@47<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, Final, id4{_inFlightAttributes}, R:World, W:World, bc#82) predicting Final
52: skipped < 0:-> MovHint(@51<Final>, loc1, W:SideState, bc#82)
509: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#91)
53: < 1:-> SetLocal(@51<Final>, loc1(Q*<Final>/FlushedJSValue), W:Variables(-2), bc#91) predicting Final
54: <!0:-> CheckFunction(Check:Cell:@44<Function>, @39<Final>, MustGen|CanExit, function(0x11a7a4430, mixin#AnlAZn/<nogen>:[0x11a3dfc70]), bc#91)
--> mixin#AnlAZn:<0x11a3dfc70, bc#91, Call, known callee: Cell: 0x11a7a4430 (%AT:Function), ID: 375, numArgs+this = 3, stack < loc9>
55: < 2:-> JSConstant(JS|UseAsOther, Other, $3 = Undefined, bc#0)
56: skipped < 0:-> MovHint(@55<Other>, loc10, W:SideState, bc#0)
57: <!0:-> Phantom(MustGen|CanExit, bc#0)
58: skipped < 0:-> MovHint(@55<Other>, loc11, W:SideState, bc#0)
59: <!0:-> Phantom(MustGen|CanExit, bc#0)
60: skipped < 0:-> MovHint(@55<Other>, loc12, W:SideState, bc#0)
61: <!0:-> Phantom(MustGen|CanExit, bc#0)
62: < 5:-> JSConstant(JS|UseAsOther, Empty, $5 = <JSValue()>, bc#1)
63: skipped < 0:-> MovHint(@62, loc11, W:SideState, bc#1)
64: <!0:-> Phantom(@55<Other>, MustGen, bc#3)
65: < 1:-> SetLocal(@62, loc11(U*/FlushedJSValue), W:Variables(-12), bc#3) predicting Empty
66: skipped < 0:-> MovHint(@62, loc10, W:SideState, bc#3)
67: <!0:-> Phantom(@55<Other>, MustGen, bc#5)
68: < 1:-> SetLocal(@62, loc10(V*/FlushedJSValue), W:Variables(-11), bc#5) predicting Empty
69: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#6)
70: < 3:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x11a9ef670 (%Be:JSActivation), bc#6)
71: skipped < 0:-> MovHint(@70<Object>, loc13, W:SideState, bc#6)
72: <!0:-> Phantom(MustGen|CanExit, bc#12)
73: <!0:-> Phantom(@70<Object>, MustGen, bc#12)
74: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa363869ed0, R:Watchpoint_fire, W:SideState, bc#12)
75: < 3:-> WeakJSConstant(JS|UseAsOther, Function, 0x1198d52f0 (%Bj:Function), bc#12)
76: skipped < 0:-> MovHint(@75<Function>, loc14, W:SideState, bc#12)
77: <!0:-> Phantom(MustGen|CanExit, bc#20)
78: <!0:-> StructureTransitionWatchpoint(Cell:@75<Function>, MustGen|CanExit, %Bj:Function, R:JSCell_structureID, bc#20)
79: < 1:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x1198af890 (%AY:Function), bc#20)
80: <!0:-> StructureTransitionWatchpoint(Cell:@79<Object>, MustGen|CanExit, %AY:Function, R:JSCell_structureID, bc#20)
81: <!0:-> Phantom(@75<Function>, MustGen, bc#20)
82: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x1198d9430 (%Bj:Function), bc#20)
83: skipped < 0:-> MovHint(@82<Function>, loc15, W:SideState, bc#20)
84: <!0:-> Phantom(MustGen|CanExit, bc#29)
85: <!0:-> Phantom(Cell:@82<Function>, MustGen, bc#29)
88: skipped < 0:-> MovHint(@75<Function>, loc16, W:SideState, bc#33)
89: <!0:-> Phantom(MustGen|CanExit, bc#36)
90: <!0:-> Phantom(@62, MustGen, Empty, bc#36)
91: < 4:-> CreateArguments(@62, JS|UseAsOther, Arguments, R:GCState,BarrierState, W:GCState,BarrierState,Watchpoint_fire,SideState, bc#36)
92: skipped < 0:-> MovHint(@91<Arguments>, loc11, W:SideState, bc#36)
93: skipped < 0:-> MovHint(@91<Arguments>, loc10, W:SideState, bc#36)
506: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#38)
94: <!0:-> Flush(@65, MustGen, loc11(U*/FlushedJSValue), W:SideState, bc#38) predicting Empty
95: < 1:-> SetLocal(@91<Arguments>, loc11(CB*<Arguments>/FlushedJSValue), W:Variables(-12), bc#38) predicting Arguments
96: <!0:-> Flush(@68, MustGen, loc10(V*/FlushedJSValue), W:SideState, bc#38) predicting Empty
97: < 2:-> SetLocal(@91<Arguments>, loc10(EB*<Arguments>/FlushedJSValue), W:Variables(-11), bc#38) predicting Arguments
98: <!0:-> Phantom(@91<Arguments>, MustGen, Arguments, bc#38)
99: skipped < 0:-> MovHint(@91<Arguments>, loc19, W:SideState, bc#38)
100: <!0:-> Phantom(MustGen|CanExit, bc#41)
101: < 1:-> JSConstant(JS|UseAsOther, Int32, $4 = Int32: 1, bc#41)
102: skipped < 0:-> MovHint(@101<Int32>, loc18, W:SideState, bc#41)
103: <!0:-> Phantom(MustGen|CanExit, bc#44)
104: <!1:-> Call(@75<Function>, @91<Arguments>, @101<Int32>, JS|MustGen|VarArgs|Clobbers|UseAsOther|CanExit, Array, R:World, W:World, bc#44) predicting Array
105: skipped < 0:-> MovHint(@104<Array>, loc12, W:SideState, bc#44)
507: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#53)
106: <!0:-> Phantom(MustGen|CanExit, bc#53)
131: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#75)
133: skipped < 0:-> MovHint(@70<Object>, loc17, W:SideState, bc#75)
134: <!0:-> Phantom(MustGen|CanExit, bc#81)
135: <!0:-> Phantom(@70<Object>, MustGen, bc#81)
136: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa363867510, R:Watchpoint_fire, W:SideState, bc#81)
137: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x11a7a44f0 (%AT:Function), bc#81)
138: skipped < 0:-> MovHint(@137<Function>, loc13, W:SideState, bc#81)
139: <!0:-> Phantom(MustGen|CanExit, bc#89)
140: < 1:-> GetLocal(@50, JS|UseAsOther, Final, loc2(P*<Final>/FlushedJSValue), R:Variables(-3), bc#89) predicting Final
141: skipped < 0:-> MovHint(@140<Final>, loc16, W:SideState, bc#89)
142: <!0:-> Phantom(MustGen|CanExit, bc#92)
143: <!0:-> Phantom(MustGen|CanExit, Array, bc#92)
144: skipped < 0:-> MovHint(@104<Array>, loc15, W:SideState, bc#92)
145: <!0:-> Phantom(MustGen|CanExit, bc#95)
146: < 1:-> JSConstant(JS|UseAsOther, Bool, $1 = False, bc#95)
147: skipped < 0:-> MovHint(@146<Boolean>, loc14, W:SideState, bc#95)
148: <!0:-> Phantom(MustGen|CanExit, bc#98)
149: <!0:-> Call(@137<Function>, @70<Object>, @140<Final>, @104<Array>, @146<Boolean>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, Final, R:World, W:World, bc#98) predicting Final
150: skipped < 0:-> MovHint(@149<Final>, loc13, W:SideState, bc#98)
505: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#107)
151: <!0:-> Phantom(MustGen|CanExit, bc#107)
152: < 1:-> GetLocal(@97, JS|UseAsOther, Arguments, loc10(EB*<Arguments>/FlushedJSValue), R:Variables(-11), bc#107) predicting Arguments
154: <!0:-> TearOffArguments(@152<Arguments>, @62, MustGen, W:Arguments_registers, bc#107)
155: <!0:-> Flush(@53, MustGen, loc1(Q*<Final>/FlushedJSValue), W:SideState, bc#110) predicting Final
156: <!0:-> Flush(@50, MustGen, loc2(P*<Final>/FlushedJSValue), W:SideState, bc#110) predicting Final
157: <!0:-> Flush(@97, MustGen, loc10(EB*<Arguments>/FlushedJSValue), W:SideState, bc#110) predicting Arguments
158: <!0:-> Flush(@95, MustGen, loc11(CB*<Arguments>/FlushedJSValue), W:SideState, bc#110) predicting Arguments
159: <!0:-> Phantom(MustGen|CanExit, Final, bc#110)
160: skipped < 0:-> ZombieHint(loc0, W:SideState, bc#110)
161: <!0:-> Phantom(MustGen|CanExit, bc#110)
<-- mixin#AnlAZn:<0x11a3dfc70, bc#91, Call, known callee: Cell: 0x11a7a4430 (%AT:Function), ID: 375, numArgs+this = 3, stack < loc9>
162: <!0:-> Jump(MustGen, T:#6, W:SideState, bc#100)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc0:(Top, TOP, TOP, TOP) loc1:(Top, TOP, TOP, TOP) loc2:(Top, TOP, TOP, TOP) loc3:(Final, TOP, TOP, [%Cv:Object]) loc10:(Top, TOP, TOP, TOP) loc11:(Top, TOP, TOP, TOP) loc12:(Top, TOP, TOP, TOP) loc13:(Top, TOP, TOP, TOP) loc14:(Bool, False) loc15:(Top, TOP, TOP, TOP) loc16:(Top, TOP, TOP, TOP) loc17:(Otherobj, TOP, TOP, [%Be:JSActivation], Cell: 0x11a9ef670 (%Be:JSActivation), ID: 489) loc18:(Int32, Int32: 1) loc19:(Arguments, TOP, TOP, TOP)
var links: arg1:@457 arg0:@47<Final> loc1:@53 loc2:@50 loc10:@152<Arguments> loc11:@95
Block #6 (bc#100):
Predecessors: #1 #2
Dominated by: #0 #6
Dominates: #6 #7 #8 #9 #10 #14 #15 #16
Phi Nodes: @469<3>->(), @456<2>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@456 arg0:@469
163: < 9:-> GetLocal(@469, JS|UseAsOther, Final, arg0(C<Final>/FlushedCell), R:Variables(6), bc#100) predicting Final
164: skipped < 0:-> MovHint(@163<Final>, loc0, W:SideState, bc#100)
165: skipped < 0:-> SetLocal(@163<Final>, loc0(FC~<Final>/FlushedJSValue), W:Variables(-1), bc#103)
166: < 1:-> NewObject(JS|UseAsOther, Final, %DB:Object, R:GCState,BarrierState, W:GCState,BarrierState, bc#103)
167: skipped < 0:-> MovHint(@166<Final>, loc1, W:SideState, bc#103)
168: skipped < 0:-> SetLocal(@166<Final>, loc1(GC~<Final>/FlushedJSValue), W:Variables(-2), bc#107)
490: <!0:-> StoreBarrier(Cell:@163<Final>, MustGen, R:BarrierState, W:BarrierState, bc#107)
169: <!0:-> PutById(Cell:@163<Final>, @166<Final>, MustGen|Clobbers|CanExit, id4{_inFlightAttributes}, R:World, W:World, bc#107)
500: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#116)
170: skipped < 0:-> MovHint(@163<Final>, loc3, W:SideState, bc#116)
171: skipped < 0:-> SetLocal(@163<Final>, loc3(HC~<Final>/FlushedJSValue), W:Variables(-4), bc#119)
172: <!1:-> GetById(Cell:@163<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, Function, id5{send}, R:World, W:World, bc#119) predicting Function
173: skipped < 0:-> MovHint(@172<Function>, loc0, W:SideState, bc#119)
501: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#128)
174: skipped < 0:-> SetLocal(@172<Function>, loc0(IC~<Function>/FlushedJSValue), W:Variables(-1), bc#128)
175: < 1:-> JSConstant(JS|UseAsOther, Stringident, $2 = String (identifier): didCommit, ID: 5, bc#128)
176: skipped < 0:-> MovHint(@175<StringIdent>, loc2, W:SideState, bc#128)
177: skipped < 0:-> SetLocal(@175<StringIdent>, loc2(JC~<StringIdent>/FlushedJSValue), W:Variables(-3), bc#131)
178: <!0:-> Call(@172<Function>, @163<Final>, @175<StringIdent>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, Other, R:World, W:World, bc#131) predicting Other
179: skipped < 0:-> MovHint(@178<Other>, loc0, W:SideState, bc#131)
502: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#140)
180: skipped < 0:-> SetLocal(@178<Other>, loc0(KC~<Other>/FlushedJSValue), W:Variables(-1), bc#140)
181: skipped < 0:-> MovHint(@163<Final>, loc1, W:SideState, bc#140)
182: skipped < 0:-> SetLocal(@163<Final>, loc1(LC~<Final>/FlushedJSValue), W:Variables(-2), bc#143)
183: <!1:-> GetById(Cell:@163<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, Function, id6{updateRecordArraysLater}, R:World, W:World, bc#143) predicting Function
184: skipped < 0:-> MovHint(@183<Function>, loc0, W:SideState, bc#143)
503: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#152)
185: skipped < 0:-> SetLocal(@183<Function>, loc0(MC~<Function>/FlushedJSValue), W:Variables(-1), bc#152)
186: <!0:-> CheckFunction(Check:Cell:@183<Function>, @163<Final>, MustGen|CanExit, function(0x11b5d1df0, updateRecordArraysLater#ET1ozr/<nogen>:[0x11b578f70]), bc#152)
--> updateRecordArraysLater#ET1ozr:<0x11b578f70, bc#152, Call, known callee: Cell: 0x11b5d1df0 (%AT:Function), ID: 375, numArgs+this = 1, stack < loc7>
187: <!0:-> Phantom(FinalObject:@163<Final>, MustGen, Final, bc#1)
188: skipped < 0:-> MovHint(@163<Final>, loc1, W:SideState, bc#1)
189: < 1:-> SetLocal(Cell:@163<Final>, loc1(NC<Final>/FlushedCell), W:Variables(-2), bc#4) predicting Final
190: <!1:-> GetById(Cell:@163<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, BoolOther, id11{_updatingRecordArraysLater}, R:World, W:World, bc#4) predicting BoolOther
191: skipped < 0:-> MovHint(@190<Misc>, loc8, W:SideState, bc#4)
504: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#13)
192: skipped < 0:-> SetLocal(@190<Misc>, loc8(OC~<Misc>/FlushedJSValue), W:Variables(-9), bc#13)
193: <!0:-> Branch(@190<Misc>, MustGen|CanExit, T:#7, F:#8, W:SideState, bc#13)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc0:(Function, TOP, TOP, TOP, Cell: 0x11b5d1df0 (%AT:Function), ID: 375) loc1:(Final, TOP, TOP, TOP) loc2:(Stringident, TOP, TOP, [%C2:string], String (identifier): didCommit, ID: 5) loc3:(Final, TOP, TOP, TOP) loc8:(Top, TOP, TOP, TOP)
var links: arg1:@456 arg0:@163<Final> loc0:@185 loc1:@189 loc2:@177 loc3:@171 loc8:@192
Block #7 (bc#152 --> updateRecordArraysLater#ET1ozr:<0x11b578f70> bc#16):
Predecessors: #6
Dominated by: #0 #6 #7
Dominates: #7
Phi Nodes: @452<1>->(), @453<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@452 arg0:@453
194: skipped < 0:-> JSConstant(JS|PureInt, Other, $3 = Undefined, bc#16)
195: skipped < 0:-> MovHint(@194<Other>, loc0, W:SideState, bc#16)
196: skipped < 0:-> SetLocal(@194<Other>, loc0(PC~<Other>/FlushedJSValue), W:Variables(-1), bc#16)
197: <!0:-> Jump(MustGen, T:#14, W:SideState, bc#16)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc0:(Other, Undefined)
var links: arg1:@452 arg0:@453 loc0:@196
Block #8 (bc#152 --> updateRecordArraysLater#ET1ozr:<0x11b578f70> bc#18):
Predecessors: #6
Dominated by: #0 #6 #8
Dominates: #8 #9 #10
Phi Nodes: @488<1>->(), @461<2>->(), @455<2>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc1:(Final, TOP, TOP, TOP)
var links: arg1:@461 arg0:@455 loc1:@488
198: < 1:-> JSConstant(JS|UseAsOther, Bool, $6 = True, bc#18)
199: < 4:-> GetLocal(@488, JS|UseAsOther, Final, loc1(NC<Final>/FlushedCell), R:Variables(-2), bc#18) predicting Final
491: <!0:-> StoreBarrier(Cell:@199<Final>, MustGen, R:BarrierState, W:BarrierState, bc#18)
200: <!0:-> PutById(Cell:@199<Final>, @198<Boolean>, MustGen|Clobbers|CanExit, id11{_updatingRecordArraysLater}, R:World, W:World, bc#18)
498: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#27)
201: < 8:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x117f2e870 (%Dj:Window), bc#27)
202: skipped < 0:-> MovHint(@201<Object>, loc14, W:SideState, bc#27)
203: skipped < 0:-> SetLocal(@201<Object>, loc14(RC~<Object>/FlushedJSValue), W:Variables(-15), bc#33)
204: <!0:-> StructureTransitionWatchpoint(Cell:@201<Object>, MustGen|CanExit, %Dj:Window, R:JSCell_structureID, bc#33)
205: <!0:-> Phantom(@201<Object>, MustGen, bc#33)
206: < 1:-> GetButterfly(Cell:@201<Object>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#33)
207: < 3:-> GetByOffset(@206<Other>, KnownCell:@201<Object>, JS|UseAsOther, Final, id2{Ember}, 152, R:NamedProperties(2), bc#33) predicting Final
208: skipped < 0:-> MovHint(@207<Final>, loc15, W:SideState, bc#33)
209: skipped < 0:-> SetLocal(@207<Final>, loc15(SC~<Final>/FlushedJSValue), W:Variables(-16), bc#41)
210: <!0:-> CheckStructure(Check:Cell:@207<Final>, MustGen|CanExit, [%Cv:Object], R:JSCell_structureID, bc#41)
211: < 1:-> GetButterfly(Cell:@207<Final>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#41)
212: < 3:-> GetByOffset(@211<Other>, KnownCell:@207<Final>, JS|UseAsOther, Function, id12{run}, 211, R:NamedProperties(12), bc#41) predicting Function
213: skipped < 0:-> MovHint(@212<Function>, loc13, W:SideState, bc#41)
214: skipped < 0:-> SetLocal(@212<Function>, loc13(TC~<Function>/FlushedJSValue), W:Variables(-14), bc#50)
215: <!0:-> CheckStructure(Check:Cell:@212<Function>, MustGen|CanExit, [%BN:Function], R:JSCell_structureID, bc#50)
216: <!0:-> Phantom(@212<Function>, MustGen, bc#50)
217: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x11a7a5170 (%AT:Function), bc#50)
218: skipped < 0:-> MovHint(@217<Function>, loc8, W:SideState, bc#50)
219: skipped < 0:-> SetLocal(@217<Function>, loc8(UC~<Function>/FlushedJSValue), W:Variables(-9), bc#59)
220: < 1:-> JSConstant(JS|UseAsOther, Stringident, $7 = String (identifier): actions, ID: 5, bc#59)
221: skipped < 0:-> MovHint(@220<StringIdent>, loc12, W:SideState, bc#59)
222: < 2:-> SetLocal(@220<StringIdent>, loc12(VC*<StringIdent>/FlushedJSValue), W:Variables(-13), bc#62) predicting Stringident
223: skipped < 0:-> MovHint(@199<Final>, loc11, W:SideState, bc#62)
224: < 2:-> SetLocal(@199<Final>, loc11(WC*<Final>/FlushedJSValue), W:Variables(-12), bc#65) predicting Final
225: <!1:-> GetById(Cell:@199<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, Function, id14{updateRecordArrays}, R:World, W:World, bc#65) predicting Function
226: skipped < 0:-> MovHint(@225<Function>, loc10, W:SideState, bc#65)
499: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#74)
227: < 2:-> SetLocal(@225<Function>, loc10(XC*<Function>/FlushedJSValue), W:Variables(-11), bc#74) predicting Function
228: <!0:-> Phantom(@217<Function>, @212<Function>, MustGen, bc#74)
--> schedule#DonjJQ:<0x11a965a70, bc#74, Call, known callee: Cell: 0x11a7a5170 (%AT:Function), ID: 375, numArgs+this = 4, stack < loc19>
229: < 2:-> JSConstant(JS|UseAsOther, Other, $3 = Undefined, bc#0)
230: skipped < 0:-> MovHint(@229<Other>, loc20, W:SideState, bc#0)
231: skipped < 0:-> SetLocal(@229<Other>, loc20(YC*<Other>/FlushedJSValue), W:Variables(-21), bc#0)
232: skipped < 0:-> MovHint(@229<Other>, loc21, W:SideState, bc#0)
233: skipped < 0:-> SetLocal(@229<Other>, loc21(ZC*<Other>/FlushedJSValue), W:Variables(-22), bc#0)
234: < 2:-> JSConstant(JS|UseAsOther, Empty, $5 = <JSValue()>, bc#1)
235: skipped < 0:-> MovHint(@234, loc21, W:SideState, bc#1)
236: <!0:-> Phantom(@229<Other>, MustGen, bc#3)
237: < 2:-> SetLocal(@234, loc21(AD*/FlushedJSValue), W:Variables(-22), bc#3) predicting Empty
238: skipped < 0:-> MovHint(@234, loc20, W:SideState, bc#3)
239: <!0:-> Phantom(@229<Other>, MustGen, bc#5)
240: < 2:-> SetLocal(@234, loc20(BD*/FlushedJSValue), W:Variables(-21), bc#5) predicting Empty
241: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#6)
242: < 2:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x11993d470 (%Be:JSActivation), bc#6)
243: skipped < 0:-> MovHint(@242<Object>, loc23, W:SideState, bc#6)
244: skipped < 0:-> SetLocal(@242<Object>, loc23(CD~<Object>/FlushedJSValue), W:Variables(-24), bc#12)
245: <!0:-> Phantom(@242<Object>, MustGen, bc#12)
246: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa36385e4a0, R:Watchpoint_fire, W:SideState, bc#12)
247: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x11a7a5ab0 (%AT:Function), bc#12)
248: skipped < 0:-> MovHint(@247<Function>, loc22, W:SideState, bc#12)
249: skipped < 0:-> SetLocal(@247<Function>, loc22(DD~<Function>/FlushedJSValue), W:Variables(-23), bc#20)
250: <!0:-> Phantom(@247<Function>, @242<Object>, MustGen, bc#20)
--> checkAutoRun#Di3nk8:<0x11a966170, bc#20, Call, known callee: Cell: 0x11a7a5ab0 (%AT:Function), ID: 375, numArgs+this = 1, stack < loc29>
251: skipped < 0:-> MovHint(@201<Object>, loc30, W:SideState, bc#1)
252: skipped < 0:-> SetLocal(@201<Object>, loc30(ED~<Object>/FlushedJSValue), W:Variables(-31), bc#7)
253: <!0:-> StructureTransitionWatchpoint(Cell:@201<Object>, MustGen|CanExit, %Dj:Window, R:JSCell_structureID, bc#7)
254: <!0:-> Phantom(@201<Object>, MustGen, bc#7)
255: < 1:-> GetButterfly(Cell:@201<Object>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#7)
256: < 3:-> GetByOffset(@255<Other>, KnownCell:@201<Object>, JS|UseAsOther, Final, id2{Ember}, 152, R:NamedProperties(2), bc#7) predicting Final
257: skipped < 0:-> MovHint(@256<Final>, loc31, W:SideState, bc#7)
258: skipped < 0:-> SetLocal(@256<Final>, loc31(FD~<Final>/FlushedJSValue), W:Variables(-32), bc#15)
259: <!0:-> CheckStructure(Check:Cell:@256<Final>, MustGen|CanExit, [%Cv:Object], R:JSCell_structureID, bc#15)
260: < 1:-> GetButterfly(Cell:@256<Final>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#15)
261: < 3:-> GetByOffset(@260<Other>, KnownCell:@256<Final>, JS|UseAsOther, Function, id12{run}, 211, R:NamedProperties(12), bc#15) predicting Function
262: skipped < 0:-> MovHint(@261<Function>, loc30, W:SideState, bc#15)
263: skipped < 0:-> SetLocal(@261<Function>, loc30(GD~<Function>/FlushedJSValue), W:Variables(-31), bc#24)
264: <!0:-> CheckStructure(Check:Cell:@261<Function>, MustGen|CanExit, [%BN:Function], R:JSCell_structureID, bc#24)
265: < 1:-> GetButterfly(Cell:@261<Function>, Storage|UseAsOther, Other, R:JSObject_butterfly, bc#24)
266: < 1:-> GetByOffset(@265<Other>, KnownCell:@261<Function>, JS|UseAsOther, Final, id18{currentRunLoop}, 102, R:NamedProperties(18), bc#24) predicting Final
267: skipped < 0:-> MovHint(@266<Final>, loc30, W:SideState, bc#24)
268: skipped < 0:-> SetLocal(@266<Final>, loc30(HD~<Final>/FlushedJSValue), W:Variables(-31), bc#33)
269: <!0:-> Branch(Check:ObjectOrOther:@266<Final>, MustGen|CanExit, T:#10, F:#9, W:SideState, bc#33)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc1:(Final, TOP, TOP, TOP) loc8:(Function, TOP, TOP, TOP, Cell: 0x11a7a5170 (%AT:Function), ID: 375) loc10:(Top, TOP, TOP, TOP) loc11:(Final, TOP, TOP, TOP) loc12:(Stringident, TOP, TOP, [%C2:string], String (identifier): actions, ID: 5) loc13:(Function, TOP, TOP, [%BN:Function]) loc14:(Otherobj, NonArray, [%Dj:Window], [%Dj:Window], Cell: 0x117f2e870 (%Dj:Window), ID: 10436) loc15:(Final, TOP, TOP, [%Cv:Object]) loc20:(Empty) loc21:(Empty) loc22:(Function, TOP, TOP, TOP, Cell: 0x11a7a5ab0 (%AT:Function), ID: 375) loc23:(Otherobj, TOP, TOP, [%Be:JSActivation], Cell: 0x11993d470 (%Be:JSActivation), ID: 489) loc30:(ObjectOther, TOP, TOP, TOP) loc31:(Final, NonArray, [%Cv:Object], [%Cv:Object])
var links: arg1:@461 arg0:@455 loc1:@199<Final> loc8:@219 loc10:@227 loc11:@224 loc12:@222 loc13:@214 loc14:@203 loc15:@209 loc20:@240 loc21:@237 loc22:@249 loc23:@244 loc30:@268 loc31:@258
Block #9 (bc#152 --> updateRecordArraysLater#ET1ozr:<0x11b578f70> bc#74 --> schedule#DonjJQ:<0x11a965a70> bc#20 --> checkAutoRun#Di3nk8:<0x11a966170> bc#36):
Predecessors: #8
Dominated by: #0 #6 #8 #9
Dominates: #9
Phi Nodes: @475<1>->(), @444<1>->(), @481<1>->(), @466<1>->(), @450<1>->(), @474<1>->(), @454<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc10:(Top, TOP, TOP, TOP) loc11:(Final, TOP, TOP, TOP) loc12:(Stringident, TOP, TOP, [%C2:string], String (identifier): actions, ID: 5) loc20:(Empty) loc21:(Empty)
var links: arg1:@474 arg0:@454 loc10:@481 loc11:@466 loc12:@450 loc20:@444 loc21:@475
270: < 8:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x117f2e870 (%Dj:Window), bc#36)
271: skipped < 0:-> MovHint(@270<Object>, loc33, W:SideState, bc#36)
272: skipped < 0:-> SetLocal(@270<Object>, loc33(ID~<Object>/FlushedJSValue), W:Variables(-34), bc#42)
273: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#42)
274: <!0:-> CheckStructure(Check:Cell:@270<Object>, MustGen|CanExit, [%AW:Window], R:JSCell_structureID, bc#42)
275: <!0:-> Phantom(@270<Object>, MustGen|CanExit, bc#42)
276: < 1:-> GetButterfly(Check:Cell:@270<Object>, Storage|UseAsOther|CanExit, Other, R:JSObject_butterfly, bc#42)
277: < 2:-> GetByOffset(@276<Other>, Check:KnownCell:@270<Object>, JS|UseAsOther|CanExit, id2{Ember}, 152, R:NamedProperties(2), bc#42) predicting None
278: skipped < 0:-> MovHint(@277, loc33, W:SideState, bc#42)
279: skipped < 0:-> SetLocal(@277, CanExit, loc33(JD~/FlushedJSValue), W:Variables(-34), bc#50)
280: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#50)
281: <!1:-> GetById(@277, JS|MustGen|Clobbers|UseAsOther|CanExit, id19{assert}, R:World, W:World, bc#50) predicting None
282: skipped < 0:-> MovHint(@281, loc30, W:SideState, bc#50)
495: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#59)
283: skipped < 0:-> SetLocal(@281, CanExit, loc30(KD~/FlushedJSValue), W:Variables(-31), bc#59)
284: < 1:-> JSConstant(JS|UseAsOther, Stringident, $8 = String (identifier): You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run, ID: 5, bc#59)
285: skipped < 0:-> MovHint(@284<StringIdent>, loc32, W:SideState, bc#59)
286: skipped < 0:-> SetLocal(@284<StringIdent>, CanExit, loc32(LD~<StringIdent>/FlushedJSValue), W:Variables(-33), bc#62)
287: skipped < 0:-> MovHint(@270<Object>, loc34, W:SideState, bc#62)
288: skipped < 0:-> SetLocal(@270<Object>, CanExit, loc34(MD~<Object>/FlushedJSValue), W:Variables(-35), bc#68)
289: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#68)
290: <!0:-> CheckStructure(Check:Cell:@270<Object>, MustGen|CanExit, [%AW:Window], R:JSCell_structureID, bc#68)
291: <!0:-> Phantom(@270<Object>, MustGen|CanExit, bc#68)
292: < 1:-> GetButterfly(Check:Cell:@270<Object>, Storage|UseAsOther|CanExit, Other, R:JSObject_butterfly, bc#68)
293: < 1:-> GetByOffset(@292<Other>, Check:KnownCell:@270<Object>, JS|UseAsOther|CanExit, id2{Ember}, 152, R:NamedProperties(2), bc#68) predicting None
294: skipped < 0:-> MovHint(@293, loc35, W:SideState, bc#68)
295: skipped < 0:-> SetLocal(@293, CanExit, loc35(ND~/FlushedJSValue), W:Variables(-36), bc#76)
296: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#76)
297: <!1:-> GetById(@293, JS|MustGen|Clobbers|UseAsOther|CanExit, id20{testing}, R:World, W:World, bc#76) predicting None
298: skipped < 0:-> MovHint(@297, loc34, W:SideState, bc#76)
496: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#85)
299: skipped < 0:-> SetLocal(@297, CanExit, loc34(OD~/FlushedJSValue), W:Variables(-35), bc#85)
300: < 1:-> LogicalNot(@297, Boolean|UseAsOther|CanExit, Bool, bc#85)
301: skipped < 0:-> MovHint(@300<Boolean>, loc31, W:SideState, bc#85)
302: skipped < 0:-> SetLocal(@300<Boolean>, CanExit, loc31(PD~<Boolean>/FlushedJSValue), W:Variables(-32), bc#88)
303: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#88)
304: <!0:-> Call(@281, @277, @284<StringIdent>, @300<Boolean>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, R:World, W:World, bc#88) predicting None
305: skipped < 0:-> MovHint(@304, loc30, W:SideState, bc#88)
497: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#97)
306: skipped < 0:-> SetLocal(@304, CanExit, loc30(QD~/FlushedJSValue), W:Variables(-31), bc#97)
307: <!0:-> Jump(MustGen|CanExit, T:#10, W:SideState, bc#97)
vars after:
var links: arg1:@474 arg0:@454 loc10:@481 loc11:@466 loc12:@450 loc20:@444 loc21:@475 loc30:@306 loc31:@302 loc32:@286 loc33:@279 loc34:@299 loc35:@295
Block #10 (bc#152 --> updateRecordArraysLater#ET1ozr:<0x11b578f70> bc#74 --> schedule#DonjJQ:<0x11a965a70> bc#20 --> checkAutoRun#Di3nk8:<0x11a966170> bc#97):
Predecessors: #8 #9
Dominated by: #0 #6 #8 #10
Dominates: #10
Phi Nodes: @476<2>->(), @484<2>->(), @473<2>->(), @463<2>->(), @471<1>->(), @451<1>->(), @459<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc10:(Top, TOP, TOP, TOP) loc11:(Final, TOP, TOP, TOP) loc12:(Stringident, TOP, TOP, [%C2:string], String (identifier): actions, ID: 5) loc20:(Empty) loc21:(Empty)
var links: arg1:@451 arg0:@459 loc10:@473 loc11:@484 loc12:@365 loc20:@463 loc21:@401
308: skipped < 0:-> JSConstant(JS|PureInt, Other, $3 = Undefined, bc#97)
309: skipped < 0:-> MovHint(@308<Other>, loc22, W:SideState, bc#97)
310: skipped < 0:-> SetLocal(@308<Other>, loc22(RD~<Other>/FlushedJSValue), W:Variables(-23), bc#97)
<-- checkAutoRun#Di3nk8:<0x11a966170, bc#20, Call, known callee: Cell: 0x11a7a5ab0 (%AT:Function), ID: 375, numArgs+this = 1, stack < loc29>
311: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#29)
312: < 2:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x11993d470 (%Be:JSActivation), bc#29)
313: skipped < 0:-> MovHint(@312<Object>, loc22, W:SideState, bc#29)
314: skipped < 0:-> SetLocal(@312<Object>, loc22(SD~<Object>/FlushedJSValue), W:Variables(-23), bc#35)
315: <!0:-> Phantom(@312<Object>, MustGen, bc#35)
316: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa36385cf00, R:Watchpoint_fire, W:SideState, bc#35)
317: < 3:-> WeakJSConstant(JS|UseAsOther, Final, 0x11993d1b0 (%DU:Object), bc#35)
318: skipped < 0:-> MovHint(@317<Final>, loc23, W:SideState, bc#35)
319: skipped < 0:-> SetLocal(@317<Final>, loc23(TD~<Final>/FlushedJSValue), W:Variables(-24), bc#43)
320: <!0:-> StructureTransitionWatchpoint(Cell:@317<Final>, MustGen|CanExit, %DU:Object, R:JSCell_structureID, bc#43)
321: < 1:-> WeakJSConstant(JS|UseAsOther, Final, 0x11997ec70 (%DG:Object), bc#43)
322: <!0:-> StructureTransitionWatchpoint(Cell:@321<Final>, MustGen|CanExit, %DG:Object, R:JSCell_structureID, bc#43)
323: <!0:-> Phantom(@317<Final>, MustGen, bc#43)
324: < 3:-> WeakJSConstant(JS|UseAsOther, Function, 0x11a7a54b0 (%AT:Function), bc#43)
325: skipped < 0:-> MovHint(@324<Function>, loc22, W:SideState, bc#43)
326: skipped < 0:-> SetLocal(@324<Function>, loc22(UD~<Function>/FlushedJSValue), W:Variables(-23), bc#52)
327: <!0:-> CheckStructure(Cell:@324<Function>, MustGen|CanExit, [%AT:Function], R:JSCell_structureID, bc#52)
328: < 1:-> WeakJSConstant(JS|UseAsOther, Otherobj, 0x1198af890 (%AY:Function), bc#52)
329: <!0:-> StructureTransitionWatchpoint(Cell:@328<Object>, MustGen|CanExit, %AY:Function, R:JSCell_structureID, bc#52)
330: <!0:-> Phantom(@324<Function>, MustGen, bc#52)
331: < 1:-> WeakJSConstant(JS|UseAsOther, Function, 0x1198d9470 (%Bj:Function), bc#52)
332: skipped < 0:-> MovHint(@331<Function>, loc24, W:SideState, bc#52)
333: skipped < 0:-> SetLocal(@331<Function>, loc24(VD~<Function>/FlushedJSValue), W:Variables(-25), bc#61)
334: <!0:-> Phantom(Cell:@331<Function>, MustGen, bc#61)
337: skipped < 0:-> MovHint(@324<Function>, loc25, W:SideState, bc#65)
338: skipped < 0:-> SetLocal(@324<Function>, loc25(XD~<Function>/FlushedJSValue), W:Variables(-26), bc#68)
339: <!0:-> FunctionReentryWatchpoint(MustGen, R:Watchpoint_fire, bc#68)
341: skipped < 0:-> MovHint(@312<Object>, loc26, W:SideState, bc#68)
342: skipped < 0:-> SetLocal(@312<Object>, loc26(YD~<Object>/FlushedJSValue), W:Variables(-27), bc#74)
343: <!0:-> Phantom(@312<Object>, MustGen, bc#74)
344: <!0:-> VariableWatchpoint(MustGen|CanExit, 0x7fa36385cf00, R:Watchpoint_fire, W:SideState, bc#74)
346: skipped < 0:-> MovHint(@317<Final>, loc27, W:SideState, bc#74)
347: skipped < 0:-> SetLocal(@317<Final>, loc27(ZD~<Final>/FlushedJSValue), W:Variables(-28), bc#82)
349: skipped < 0:-> MovHint(@317<Final>, loc31, W:SideState, bc#82)
350: skipped < 0:-> SetLocal(@317<Final>, loc31(AE~<Final>/FlushedJSValue), W:Variables(-32), bc#82)
365: <!0:-> PhantomLocal(@476, MustGen, loc12(VC*<StringIdent>/FlushedJSValue), W:SideState, bc#82) predicting Stringident
351: < 1:-> JSConstant(JS|UseAsOther, Stringident, $7 = String (identifier): actions, ID: 5, bc#82)
352: skipped < 0:-> MovHint(@351<StringIdent>, loc30, W:SideState, bc#82)
353: skipped < 0:-> SetLocal(@351<StringIdent>, loc30(CE~<StringIdent>/FlushedJSValue), W:Variables(-31), bc#82)
354: < 1:-> GetLocal(@484, JS|UseAsOther, Final, loc11(WC*<Final>/FlushedJSValue), R:Variables(-12), bc#82) predicting Final
355: skipped < 0:-> MovHint(@354<Final>, loc29, W:SideState, bc#82)
356: skipped < 0:-> SetLocal(@354<Final>, loc29(EE~<Final>/FlushedJSValue), W:Variables(-30), bc#82)
357: < 1:-> GetLocal(@473, JS|UseAsOther, Function, loc10(XC*<Function>/FlushedJSValue), R:Variables(-11), bc#82) predicting Function
358: skipped < 0:-> MovHint(@357<Function>, loc28, W:SideState, bc#82)
359: skipped < 0:-> SetLocal(@357<Function>, loc28(GE~<Function>/FlushedJSValue), W:Variables(-29), bc#82)
360: <!0:-> Call(@324<Function>, @317<Final>, @351<StringIdent>, @354<Final>, @357<Function>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, Final, R:World, W:World, bc#82) predicting Final
361: skipped < 0:-> MovHint(@360<Final>, loc23, W:SideState, bc#82)
494: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#91)
362: skipped < 0:-> SetLocal(@360<Final>, loc23(HE~<Final>/FlushedJSValue), W:Variables(-24), bc#91)
394: < 1:-> GetLocal(@463, JS|UseAsOther, Empty, loc20(BD*/FlushedJSValue), R:Variables(-21), bc#124) predicting Empty
395: skipped < 0:-> JSConstant(JS|UseAsOther, Empty, $5 = <JSValue()>, bc#124)
396: <!0:-> Phantom(@394, MustGen, bc#124)
397: <!0:-> Flush(@473, MustGen, loc10(XC*<Function>/FlushedJSValue), W:SideState, bc#127) predicting Function
398: <!0:-> Flush(@484, MustGen, loc11(WC*<Final>/FlushedJSValue), W:SideState, bc#127) predicting Final
399: <!0:-> Flush(@476, MustGen, loc12(VC*<StringIdent>/FlushedJSValue), W:SideState, bc#127) predicting Stringident
400: <!0:-> Flush(@463, MustGen, loc20(BD*/FlushedJSValue), W:SideState, bc#127) predicting Empty
401: <!0:-> Flush(@471, MustGen, loc21(AD*/FlushedJSValue), W:SideState, bc#127) predicting Empty
403: skipped < 0:-> MovHint(@308<Other>, loc8, W:SideState, bc#127)
404: skipped < 0:-> SetLocal(@308<Other>, loc8(YE~<Other>/FlushedJSValue), W:Variables(-9), bc#127)
<-- schedule#DonjJQ:<0x11a965a70, bc#74, Call, known callee: Cell: 0x11a7a5170 (%AT:Function), ID: 375, numArgs+this = 4, stack < loc19>
405: skipped < 0:-> MovHint(@308<Other>, loc0, W:SideState, bc#83)
406: skipped < 0:-> SetLocal(@308<Other>, loc0(ZE~<Other>/FlushedJSValue), W:Variables(-1), bc#83)
407: <!0:-> Jump(MustGen, T:#14, W:SideState, bc#83)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP) loc0:(Other, Undefined) loc8:(Other, Undefined) loc10:(Top, TOP, TOP, TOP) loc11:(Top, TOP, TOP, TOP) loc12:(Top, TOP, TOP, TOP) loc20:(TopEmpty, TOP, TOP, TOP) loc21:(TopEmpty, TOP, TOP, TOP) loc22:(Function, TOP, TOP, TOP, Cell: 0x11a7a54b0 (%AT:Function), ID: 375) loc23:(Top, TOP, TOP, TOP) loc24:(Function, TOP, TOP, [%Bj:Function], Cell: 0x1198d9470 (%Bj:Function), ID: 380) loc25:(Function, TOP, TOP, TOP, Cell: 0x11a7a54b0 (%AT:Function), ID: 375) loc26:(Otherobj, TOP, TOP, [%Be:JSActivation], Cell: 0x11993d470 (%Be:JSActivation), ID: 489) loc27:(Final, TOP, TOP, [%DU:Object], Cell: 0x11993d1b0 (%DU:Object), ID: 7337) loc28:(Top, TOP, TOP, TOP) loc29:(Final, TOP, TOP, TOP) loc30:(Stringident, TOP, TOP, [%C2:string], String (identifier): actions, ID: 5) loc31:(Final, TOP, TOP, [%DU:Object], Cell: 0x11993d1b0 (%DU:Object), ID: 7337)
var links: arg1:@451 arg0:@459 loc0:@406 loc8:@404 loc10:@357<Function> loc11:@354<Final> loc12:@365 loc20:@394 loc21:@401 loc22:@326 loc23:@362 loc24:@333 loc25:@338 loc26:@342 loc27:@347 loc28:@359 loc29:@356 loc30:@353 loc31:@350
Block #14 (bc#161):
Predecessors: #7 #10
Dominated by: #0 #6 #14
Dominates: #14 #15 #16
Phi Nodes: @443<3>->(), @477<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@443 arg0:@477
<-- updateRecordArraysLater#ET1ozr:<0x11b578f70, bc#152, Call, known callee: Cell: 0x11b5d1df0 (%AT:Function), ID: 375, numArgs+this = 1, stack < loc7>
408: < 1:-> GetLocal(@443, JS|UseAsOther, Other, arg1(B~<Other>/FlushedJSValue), R:Variables(7), bc#161) predicting Other
409: <!0:-> Branch(ObjectOrOther:@408<Other>, MustGen|CanExit, T:#16, F:#15, W:SideState, bc#161)
vars after: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@408<Other> arg0:@477
Block #15 (bc#164):
Predecessors: #14
Dominated by: #0 #6 #14 #15
Dominates: #15
Phi Nodes: @445<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP)
var links: arg1:@410
410: <!0:-> Flush(@445, MustGen, arg1(B~<Other>/FlushedJSValue), W:SideState, bc#164) predicting Other
411: < 1:-> JSConstant(JS|UseAsOther, Other, $3 = Undefined, bc#164)
412: <!0:-> Return(@411<Other>, MustGen, W:SideState, bc#164)
vars after:
var links: arg1:@410
Block #16 (bc#166):
Predecessors: #14
Dominated by: #0 #6 #14 #16
Dominates: #16
Phi Nodes: @446<1>->(), @447<1>->()
vars before: arg1:(ObjectOther, TOP, TOP, TOP) arg0:(Final, TOP, TOP, TOP)
var links: arg1:@427 arg0:@446
413: < 2:-> GetLocal(@446, JS|UseAsOther, Final, arg0(C<Final>/FlushedCell), R:Variables(6), bc#166) predicting Final
414: skipped < 0:-> MovHint(@413<Final>, loc3, W:SideState, bc#166)
415: skipped < 0:-> SetLocal(@413<Final>, loc3(DF~<Final>/FlushedJSValue), W:Variables(-4), bc#169)
416: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#169)
417: <!1:-> GetById(Check:Cell:@413<Final>, JS|MustGen|Clobbers|UseAsOther|CanExit, id7{suspendRelationshipObservers}, R:World, W:World, bc#169) predicting None
418: skipped < 0:-> MovHint(@417, loc0, W:SideState, bc#169)
492: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#178)
419: skipped < 0:-> SetLocal(@417, CanExit, loc0(EF~/FlushedJSValue), W:Variables(-1), bc#178)
420: < 1:-> NewFunctionExpression(JS|UseAsOther|CanExit, Function, #<nogen>/<nogen>:[0x117be0a70], R:GCState,BarrierState, W:GCState,BarrierState, bc#178)
421: skipped < 0:-> MovHint(@420<Function>, loc2, W:SideState, bc#178)
422: skipped < 0:-> SetLocal(@420<Function>, CanExit, loc2(FF~<Function>/FlushedJSValue), W:Variables(-3), bc#181)
423: <!0:-> ForceOSRExit(MustGen|CanExit, W:SideState, bc#181)
424: <!0:-> Call(@417, @413<Final>, @420<Function>, JS|MustGen|VarArgs|Clobbers|PureInt|CanExit, R:World, W:World, bc#181) predicting None
425: skipped < 0:-> MovHint(@424, loc0, W:SideState, bc#181)
493: <!0:-> InvalidationPoint(MustGen|CanExit, W:SideState, bc#190)
426: skipped < 0:-> SetLocal(@424, CanExit, loc0(GF~/FlushedJSValue), W:Variables(-1), bc#190)
427: <!0:-> Flush(@447, MustGen, arg1(B~<Other>/FlushedJSValue), W:SideState, bc#190) predicting Other
428: < 1:-> JSConstant(JS|UseAsOther, Other, $3 = Undefined, bc#190)
429: <!0:-> Return(@428<Other>, MustGen|CanExit, W:SideState, bc#190)
vars after:
var links: arg1:@427 arg0:@413<Final> loc0:@426 loc2:@422 loc3:@415
Structures:
%AT:Function = 0x117ee0d70:[Function, {}, NonArray, Proto:0x1198af890]
%AW:Window = 0x11b823370:[Window, {Object:100=>0x1198af130, Function:101=>0x1198af110, Array:102=>0x1198af0f0, RegExp:103=>0x11990fc70, EvalError:104=>0x1198aefb0, RangeError:105=>0x1198aef90, ReferenceError:106=>0x1198aef70, SyntaxError:107=>0x1198aef50, TypeError:108=>0x1198aef30, URIError:109=>0x1198aef10, Promise:110=>0x1198aeef0, Set:111=>0x1198af0d0, Map:112=>0x1198af0b0, Date:113=>0x1198af090, String:114=>0x1198af070, Boolean:115=>0x1198af050, Number:116=>0x1198af030, Error:117=>0x1198af010, ArrayBuffer:118=>0x1198aeff0, WeakMap:119=>0x1198aefd0, ArrayIterator:120, ArgumentsIterator:121, MapIterator:122, SetIterator:123, eval:124=>0x1198d6cf0, JSON:125, Math:126, DataView:127=>0x1198aedb0, Float64Array:128=>0x1198aedd0, Float32Array:129=>0x1198aedf0, Uint32Array:130=>0x1198aee10, Int32Array:131=>0x1198aee90, Uint16Array:132=>0x1198aee30, Int16Array:133=>0x1198aeeb0, Uint8ClampedArray:134=>0x1198aee50, Uint8Array:135=>0x1198aee70, Int8Array:136=>0x1198aeed0, console:137, Name:138=>0x1198aed90, testRunner:139, GCController:140, accessibilityController:141, internals:142, appleScriptController:143, eventSender:144, navigationController:145, objCController:146, objCPlugin:147, objCPluginFunction:148, textInputController:149, $:150=>0x1198d51f0, jQuery:151=>0x1198d51f0, Ember:152, Em:153, MetamorphENV:154, DS:155, Todos:156, parseFloat:157=>0x11b658a70}, NonArray, Proto:0x117f1f8b0]
%AY:Function = 0x117bd8470:[Function, {name:100, length:101, toString:102=>0x1198d94b0, apply:103=>0x1198d9470, call:104=>0x1198d9430, bind:105=>0x1198d93f0, constructor:106=>0x1198af110, property:107=>0x11a9fe5b0, observes:108=>0x11a9fe570, observesImmediately:109=>0x11a9fe530, observesBefore:110=>0x11a9fe4f0, on:111=>0x11a9fe4b0}, NonArray, Proto:0x117f1f8a0]
%BN:Function = 0x11a7e62f0:[Function, {join:100=>0x11a7a5230, backburner:101, currentRunLoop:102, queues:103, begin:104=>0x11a7a51f0, end:105=>0x11a7a51b0, schedule:106=>0x11a7a5170, hasScheduledTimers:107=>0x11a7a5130, cancelTimers:108=>0x11a7a50f0, sync:109=>0x11a7a50b0, later:110=>0x11a7a5070, once:111=>0x11a7a5030, scheduleOnce:112=>0x11a7a4ff0, next:113=>0x11a7a4fb0, cancel:114=>0x11a7a4f70, debounce:115=>0x11a7a4f30, throttle:116=>0x11a7a4ef0}, NonArray, Proto:0x1198af890]
%Be:JSActivation = 0x119b4d170:[JSActivation, {}, NonArray]
%Bj:Function = 0x117ee0af0:[Function, {name:100, length:101}, NonArray, Proto:0x1198af890]
%C2:string = 0x117eefd70:[string, {}, NonArray]
%Cv:Object = 0x11b701ef0:[Object, {ENV:0, assert:1=>0x11a7a9b30, warn:100=>0x11a7a9af0, debug:101=>0x11a7a9ab0, deprecate:102=>0x11a7a9a70, deprecateFunc:103=>0x11a7a9a30, imports:104, exports:105, lookup:106, isNamespace:107, toString:108=>0x11a7a98b0, VERSION:109, config:110, FEATURES:111, EXTEND_PROTOTYPES:112, LOG_STACKTRACE_ON_DEPRECATION:113, SHIM_ES5:114, LOG_VERSION:115, K:116=>0x11a7a9830, uuid:117, merge:118=>0x11a7a97f0, isNone:119=>0x11a7a97b0, none:120=>0x11a7a9770, isEmpty:121=>0x11a7a9730, empty:122=>0x11a7a96f0, platform:123, create:124=>0x11a7a9670, ArrayPolyfills:125, Error:126=>0x11a7a93b0, onerror:127, handleErrors:128=>0x11a7a9370, GUID_PREFIX:129, GUID_KEY:130, generateGuid:131=>0x11a7a9270, guidFor:132=>0x11a7a9230, META_KEY:133, EMPTY_META:134, meta:135=>0x11a7a91f0, getMeta:136=>0x11a7a91b0, setMeta:137=>0x11a7a9170, metaPath:138=>0x11a7a9130, wrap:139=>0x11a7a90f0, isArray:140=>0x11a7a90b0, makeArray:141=>0x11a7a9070, canInvoke:142=>0x11a7a92b0, tryInvoke:143=>0x11a7a9030, tryFinally:144=>0x11a7a8fb0, tryCatchFinally:145=>0x11a7a8f70, typeOf:146=>0x11a7a8ef0, Instrumentation:147, instrument:148=>0x11a7a8db0, subscribe:149=>0x11a7a8d70, EnumerableUtils:150, normalizeTuple:151=>0x11a7a89b0, _getPath:152=>0x11a7a8970, getWithDefault:153=>0x11a7a8930, get:154=>0x11a7a89f0, on:155=>0x11a7a87f0, addListener:156=>0x11a7a87b0, removeListener:157=>0x11a7a8830, _suspendListener:158=>0x11a7a8770, _suspendListeners:159=>0x11a7a8730, sendEvent:160=>0x11a7a86f0, hasListeners:161=>0x11a7a86b0, watchedEvents:162=>0x11a7a8670, listenersFor:163=>0x11a7a8630, listenersDiff:164=>0x11a7a85f0, listenersUnion:165=>0x11a7a85b0, _ObserverSet:166=>0x11a7a8530, propertyWillChange:167=>0x11a7a83f0, propertyDidChange:168=>0x11a7a83b0, overrideChains:169=>0x11a7a8130, beginPropertyChanges:170=>0x11a7a8230, endPropertyChanges:171=>0x11a7a81f0, changeProperties:172=>0x11a7a80f0, set:173=>0x11a7a8030, trySet:174=>0x11a7a7ff0, OrderedSet:175=>0x11a7a7ef0, Map:176=>0x11a7a7c70, MapWithDefault:177=>0x11a7a7a70, Logger:178, Descriptor:179=>0x11a7a7730, MANDATORY_SETTER_FUNCTION:180=>0x11a7a76f0, DEFAULT_GETTER_FUNCTION:181=>0x11a7a76b0, defineProperty:182=>0x11a7a7670, getProperties:183=>0x11a7a75f0, setProperties:184=>0x11a7a7570, watchKey:185=>0x11a7a74f0, unwatchKey:186=>0x11a7a74b0, flushPendingChains:187=>0x11a7a7370, removeChainWatcher:188=>0x11a7a7330, _ChainNode:189=>0x11a7a72f0, finishChains:190=>0x11a7a6ff0, watchPath:191=>0x11a7a6ef0, unwatchPath:192=>0x11a7a6eb0, watch:193=>0x11a7a6df0, isWatching:194=>0x11a7a6db0, unwatch:195=>0x11a7a6d70, rewatch:196=>0x11a7a6d30, destroy:197=>0x11a7a6cf0, ComputedProperty:198=>0x11a7a6b70, computed:199=>0x11a7a6870, cacheFor:200=>0x11a7a6830, addObserver:201=>0x11a7a5e70, observersFor:202=>0x11a7a5e30, removeObserver:203=>0x11a7a5df0, addBeforeObserver:204=>0x11a7a5db0, _suspendBeforeObserver:205=>0x11a7a5d70, _suspendObserver:206=>0x11a7a5d30, _suspendBeforeObservers:207=>0x11a7a5cf0, _suspendObservers:208=>0x11a7a5cb0, beforeObserversFor:209=>0x11a7a5c70, removeBeforeObserver:210=>0x11a7a5c30, run:211=>0x11a7a5270, LOG_BINDINGS:212, isGlobalPath:213=>0x11a7a4e30, Binding:214=>0x11a7a4df0, bind:215=>0x11a7a49f0, oneWay:216=>0x11a7a49b0, IS_BINDING:217, mixin:218=>0x11a7a4430, Mixin:219=>0x11a7a43f0, anyUnprocessedMixins:220, required:221=>0x11a7a4130, alias:222=>0x11a7a40b0, aliasMethod:223=>0x11a7a4070, observer:224=>0x11a7a4030, immediateObserver:225=>0x11a7a3ff0, beforeObserver:226=>0x11a7a3fb0, libraries:227, MODEL_FACTORY_INJECTIONS:228, compare:229=>0x11a7a36b0, copy:230=>0x11a7a3670, inspect:231=>0x11a7a3630, isEqual:232=>0x11a7a35f0, ORDER_DEFINITION:233, keys:234=>0x11a7a35b0, STRINGS:235, String:236, Observable:237, CoreObject:238=>0x11a7a2a70, Object:239=>0x11a7a2470, Namespace:240=>0x11a7a1fb0, NAME_KEY:241, ObjectProxy:242=>0x11a7a1b70, Enumerable:243, Array:244, ReduceComputedProperty:245=>0x11a7a0970, reduceComputed:246=>0x11a9ffd70, ArrayComputedProperty:247=>0x11a9ffcf0, arrayComputed:248=>0x11a9ffbf0, RSVP:249, Comparable:250, Copyable:251, Freezable:252, FROZEN_ERROR:253, MutableEnumerable:254, MutableArray:255, TargetActionSupport:256, Evented:257, DeferredMixin:258, ActionHandler:259, PromiseProxyMixin:260, TrackedArray:261=>0x11a9fd3f0, SubArray:262=>0x11a9fd130, Container:263=>0x11a9fcf30, Application:264, ArrayProxy:265=>0x11a9fbcb0, EachProxy:266=>0x11a9fb530, NativeArray:267, A:268, Set:269=>0x11a9fa170, Deferred:270=>0x11a9f9f70, onLoad:271=>0x11a9f9d30, runLoadHooks:272=>0x11a9f9cf0, ControllerMixin:273, Controller:274=>0x11a9f9b30, SortableMixin:275, ArrayController:276=>0x11a9f93b0, ObjectController:277=>0x11a9f91b0, $:278=>0x1198d51f0, ViewUtils:279, RenderBuffer:280=>0x11a9f8af0, _RenderBuffer:281=>0x11a9f8ab0, EventDispatcher:282=>0x11a9f8470, TEMPLATES:283, CoreView:284=>0x11a9f7df0, _ViewCollection:285=>0x11a9f7c30, View:286=>0x11a9f6a30, ContainerView:287=>0x11a9f51b0, CollectionView:288=>0x11a9f4cb0, Component:289=>0x11a9f4930, ViewTargetActionSupport:290, Handlebars:291, _Metamorph:292, _MetamorphView:293=>0x11a9f3530, _SimpleMetamorphView:294=>0x11a9f3370, _SimpleHandlebarsView:295=>0x11a9f3170, _HandlebarsBoundView:296=>0x11a9f2e70, Checkbox:297=>0x11a9f1b30, TextSupport:298, TextField:299=>0x11a9f1670, Button:300=>0x11a9f1170, TextArea:301=>0x11a9f0ef0, SelectOption:302=>0x11a9f0bb0, SelectOptgroup:303=>0x11a9f09f0, Select:304=>0x11b5dffb0, ComponentLookup:305=>0x11b5dfcb0, RouterDSL:306=>0x11b5df830, controllerFor:307=>0x11b5df630, generateControllerFactory:308=>0x11b5df5f0, generateController:309=>0x11b5df5b0, Router:310=>0x11b5dd4f0, Route:311=>0x11b5dca30, LinkView:312=>0x11b5dc230, Location:313, NoneLocation:314=>0x11b5db570, HashLocation:315=>0x11b5db1b0, HistoryLocation:316=>0x11b5dacf0, DAG:317=>0x11b5daa30, DefaultResolver:318=>0x11b5da530, DataAdapter:319=>0x11b5d9430, Test:320, StateManager:321, State:322, Date:323, Inflector:324=>0x11b65e5b0, __ember1394588725815_name:325, BOOTED:326}, NonArray, Proto:0x117f1f8a0]
%DB:Object = 0x11a5fdcf0:[Object, {}, NonArray, Proto:0x117f1f8a0]
%DG:Object = 0x11a7e7170:[Object, {queueNames:0, options:1, currentInstance:2, instanceStack:3, begin:4=>0x11a7a5570, end:5=>0x11a7a5530, run:6=>0x11a7a54f0, defer:7=>0x11a7a54b0, deferOnce:8=>0x11a7a5470, setTimeout:9=>0x11a7a5430, throttle:10=>0x11a7a53f0, debounce:11=>0x11a7a53b0, cancelTimers:12=>0x11a7a5370, hasTimers:13=>0x11a7a5330, cancel:14=>0x11a7a52f0, _cancelItem:15=>0x11a7a52b0, schedule:16=>0x11a7a54b0, scheduleOnce:17=>0x11a7a5470, later:18=>0x11a7a5430}, NonArray, Proto:0x117f1f8a0]
%DU:Object = 0x11b85f8f0:[Object, {queueNames:0, options:1, instanceStack:2, currentInstance:3}, NonArray, Proto:0x11997ec70]
%Dj:Window = 0x11b6e98f0:[Window, {Object:100=>0x1198af130, Function:101=>0x1198af110, Array:102=>0x1198af0f0, RegExp:103=>0x11990fc70, EvalError:104=>0x1198aefb0, RangeError:105=>0x1198aef90, ReferenceError:106=>0x1198aef70, SyntaxError:107=>0x1198aef50, TypeError:108=>0x1198aef30, URIError:109=>0x1198aef10, Promise:110=>0x1198aeef0, Set:111=>0x1198af0d0, Map:112=>0x1198af0b0, Date:113=>0x1198af090, String:114=>0x1198af070, Boolean:115=>0x1198af050, Number:116=>0x1198af030, Error:117=>0x1198af010, ArrayBuffer:118=>0x1198aeff0, WeakMap:119=>0x1198aefd0, ArrayIterator:120, ArgumentsIterator:121, MapIterator:122, SetIterator:123, eval:124=>0x1198d6cf0, JSON:125, Math:126, DataView:127=>0x1198aedb0, Float64Array:128=>0x1198aedd0, Float32Array:129=>0x1198aedf0, Uint32Array:130=>0x1198aee10, Int32Array:131=>0x1198aee90, Uint16Array:132=>0x1198aee30, Int16Array:133=>0x1198aeeb0, Uint8ClampedArray:134=>0x1198aee50, Uint8Array:135=>0x1198aee70, Int8Array:136=>0x1198aeed0, console:137, Name:138=>0x1198aed90, testRunner:139, GCController:140, accessibilityController:141, internals:142, appleScriptController:143, eventSender:144, navigationController:145, objCController:146, objCPlugin:147, objCPluginFunction:148, textInputController:149, $:150=>0x1198d51f0, jQuery:151=>0x1198d51f0, Ember:152, Em:153, MetamorphENV:154, DS:155, Todos:156, parseFloat:157=>0x11b658a70, parseInt:158=>0x11b656e70, jQuery2100135589261073619130.09239788982085884:159, isNaN:160=>0x11b98b2f0}, NonArray, Proto:0x117f1f8b0]
Ryosuke Niwa
It looks like m_graph.m_form is modified mid-way through the DCEPhase.
I did
+ GraphForm originalForm = m_graph.m_form;
if (m_graph.m_form == SSA) {
// Need to process the graph in reverse DFS order, so that we get to the uses
// of a node before we get to the node itself.
Vector<BasicBlock*> depthFirst;
m_graph.getBlocksInDepthFirstOrder(depthFirst);
- for (unsigned i = depthFirst.size(); i--;)
+ for (unsigned i = depthFirst.size(); i--;) {
fixupBlock(depthFirst[i]);
+ ASSERT(originalForm == m_graph.m_form);
+ }
} else {
RELEASE_ASSERT(m_graph.m_form == ThreadedCPS);
- for (BlockIndex blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex)
+ for (BlockIndex blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex) {
fixupBlock(m_graph.block(blockIndex));
+ ASSERT(originalForm == m_graph.m_form);
+ }
cleanVariables(m_graph.m_arguments);
And I'm seeing this assertion being hit. Upon some investigation this is triggered by m_graph.dethread() added in the patch for the bug 130069.
Filip Pizlo
(In reply to comment #2)
> It looks like m_graph.m_form is modified mid-way through the DCEPhase.
>
> I did
>
> + GraphForm originalForm = m_graph.m_form;
> if (m_graph.m_form == SSA) {
> // Need to process the graph in reverse DFS order, so that we get to the uses
> // of a node before we get to the node itself.
> Vector<BasicBlock*> depthFirst;
> m_graph.getBlocksInDepthFirstOrder(depthFirst);
> - for (unsigned i = depthFirst.size(); i--;)
> + for (unsigned i = depthFirst.size(); i--;) {
> fixupBlock(depthFirst[i]);
> + ASSERT(originalForm == m_graph.m_form);
> + }
> } else {
> RELEASE_ASSERT(m_graph.m_form == ThreadedCPS);
>
> - for (BlockIndex blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex)
> + for (BlockIndex blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex) {
> fixupBlock(m_graph.block(blockIndex));
> + ASSERT(originalForm == m_graph.m_form);
> + }
>
> cleanVariables(m_graph.m_arguments);
>
> And I'm seeing this assertion being hit. Upon some investigation this is triggered by m_graph.dethread() added in the patch for the bug 130069.
Thanks for finding this. I will fix the other patch before landing and add a test. We don't need this bug since this bug doesn't apply to ToT.
Ryosuke Niwa
Yup.