Skip to content

Instantly share code, notes, and snippets.

@Constellation
Created September 24, 2017 00:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Constellation/0897251c7c871de8f18f2f5652721859 to your computer and use it in GitHub Desktop.
Save Constellation/0897251c7c871de8f18f2f5652721859 to your computer and use it in GitHub Desktop.
after.log
DFG(Driver) compiling arrayPush1#ABG3Z8:[0x7f9bcca8c540->0x7f9bcca8c2f0->0x7f9bccaa8460, NoneFunctionCall, 38 (NeverInline)] with DFGMode, number of instructions = 38
DFG(Plan) compiling arrayPush1#ABG3Z8:[0x7f9bcca8c540->0x7f9bcca8c2f0->0x7f9bccaa8460, NoneFunctionCall, 38 (NeverInline)] with DFGMode, number of instructions = 38
Compiler must handle OSR entry from bc#0 with values: arg0:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]), ID: 261
Phase CPS rethreading changed the IR.
Phase unification changed the IR.
Phase prediction injection changed the IR.
Phase static execution count estimation changed the IR.
Phase backwards propagation changed the IR.
Phase prediction propagation changed the IR.
Phase fixup changed the IR.
Phase invalidation point injection changed the IR.
Phase control flow analysis changed the IR.
Phase constant folding changed the IR.
Phase tier-up check injection changed the IR.
Phase fast store barrier insertion changed the IR.
Phase store barrier fencing changed the IR.
Phase dead code elimination changed the IR.
Phase phantom insertion changed the IR.
Phase stack layout changed the IR.
Phase virtual register allocation changed the IR.
Phase watchpoint collection changed the IR.
Graph after optimization:
DFG for arrayPush1#ABG3Z8:[0x7f9bcca8c540->0x7f9bcca8c2f0->0x7f9bccaa8460, DFGFunctionCall, 38 (NeverInline)]:
Fixpoint state: FixpointConverged; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: ExactRefCount
Arguments for block#0: -
Block #0 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors:
Successors:
Dominated by: #root #0
Dominates: #0
Dominance Frontier:
Iterated Dominance Frontier:
States: StructuresAreWatched
Vars Before: arg0:(Top|Empty, TOP, TOP)
Intersected Vars Before: arg0:(Top|Empty, TOP, TOP)
Var Links:
1:< 7:loc5> JSConstant(JS|PureInt, Other, Undefined, bc#0, ExitValid)
2:<!0:-> MovHint(Untyped:@1, MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitValid)
4:<!0:-> MovHint(Untyped:@1, MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
6:<!0:-> MovHint(Untyped:@1, MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
8:<!0:-> MovHint(Untyped:@1, MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
10:<!0:-> MovHint(Untyped:@1, MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
12:<!0:-> MovHint(Untyped:@1, MustGen, loc5, W:SideState, ClobbersExit, bc#0, ExitInvalid)
14:<!0:-> MovHint(Untyped:@1, MustGen, loc6, W:SideState, ClobbersExit, bc#0, ExitInvalid)
17:< 2:loc5> JSConstant(JS|PureInt, OtherObj, Weak:Object: 0x7f9bccad40a0 with butterfly (nil) (%Cb:JSGlobalLexicalEnvironment), ID: 53, bc#1, ExitValid)
18:<!0:-> MovHint(Untyped:@17, MustGen, loc3, W:SideState, ClobbersExit, bc#1, ExitValid)
20:<!0:-> MovHint(Untyped:@17, MustGen, loc4, W:SideState, ClobbersExit, bc#3, ExitValid)
22:<!0:-> CheckTraps(MustGen, W:Watchpoint_fire, Exits, ClobbersExit, bc#6, ExitValid)
48:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#7, ExitValid)
23:< 5:loc5> NewArrayBuffer(JS|UseAsOther, Array, 0:[Int32: 1], vectorLengthHint = 3, ArrayWithInt32, R:HeapObjectCount, W:HeapObjectCount, Exits, ClobbersExit, bc#7, ExitValid)
24:<!0:-> MovHint(Untyped:@23, MustGen, loc5, W:SideState, ClobbersExit, bc#7, ExitInvalid)
26:<!0:-> MovHint(Untyped:@23, MustGen, loc10, W:SideState, ClobbersExit, bc#12, ExitValid)
30:< 2:loc6> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57, bc#15, ExitValid)
31:<!0:-> MovHint(Untyped:@30, MustGen, loc7, W:SideState, ClobbersExit, bc#15, ExitValid)
33:< 2:loc7> JSConstant(JS|UseAsOther, BoolInt32, Int32: 1, bc#24, ExitValid)
34:<!0:-> MovHint(Untyped:@33, MustGen, loc9, W:SideState, ClobbersExit, bc#24, ExitValid)
46:< 1:loc8> GetButterfly(Cell:@23, Storage|PureInt, R:JSObject_butterfly, Exits, bc#27, ExitValid)
38:<!1:loc7> ArrayPush(Untyped:@46, KnownCell:@23, KnownInt32:@33, JS|MustGen|VarArgs|PureInt, NonBoolInt32, Int32+OriginalArray+InBounds+AsIs, R:World, W:Heap, Exits, ClobbersExit, bc#27, ExitValid) predicting NonBoolInt32
42:<!0:-> Phantom(Check:Untyped:@30, MustGen, bc#27, ExitInvalid)
39:<!0:-> MovHint(Untyped:@38, MustGen, loc7, W:SideState, ClobbersExit, bc#27, ExitInvalid)
49:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#27, exit: bc#36, ExitValid)
50:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#36, ExitValid)
44:<!0:-> Return(Untyped:@23, MustGen, W:SideState, Exits, bc#36, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated
Vars After:
Var Links:
GC Values:
Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261
Weak:Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57
Weak:Object: 0x7f9bccad40a0 with butterfly (nil) (%Cb:JSGlobalLexicalEnvironment), ID: 53
Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54
Desired watchpoints:
Watchpoint sets: 0x7f9c0d6fb168
Inline watchpoint sets: 0x7f9bccaf1ad0, 0x7f9bccaf0800, 0x7f9bccaf0100, 0x7f9bccaf32e0, 0x7f9bccaf0250, 0x7f9bccaf1830
Inferred values: 0x7f9bccae0e20
Buffer views:
Object property conditions: <Object: 0x7f9bccad0120 with butterfly 0x7f9bcc8ec2a8 (%AK:Array), ID: 74: Equivalence of push with Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57>
Inferred types:
Structures:
%AK:Array = 0x7f9bccaf2790:[Array, {toString:100, values:101, Symbol.iterator:102, toLocaleString:103, concat:104, fill:105, join:106, pop:107, push:108, PrivateSymbol.push:109, reverse:110, shift:111, PrivateSymbol.shift:112, slice:113, sort:114, splice:115, unshift:116, every:117, forEach:118, some:119, indexOf:120, lastIndexOf:121, filter:122, reduce:123, reduceRight:124, map:125, entries:126, keys:127, find:128, findIndex:129, includes:130, copyWithin:131, PrivateSymbol.entries:132, PrivateSymbol.forEach:133, PrivateSymbol.keys:134, PrivateSymbol.values:135, Symbol.unscopables:136, constructor:137}, ArrayClass, Proto:0x7f9bccac40a0, Leaf]
%Av:Function = 0x7f9bccaf18b0:[Function, {}, NonArray, Proto:0x7f9bccad80a0]
%BP:Function = 0x7f9bccaf1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f9bccad80a0, Leaf]
%Cb:JSGlobalLexicalEnvironment = 0x7f9bccaf17d0:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]
%EC:global = 0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]
SpeculativeJIT generating Node @1 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @2 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @4 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @6 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @8 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @10 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @12 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @14 (bc#0) at JIT offset 0x52
SpeculativeJIT generating Node @17 (bc#1) at JIT offset 0x52
SpeculativeJIT generating Node @18 (bc#1) at JIT offset 0x52
SpeculativeJIT generating Node @20 (bc#3) at JIT offset 0x52
SpeculativeJIT generating Node @22 (bc#6) at JIT offset 0x52
SpeculativeJIT generating Node @48 (bc#7) at JIT offset 0x52
SpeculativeJIT generating Node @23 (bc#7) at JIT offset 0x52
SpeculativeJIT generating Node @24 (bc#7) at JIT offset 0x10a
SpeculativeJIT generating Node @26 (bc#12) at JIT offset 0x10a
SpeculativeJIT generating Node @30 (bc#15) at JIT offset 0x10a
SpeculativeJIT generating Node @31 (bc#15) at JIT offset 0x10a
SpeculativeJIT generating Node @33 (bc#24) at JIT offset 0x10a
SpeculativeJIT generating Node @34 (bc#24) at JIT offset 0x10a
SpeculativeJIT generating Node @46 (bc#27) at JIT offset 0x10a
SpeculativeJIT generating Node @38 (bc#27) at JIT offset 0x10e
SpeculativeJIT generating Node @42 (bc#27) at JIT offset 0x130
SpeculativeJIT generating Node @39 (bc#27) at JIT offset 0x130
SpeculativeJIT generating Node @49 (bc#27) at JIT offset 0x130
SpeculativeJIT generating Node @50 (bc#36) at JIT offset 0x130
SpeculativeJIT generating Node @44 (bc#36) at JIT offset 0x163
OSR Entries:
bc#0, machine code offset = 82, stack rules = [arg0:(Top|Empty, TOP, TOP) (maps to this), loc0:(Top, TOP, TOP) (ignored), loc1:(Top, TOP, TOP) (ignored), loc2:(Top, TOP, TOP) (ignored), loc3:(Top, TOP, TOP) (ignored), loc4:(Top, TOP, TOP) (ignored), loc5:(Top, TOP, TOP) (ignored), loc6:(Top, TOP, TOP) (ignored), loc7:(Top, TOP, TOP) (ignored), loc8:(Top, TOP, TOP) (ignored), loc9:(Top, TOP, TOP) (ignored), loc10:(Top, TOP, TOP) (ignored), loc11:(Top, TOP, TOP) (ignored), loc12:(Top, TOP, TOP) (ignored), loc13:(Top, TOP, TOP) (ignored), loc14:(Top, TOP, TOP) (ignored), loc15:(Top, TOP, TOP) (ignored)], machine stack used = ---------------------------------------------------------------
DFG(Driver) compiling <global>#A5E5H5:[0x7f9bcca8c790->0x7f9bcca8c0a0->0x7f9bccaa83c0, NoneGlobal, 177] with DFGMode, number of instructions = 177
DFG(Plan) compiling <global>#A5E5H5:[0x7f9bcca8c790->0x7f9bcca8c0a0->0x7f9bccaa83c0, NoneGlobal, 177] with DFGMode, number of instructions = 177
Compiler must handle OSR entry from bc#106 with values: arg0:Object: 0x7f9bccad83e0 with butterfly (nil) (0x7f9bccaaf360:[JSProxy, {}, NonArray, Proto:0x7f9bccac40a0, Leaf]), ID: 263 loc0:Undefined loc1:Undefined loc2:Undefined loc3:Object: 0x7f9bccad40a0 with butterfly (nil) (0x7f9bccaf17d0:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), ID: 53 loc4:Undefined loc5:Undefined loc6:Undefined loc7:Undefined loc8:Undefined loc9:Undefined loc10:Undefined loc11:Undefined loc12:Undefined loc13:Undefined loc14:Undefined loc15:Undefined
Phase CPS rethreading changed the IR.
Phase unification changed the IR.
Phase prediction injection changed the IR.
Phase static execution count estimation changed the IR.
Phase backwards propagation changed the IR.
Phase prediction propagation changed the IR.
Phase fixup changed the IR.
Phase invalidation point injection changed the IR.
Phase strength reduction changed the IR.
Phase control flow analysis changed the IR.
Phase constant folding changed the IR.
Phase local common subexpression elimination changed the IR.
Phase control flow analysis changed the IR.
Phase constant folding changed the IR.
Phase tier-up check injection changed the IR.
Phase fast store barrier insertion changed the IR.
Phase store barrier fencing changed the IR.
Phase dead code elimination changed the IR.
Phase phantom insertion changed the IR.
Phase stack layout changed the IR.
Phase virtual register allocation changed the IR.
Phase watchpoint collection changed the IR.
Graph after optimization:
DFG for <global>#A5E5H5:[0x7f9bcca8c790->0x7f9bcca8c0a0->0x7f9bccaa83c0, DFGGlobal, 177]:
Fixpoint state: FixpointConverged; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: ExactRefCount
Arguments for block#0: -
Block #0 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors:
Successors: #1 #2
Dominated by: #root #0
Dominates: #0 #1 #2
Dominance Frontier:
Iterated Dominance Frontier:
States: StructuresAreWatched
Vars Before: arg0:(Top|Empty, TOP, TOP)
Intersected Vars Before: arg0:(Top|Empty, TOP, TOP)
Var Links:
1:< 8:loc7> JSConstant(JS|PureInt, Other, Undefined, bc#0, ExitValid)
2:<!0:-> MovHint(Untyped:@1, MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitValid)
4:<!0:-> MovHint(Untyped:@1, MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
6:<!0:-> MovHint(Untyped:@1, MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
8:<!0:-> MovHint(Untyped:@1, MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
10:<!0:-> MovHint(Untyped:@1, MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
12:< 1:loc8> GetCallee(JS|UseAsOther, Function, R:Stack(3), bc#1, ExitValid)
13:< 4:loc8> GetScope(KnownCell:@12, JS|UseAsOther, OtherObj, bc#1, ExitValid)
14:<!0:-> MovHint(Untyped:@13, MustGen, loc3, W:SideState, ClobbersExit, bc#1, ExitValid)
15:< 1:-> SetLocal(Untyped:@13, loc3(G~<Object>/FlushedJSValue), machine:loc5, W:Stack(-4), bc#1, exit: bc#3, ExitValid) predicting OtherObj
16:<!0:-> MovHint(Untyped:@13, MustGen, loc4, W:SideState, ClobbersExit, bc#3, ExitValid)
18:<!0:-> CheckTraps(MustGen, W:Watchpoint_fire, Exits, ClobbersExit, bc#6, ExitValid)
125:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#7, ExitValid)
19:< 2:loc8> NewFunction(KnownCell:@13, JS|UseAsOther, Function, <0x7f9bccaa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f9bccaa8460], R:HeapObjectCount, W:HeapObjectCount,Watchpoint_fire, ExitsForExceptions, ClobbersExit, bc#7, ExitValid)
20:<!0:-> MovHint(Untyped:@19, MustGen, loc5, W:SideState, ClobbersExit, bc#7, ExitInvalid)
126:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#7, exit: bc#11, ExitValid)
22:< 10:loc9> JSConstant(JS|UseAsOther, OtherObj, Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261, bc#11, ExitValid)
23:<!0:-> MovHint(Untyped:@22, MustGen, loc6, W:SideState, ClobbersExit, bc#11, ExitValid)
26:<!0:-> MovHint(Untyped:@22, MustGen, loc7, W:SideState, ClobbersExit, bc#18, ExitValid)
29:<!0:-> PutGlobalVariable(Cell:@22, Untyped:@19, MustGen, global(0x7f9c0d6b2a18), W:Absolute(140308216752664), Exits, ClobbersExit, bc#21, ExitValid)
132:<!0:-> FencedStoreBarrier(Check:KnownCell:@22, MustGen, R:Heap, W:JSCell_cellState, bc#21, ExitInvalid)
30:<!0:-> NotifyWrite(MustGen, 0x7f9c0d6c7bb8, W:Watchpoint_fire,SideState, ClobbersExit, bc#21, ExitInvalid)
127:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#28, ExitValid)
33:<!0:-> MovHint(Untyped:@1, MustGen, loc5, W:SideState, ClobbersExit, bc#28, ExitValid)
36:<!0:-> MovHint(Untyped:@22, MustGen, loc10, W:SideState, ClobbersExit, bc#31, ExitValid)
41:< 2:loc8> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bccaef4c0 with butterfly 0x7f9bcc8fdfa8 (%BP:Function), ID: 57, bc#38, ExitValid)
43:<!0:-> MovHint(Untyped:@41, MustGen, loc6, W:SideState, ClobbersExit, bc#38, ExitValid)
46:<!0:-> MovHint(Untyped:@22, MustGen, loc9, W:SideState, ClobbersExit, bc#46, ExitValid)
50:< 2:loc10> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54, bc#53, ExitValid)
51:<!0:-> MovHint(Untyped:@50, MustGen, loc9, W:SideState, ClobbersExit, bc#53, ExitValid)
53:<!1:loc10> DirectCall(Untyped:@41, Untyped:@22, Untyped:@50, JS|MustGen|VarArgs|PureInt, Other, <0x7f9bcca9c0a0, NativeExecutable>, <host function>, R:World, W:Heap, Exits, ClobbersExit, bc#61, ExitValid) predicting Other
54:<!0:-> MovHint(Untyped:@53, MustGen, loc5, W:SideState, ClobbersExit, bc#61, ExitInvalid)
128:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#61, exit: bc#70, ExitValid)
56:<!0:-> MovHint(Untyped:@1, MustGen, loc5, W:SideState, ClobbersExit, bc#70, ExitValid)
57:< 1:-> SetLocal(Untyped:@1, loc5(R~/FlushedJSValue), machine:loc6, W:Stack(-6), bc#70, exit: bc#73, ExitValid) predicting Array|Other
59:<!0:-> MovHint(Untyped:@22, MustGen, loc6, W:SideState, ClobbersExit, bc#73, ExitValid)
62:< 2:loc7> JSConstant(JS|UseAsOther, BoolInt32, Int32: 0, bc#80, ExitValid)
64:<!0:-> PutGlobalVariable(Cell:@22, Untyped:@62, MustGen, global(0x7f9c0d6b2a20), W:Absolute(140308216752672), Exits, ClobbersExit, bc#80, ExitValid)
67:<!0:-> MovHint(Untyped:@22, MustGen, loc6, W:SideState, ClobbersExit, bc#87, ExitValid)
72:<!0:-> MovHint(Untyped:@62, MustGen, loc7, W:SideState, ClobbersExit, bc#94, ExitValid)
75:< 1:loc7> JSConstant(Boolean|UseAsOther, Bool, True, bc#102, ExitValid)
76:<!0:-> Branch(KnownBoolean:@75, MustGen, T:#1/w:10.000000, F:#2/w:1.000000, W:SideState, bc#102, ExitInvalid)
States: TakeTrue, StructuresAreWatched
Vars After: arg0:(Top|Empty, TOP, TOP) loc0:(Other, Undefined) loc1:(Other, Undefined) loc2:(Other, Undefined) loc3:(OtherObj, TOP, TOP) loc4:(OtherObj, TOP, TOP) loc5:(Other, Undefined) loc6:(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261) loc7:(BoolInt32, Int32: 0) loc9:(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54) loc10:(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261)
Var Links: loc3:@15 loc5:@57
Block #1 (bc#106): (OSR target)
Execution count: 10.000000
Predecessors: #0 #1
Successors: #1 #2
Dominated by: #root #0 #1
Dominates: #1
Dominance Frontier: #1 #2
Iterated Dominance Frontier: #1 #2
Loop header, contains: #1
Containing loop headers: #1
Phi Nodes: @120<loc3,2>->(@120, @15)
States: StructuresAreWatched
Vars Before: loc3:(OtherObj, TOP, TOP)
Intersected Vars Before: loc3:(OtherObj, TOP, TOP)
Var Links: loc3:@120
77:<!0:-> LoopHint(MustGen, W:SideState, bc#106, ExitValid)
130:<!0:-> CheckTierUpAndOSREnter(MustGen, W:SideState, Exits, bc#106, ExitValid)
78:<!0:-> CheckTraps(MustGen, W:Watchpoint_fire, Exits, ClobbersExit, bc#107, ExitValid)
123:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#108, ExitValid)
79:< 5:loc7> JSConstant(JS|UseAsOther, OtherObj, Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261, bc#108, ExitValid)
80:<!0:-> MovHint(Untyped:@79, MustGen, loc8, W:SideState, ClobbersExit, bc#108, ExitValid)
81:<!0:loc9> GetLocal(Untyped:@120, JS|MustGen|UseAsOther, OtherObj, loc3(G~<Object>/FlushedJSValue), machine:loc5, R:Stack(-4), bc#108, ExitInvalid) predicting OtherObj
85:< 2:loc9> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54, bc#115, ExitValid)
86:<!0:-> MovHint(Untyped:@85, MustGen, loc6, W:SideState, ClobbersExit, bc#115, ExitValid)
88:<!2:loc9> DirectCall(Untyped:@85, Untyped:@79, JS|MustGen|VarArgs|UseAsOther, Array, <0x7f9bccaa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f9bccaa8460], R:World, W:Heap, Exits, ClobbersExit, bc#123, ExitValid) predicting Array
89:<!0:-> MovHint(Untyped:@88, MustGen, loc5, W:SideState, ClobbersExit, bc#123, ExitInvalid)
124:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#123, exit: bc#132, ExitValid)
90:< 1:-> SetLocal(Untyped:@88, loc5(R~/FlushedJSValue), machine:loc6, W:Stack(-6), bc#123, exit: bc#132, ExitValid) predicting Array|Other
92:<!0:-> MovHint(Untyped:@79, MustGen, loc6, W:SideState, ClobbersExit, bc#132, ExitValid)
96:< 2:loc9> GetGlobalVar(JS|PureNum, NonBoolInt32, global(0x7f9c0d6b2a20), R:Absolute(140308216752672), Exits, bc#139, ExitValid) predicting NonBoolInt32
97:<!0:-> MovHint(Untyped:@96, MustGen, loc7, W:SideState, ClobbersExit, bc#139, ExitValid)
99:< 1:loc10> JSConstant(JS|PureNum, BoolInt32, Int32: 1, bc#147, ExitValid)
100:<!4:loc10> ArithAdd(Check:Int32:@96, Int32:@99, Number|MustGen|UseAsOther, Int32, CheckOverflow, Exits, bc#147, ExitValid)
101:<!0:-> MovHint(Untyped:@100, MustGen, loc7, W:SideState, ClobbersExit, bc#147, ExitValid)
104:<!0:-> PutGlobalVariable(Cell:@79, Untyped:@100, MustGen, global(0x7f9c0d6b2a20), W:Absolute(140308216752672), Exits, ClobbersExit, bc#149, ExitValid)
107:<!0:-> MovHint(Untyped:@79, MustGen, loc6, W:SideState, ClobbersExit, bc#156, ExitValid)
112:<!0:-> MovHint(Untyped:@100, MustGen, loc7, W:SideState, ClobbersExit, bc#163, ExitValid)
114:< 1:loc7> JSConstant(JS|UseAsOther, NonBoolInt32, Int32: 10000000, bc#171, ExitValid)
115:< 1:loc7> CompareLess(Int32:@100, Int32:@114, Boolean|UseAsOther, Bool, Exits, bc#171, ExitValid)
116:<!0:-> Branch(KnownBoolean:@115, MustGen, T:#1/w:10.000000, F:#2/w:1.000000, W:SideState, bc#171, ExitInvalid)
States: TakeBoth, StructuresAreWatched
Vars After: loc3:(OtherObj, TOP, TOP) loc5:(Top, TOP, TOP) loc6:(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261) loc7:(Int32) loc8:(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261)
Var Links: loc3:@81 loc5:@90
Block #2 (bc#175):
Execution count: 1.000000
Predecessors: #0 #1
Successors:
Dominated by: #root #0 #2
Dominates: #2
Dominance Frontier:
Iterated Dominance Frontier:
Phi Nodes: @119<loc5,1>->(@90, @57)
States: StructuresAreWatched
Vars Before: loc5:(Top, TOP, TOP)
Intersected Vars Before: loc5:(Top, TOP, TOP)
Var Links: loc5:@119
117:<!1:loc7> GetLocal(Untyped:@119, JS|MustGen|UseAsOther, Array|Other, loc5(R~/FlushedJSValue), machine:loc6, R:Stack(-6), bc#175, ExitValid) predicting Array|Other
129:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#175, ExitValid)
118:<!0:-> Return(Untyped:@117, MustGen, W:SideState, Exits, bc#175, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated
Vars After:
Var Links: loc5:@117
GC Values:
Weak:Cell: 0x7f9bcca9c0a0 (%Ea:NativeExecutable), ID: 10
Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54
Weak:Object: 0x7f9bccaef4c0 with butterfly 0x7f9bcc8fdfa8 (%BP:Function), ID: 57
Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261
Strong:Cell: 0x7f9bccaa8460 (%AE:FunctionExecutable), ID: 13
Desired watchpoints:
Watchpoint sets: 0x7f9c0d6c7bb8
Inline watchpoint sets: 0x7f9bccaf1830, 0x7f9bccaf0800, 0x7f9bccaf0100, 0x7f9bccaf04f0, 0x7f9bccaf0250, 0x7f9bccaf0640, 0x7f9bccaf1ad0
Inferred values:
Buffer views:
Object property conditions: <Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261: Equivalence of noInline with Object: 0x7f9bccaef4c0 with butterfly 0x7f9bcc8fdfa8 (%BP:Function), ID: 57>
Inferred types:
Structures:
%AE:FunctionExecutable = 0x7f9bccaf05e0:[FunctionExecutable, {}, NonArray, Leaf]
%Av:Function = 0x7f9bccaf18b0:[Function, {}, NonArray, Proto:0x7f9bccad80a0]
%BP:Function = 0x7f9bccaf1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f9bccad80a0, Leaf]
%EC:global = 0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]
%Ea:NativeExecutable = 0x7f9bccaf0490:[NativeExecutable, {}, NonArray, Leaf]
SpeculativeJIT generating Node @1 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @2 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @4 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @6 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @8 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @10 (bc#0) at JIT offset 0x66
SpeculativeJIT generating Node @12 (bc#1) at JIT offset 0x66
SpeculativeJIT generating Node @13 (bc#1) at JIT offset 0x6a
SpeculativeJIT generating Node @14 (bc#1) at JIT offset 0x6e
SpeculativeJIT generating Node @15 (bc#1) at JIT offset 0x6e
SpeculativeJIT generating Node @16 (bc#3) at JIT offset 0x72
SpeculativeJIT generating Node @18 (bc#6) at JIT offset 0x72
SpeculativeJIT generating Node @125 (bc#7) at JIT offset 0x72
SpeculativeJIT generating Node @19 (bc#7) at JIT offset 0x72
SpeculativeJIT generating Node @20 (bc#7) at JIT offset 0xb0
SpeculativeJIT generating Node @126 (bc#7) at JIT offset 0xb0
SpeculativeJIT generating Node @22 (bc#11) at JIT offset 0xb0
SpeculativeJIT generating Node @23 (bc#11) at JIT offset 0xb0
SpeculativeJIT generating Node @26 (bc#18) at JIT offset 0xb0
SpeculativeJIT generating Node @29 (bc#21) at JIT offset 0xb0
SpeculativeJIT generating Node @132 (bc#21) at JIT offset 0xba
SpeculativeJIT generating Node @30 (bc#21) at JIT offset 0x122
SpeculativeJIT generating Node @127 (bc#28) at JIT offset 0x136
SpeculativeJIT generating Node @33 (bc#28) at JIT offset 0x136
SpeculativeJIT generating Node @36 (bc#31) at JIT offset 0x136
SpeculativeJIT generating Node @41 (bc#38) at JIT offset 0x136
SpeculativeJIT generating Node @43 (bc#38) at JIT offset 0x136
SpeculativeJIT generating Node @46 (bc#46) at JIT offset 0x136
SpeculativeJIT generating Node @50 (bc#53) at JIT offset 0x136
SpeculativeJIT generating Node @51 (bc#53) at JIT offset 0x136
SpeculativeJIT generating Node @53 (bc#61) at JIT offset 0x136
SpeculativeJIT generating Node @54 (bc#61) at JIT offset 0x1b9
SpeculativeJIT generating Node @128 (bc#61) at JIT offset 0x1b9
SpeculativeJIT generating Node @56 (bc#70) at JIT offset 0x1b9
SpeculativeJIT generating Node @57 (bc#70) at JIT offset 0x1b9
SpeculativeJIT generating Node @59 (bc#73) at JIT offset 0x1c7
SpeculativeJIT generating Node @62 (bc#80) at JIT offset 0x1c7
SpeculativeJIT generating Node @64 (bc#80) at JIT offset 0x1c7
SpeculativeJIT generating Node @67 (bc#87) at JIT offset 0x1db
SpeculativeJIT generating Node @72 (bc#94) at JIT offset 0x1db
SpeculativeJIT generating Node @75 (bc#102) at JIT offset 0x1db
SpeculativeJIT generating Node @76 (bc#102) at JIT offset 0x1db
SpeculativeJIT generating Node @77 (bc#106) at JIT offset 0x1ed
SpeculativeJIT generating Node @130 (bc#106) at JIT offset 0x1ed
SpeculativeJIT generating Node @78 (bc#107) at JIT offset 0x215
SpeculativeJIT generating Node @123 (bc#108) at JIT offset 0x215
SpeculativeJIT generating Node @79 (bc#108) at JIT offset 0x215
SpeculativeJIT generating Node @80 (bc#108) at JIT offset 0x215
SpeculativeJIT generating Node @81 (bc#108) at JIT offset 0x215
SpeculativeJIT generating Node @85 (bc#115) at JIT offset 0x219
SpeculativeJIT generating Node @86 (bc#115) at JIT offset 0x219
SpeculativeJIT generating Node @88 (bc#123) at JIT offset 0x219
SpeculativeJIT generating Node @89 (bc#123) at JIT offset 0x297
SpeculativeJIT generating Node @124 (bc#123) at JIT offset 0x297
SpeculativeJIT generating Node @90 (bc#123) at JIT offset 0x297
SpeculativeJIT generating Node @92 (bc#132) at JIT offset 0x29b
SpeculativeJIT generating Node @96 (bc#139) at JIT offset 0x29b
SpeculativeJIT generating Node @97 (bc#139) at JIT offset 0x2a5
SpeculativeJIT generating Node @99 (bc#147) at JIT offset 0x2a5
SpeculativeJIT generating Node @100 (bc#147) at JIT offset 0x2a5
SpeculativeJIT generating Node @101 (bc#147) at JIT offset 0x2b6
SpeculativeJIT generating Node @104 (bc#149) at JIT offset 0x2b6
SpeculativeJIT generating Node @107 (bc#156) at JIT offset 0x2c3
SpeculativeJIT generating Node @112 (bc#163) at JIT offset 0x2c3
SpeculativeJIT generating Node @114 (bc#171) at JIT offset 0x2c3
SpeculativeJIT generating Node @115 (bc#171) at JIT offset 0x2c3
SpeculativeJIT generating Node @117 (bc#175) at JIT offset 0x2ce
SpeculativeJIT generating Node @129 (bc#175) at JIT offset 0x2d2
SpeculativeJIT generating Node @118 (bc#175) at JIT offset 0x305
OSR Entries:
bc#0, machine code offset = 102, stack rules = [arg0:(Top|Empty, TOP, TOP) (maps to this), loc0:(Top, TOP, TOP) (ignored), loc1:(Top, TOP, TOP) (ignored), loc2:(Top, TOP, TOP) (ignored), loc3:(Top, TOP, TOP) (ignored), loc4:(Top, TOP, TOP) (ignored), loc5:(Top, TOP, TOP) (ignored), loc6:(Top, TOP, TOP) (ignored), loc7:(Top, TOP, TOP) (ignored), loc8:(Top, TOP, TOP) (ignored), loc9:(Top, TOP, TOP) (ignored), loc10:(Top, TOP, TOP) (ignored), loc11:(Top, TOP, TOP) (ignored), loc12:(Top, TOP, TOP) (ignored), loc13:(Top, TOP, TOP) (ignored), loc14:(Top, TOP, TOP) (ignored), loc15:(Top, TOP, TOP) (ignored)], machine stack used = ---------------------------------------------------------------
bc#106, machine code offset = 493, stack rules = [arg0:(Top, TOP, TOP) (maps to this), loc0:(Top, TOP, TOP) (ignored), loc1:(Top, TOP, TOP) (ignored), loc2:(Top, TOP, TOP) (ignored), loc3:(OtherObj, TOP, TOP) (maps to loc5), loc4:(Top, TOP, TOP) (ignored), loc5:(Top, TOP, TOP) (overwritten), loc6:(Top, TOP, TOP) (ignored), loc7:(Top, TOP, TOP) (ignored), loc8:(Top, TOP, TOP) (ignored), loc9:(Top, TOP, TOP) (ignored), loc10:(Top, TOP, TOP) (ignored), loc11:(Top, TOP, TOP) (ignored), loc12:(Top, TOP, TOP) (ignored), loc13:(Top, TOP, TOP) (ignored), loc14:(Top, TOP, TOP) (ignored), loc15:(Top, TOP, TOP) (ignored)], machine stack used = -----1---------------------------------------------------------
DFG(Driver) compiling arrayPush1#ABG3Z8:[0x7f9bcca8c9e0->0x7f9bcca8c2f0->0x7f9bccaa8460, NoneFunctionCall, 38 (NeverInline)] with FTLMode, number of instructions = 38
DFG(Plan) compiling arrayPush1#ABG3Z8:[0x7f9bcca8c9e0->0x7f9bcca8c2f0->0x7f9bccaa8460, NoneFunctionCall, 38 (NeverInline)] with FTLMode, number of instructions = 38
Phase CPS rethreading changed the IR.
Phase unification changed the IR.
Phase prediction injection changed the IR.
Phase static execution count estimation changed the IR.
Phase backwards propagation changed the IR.
Phase prediction propagation changed the IR.
Phase fixup changed the IR.
Phase invalidation point injection changed the IR.
Phase control flow analysis changed the IR.
Phase constant folding changed the IR.
Dethreading DFG graph.
Phase SSA conversion changed the IR.
Phase SSA lowering changed the IR.
Phase PutStack sinking changed the IR.
Phase constant hoisting changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase liveness analysis changed the IR.
Phase OSR availability analysis changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase liveness analysis changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase global store barrier insertion changed the IR.
Phase store barrier fencing changed the IR.
Phase MovHint removal changed the IR.
Phase dead code elimination changed the IR.
Phase stack layout changed the IR.
Phase liveness analysis changed the IR.
Phase OSR availability analysis changed the IR.
Phase watchpoint collection changed the IR.
Graph just before FTL lowering:
DFG for arrayPush1#ABG3Z8:[0x7f9bcca8c9e0->0x7f9bcca8c2f0->0x7f9bccaa8460, DFGFunctionCall, 38 (NeverInline)]:
Fixpoint state: FixpointConverged; Form: SSA; Unification state: GloballyUnified; Ref count state: ExactRefCount
Argument formats for entrypoint index: 0 : FlushedJSValue
Block #0 (bc#0):
Execution count: 1.000000
Predecessors:
Successors: #1
Dominated by: #0
Dominates: #0 #1
Dominance Frontier:
Iterated Dominance Frontier:
Backwards dominates by: #root #0 #1
Backwards dominates: #0
Control equivalent to: #0 #1
States: StructuresAreWatched
Availability: {locals = ; heap = }
Live:
Values:
30:< 1:-> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57, bc#0, ExitInvalid)
33:< 2:-> JSConstant(JS|UseAsOther, BoolInt32, Int32: 1, bc#0, ExitInvalid)
40:<!0:-> EntrySwitch(MustGen, #1, W:SideState, bc#0, ExitInvalid)
States: InvalidBranchDirection, StructuresAreWatched
Availability: {locals = ; heap = }
Live: @30, @33
Values: @1=>(Other, Undefined), @17=>(OtherObj, NonArray, [%Cb:JSGlobalLexicalEnvironment], Object: 0x7f9bccad40a0 with butterfly (nil) (%Cb:JSGlobalLexicalEnvironment), ID: 53), @30=>(Function, NonArray, [%BP:Function], Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57), @33=>(BoolInt32, Int32: 1)
Block #1 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors: #0
Successors:
Dominated by: #0 #1
Dominates: #1
Dominance Frontier:
Iterated Dominance Frontier:
Backwards dominates by: #root #1
Backwards dominates: #0 #1
Control equivalent to: #0 #1
States: StructuresAreWatched
Availability: {locals = loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:DeadFlush/Undecided loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @30, @33
Values: @1=>(Other, Undefined), @17=>(OtherObj, NonArray, [%Cb:JSGlobalLexicalEnvironment], Object: 0x7f9bccad40a0 with butterfly (nil) (%Cb:JSGlobalLexicalEnvironment), ID: 53), @30=>(Function, NonArray, [%BP:Function], Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57), @33=>(BoolInt32, Int32: 1)
43:<!0:-> ExitOK(MustGen, W:SideState, bc#0, ExitValid)
42:<!0:-> InitializeEntrypointArguments(MustGen, W:SideState, ClobbersExit, bc#0, ExitValid)
41:<!0:-> ExitOK(MustGen, W:SideState, bc#0, ExitValid)
37:<!0:-> KillStack(MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitValid)
2:<!0:-> ZombieHint(MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitInvalid)
36:<!0:-> KillStack(MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
4:<!0:-> ZombieHint(MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
29:<!0:-> KillStack(MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
6:<!0:-> ZombieHint(MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
28:<!0:-> KillStack(MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
8:<!0:-> ZombieHint(MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
21:<!0:-> KillStack(MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
10:<!0:-> ZombieHint(MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
19:<!0:-> KillStack(MustGen, loc5, W:SideState, ClobbersExit, bc#0, ExitInvalid)
12:<!0:-> ZombieHint(MustGen, loc5, W:SideState, ClobbersExit, bc#0, ExitInvalid)
15:<!0:-> KillStack(MustGen, loc6, W:SideState, ClobbersExit, bc#0, ExitInvalid)
14:<!0:-> ZombieHint(MustGen, loc6, W:SideState, ClobbersExit, bc#0, ExitInvalid)
13:<!0:-> KillStack(MustGen, loc3, W:SideState, ClobbersExit, bc#1, ExitValid)
18:<!0:-> ZombieHint(MustGen, loc3, W:SideState, ClobbersExit, bc#1, ExitInvalid)
11:<!0:-> KillStack(MustGen, loc4, W:SideState, ClobbersExit, bc#3, ExitValid)
20:<!0:-> ZombieHint(MustGen, loc4, W:SideState, ClobbersExit, bc#3, ExitInvalid)
22:<!0:-> CheckTraps(MustGen, W:Watchpoint_fire, Exits, ClobbersExit, bc#6, ExitValid)
27:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#7, ExitValid)
23:< 5:-> NewArrayBuffer(JS|UseAsOther, Array, 0:[Int32: 1], vectorLengthHint = 3, ArrayWithInt32, R:HeapObjectCount, W:HeapObjectCount, Exits, ClobbersExit, bc#7, ExitValid)
9:<!0:-> KillStack(MustGen, loc5, W:SideState, ClobbersExit, bc#7, ExitInvalid)
24:<!0:-> MovHint(Untyped:@23, MustGen, loc5, W:SideState, ClobbersExit, bc#7, ExitInvalid)
7:<!0:-> KillStack(MustGen, loc10, W:SideState, ClobbersExit, bc#12, ExitValid)
26:<!0:-> MovHint(Untyped:@23, MustGen, loc10, W:SideState, ClobbersExit, bc#12, ExitInvalid)
5:<!0:-> KillStack(MustGen, loc7, W:SideState, ClobbersExit, bc#15, ExitValid)
31:<!0:-> MovHint(Untyped:Kill:@30, MustGen, loc7, W:SideState, ClobbersExit, bc#15, ExitInvalid)
3:<!0:-> KillStack(MustGen, loc9, W:SideState, ClobbersExit, bc#24, ExitValid)
34:<!0:-> MovHint(Untyped:@33, MustGen, loc9, W:SideState, ClobbersExit, bc#24, ExitInvalid)
35:< 1:-> GetButterfly(Cell:@23, Storage|PureInt, R:JSObject_butterfly, Exits, bc#27, ExitValid)
38:<!0:-> ArrayPush(Untyped:Kill:@35, KnownCell:@23, KnownInt32:Kill:@33, JS|MustGen|VarArgs|PureInt, NonBoolInt32, Int32+OriginalArray+InBounds+AsIs, R:World, W:Heap, Exits, ClobbersExit, bc#27, ExitValid) predicting NonBoolInt32
0:<!0:-> KillStack(MustGen, loc7, W:SideState, ClobbersExit, bc#27, ExitInvalid)
39:<!0:-> ZombieHint(MustGen, loc7, W:SideState, ClobbersExit, bc#27, ExitInvalid)
25:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#27, exit: bc#36, ExitValid)
44:<!0:-> Return(Untyped:Kill:@23, MustGen, W:SideState, Exits, bc#36, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc5:ConflictingFlush/@23 loc8:DeadFlush/Undecided loc9:ConflictingFlush/@33 loc10:ConflictingFlush/@23 loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live:
Values:
GC Values:
Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261
Weak:Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57
Weak:Object: 0x7f9bccad40a0 with butterfly (nil) (%Cb:JSGlobalLexicalEnvironment), ID: 53
Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54
Desired watchpoints:
Watchpoint sets: 0x7f9c0d6fb168
Inline watchpoint sets: 0x7f9bccaf1ad0, 0x7f9bccaf0800, 0x7f9bccaf0100, 0x7f9bccaf32e0, 0x7f9bccaf0250, 0x7f9bccaf1830
Inferred values: 0x7f9bccae0e20
Buffer views:
Object property conditions: <Object: 0x7f9bccad0120 with butterfly 0x7f9bcc8ec2a8 (%AK:Array), ID: 74: Equivalence of push with Object: 0x7f9bccaec610 with butterfly 0x7f9bcc8fc3a8 (%BP:Function), ID: 57>
Inferred types:
Structures:
%AK:Array = 0x7f9bccaf2790:[Array, {toString:100, values:101, Symbol.iterator:102, toLocaleString:103, concat:104, fill:105, join:106, pop:107, push:108, PrivateSymbol.push:109, reverse:110, shift:111, PrivateSymbol.shift:112, slice:113, sort:114, splice:115, unshift:116, every:117, forEach:118, some:119, indexOf:120, lastIndexOf:121, filter:122, reduce:123, reduceRight:124, map:125, entries:126, keys:127, find:128, findIndex:129, includes:130, copyWithin:131, PrivateSymbol.entries:132, PrivateSymbol.forEach:133, PrivateSymbol.keys:134, PrivateSymbol.values:135, Symbol.unscopables:136, constructor:137}, ArrayClass, Proto:0x7f9bccac40a0, Leaf]
%Av:Function = 0x7f9bccaf18b0:[Function, {}, NonArray, Proto:0x7f9bccad80a0]
%BP:Function = 0x7f9bccaf1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f9bccad80a0, Leaf]
%Cb:JSGlobalLexicalEnvironment = 0x7f9bccaf17d0:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]
%EC:global = 0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]
Function ready, beginning lowering.
Compiling block #0
Lowering @30
Lowering @33
Lowering @40
Compiling block #1
Lowering @43
Lowering @42
Lowering @41
Lowering @37
Lowering @2
Lowering @36
Lowering @4
Lowering @29
Lowering @6
Lowering @28
Lowering @8
Lowering @21
Lowering @10
Lowering @19
Lowering @12
Lowering @15
Lowering @14
Lowering @13
Lowering @18
Lowering @11
Lowering @20
Lowering @22
Lowering @27
Invalidation point with availability: {locals = arg0:this:FlushedJSValue/Unavailable loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Dead loc4:Dead loc5:Dead loc6:Dead loc7:Dead loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Lowering @23
Lowering @9
Lowering @24
Lowering @7
Lowering @26
Lowering @5
Lowering @31
Lowering @3
Lowering @34
Lowering @35
Lowering @38
Lowering @0
Lowering @39
Lowering @25
Invalidation point with availability: {locals = arg0:this:FlushedJSValue/Unavailable loc5:ConflictingFlush/@23 loc8:DeadFlush/Undecided loc9:ConflictingFlush/@33 loc10:ConflictingFlush/@23 loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Dead loc4:Dead loc5:Argument(#0 as JS) loc6:Dead loc7:Dead loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Lowering @44
Abstract Heap Repository:
jscRoot(0)<0...99>:
typedArrayProperties(0)<0>
ArrayBuffer_data(32)<1>
Butterfly_arrayBuffer(-8)<2>
Butterfly_publicLength(-8)<3>
Butterfly_vectorLength(-4)<4>
CallFrame_callerFrame(0)<5>
ClassInfo_parentClass(8)<6>
DirectArguments_callee(24)<7>
DirectArguments_length(32)<8>
DirectArguments_minCapacity(36)<9>
DirectArguments_mappedArguments(40)<10>
DirectArguments_modifiedArgumentsDescriptor(16)<11>
GetterSetter_getter(16)<12>
GetterSetter_setter(24)<13>
JSArrayBufferView_length(24)<14>
JSArrayBufferView_mode(28)<15>
JSArrayBufferView_vector(16)<16>
JSCell_header(0)<17...22>:
JSCell_structureID(0)<17>
JSCell_usefulBytes(4)<18...22>:
JSCell_indexingTypeAndMisc(4)<18>
JSCell_typeInfoType(5)<19>
JSCell_typeInfoFlags(6)<20>
JSCell_cellState(7)<21>
JSFunction_executable(24)<22>
JSFunction_scope(16)<23>
JSFunction_rareData(32)<24>
JSObject_butterfly(8)<25>
JSPropertyNameEnumerator_cachedInlineCapacity(52)<26>
JSPropertyNameEnumerator_cachedPropertyNamesVector(8)<27>
JSPropertyNameEnumerator_cachedStructureID(24)<28>
JSPropertyNameEnumerator_endGenericPropertyIndex(48)<29>
JSPropertyNameEnumerator_endStructurePropertyIndex(44)<30>
JSPropertyNameEnumerator_indexLength(40)<31>
JSScope_next(16)<32>
JSString_flags(8)<33>
JSString_length(12)<34>
JSString_value(16)<35>
JSSymbolTableObject_symbolTable(24)<36>
JSWrapperObject_internalValue(24)<37>
RegExpConstructor_cachedResult_lastRegExp(64)<38>
RegExpConstructor_cachedResult_lastInput(56)<39>
RegExpConstructor_cachedResult_result_start(32)<40>
RegExpConstructor_cachedResult_result_end(40)<41>
RegExpConstructor_cachedResult_reified(48)<42>
RegExpObject_lastIndex(24)<43>
RegExpObject_lastIndexIsWritable(32)<44>
ShadowChicken_Packet_callee(8)<45>
ShadowChicken_Packet_frame(16)<46>
ShadowChicken_Packet_callerFrame(24)<47>
ShadowChicken_Packet_thisValue(0)<48>
ShadowChicken_Packet_scope(32)<49>
ShadowChicken_Packet_codeBlock(40)<50>
ShadowChicken_Packet_callSiteIndex(48)<51>
ScopedArguments_overrodeThings(24)<52>
ScopedArguments_scope(48)<53>
ScopedArguments_table(40)<54>
ScopedArguments_totalLength(28)<55>
ScopedArgumentsTable_arguments(16)<56>
ScopedArgumentsTable_length(8)<57>
StringImpl_data(8)<58>
StringImpl_hashAndFlags(16)<59>
StringImpl_length(4)<60>
Structure_classInfo(64)<61>
Structure_globalObject(24)<62>
Structure_prototype(32)<63>
Structure_structureID(8)<64>
Structure_inlineCapacity(18)<65>
Structure_indexingTypeIncludingHistory(12)<66>
HashMapImpl_capacity(48)<67>
HashMapImpl_buffer(32)<68>
HashMapImpl_head(16)<69>
HashMapBucket_value(40)<70>
HashMapBucket_key(32)<71>
HashMapBucket_next(8)<72>
HashMapBucket_deleted(24)<73>
Symbol_symbolImpl(8)<74>
JSFixedArray_size(8)<75>
ArrayStorage_vector(0)<76>
DirectArguments_storage(0)<77>
JSLexicalEnvironment_variables(0)<78>
JSPropertyNameEnumerator_cachedPropertyNamesVectorContents(0)<79>
JSRopeString_fibers(0)<80>
ScopedArguments_overflowStorage(0)<81>
Subspace_allocatorForSizeStep(0)<82>
WriteBarrierBuffer_bufferContents(0)<83>
characters8(0)<84>
characters16(0)<85>
indexedInt32Properties(0)<86>:
indexedInt32Properties_0(0)<86>
indexedDoubleProperties(0)<87>
indexedContiguousProperties(0)<88>
scopedArgumentsTableArguments(0)<89>
singleCharacterStrings(0)<90>
structureTable(0)<91>
variables(0)<92...95>:
variables_2(16)<92>
variables_5(40)<93>
variables_4(32)<94>
HasOwnPropertyCache(0)<95>
JSFixedArray_buffer(0)<96>
properties(0)<97>
absolute(0)<98>:
absolute_7F9BCD40C2C8(140307140231880)<98>
Initial B3:
BB#0: ; frequency = 1.000000
Int32 @0 = Const32(0)
Int32 @1 = Const32(1)
Int64 @2 = Const64(0)
Int64 @3 = Const64(0)
Int64 @4 = Const64(1)
Int64 @5 = Const64(2)
Int64 @6 = Const64(3)
Int64 @7 = Const64(8)
Double @8 = ConstDouble(0.000000e+00)
Int64 @9 = SlotBase(stack0)
Int64 @10 = Const64(40)
Int64 @11 = Add(@9, $40(@10))
Int64 @12 = FramePointer()
Int64 @13 = Const64(-281474976710656)
Int64 @14 = Const64(-281474976710654)
Int64 @15 = Const64(16)
Int64 @16 = Add(@12, $16(@15))
Int64 @17 = Const64(140307130272224)
Void @18 = Store($140307130272224(@17), @16, ControlDependent|Writes:92)
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f9c0d6f82d0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = WarmAny, numGPScratchRegisters = 1, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @20 = EntrySwitch(Terminal)
Successors: #1
BB#1: ; frequency = 1.000000
Int64 @21 = Const64(40)
Int64 @22 = Add(@12, $40(@21))
Int64 @23 = Load(@22, ControlDependent|Reads:93)
Void @24 = Jump(Terminal)
Successors: #3
BB#2: ; frequency = 1.000000
Void @25 = Patchpoint(generator = 0x7f9c0d6fd480, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @26 = Oops(Terminal)
BB#3: ; frequency = 1.000000
Void @27 = EntrySwitch(Terminal, DFG:@40)
Successors: #4
BB#4: ; frequency = 1.000000
Void @28 = Patchpoint(generator = 0x7f9c0d6e07e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@27)
Int32 @29 = Const32(3, DFG:@23)
Int32 @30 = Const32(1, DFG:@23)
Int32 @31 = Const32(5, DFG:@23)
Int64 @32 = Const64(140307130692224, DFG:@23)
Int32 @33 = Const32(3, DFG:@23)
Void @34 = Upsilon($0(@3), ^83, WritesLocalState, DFG:@23)
Void @35 = Branch($0(@0), Terminal, DFG:@23)
Successors: Then:Rare:#8, Else:#5
BB#5: ; frequency = 1.000000
Int64 @36 = Const64(3, DFG:@23)
Int64 @37 = Const64(3, DFG:@23)
Int32 @38 = Const32(3, DFG:@23)
Int64 @39 = Const64(24, DFG:@23)
Int64 @40 = Const64(8, DFG:@23)
Int64 @41 = Const64(32, DFG:@23)
Int64 @42 = Const64(140307140187520, DFG:@23)
Int64 @43 = Const64(140308216953344, DFG:@23)
Int64 @44 = Patchpoint($140308216953344(@43):SomeRegister, generator = 0x7f9c0d6fd498, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = SomeEarlyRegister, numGPScratchRegisters = 1, Terminal|ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Successors: #6, Rare:#9
BB#6: ; frequency = 1.000000
Int64 @45 = Const64(8, DFG:@23)
Int64 @46 = Add(@44, $8(@45), DFG:@23)
Int64 @47 = Const64(-8, DFG:@23)
Int64 @48 = Add(@46, $-8(@47), DFG:@23)
Void @49 = Store($1(@30), @48, ControlDependent|Writes:3, DFG:@23)
Int64 @50 = Const64(-4, DFG:@23)
Int64 @51 = Add(@46, $-4(@50), DFG:@23)
Void @52 = Store($3(@33), @51, ControlDependent|Writes:4, DFG:@23)
Int64 @53 = Const64(0, DFG:@23)
Int64 @54 = Const64(8, DFG:@23)
Int64 @55 = Add(@46, $8(@54), DFG:@23)
Void @56 = Store($0(@53), @55, ControlDependent|Writes:86, DFG:@23)
Int64 @57 = Const64(16, DFG:@23)
Int64 @58 = Add(@46, $16(@57), DFG:@23)
Void @59 = Store($0(@53), @58, ControlDependent|Writes:86, DFG:@23)
Void @60 = Upsilon(@46, ^83, WritesLocalState, DFG:@23)
Int64 @61 = Const64(140308216860992, DFG:@23)
Int64 @62 = Patchpoint($140308216860992(@61):SomeRegister, generator = 0x7f9c0d6fd4b0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = SomeEarlyRegister, numGPScratchRegisters = 1, Terminal|ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Successors: #7, Rare:#9
BB#7: ; frequency = 1.000000
Int32 @63 = Const32(85, DFG:@23)
Void @64 = Store($85(@63), @62, ControlDependent|Writes:17, DFG:@23)
Int32 @65 = Const32(17310213, DFG:@23)
Int64 @66 = Const64(4, DFG:@23)
Int64 @67 = Add(@62, $4(@66), DFG:@23)
Void @68 = Store($17310213(@65), @67, ControlDependent|Writes:18...22, DFG:@23)
Int32 @69 = Const32(2, DFG:@23)
Int32 @70 = Const32(2, DFG:@23)
Int64 @71 = Const64(8, DFG:@23)
Int64 @72 = Add(@62, $8(@71), DFG:@23)
Void @73 = Store(@46, @72, ControlDependent|Writes:25, DFG:@23)
Void @74 = Upsilon(@62, ^92, WritesLocalState, DFG:@23)
Void @75 = Upsilon(@46, ^91, WritesLocalState, DFG:@23)
Void @76 = Jump(Terminal, DFG:@23)
Successors: #10
BB#8: ; frequency = 1.000000
Int64 @77 = Const64(140307130692560, DFG:@23)
Void @78 = Upsilon($140307130692560(@77), ^82, WritesLocalState, DFG:@23)
Void @79 = Jump(Terminal, DFG:@23)
Successors: #11
BB#9: ; frequency = 1.000000
Void @80 = Upsilon($140307130692224(@32), ^82, WritesLocalState, DFG:@23)
Void @81 = Jump(Terminal, DFG:@23)
Successors: #11
BB#10: ; frequency = 1.000000
Int64 @91 = Phi(ReadsLocalState, DFG:@23)
Int64 @92 = Phi(ReadsLocalState, DFG:@23)
Int64 @93 = Const64(-281474976710655, DFG:@23)
Void @94 = Store($-281474976710655(@93), @91, ControlDependent|Writes:86, DFG:@23)
Void @95 = Fence(Fence|Reads:0...99, DFG:@23)
Int64 @96 = Const64(8, DFG:@35)
Int64 @97 = Add(@92, $8(@96), DFG:@35)
Int64 @98 = Load(@97, ControlDependent|Reads:25, DFG:@35)
Int64 @99 = Const64(-281474976710655, DFG:@33)
Int64 @100 = Const64(-8, DFG:@38)
Int64 @101 = Add(@98, $-8(@100), DFG:@38)
Int32 @102 = Load(@101, ControlDependent|Reads:3, DFG:@38)
Int64 @103 = Const64(-4, DFG:@38)
Int64 @104 = Add(@98, $-4(@103), DFG:@38)
Int32 @105 = Load(@104, ControlDependent|Reads:4, DFG:@38)
Int32 @106 = AboveEqual(@102, @105, DFG:@38)
Void @107 = Branch(@106, Terminal, DFG:@38)
Successors: Then:#13, Else:#12
BB#11: ; frequency = 1.000000
Int64 @82 = Phi(ReadsLocalState, DFG:@23)
Int64 @83 = Phi(ReadsLocalState, DFG:@23)
Int64 @84 = Patchpoint(@82:SomeRegister, $1(@30):SomeRegister, @83:SomeRegister, generator = 0x7f9c0d6d47e0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = SomeRegister, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Void @85 = Upsilon(@84, ^92, WritesLocalState, DFG:@23)
Int64 @86 = Const64(8, DFG:@23)
Int64 @87 = Add(@84, $8(@86), DFG:@23)
Int64 @88 = Load(@87, ControlDependent|Reads:25, DFG:@23)
Void @89 = Upsilon(@88, ^91, WritesLocalState, DFG:@23)
Void @90 = Jump(Terminal, DFG:@23)
Successors: #10
BB#12: ; frequency = 1.000000
Int64 @108 = ZExt32(@102, DFG:@38)
Int64 @109 = Const64(8, DFG:@38)
Int64 @110 = Mul(@108, $8(@109), DFG:@38)
Int64 @111 = Add(@98, @110, DFG:@38)
Void @112 = Store($-281474976710655(@99), @111, ControlDependent|Writes:86, DFG:@38)
Int32 @113 = Add(@102, $1(@1), DFG:@38)
Int64 @114 = Const64(-8, DFG:@38)
Int64 @115 = Add(@98, $-8(@114), DFG:@38)
Void @116 = Store(@113, @115, ControlDependent|Writes:3, DFG:@38)
Int64 @117 = ZExt32(@113, DFG:@38)
Int64 @118 = Add(@117, $-281474976710656(@13), DFG:@38)
Void @119 = Upsilon(@118, ^133, WritesLocalState, DFG:@38)
Void @120 = Jump(Terminal, DFG:@38)
Successors: #15
BB#13: ; frequency = 1.000000
Int64 @121 = Const64(140308312215168, DFG:@38)
Int64 @122 = Const64(36, DFG:@38)
Int64 @123 = Add(@12, $36(@122), DFG:@38)
Int32 @124 = Const32(1, DFG:@38)
Void @125 = Store($1(@124), @123, ControlDependent|Writes:94, DFG:@38)
Int64 @126 = CCall($140308312215168(@121), @12, $-281474976710655(@99), @92, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@38)
Int64 @127 = Const64(140307140231880, DFG:@38)
Int64 @128 = Load($140307140231880(@127), ControlDependent|Reads:98, DFG:@38)
Int32 @129 = NotEqual(@128, $0(@2), DFG:@38)
Void @130 = Branch(@129, Terminal, DFG:@38)
Successors: Then:Rare:#2, Else:#14
BB#14: ; frequency = 1.000000
Void @131 = Upsilon(@126, ^133, WritesLocalState, DFG:@38)
Void @132 = Jump(Terminal, DFG:@38)
Successors: #15
BB#15: ; frequency = 1.000000
Int64 @133 = Phi(ReadsLocalState, DFG:@38)
Void @134 = Patchpoint(@92:ColdAny, generator = 0x7f9c0d6e0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@25)
Void @135 = Return(@92, Terminal, DFG:@44)
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0
B3 after moveConstants, before generation:
BB#0: ; frequency = 1.000000
Void @134 = Nop()
Void @135 = Nop()
Int64 @12 = FramePointer()
Void @82 = Nop()
Int64 @17 = Const64(140307130272224)
Void @18 = Store($140307130272224(@17), @12, offset = 16, ControlDependent|Writes:92)
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f9c0d6f82d0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = WarmAny, numGPScratchRegisters = 1, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @28 = Patchpoint(generator = 0x7f9c0d6e07e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@27)
Void @133 = Nop(DFG:@23)
Void @124 = Nop(DFG:@23)
Int64 @2 = Const64(0)
Void @34 = Upsilon($0(@2), ^83, WritesLocalState, DFG:@23)
Void @123 = Nop(DFG:@23)
Int64 @43 = Const64(140308216953344, DFG:@23)
Int32 @1 = Const32(1)
Int32 @33 = Const32(3, DFG:@23)
Int64 @44 = Patchpoint($140308216953344(@43):SomeRegister, generator = 0x7f9c0d6fd498, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = SomeEarlyRegister, numGPScratchRegisters = 1, Terminal|ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Successors: #2, Rare:#6
BB#1: ; frequency = 1.000000
Predecessors: #9
Void @25 = Patchpoint(generator = 0x7f9c0d6fd480, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @26 = Oops(Terminal)
BB#2: ; frequency = 1.000000
Predecessors: #0
Void @122 = Nop(DFG:@23)
Int64 @45 = Const64(8, DFG:@23)
Int64 @46 = Add(@44, $8(@45), DFG:@23)
Void @49 = Store($1(@1), @44, ControlDependent|Writes:3, DFG:@23)
Void @52 = Store($3(@33), @44, offset = 4, ControlDependent|Writes:4, DFG:@23)
Void @56 = Store($0(@2), @44, offset = 16, ControlDependent|Writes:86, DFG:@23)
Void @59 = Store($0(@2), @44, offset = 24, ControlDependent|Writes:86, DFG:@23)
Void @60 = Upsilon(@46, ^83, WritesLocalState, DFG:@23)
Void @115 = Nop(DFG:@23)
Int64 @61 = Const64(140308216860992, DFG:@23)
Int64 @62 = Patchpoint($140308216860992(@61):SomeRegister, generator = 0x7f9c0d6fd4b0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = SomeEarlyRegister, numGPScratchRegisters = 1, Terminal|ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Successors: #3, Rare:#6
BB#3: ; frequency = 1.000000
Predecessors: #2
Void @114 = Nop(DFG:@23)
Int32 @63 = Const32(85, DFG:@23)
Void @64 = Store($85(@63), @62, ControlDependent|Writes:17, DFG:@23)
Void @110 = Nop(DFG:@23)
Int32 @65 = Const32(17310213, DFG:@23)
Void @68 = Store($17310213(@65), @62, offset = 4, ControlDependent|Writes:18...22, DFG:@23)
Void @73 = Store(@46, @62, offset = 8, ControlDependent|Writes:25, DFG:@23)
Void @74 = Upsilon(@62, ^92, WritesLocalState, DFG:@23)
Void @75 = Upsilon(@46, ^91, WritesLocalState, DFG:@23)
Void @76 = Jump(Terminal, DFG:@23)
Successors: #7
BB#6: ; frequency = 1.000000
Predecessors: #0, #2
Int64 @83 = Phi(ReadsLocalState, DFG:@23)
Int64 @32 = Const64(140307130692224, DFG:@23)
Int64 @84 = Patchpoint($140307130692224(@32):SomeRegister, $1(@1):SomeRegister, @83:SomeRegister, generator = 0x7f9c0d6d47e0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = SomeRegister, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@23)
Void @85 = Upsilon(@84, ^92, WritesLocalState, DFG:@23)
Int64 @88 = Load(@84, offset = 8, ControlDependent|Reads:25, DFG:@23)
Void @89 = Upsilon(@88, ^91, WritesLocalState, DFG:@23)
Void @90 = Jump(Terminal, DFG:@23)
Successors: #7
BB#7: ; frequency = 1.000000
Predecessors: #6, #3
Int64 @91 = Phi(ReadsLocalState, DFG:@23)
Int64 @92 = Phi(ReadsLocalState, DFG:@23)
Void @109 = Nop(DFG:@23)
Int64 @93 = Const64(-281474976710655, DFG:@23)
Void @94 = Store($-281474976710655(@93), @91, ControlDependent|Writes:86, DFG:@23)
Void @95 = Fence(Fence|Reads:0...99, DFG:@23)
Int64 @98 = Load(@92, offset = 8, ControlDependent|Reads:25, DFG:@35)
Int32 @102 = Load(@98, offset = -8, ControlDependent|Reads:3, DFG:@38)
Int32 @105 = Load(@98, offset = -4, ControlDependent|Reads:4, DFG:@38)
Int32 @106 = AboveEqual(@102, @105, DFG:@38)
Void @107 = Branch(@106, Terminal, DFG:@38)
Successors: Then:#9, Else:#8
BB#8: ; frequency = 1.000000
Predecessors: #7
Int64 @108 = ZExt32(@102, DFG:@38)
Int64 @131 = Shl(@108, $3(@33), DFG:@38)
Int64 @111 = Add(@98, @131, DFG:@38)
Void @112 = Store($-281474976710655(@93), @111, ControlDependent|Writes:86, DFG:@38)
Int32 @113 = Add(@102, $1(@1), DFG:@38)
Void @116 = Store(@113, @98, offset = -8, ControlDependent|Writes:3, DFG:@38)
Void @120 = Patchpoint(@92:ColdAny, generator = 0x7f9c0d6e0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@25)
Void @35 = Return(@92, Terminal, DFG:@44)
BB#9: ; frequency = 1.000000
Predecessors: #7
Void @104 = Nop(DFG:@38)
Void @125 = Store($1(@1), @12, offset = 36, ControlDependent|Writes:94, DFG:@38)
Int64 @121 = Const64(140308312215168, DFG:@38)
Int64 @126 = CCall($140308312215168(@121), @12, $-281474976710655(@93), @92, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@38)
Void @103 = Nop(DFG:@38)
Int64 @128 = Load($140307130272224(@17), offset = 9959656, ControlDependent|Reads:98, DFG:@38)
Int64 @127 = Const64(140307140231880, DFG:@38)
Void @130 = Branch(@128, Terminal, DFG:@38)
Successors: Then:Rare:#1, Else:#10
BB#10: ; frequency = 1.000000
Predecessors: #9
Void @80 = Patchpoint(@92:ColdAny, generator = 0x7f9c0d6e0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@25)
Void @129 = Return(@92, Terminal, DFG:@44)
Has Quirks: True
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0
Initial air:
BB#0: ; frequency = 1.000000
Move $0x7f9bcca8c9e0, %tmp10, $140307130272224(@17)
Move %tmp10, 16(%rbp), @18
Patch &Patchpoint0, %rbp, %tmp9, @19
Patch &Patchpoint0, @28
Move $0, %tmp8, $0(@2)
Move $0, %tmp0, @34
Move $0x7f9c0d6e3a00, %tmp4, $140308216953344(@43)
Move $1, %tmp7, $1(@1)
Move $3, %tmp6, $3(@33)
Patch &Patchpoint0, %tmp3, %tmp4, %tmp5, @44
Successors: #2, Rare:#4
BB#1: ; frequency = 1.000000
Patch &Patchpoint0, @25
Oops @26
BB#2: ; frequency = 1.000000
Move $8, %tmp30, $8(@45)
Add64 $8, %tmp3, %tmp29, @46
Move32 $1, (%tmp3), @49
Move32 $3, 4(%tmp3), @52
Move $0, 16(%tmp3), @56
Move $0, 24(%tmp3), @59
Move %tmp29, %tmp0, @60
Move $0x7f9c0d6cd140, %tmp27, $140308216860992(@61)
Patch &Patchpoint0, %tmp26, %tmp27, %tmp28, @62
Successors: #3, Rare:#4
BB#3: ; frequency = 1.000000
Move $85, %tmp32, $85(@63)
Move32 $85, (%tmp26), @64
Move $17310213, %tmp31, $17310213(@65)
Move32 $17310213, 4(%tmp26), @68
Move %tmp29, 8(%tmp26), @73
Move %tmp26, %tmp2, @74
Move %tmp29, %tmp1, @75
Jump @76
Successors: #5
BB#4: ; frequency = 1.000000
Move %tmp0, %tmp14, @83
Move $0x7f9bccaf3280, %tmp13, $140307130692224(@32)
Patch &Patchpoint0, %tmp12, %tmp13, %tmp7, %tmp14, @84
Move %tmp12, %tmp2, @85
Move 8(%tmp12), %tmp11, @88
Move %tmp11, %tmp1, @89
Jump @90
Successors: #5
BB#5: ; frequency = 1.000000
Move %tmp1, %tmp18, @91
Move %tmp2, %tmp17, @92
Move $0xffff000000000001, %tmp19, $-281474976710655(@93)
Move %tmp19, (%tmp18), @94
StoreFence @95
Move 8(%tmp17), %tmp15, @98
Move32 -8(%tmp15), %tmp16, @102
Branch32 AboveOrEqual, %tmp16, -4(%tmp15), @107
Successors: #7, #6
BB#6: ; frequency = 1.000000
Move32 %tmp16, %tmp21, @108
Lea64 (%tmp15,%tmp21,8), %tmp22, @111
Move %tmp19, (%tmp15,%tmp21,8), @112
Add32 $1, %tmp16, %tmp20, @113
Move32 %tmp20, -8(%tmp15), @116
Patch &Patchpoint0, %tmp17, @120
Move %tmp17, %rax, @35
Ret64 %rax, @35
BB#7: ; frequency = 1.000000
Move32 $1, 36(%rbp), @125
Move $0x7f9c131bce80, %tmp24, $140308312215168(@121)
CCall %tmp24, %tmp25, %rbp, %tmp19, %tmp17, @126
Move $0x7f9bcd40c2c8, %tmp23, $140307140231880(@127)
BranchTest64 NonZero, 9959656(%tmp10), $-1, @130
Successors: Rare:#1, #8
BB#8: ; frequency = 1.000000
Patch &Patchpoint0, %tmp17, @80
Move %tmp17, %rax, @129
Ret64 %rax, @129
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0, kind = Locked, b3Slot = stack0: (byteSize = 40, offsetFromFP = 0)
Specials:
&Patchpoint0: Lowered B3::PatchpointValue.
Air after optimizeBlockOrder, before generation:
Entrypoints: #0
BB#0: ; frequency = 1.000000
Move $0x7f9bcca8c9e0, %r12, $140307130272224(@17)
Move %r12, 16(%rbp), @18
Patch &Patchpoint0, %rbp, %rax, @19
Patch &Patchpoint0, @28
Move $0, %rax, @34
Add64 $1086681120, %r12, %rdx, $140308216953344(@43)
Move $1, %rdi, $1(@1)
Patch &Patchpoint0, %rcx, %rdx, %rsi, @44
Successors: #1, Rare:#8
BB#1: ; frequency = 1.000000
Predecessors: #0
Add64 $8, %rcx, %rax, @46
Move32 $1, (%rcx), @49
Move32 $3, 4(%rcx), @52
Move $0, 16(%rcx), @56
Move $0, 24(%rcx), @59
Add64 $1086588768, %r12, %rcx, $140308216860992(@61)
Patch &Patchpoint0, %rbx, %rcx, %rdx, @62
Successors: #2, Rare:#8
BB#2: ; frequency = 1.000000
Predecessors: #1
Move32 $85, (%rbx), @64
Move32 $17310213, 4(%rbx), @68
Move %rax, 8(%rbx), @73
Jump @76
Successors: #3
BB#3: ; frequency = 1.000000
Predecessors: #8, #2
Move $0xffff000000000001, %rdx, $-281474976710655(@93)
Move %rdx, (%rax), @94
StoreFence @95
Move 8(%rbx), %rcx, @98
Move32 -8(%rcx), %rax, @102
Branch32 AboveOrEqual, %rax, -4(%rcx), @107
Successors: #5, #4
BB#4: ; frequency = 1.000000
Predecessors: #3
Move %rdx, (%rcx,%rax,8), @112
Add32 $1, %rax, %rax, @113
Move32 %rax, -8(%rcx), @116
Patch &Patchpoint0, %rbx, @120
Move %rbx, %rax, @35
Ret64 %rax, @35
BB#5: ; frequency = 1.000000
Predecessors: #3
Move32 $1, 36(%rbp), @125
Add64 $1181942944, %r12, %rax, $140308312215168(@121)
Move %rdx, %rsi, @126
Move %rbx, %rdx, @126
Move %rbp, %rdi, @126
Patch &CCall1, %rax, %rax, %rdx, %xmm0, %rdi, %rsi, %rdx, @126
BranchTest64 NonZero, 9959656(%r12), $-1, @130
Successors: Rare:#7, #6
BB#6: ; frequency = 1.000000
Predecessors: #5
Patch &Patchpoint0, %rbx, @80
Move %rbx, %rax, @129
Ret64 %rax, @129
BB#7: ; frequency = 1.000000
Predecessors: #5
Patch &Patchpoint0, @25
Oops @26
BB#8: ; frequency = 1.000000
Predecessors: #0, #1
Add64 $420000, %r12, %rcx, $140307130692224(@32)
Patch &Patchpoint0, %rbx, %rcx, %rdi, %rax, @84
Move 8(%rbx), %rax, @88
Jump @90
Successors: #3
Stack slots:
stack0: byteSize = 40, offsetFromFP = -56, kind = Locked, b3Slot = stack0: (byteSize = 40, offsetFromFP = -56)
stack1: byteSize = 16, offsetFromFP = -16, kind = Locked
Specials:
&Patchpoint0: Lowered B3::PatchpointValue.
&CCall1: function call that uses the C calling convention.
Frame size: 64 (Allocated)
Callee saves: %rbx at -16, %r12 at -8
DFG(Driver) compiling <global>#A5E5H5:[0x7f9bcca8cc30->0x7f9bcca8c0a0->0x7f9bccaa83c0, NoneGlobal, 177 (DidTryToEnterInLoop)] with FTLForOSREntryMode, number of instructions = 177
DFG(Plan) compiling <global>#A5E5H5:[0x7f9bcca8cc30->0x7f9bcca8c0a0->0x7f9bccaa83c0, NoneGlobal, 177 (DidTryToEnterInLoop)] with FTLForOSREntryMode, number of instructions = 177
Compiler must handle OSR entry from bc#106 with values: arg0:Undefined loc0:Undefined loc1:Undefined loc2:Undefined loc3:Object: 0x7f9bccad40a0 with butterfly (nil) (0x7f9bccaf17d0:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), ID: 53 loc4:Undefined loc5:Undefined loc6:Undefined loc7:Undefined loc8:Undefined loc9:Undefined loc10:Undefined loc11:Undefined loc12:Undefined loc13:Undefined loc14:Undefined loc15:Undefined
Phase CPS rethreading changed the IR.
Phase unification changed the IR.
Phase prediction injection changed the IR.
Phase static execution count estimation changed the IR.
Dethreading DFG graph.
Phase OSR entrypoint creation changed the IR.
Phase CPS rethreading changed the IR.
Phase backwards propagation changed the IR.
Phase prediction propagation changed the IR.
Phase fixup changed the IR.
Phase invalidation point injection changed the IR.
Phase strength reduction changed the IR.
Phase control flow analysis changed the IR.
Phase constant folding changed the IR.
Dethreading DFG graph.
Phase CFG simplification changed the IR.
Phase local common subexpression elimination changed the IR.
Phase CPS rethreading changed the IR.
Phase control flow analysis changed the IR.
Dethreading DFG graph.
Phase critical edge breaking changed the IR.
Phase CPS rethreading changed the IR.
Dethreading DFG graph.
Phase SSA conversion changed the IR.
Phase SSA lowering changed the IR.
Phase PutStack sinking changed the IR.
Phase constant hoisting changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase liveness analysis changed the IR.
Phase OSR availability analysis changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase liveness analysis changed the IR.
Phase liveness analysis changed the IR.
Phase control flow analysis changed the IR.
Phase global store barrier insertion changed the IR.
Phase store barrier fencing changed the IR.
Phase MovHint removal changed the IR.
Phase dead code elimination changed the IR.
Phase stack layout changed the IR.
Phase liveness analysis changed the IR.
Phase OSR availability analysis changed the IR.
Phase watchpoint collection changed the IR.
Graph just before FTL lowering:
DFG for <global>#A5E5H5:[0x7f9bcca8cc30->0x7f9bcca8c0a0->0x7f9bccaa83c0, DFGGlobal, 177 (DidTryToEnterInLoop)]:
Fixpoint state: FixpointConverged; Form: SSA; Unification state: GloballyUnified; Ref count state: ExactRefCount
Argument formats for entrypoint index: 0 : FlushedJSValue
Block #0 (bc#0):
Execution count: 1.000000
Predecessors:
Successors: #1
Dominated by: #0
Dominates: #0 #1 #2 #3 #4
Dominance Frontier:
Iterated Dominance Frontier:
Backwards dominates by: #root #0 #1 #3 #4
Backwards dominates: #0
Control equivalent to: #0 #1 #3 #4
States: StructuresAreWatched
Availability: {locals = ; heap = }
Live:
Values:
37:< 4:-> JSConstant(JS|UseAsOther, OtherObj, Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261, bc#0, ExitInvalid)
25:< 1:-> JSConstant(JS|PureNum, BoolInt32, Int32: 1, bc#0, ExitInvalid)
39:< 2:-> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54, bc#0, ExitInvalid)
11:< 1:-> JSConstant(JS|UseAsOther, NonBoolInt32, Int32: 10000000, bc#0, ExitInvalid)
19:<!0:-> EntrySwitch(MustGen, #1, W:SideState, bc#0, ExitInvalid)
States: InvalidBranchDirection, StructuresAreWatched
Availability: {locals = ; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
Block #1 (bc#0):
Execution count: 1.000000
Predecessors: #0
Successors: #3
Dominated by: #0 #1
Dominates: #1 #2 #3 #4
Dominance Frontier:
Iterated Dominance Frontier:
Backwards dominates by: #root #1 #3 #4
Backwards dominates: #0 #1
Control equivalent to: #0 #1 #3 #4
States: StructuresAreWatched
Availability: {locals = loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:DeadFlush/Undecided loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
16:<!0:-> InitializeEntrypointArguments(MustGen, W:SideState, ClobbersExit, bc#0, ExitInvalid)
18:<!0:-> ExitOK(MustGen, W:SideState, bc#0, ExitInvalid)
5:< 1:-> ExtractOSREntryLocal(JS|UseAsOther, OtherObj, loc3, bc#0, ExitInvalid)
21:<!0:-> KillStack(MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
4:<!0:-> MovHint(Untyped:Kill:@5, MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
1:<!0:-> Jump(MustGen, T:#3, W:SideState, bc#106, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
Block #2 (bc#106):
Execution count: 10.000000
Predecessors: #3
Successors: #3
Dominated by: #0 #1 #2 #3
Dominates: #2
Dominance Frontier: #3
Iterated Dominance Frontier: #3
Backwards dominates by: #root #2 #3 #4
Backwards dominates: #2
Control equivalent to: #2
Containing loop headers: #3
States: StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
3:<!0:-> ExitOK(MustGen, W:SideState, bc#106, ExitValid)
14:<!0:-> Jump(MustGen, T:#3, W:SideState, bc#106, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
Block #3 (bc#106): (OSR target)
Execution count: 10.000000
Predecessors: #1 #2
Successors: #2 #4
Dominated by: #0 #1 #3
Dominates: #2 #3 #4
Dominance Frontier: #3
Iterated Dominance Frontier: #3
Backwards dominates by: #root #3 #4
Backwards dominates: #0 #1 #2 #3
Control equivalent to: #0 #1 #3 #4
Loop header, contains: #2 #3
Containing loop headers: #3
States: StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
29:<!0:-> ExitOK(MustGen, W:SideState, bc#106, ExitValid)
30:<!0:-> LoopHint(MustGen, W:SideState, bc#106, ExitValid)
34:<!0:-> CheckTraps(MustGen, W:Watchpoint_fire, Exits, ClobbersExit, bc#107, ExitValid)
22:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#108, ExitValid)
31:<!0:-> KillStack(MustGen, loc8, W:SideState, ClobbersExit, bc#108, ExitValid)
41:<!0:-> MovHint(Untyped:@37, MustGen, loc8, W:SideState, ClobbersExit, bc#108, ExitInvalid)
33:<!0:-> KillStack(MustGen, loc6, W:SideState, ClobbersExit, bc#115, ExitValid)
38:<!0:-> MovHint(Untyped:@39, MustGen, loc6, W:SideState, ClobbersExit, bc#115, ExitInvalid)
36:<!2:-> DirectCall(Untyped:@39, Untyped:@37, JS|MustGen|VarArgs|UseAsOther, Array, <0x7f9bccaa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f9bccaa8460], R:World, W:Heap, Exits, ClobbersExit, bc#123, ExitValid) predicting Array
40:<!0:-> KillStack(MustGen, loc5, W:SideState, ClobbersExit, bc#123, ExitInvalid)
35:<!0:-> MovHint(Untyped:@36, MustGen, loc5, W:SideState, ClobbersExit, bc#123, ExitInvalid)
15:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#123, exit: bc#132, ExitValid)
42:<!0:-> KillStack(MustGen, loc6, W:SideState, ClobbersExit, bc#132, ExitValid)
32:<!0:-> MovHint(Untyped:@37, MustGen, loc6, W:SideState, ClobbersExit, bc#132, ExitInvalid)
28:< 2:-> GetGlobalVar(JS|PureNum, NonBoolInt32, global(0x7f9c0d6b2a20), R:Absolute(140308216752672), Exits, bc#139, ExitValid) predicting NonBoolInt32
0:<!0:-> KillStack(MustGen, loc7, W:SideState, ClobbersExit, bc#139, ExitValid)
27:<!0:-> MovHint(Untyped:@28, MustGen, loc7, W:SideState, ClobbersExit, bc#139, ExitInvalid)
24:<!4:-> ArithAdd(Check:Int32:Kill:@28, Int32:@25, Number|MustGen|UseAsOther, Int32, CheckOverflow, Exits, bc#147, ExitValid)
6:<!0:-> KillStack(MustGen, loc7, W:SideState, ClobbersExit, bc#147, ExitValid)
23:<!0:-> MovHint(Untyped:@24, MustGen, loc7, W:SideState, ClobbersExit, bc#147, ExitInvalid)
20:<!0:-> PutGlobalVariable(Cell:@37, Untyped:@24, MustGen, global(0x7f9c0d6b2a20), W:Absolute(140308216752672), Exits, ClobbersExit, bc#149, ExitValid)
12:<!0:-> KillStack(MustGen, loc6, W:SideState, ClobbersExit, bc#156, ExitValid)
17:<!0:-> ZombieHint(MustGen, loc6, W:SideState, ClobbersExit, bc#156, ExitInvalid)
8:<!0:-> KillStack(MustGen, loc7, W:SideState, ClobbersExit, bc#163, ExitValid)
13:<!0:-> MovHint(Untyped:@24, MustGen, loc7, W:SideState, ClobbersExit, bc#163, ExitInvalid)
10:< 1:-> CompareLess(Int32:Kill:@24, Int32:@11, Boolean|UseAsOther, Bool, Exits, bc#171, ExitValid)
9:<!0:-> Branch(KnownBoolean:Kill:@10, MustGen, T:#2/w:10.000000, F:#4/w:1.000000, W:SideState, bc#171, ExitInvalid)
States: TakeBoth, StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:ConflictingFlush/@36 loc7:ConflictingFlush/@24 loc8:ConflictingFlush/@37 loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @11, @25, @36, @37, @39
Values: @11=>(NonBoolInt32, Int32: 10000000), @25=>(BoolInt32, Int32: 1), @36=>(Top, TOP, TOP), @37=>(OtherObj, TOP, TOP, Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54)
Block #4 (bc#175):
Execution count: 1.000000
Predecessors: #3
Successors:
Dominated by: #0 #1 #3 #4
Dominates: #4
Dominance Frontier:
Iterated Dominance Frontier:
Backwards dominates by: #root #4
Backwards dominates: #0 #1 #2 #3 #4
Control equivalent to: #0 #1 #3 #4
States: StructuresAreWatched
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:DeadFlush/Undecided loc4:DeadFlush/Undecided loc5:ConflictingFlush/@36 loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live: @36
Values: @36=>(Top, TOP, TOP)
2:<!0:-> ExitOK(MustGen, W:SideState, bc#175, ExitValid)
7:<!0:-> Return(Untyped:Kill:@36, MustGen, W:SideState, Exits, bc#175, ExitValid)
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated
Availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:DeadFlush/Undecided loc4:DeadFlush/Undecided loc5:ConflictingFlush/@36 loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Live:
Values:
GC Values:
Weak:Object: 0x7f9bcca98430 with butterfly (nil) (%Av:Function), ID: 54
Weak:Object: 0x7f9bccaef4c0 with butterfly 0x7f9bcc8fdfa8 (%BP:Function), ID: 57
Weak:Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261
Strong:Cell: 0x7f9bccaa8460 (%AE:FunctionExecutable), ID: 13
Desired watchpoints:
Watchpoint sets: 0x7f9c0d6c7bb8
Inline watchpoint sets: 0x7f9bccaf0800, 0x7f9bccaf0100, 0x7f9bccaf1830, 0x7f9bccaf0250, 0x7f9bccaf0640, 0x7f9bccaf1ad0
Inferred values:
Buffer views:
Object property conditions: <Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (%EC:global), ID: 261: Equivalence of noInline with Object: 0x7f9bccaef4c0 with butterfly 0x7f9bcc8fdfa8 (%BP:Function), ID: 57>
Inferred types:
Structures:
%AE:FunctionExecutable = 0x7f9bccaf05e0:[FunctionExecutable, {}, NonArray, Leaf]
%Av:Function = 0x7f9bccaf18b0:[Function, {}, NonArray, Proto:0x7f9bccad80a0]
%BP:Function = 0x7f9bccaf1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f9bccad80a0, Leaf]
%EC:global = 0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]
Function ready, beginning lowering.
Compiling block #0
Lowering @37
Lowering @25
Lowering @39
Lowering @11
Lowering @19
Compiling block #1
Lowering @16
Lowering @18
Lowering @5
Lowering @21
Lowering @4
Lowering @1
Compiling block #3
Lowering @29
Lowering @30
Lowering @34
Lowering @22
Invalidation point with availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:DeadFlush/Undecided loc6:DeadFlush/Undecided loc7:DeadFlush/Undecided loc8:DeadFlush/Undecided loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Argument(#0 as JS) loc4:Dead loc5:Dead loc6:Dead loc7:Dead loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Lowering @31
Lowering @41
Lowering @33
Lowering @38
Lowering @36
Lowering @40
Lowering @35
Lowering @15
Invalidation point with availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:ConflictingFlush/@36 loc6:ConflictingFlush/@39 loc7:DeadFlush/Undecided loc8:ConflictingFlush/@37 loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Argument(#0 as JS) loc4:Dead loc5:Argument(#1 as JS) loc6:Dead loc7:Dead loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Lowering @42
Lowering @32
Lowering @28
Lowering @0
Lowering @27
Lowering @24
OSR exit #2 with availability: {locals = arg0:this:FlushedJSValue/Unavailable loc0:DeadFlush/Undecided loc1:DeadFlush/Undecided loc2:DeadFlush/Undecided loc3:ConflictingFlush/@5 loc4:DeadFlush/Undecided loc5:ConflictingFlush/@36 loc6:ConflictingFlush/@37 loc7:ConflictingFlush/@28 loc8:ConflictingFlush/@37 loc9:DeadFlush/Undecided loc10:DeadFlush/Undecided loc11:DeadFlush/Undecided loc12:DeadFlush/Undecided loc13:DeadFlush/Undecided loc14:DeadFlush/Undecided loc15:DeadFlush/Undecided; heap = }
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Argument(#1 as JS) loc4:Dead loc5:Argument(#2 as JS) loc6:Constant(Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]), ID: 261) loc7:Argument(#3 as JS) loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Exit values: arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Argument(#0 as JS) loc4:Dead loc5:Argument(#1 as JS) loc6:Constant(Object: 0x7f9bccae40a0 with butterfly 0x7f9bcc8e84a8 (0x7f9bccaaf280:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, SharedArrayBuffer:111, String:112, Symbol:113, Number:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Intl:120, Reflect:121, WebAssembly:122, debug:123, describe:124, describeArray:125, print:126, printErr:127, quit:128, abort:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, getGetterSetter:136, version:137, run:138, runString:139, load:140, loadString:141, readFile:142, read:143, checkSyntax:144, sleepSeconds:145, jscStack:146, readline:147, preciseTime:148, neverInlineFunction:149, noInline:150, noDFG:151, noFTL:152, noOSRExitFuzzing:153, numberOfDFGCompiles:154, jscOptions:155, optimizeNextInvocation:156, reoptimizationRetryCount:157, transferArrayBuffer:158, failNextNewCodeBlock:159, shadowChickenFunctionsOnStack:160, setGlobalConstRedeclarationShouldNotThrow:161, Root:162, Element:163, getElement:164, setElementRoot:165, SimpleObject:166, getHiddenValue:167, setHiddenValue:168, DFGTrue:169, OSRExit:170, isFinalTier:171, predictInt32:172, isInt32:173, fiatInt52:174, effectful42:175, makeMasquerader:176, hasCustomProperties:177, createProxy:178, createRuntimeArray:179, createImpureGetter:180, createCustomGetterObject:181, createDOMJITNodeObject:182, createDOMJITGetterObject:183, createDOMJITGetterComplexObject:184, createDOMJITFunctionObject:185, createDOMJITCheckSubClassObject:186, createBuiltin:187, createGlobalObject:188, setImpureGetterDelegate:189, dumpTypesForAllVariables:190, findTypeForExpression:191, returnTypeFor:192, dumpBasicBlockExecutionRanges:193, hasBasicBlockExecuted:194, basicBlockExecutionCount:195, enableExceptionFuzz:196, drainMicrotasks:197, getRandomSeed:198, setRandomSeed:199, isRope:200, callerSourceOrigin:201, globalObjectForObject:202, is32BitPlatform:203, loadModule:204, checkModuleSyntax:205, platformSupportsSamplingProfiler:206, generateHeapSnapshot:207, resetSuperSamplerState:208, ensureArrayStorage:209, startSamplingProfiler:210, samplingProfilerStackTraces:211, maxArguments:212, asyncTestStart:213, asyncTestPassed:214, WebAssemblyMemoryMode:215, console:216, $:217, $262:218, waitForReport:219, heapCapacity:220, flashHeapAccess:221}, NonArray, Proto:0x7f9bccac40a0, Dictionary, Leaf]), ID: 261) loc7:Argument(#2 as Int32) loc8:Dead loc9:Dead loc10:Dead loc11:Dead loc12:Dead loc13:Dead loc14:Dead loc15:Dead
Lowering @6
Lowering @23
Lowering @20
Lowering @12
Lowering @17
Lowering @8
Lowering @13
Lowering @10
Lowering @9
Compiling block #2
Lowering @3
Lowering @14
Compiling block #4
Lowering @2
Lowering @7
Abstract Heap Repository:
jscRoot(0)<0...99>:
typedArrayProperties(0)<0>
ArrayBuffer_data(32)<1>
Butterfly_arrayBuffer(-8)<2>
Butterfly_publicLength(-8)<3>
Butterfly_vectorLength(-4)<4>
CallFrame_callerFrame(0)<5>
ClassInfo_parentClass(8)<6>
DirectArguments_callee(24)<7>
DirectArguments_length(32)<8>
DirectArguments_minCapacity(36)<9>
DirectArguments_mappedArguments(40)<10>
DirectArguments_modifiedArgumentsDescriptor(16)<11>
GetterSetter_getter(16)<12>
GetterSetter_setter(24)<13>
JSArrayBufferView_length(24)<14>
JSArrayBufferView_mode(28)<15>
JSArrayBufferView_vector(16)<16>
JSCell_header(0)<17...22>:
JSCell_structureID(0)<17>
JSCell_usefulBytes(4)<18...22>:
JSCell_indexingTypeAndMisc(4)<18>
JSCell_typeInfoType(5)<19>
JSCell_typeInfoFlags(6)<20>
JSCell_cellState(7)<21>
JSFunction_executable(24)<22>
JSFunction_scope(16)<23>
JSFunction_rareData(32)<24>
JSObject_butterfly(8)<25>
JSPropertyNameEnumerator_cachedInlineCapacity(52)<26>
JSPropertyNameEnumerator_cachedPropertyNamesVector(8)<27>
JSPropertyNameEnumerator_cachedStructureID(24)<28>
JSPropertyNameEnumerator_endGenericPropertyIndex(48)<29>
JSPropertyNameEnumerator_endStructurePropertyIndex(44)<30>
JSPropertyNameEnumerator_indexLength(40)<31>
JSScope_next(16)<32>
JSString_flags(8)<33>
JSString_length(12)<34>
JSString_value(16)<35>
JSSymbolTableObject_symbolTable(24)<36>
JSWrapperObject_internalValue(24)<37>
RegExpConstructor_cachedResult_lastRegExp(64)<38>
RegExpConstructor_cachedResult_lastInput(56)<39>
RegExpConstructor_cachedResult_result_start(32)<40>
RegExpConstructor_cachedResult_result_end(40)<41>
RegExpConstructor_cachedResult_reified(48)<42>
RegExpObject_lastIndex(24)<43>
RegExpObject_lastIndexIsWritable(32)<44>
ShadowChicken_Packet_callee(8)<45>
ShadowChicken_Packet_frame(16)<46>
ShadowChicken_Packet_callerFrame(24)<47>
ShadowChicken_Packet_thisValue(0)<48>
ShadowChicken_Packet_scope(32)<49>
ShadowChicken_Packet_codeBlock(40)<50>
ShadowChicken_Packet_callSiteIndex(48)<51>
ScopedArguments_overrodeThings(24)<52>
ScopedArguments_scope(48)<53>
ScopedArguments_table(40)<54>
ScopedArguments_totalLength(28)<55>
ScopedArgumentsTable_arguments(16)<56>
ScopedArgumentsTable_length(8)<57>
StringImpl_data(8)<58>
StringImpl_hashAndFlags(16)<59>
StringImpl_length(4)<60>
Structure_classInfo(64)<61>
Structure_globalObject(24)<62>
Structure_prototype(32)<63>
Structure_structureID(8)<64>
Structure_inlineCapacity(18)<65>
Structure_indexingTypeIncludingHistory(12)<66>
HashMapImpl_capacity(48)<67>
HashMapImpl_buffer(32)<68>
HashMapImpl_head(16)<69>
HashMapBucket_value(40)<70>
HashMapBucket_key(32)<71>
HashMapBucket_next(8)<72>
HashMapBucket_deleted(24)<73>
Symbol_symbolImpl(8)<74>
JSFixedArray_size(8)<75>
ArrayStorage_vector(0)<76>
DirectArguments_storage(0)<77>
JSLexicalEnvironment_variables(0)<78>
JSPropertyNameEnumerator_cachedPropertyNamesVectorContents(0)<79>
JSRopeString_fibers(0)<80>
ScopedArguments_overflowStorage(0)<81>
Subspace_allocatorForSizeStep(0)<82>
WriteBarrierBuffer_bufferContents(0)<83>
characters8(0)<84>
characters16(0)<85>
indexedInt32Properties(0)<86>
indexedDoubleProperties(0)<87>
indexedContiguousProperties(0)<88>
scopedArgumentsTableArguments(0)<89>
singleCharacterStrings(0)<90>
structureTable(0)<91>
variables(0)<92...94>:
variables_2(16)<92>
variables_5(40)<93>
HasOwnPropertyCache(0)<94>
JSFixedArray_buffer(0)<95>
properties(0)<96>
absolute(0)<97...99>:
absolute_7F9C0D6A3020(140308216688672)<97>
absolute_7F9C0D6B2A20(140308216752672)<98>
Initial B3:
BB#0: ; frequency = 1.000000
Int32 @0 = Const32(0)
Int32 @1 = Const32(1)
Int64 @2 = Const64(0)
Int64 @3 = Const64(0)
Int64 @4 = Const64(1)
Int64 @5 = Const64(2)
Int64 @6 = Const64(3)
Int64 @7 = Const64(8)
Double @8 = ConstDouble(0.000000e+00)
Int64 @9 = SlotBase(stack0)
Int64 @10 = Const64(40)
Int64 @11 = Add(@9, $40(@10))
Int64 @12 = FramePointer()
Int64 @13 = Const64(-281474976710656)
Int64 @14 = Const64(-281474976710654)
Int64 @15 = Const64(16)
Int64 @16 = Add(@12, $16(@15))
Int64 @17 = Const64(140307130272816)
Void @18 = Store($140307130272816(@17), @16, ControlDependent|Writes:92)
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f9c0d6f89c0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = WarmAny, numGPScratchRegisters = 1, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @20 = EntrySwitch(Terminal)
Successors: #1
BB#1: ; frequency = 1.000000
Int64 @21 = Const64(40)
Int64 @22 = Add(@12, $40(@21))
Int64 @23 = Load(@22, ControlDependent|Reads:93)
Void @24 = Jump(Terminal)
Successors: #3
BB#2: ; frequency = 1.000000
Void @25 = Patchpoint(generator = 0x7f9c0d6fdee8, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @26 = Oops(Terminal)
BB#3: ; frequency = 1.000000
Void @27 = EntrySwitch(Terminal, DFG:@19)
Successors: #4
BB#4: ; frequency = 1.000000
Int64 @28 = Const64(140308216688672, DFG:@5)
Int64 @29 = Load($140308216688672(@28), ControlDependent|Reads:97, DFG:@5)
Void @30 = Jump(Terminal, DFG:@1)
Successors: #6
BB#5: ; frequency = 10.000000
Void @51 = Jump(Terminal, DFG:@14)
Successors: #6
BB#6: ; frequency = 10.000000
Void @31 = Patchpoint(@29:ColdAny, generator = 0x7f9c0d6e0c18, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@22)
Int64 @32 = Const64(140307130319920, DFG:@39)
Int32 @33 = Const32(1, DFG:@36)
Int64 @34 = Const64(140307130630304, DFG:@37)
Int64 @35 = Patchpoint($140307130319920(@32):SomeRegister, $140307130319920(@32):StackArgument(8), $1(@33):StackArgument(16), $140307130630304(@34):StackArgument(24), generator = 0x7f9c0d69a000, earlyClobbered = [%r11], lateClobbered = [%rax, %rcx, %rdx, %rsi, %rdi, %r8, %r9, %r10, %r11, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, %xmm15], usedRegisters = [], resultConstraint = Register(%rax), ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@36)
Void @36 = Patchpoint(@29:ColdAny, @35:ColdAny, generator = 0x7f9c0d6e0c60, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@15)
Int64 @37 = Const64(140308216752672, DFG:@28)
Int64 @38 = Load($140308216752672(@37), ControlDependent|Reads:98, DFG:@28)
Int32 @39 = Below(@38, $-281474976710656(@13), DFG:@24)
Void @40 = Check(@39:WarmAny, @38:ColdAny, @29:ColdAny, @35:ColdAny, @38:ColdAny, generator = 0x7f9c0d6ccc30, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, DFG:@24)
Int32 @41 = Trunc(@38, DFG:@24)
Int32 @42 = Const32(1, DFG:@25)
Int32 @43 = CheckAdd(@41:WarmAny, $1(@42):WarmAny, @29:ColdAny, @35:ColdAny, @41:ColdAny, generator = 0x7f9c0d6cccd0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, DFG:@24)
Int64 @44 = Const64(140308216752672, DFG:@20)
Int64 @45 = ZExt32(@43, DFG:@20)
Int64 @46 = Add(@45, $-281474976710656(@13), DFG:@20)
Void @47 = Store(@46, $140308216752672(@44), ControlDependent|Writes:98, DFG:@20)
Int32 @48 = Const32(10000000, DFG:@11)
Int32 @49 = LessThan(@43, $10000000(@48), DFG:@10)
Void @50 = Branch(@49, Terminal, DFG:@9)
Successors: Then:#5, Else:#7
BB#7: ; frequency = 1.000000
Void @52 = Return(@35, Terminal, DFG:@7)
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0
B3 after moveConstants, before generation:
BB#0: ; frequency = 1.000000
Int64 @12 = FramePointer()
Void @22 = Nop()
Void @24 = Nop()
Int64 @17 = Const64(140307130272816)
Void @18 = Store($140307130272816(@17), @12, offset = 16, ControlDependent|Writes:92)
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f9c0d6f89c0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = WarmAny, numGPScratchRegisters = 1, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top)
Void @15 = Nop(DFG:@5)
Int64 @37 = Const64(140308216752672, DFG:@28)
Int64 @29 = Load($140308216752672(@37), offset = -64000, ControlDependent|Reads:97, DFG:@5)
Void @16 = Nop(DFG:@39)
Void @42 = Nop(DFG:@36)
Void @44 = Nop(DFG:@37)
Void @23 = Nop(DFG:@28)
Void @21 = Nop(DFG:@11)
Int32 @33 = Const32(1, DFG:@36)
Int32 @48 = Const32(10000000, DFG:@11)
Int64 @32 = Const64(140307130319920, DFG:@39)
Int64 @13 = Const64(-281474976710656)
Int64 @28 = Const64(140308216688672, DFG:@5)
Int64 @34 = Const64(140307130630304, DFG:@37)
Void @30 = Jump(Terminal, DFG:@1)
Successors: #2
BB#2: ; frequency = 10.000000
Predecessors: #0, #2
Void @31 = Patchpoint(@29:ColdAny, generator = 0x7f9c0d6e0c18, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@22)
Int64 @35 = Patchpoint($140307130319920(@32):SomeRegister, $140307130319920(@32):StackArgument(8), $1(@33):StackArgument(16), $140307130630304(@34):StackArgument(24), generator = 0x7f9c0d69a000, earlyClobbered = [%r11], lateClobbered = [%rax, %rcx, %rdx, %rsi, %rdi, %r8, %r9, %r10, %r11, %xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, %xmm15], usedRegisters = [], resultConstraint = Register(%rax), ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@36)
Void @36 = Patchpoint(@29:ColdAny, @35:ColdAny, generator = 0x7f9c0d6e0c60, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@15)
Int64 @38 = Load($140308216752672(@37), ControlDependent|Reads:98, DFG:@28)
Int32 @39 = Below(@38, $-281474976710656(@13), DFG:@24)
Void @40 = Check(@39:WarmAny, @38:ColdAny, @29:ColdAny, @35:ColdAny, @38:ColdAny, generator = 0x7f9c0d6ccc30, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, DFG:@24)
Int32 @41 = Trunc(@38, DFG:@24)
Int32 @43 = CheckAdd(@41:WarmAny, $1(@33):WarmAny, @29:ColdAny, @35:ColdAny, @41:ColdAny, generator = 0x7f9c0d6cccd0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, DFG:@24)
Int64 @45 = ZExt32(@43, DFG:@20)
Int64 @46 = Add(@45, $-281474976710656(@13), DFG:@20)
Void @47 = Store(@46, $140308216752672(@37), ControlDependent|Writes:98, DFG:@20)
Int32 @49 = LessThan(@43, $10000000(@48), DFG:@10)
Void @50 = Branch(@49, Terminal, DFG:@9)
Successors: Then:#2, Else:#3
BB#3: ; frequency = 1.000000
Predecessors: #2
Void @52 = Return(@35, Terminal, DFG:@7)
Has Quirks: True
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0
Initial air:
BB#0: ; frequency = 1.000000
Move $0x7f9bcca8cc30, %tmp9, $140307130272816(@17)
Move %tmp9, 16(%rbp), @18
Patch &Patchpoint0, %rbp, %tmp8, @19
Move $0x7f9c0d6b2a20, %tmp7, $140308216752672(@37)
Move -64000(%tmp7), %tmp6, @29
Move $1, %tmp5, $1(@33)
Move $10000000, %tmp4, $10000000(@48)
Move $0x7f9bcca98430, %tmp3, $140307130319920(@32)
Move $0xffff000000000000, %tmp2, $-281474976710656(@13)
Move $0x7f9c0d6a3020, %tmp1, $140308216688672(@28)
Move $0x7f9bccae40a0, %tmp0, $140307130630304(@34)
Jump @30
Successors: #1
BB#1: ; frequency = 10.000000
Patch &Patchpoint0, %tmp6, @31
Move %tmp3, 8(callArg), @35
Move32 $1, 16(callArg), @35
Move %tmp0, 24(callArg), @35
Patch &Patchpoint0, %rax, %tmp3, 8(callArg), 16(callArg), 24(callArg), @35
Move %rax, %tmp14, @35
Patch &Patchpoint0, %tmp6, %tmp14, @36
Move (%tmp7), %tmp13, @38
Patch &Branch64(3,SameAsRep)2, Below, %tmp13, %tmp2, %tmp13, %tmp6, %tmp14, %tmp13, @40
Move %tmp13, %tmp10, @43
Patch &BranchAdd32(3,ForceLateUseUnlessRecoverable)1, Overflow, $1, %tmp10, %tmp6, %tmp14, %tmp13, @43
Move32 %tmp10, %tmp12, @45
Add64 %tmp12, %tmp2, %tmp11, @46
Move %tmp11, (%tmp7), @47
Branch32 LessThan, %tmp10, $10000000, @50
Successors: #1, #2
BB#2: ; frequency = 1.000000
Move %tmp14, %rax, @52
Ret64 %rax, @52
Stack slots:
stack0: byteSize = 40, offsetFromFP = 0, kind = Locked, b3Slot = stack0: (byteSize = 40, offsetFromFP = 0)
Specials:
&Patchpoint0: Lowered B3::PatchpointValue.
&BranchAdd32(3,ForceLateUseUnlessRecoverable)1: B3::CheckValue lowered to BranchAdd32 with 3 args.
&Branch64(3,SameAsRep)2: B3::CheckValue lowered to Branch64 with 3 args.
Call arg area size: 48
Air after optimizeBlockOrder, before generation:
Entrypoints: #0
BB#0: ; frequency = 1.000000
Move $0x7f9bcca8cc30, %rax, $140307130272816(@17)
Move %rax, 16(%rbp), @18
Patch &Patchpoint0, %rbp, %rax, @19
Move $0x7f9c0d6b2a20, %r15, $140308216752672(@37)
Move -64000(%r15), %r14, @29
Add64 $-1086432752, %r15, %r13, $140307130319920(@32)
Move $0xffff000000000000, %r12, $-281474976710656(@13)
Add64 $-1086122368, %r15, %rbx, $140307130630304(@34)
Jump @30
Successors: #1
BB#1: ; frequency = 10.000000
Predecessors: #0, #1
Patch &Patchpoint0, %r14, @31
Move %r13, -120(%rbp), @35
Move32 $1, -112(%rbp), @35
Move %rbx, -104(%rbp), @35
Patch &Patchpoint0, %rax, %r13, -120(%rbp), -112(%rbp), -104(%rbp), @35
Patch &Patchpoint0, %r14, %rax, @36
Move (%r15), %rcx, @38
Patch &Branch64(3,SameAsRep)2, Below, %rcx, %r12, %rcx, %r14, %rax, %rcx, @40
Move32 %rcx, %rdx, @43
Patch &BranchAdd32(3,ForceLateUseUnlessRecoverable)1, Overflow, $1, %rdx, %r14, %rax, %rcx, @43
Move32 %rdx, %rcx, @45
Add64 %rcx, %r12, %rcx, @46
Move %rcx, (%r15), @47
Branch32 LessThan, %rdx, $10000000, @50
Successors: #1, #2
BB#2: ; frequency = 1.000000
Predecessors: #1
Ret64 %rax, @52
Stack slots:
stack0: byteSize = 40, offsetFromFP = -80, kind = Locked, b3Slot = stack0: (byteSize = 40, offsetFromFP = -80)
stack1: byteSize = 40, offsetFromFP = -40, kind = Locked
Specials:
&Patchpoint0: Lowered B3::PatchpointValue.
&BranchAdd32(3,ForceLateUseUnlessRecoverable)1: B3::CheckValue lowered to BranchAdd32 with 3 args.
&Branch64(3,SameAsRep)2: B3::CheckValue lowered to Branch64 with 3 args.
Frame size: 128 (Allocated)
Call arg area size: 48
Callee saves: %rbx at -40, %r12 at -32, %r13 at -24, %r14 at -16, %r15 at -8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment