Bug 130106 - DYEBench hits an assertion in JSC::DFG::DCEPhase::fixupBlock DFGDCEPhase.cpp(186)
Summary: DYEBench hits an assertion in JSC::DFG::DCEPhase::fixupBlock DFGDCEPhase.cpp(...
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 130069
Blocks:
  Show dependency treegraph
 
Reported: 2014-03-11 18:07 PDT by Ryosuke Niwa
Modified: 2014-03-11 19:33 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ryosuke Niwa 2014-03-11 18:07:21 PDT
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
Comment 1 Ryosuke Niwa 2014-03-11 18:44:54 PDT
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]
Comment 2 Ryosuke Niwa 2014-03-11 19:03:41 PDT
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.
Comment 3 Filip Pizlo 2014-03-11 19:05:45 PDT
(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.
Comment 4 Ryosuke Niwa 2014-03-11 19:33:33 PDT
Yup.