Created
September 24, 2017 00:16
-
-
Save Constellation/6e53f19a2ff972fd15a53fb2138eb071 to your computer and use it in GitHub Desktop.
before.log
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DFG(Driver) compiling arrayPush1#ABG3Z8:[0x7f3e0af8c540->0x7f3e0af8c2f0->0x7f3e0afa8460, NoneFunctionCall, 38 (NeverInline)] with DFGMode, number of instructions = 38 | |
DFG(Plan) compiling arrayPush1#ABG3Z8:[0x7f3e0af8c540->0x7f3e0af8c2f0->0x7f3e0afa8460, NoneFunctionCall, 38 (NeverInline)] with DFGMode, number of instructions = 38 | |
Compiler must handle OSR entry from bc#0 with values: arg0:Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (0x7f3e0afaf280:[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:0x7f3e0afc40a0, 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:[0x7f3e0af8c540->0x7f3e0af8c2f0->0x7f3e0afa8460, 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: 0x7f3e0afd40a0 with butterfly (nil) (%EP: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) | |
47:<!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: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy: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:loc8> ArrayPush(KnownCell:@23, Int32:@33, Untyped:@46, JS|MustGen|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) | |
48:<!0:-> InvalidationPoint(MustGen, W:SideState, Exits, bc#27, exit: bc#36, ExitValid) | |
49:<!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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261 | |
Weak:Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy:Function), ID: 57 | |
Weak:Object: 0x7f3e0afd40a0 with butterfly (nil) (%EP:JSGlobalLexicalEnvironment), ID: 53 | |
Weak:Object: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54 | |
Desired watchpoints: | |
Watchpoint sets: 0x7f3e4bbfb168 | |
Inline watchpoint sets: 0x7f3e0aff1ad0, 0x7f3e0aff32e0, 0x7f3e0aff0250, 0x7f3e0aff0100, 0x7f3e0aff1830, 0x7f3e0aff0800 | |
Inferred values: 0x7f3e0afe0e20 | |
Buffer views: | |
Object property conditions: <Object: 0x7f3e0afd0120 with butterfly 0x7f3e0adec2a8 (%CP:Array), ID: 74: Equivalence of push with Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy:Function), ID: 57> | |
Inferred types: | |
Structures: | |
%CP:Array = 0x7f3e0aff2790:[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:0x7f3e0afc40a0, Leaf] | |
%DC:global = 0x7f3e0afaf280:[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:0x7f3e0afc40a0, Dictionary, Leaf] | |
%Dx:Function = 0x7f3e0aff18b0:[Function, {}, NonArray, Proto:0x7f3e0afd80a0] | |
%Dy:Function = 0x7f3e0aff1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f3e0afd80a0, Leaf] | |
%EP:JSGlobalLexicalEnvironment = 0x7f3e0aff17d0:[JSGlobalLexicalEnvironment, {}, NonArray, 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 @47 (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 @48 (bc#27) at JIT offset 0x130 | |
SpeculativeJIT generating Node @49 (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:[0x7f3e0af8c790->0x7f3e0af8c0a0->0x7f3e0afa83c0, NoneGlobal, 177] with DFGMode, number of instructions = 177 | |
DFG(Plan) compiling <global>#A5E5H5:[0x7f3e0af8c790->0x7f3e0af8c0a0->0x7f3e0afa83c0, NoneGlobal, 177] with DFGMode, number of instructions = 177 | |
Compiler must handle OSR entry from bc#106 with values: arg0:Object: 0x7f3e0afd83e0 with butterfly (nil) (0x7f3e0afaf360:[JSProxy, {}, NonArray, Proto:0x7f3e0afc40a0, Leaf]), ID: 263 loc0:Undefined loc1:Undefined loc2:Undefined loc3:Object: 0x7f3e0afd40a0 with butterfly (nil) (0x7f3e0aff17d0:[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:[0x7f3e0af8c790->0x7f3e0af8c0a0->0x7f3e0afa83c0, 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, <0x7f3e0afa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f3e0afa8460], 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC: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(0x7f3e4bbb1098), W:Absolute(139905535250584), Exits, ClobbersExit, bc#21, ExitValid) | |
132:<!0:-> FencedStoreBarrier(Check:KnownCell:@22, MustGen, R:Heap, W:JSCell_cellState, bc#21, ExitInvalid) | |
30:<!0:-> NotifyWrite(MustGen, 0x7f3e4bbc7bb8, 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: 0x7f3e0afef4c0 with butterfly 0x7f3e0adfdfa8 (%Dy: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: 0x7f3e0af98430 with butterfly (nil) (%Dx: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, <0x7f3e0af9c0a0, 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(0x7f3e4bbb10a0), W:Absolute(139905535250592), 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261) loc7:(BoolInt32, Int32: 0) loc9:(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54) loc10:(OtherObj, TOP, TOP, Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC: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: 0x7f3e0af98430 with butterfly (nil) (%Dx: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, <0x7f3e0afa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f3e0afa8460], 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(0x7f3e4bbb10a0), R:Absolute(139905535250592), 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(0x7f3e4bbb10a0), W:Absolute(139905535250592), 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261) loc7:(Int32) loc8:(OtherObj, TOP, TOP, Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC: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: 0x7f3e0af9c0a0 (%Aq:NativeExecutable), ID: 10 | |
Weak:Object: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54 | |
Weak:Object: 0x7f3e0afef4c0 with butterfly 0x7f3e0adfdfa8 (%Dy:Function), ID: 57 | |
Weak:Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261 | |
Strong:Cell: 0x7f3e0afa8460 (%Bw:FunctionExecutable), ID: 13 | |
Desired watchpoints: | |
Watchpoint sets: 0x7f3e4bbc7bb8 | |
Inline watchpoint sets: 0x7f3e0aff1ad0, 0x7f3e0aff0250, 0x7f3e0aff0100, 0x7f3e0aff1830, 0x7f3e0aff0800, 0x7f3e0aff0640, 0x7f3e0aff04f0 | |
Inferred values: | |
Buffer views: | |
Object property conditions: <Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261: Equivalence of noInline with Object: 0x7f3e0afef4c0 with butterfly 0x7f3e0adfdfa8 (%Dy:Function), ID: 57> | |
Inferred types: | |
Structures: | |
%Aq:NativeExecutable = 0x7f3e0aff0490:[NativeExecutable, {}, NonArray, Leaf] | |
%Bw:FunctionExecutable = 0x7f3e0aff05e0:[FunctionExecutable, {}, NonArray, Leaf] | |
%DC:global = 0x7f3e0afaf280:[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:0x7f3e0afc40a0, Dictionary, Leaf] | |
%Dx:Function = 0x7f3e0aff18b0:[Function, {}, NonArray, Proto:0x7f3e0afd80a0] | |
%Dy:Function = 0x7f3e0aff1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f3e0afd80a0, 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:[0x7f3e0af8c9e0->0x7f3e0af8c2f0->0x7f3e0afa8460, NoneFunctionCall, 38 (NeverInline)] with FTLMode, number of instructions = 38 | |
DFG(Plan) compiling arrayPush1#ABG3Z8:[0x7f3e0af8c9e0->0x7f3e0af8c2f0->0x7f3e0afa8460, 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:[0x7f3e0af8c9e0->0x7f3e0af8c2f0->0x7f3e0afa8460, 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: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy: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, [%EP:JSGlobalLexicalEnvironment], Object: 0x7f3e0afd40a0 with butterfly (nil) (%EP:JSGlobalLexicalEnvironment), ID: 53), @30=>(Function, NonArray, [%Dy:Function], Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy: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, [%EP:JSGlobalLexicalEnvironment], Object: 0x7f3e0afd40a0 with butterfly (nil) (%EP:JSGlobalLexicalEnvironment), ID: 53), @30=>(Function, NonArray, [%Dy:Function], Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy:Function), ID: 57), @33=>(BoolInt32, Int32: 1) | |
37:<!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) | |
36:<!0:-> KillStack(MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitValid) | |
2:<!0:-> ZombieHint(MustGen, loc0, W:SideState, ClobbersExit, bc#0, ExitInvalid) | |
29:<!0:-> KillStack(MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid) | |
4:<!0:-> ZombieHint(MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid) | |
28:<!0:-> KillStack(MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid) | |
6:<!0:-> ZombieHint(MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid) | |
25:<!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) | |
32:<!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(KnownCell:@23, Int32:Kill:@33, Untyped:Kill:@35, JS|MustGen|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) | |
27:<!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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261 | |
Weak:Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy:Function), ID: 57 | |
Weak:Object: 0x7f3e0afd40a0 with butterfly (nil) (%EP:JSGlobalLexicalEnvironment), ID: 53 | |
Weak:Object: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54 | |
Desired watchpoints: | |
Watchpoint sets: 0x7f3e4bbfb168 | |
Inline watchpoint sets: 0x7f3e0aff1ad0, 0x7f3e0aff32e0, 0x7f3e0aff0250, 0x7f3e0aff0100, 0x7f3e0aff1830, 0x7f3e0aff0800 | |
Inferred values: 0x7f3e0afe0e20 | |
Buffer views: | |
Object property conditions: <Object: 0x7f3e0afd0120 with butterfly 0x7f3e0adec2a8 (%CP:Array), ID: 74: Equivalence of push with Object: 0x7f3e0afec610 with butterfly 0x7f3e0adfc3a8 (%Dy:Function), ID: 57> | |
Inferred types: | |
Structures: | |
%CP:Array = 0x7f3e0aff2790:[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:0x7f3e0afc40a0, Leaf] | |
%DC:global = 0x7f3e0afaf280:[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:0x7f3e0afc40a0, Dictionary, Leaf] | |
%Dx:Function = 0x7f3e0aff18b0:[Function, {}, NonArray, Proto:0x7f3e0afd80a0] | |
%Dy:Function = 0x7f3e0aff1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f3e0afd80a0, Leaf] | |
%EP:JSGlobalLexicalEnvironment = 0x7f3e0aff17d0:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf] | |
Function ready, beginning lowering. | |
Compiling block #0 | |
Lowering @30 | |
Lowering @33 | |
Lowering @40 | |
Compiling block #1 | |
Lowering @37 | |
Lowering @42 | |
Lowering @41 | |
Lowering @36 | |
Lowering @2 | |
Lowering @29 | |
Lowering @4 | |
Lowering @28 | |
Lowering @6 | |
Lowering @25 | |
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 @32 | |
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 @27 | |
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_7F3E0B90C2C8(139904458736328)<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(139904448776672) | |
Void @18 = Store($139904448776672(@17), @16, ControlDependent|Writes:92) | |
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f3e4bbf82d0, 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 = 0x7f3e4bbfd480, 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 = 0x7f3e4bbe07e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@32) | |
Int32 @29 = Const32(3, DFG:@23) | |
Int32 @30 = Const32(1, DFG:@23) | |
Int32 @31 = Const32(5, DFG:@23) | |
Int64 @32 = Const64(139904449196672, 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(139904458691968, DFG:@23) | |
Int64 @43 = Const64(139905535457792, DFG:@23) | |
Int64 @44 = Patchpoint($139905535457792(@43):SomeRegister, generator = 0x7f3e4bbfd498, 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(139905535365440, DFG:@23) | |
Int64 @62 = Patchpoint($139905535365440(@61):SomeRegister, generator = 0x7f3e4bbfd4b0, 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(139904449197008, DFG:@23) | |
Void @78 = Upsilon($139904449197008(@77), ^82, WritesLocalState, DFG:@23) | |
Void @79 = Jump(Terminal, DFG:@23) | |
Successors: #11 | |
BB#9: ; frequency = 1.000000 | |
Void @80 = Upsilon($139904449196672(@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 = 0x7f3e4bbd47e0, 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(139905630350976, 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($139905630350976(@121), @12, $-281474976710655(@99), @92, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@38) | |
Int64 @127 = Const64(139904458736328, DFG:@38) | |
Int64 @128 = Load($139904458736328(@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 = 0x7f3e4bbe0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@27) | |
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(139904448776672) | |
Void @18 = Store($139904448776672(@17), @12, offset = 16, ControlDependent|Writes:92) | |
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f3e4bbf82d0, earlyClobbered = [%r11], lateClobbered = [%r11], usedRegisters = [], resultConstraint = WarmAny, numGPScratchRegisters = 1, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top) | |
Void @28 = Patchpoint(generator = 0x7f3e4bbe07e0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@32) | |
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(139905535457792, DFG:@23) | |
Int32 @1 = Const32(1) | |
Int32 @33 = Const32(3, DFG:@23) | |
Int64 @44 = Patchpoint($139905535457792(@43):SomeRegister, generator = 0x7f3e4bbfd498, 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 = 0x7f3e4bbfd480, 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(139905535365440, DFG:@23) | |
Int64 @62 = Patchpoint($139905535365440(@61):SomeRegister, generator = 0x7f3e4bbfd4b0, 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(139904449196672, DFG:@23) | |
Int64 @84 = Patchpoint($139904449196672(@32):SomeRegister, $1(@1):SomeRegister, @83:SomeRegister, generator = 0x7f3e4bbd47e0, 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 = 0x7f3e4bbe0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@27) | |
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(139905630350976, DFG:@38) | |
Int64 @126 = CCall($139905630350976(@121), @12, $-281474976710655(@93), @92, ExitsSideways|ControlDependent|WritesPinned|ReadsPinned|Fence|Writes:Top|Reads:Top, DFG:@38) | |
Void @103 = Nop(DFG:@38) | |
Int64 @128 = Load($139904448776672(@17), offset = 9959656, ControlDependent|Reads:98, DFG:@38) | |
Int64 @127 = Const64(139904458736328, 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 = 0x7f3e4bbe0828, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@27) | |
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 $0x7f3e0af8c9e0, %tmp10, $139904448776672(@17) | |
Move %tmp10, 16(%rbp), @18 | |
Patch &Patchpoint0, %rbp, %tmp9, @19 | |
Patch &Patchpoint0, @28 | |
Move $0, %tmp8, $0(@2) | |
Move $0, %tmp0, @34 | |
Move $0x7f3e4bbe3a00, %tmp4, $139905535457792(@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 $0x7f3e4bbcd140, %tmp27, $139905535365440(@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 $0x7f3e0aff3280, %tmp13, $139904449196672(@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 $0x7f3e51662e80, %tmp24, $139905630350976(@121) | |
CCall %tmp24, %tmp25, %rbp, %tmp19, %tmp17, @126 | |
Move $0x7f3e0b90c2c8, %tmp23, $139904458736328(@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 $0x7f3e0af8c9e0, %r12, $139904448776672(@17) | |
Move %r12, 16(%rbp), @18 | |
Patch &Patchpoint0, %rbp, %rax, @19 | |
Patch &Patchpoint0, @28 | |
Move $0, %rax, @34 | |
Add64 $1086681120, %r12, %rdx, $139905535457792(@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, $139905535365440(@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 $1181574304, %r12, %rax, $139905630350976(@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, $139904449196672(@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:[0x7f3e0af8cc30->0x7f3e0af8c0a0->0x7f3e0afa83c0, NoneGlobal, 177 (DidTryToEnterInLoop)] with FTLForOSREntryMode, number of instructions = 177 | |
DFG(Plan) compiling <global>#A5E5H5:[0x7f3e0af8cc30->0x7f3e0af8c0a0->0x7f3e0afa83c0, 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: 0x7f3e0afd40a0 with butterfly (nil) (0x7f3e0aff17d0:[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:[0x7f3e0af8cc30->0x7f3e0af8c0a0->0x7f3e0afa83c0, 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261, bc#0, ExitInvalid) | |
25:< 1:-> JSConstant(JS|PureNum, BoolInt32, Int32: 1, bc#0, ExitInvalid) | |
11:< 1:-> JSConstant(JS|UseAsOther, NonBoolInt32, Int32: 10000000, bc#0, ExitInvalid) | |
39:< 2:-> JSConstant(JS|UseAsOther, Function, Weak:Object: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54, 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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, <0x7f3e0afa8460, FunctionExecutable>, arrayPush1#ABG3Z8/<nogen>:[0x7f3e0afa8460], 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(0x7f3e4bbb10a0), R:Absolute(139905535250592), 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(0x7f3e4bbb10a0), W:Absolute(139905535250592), 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261), @39=>(Function, TOP, TOP, Object: 0x7f3e0af98430 with butterfly (nil) (%Dx: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: 0x7f3e0af98430 with butterfly (nil) (%Dx:Function), ID: 54 | |
Weak:Object: 0x7f3e0afef4c0 with butterfly 0x7f3e0adfdfa8 (%Dy:Function), ID: 57 | |
Weak:Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261 | |
Strong:Cell: 0x7f3e0afa8460 (%Bw:FunctionExecutable), ID: 13 | |
Desired watchpoints: | |
Watchpoint sets: 0x7f3e4bbc7bb8 | |
Inline watchpoint sets: 0x7f3e0aff1ad0, 0x7f3e0aff0250, 0x7f3e0aff0100, 0x7f3e0aff1830, 0x7f3e0aff0800, 0x7f3e0aff0640 | |
Inferred values: | |
Buffer views: | |
Object property conditions: <Object: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (%DC:global), ID: 261: Equivalence of noInline with Object: 0x7f3e0afef4c0 with butterfly 0x7f3e0adfdfa8 (%Dy:Function), ID: 57> | |
Inferred types: | |
Structures: | |
%Bw:FunctionExecutable = 0x7f3e0aff05e0:[FunctionExecutable, {}, NonArray, Leaf] | |
%DC:global = 0x7f3e0afaf280:[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:0x7f3e0afc40a0, Dictionary, Leaf] | |
%Dx:Function = 0x7f3e0aff18b0:[Function, {}, NonArray, Proto:0x7f3e0afd80a0] | |
%Dy:Function = 0x7f3e0aff1a70:[Function, {name:100, length:101}, NonArray, Proto:0x7f3e0afd80a0, Leaf] | |
Function ready, beginning lowering. | |
Compiling block #0 | |
Lowering @37 | |
Lowering @25 | |
Lowering @11 | |
Lowering @39 | |
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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (0x7f3e0afaf280:[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:0x7f3e0afc40a0, 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: 0x7f3e0afe40a0 with butterfly 0x7f3e0ade84a8 (0x7f3e0afaf280:[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:0x7f3e0afc40a0, 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_7F3E4BBA3020(139905535193120)<97> | |
absolute_7F3E4BBB10A0(139905535250592)<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(139904448777264) | |
Void @18 = Store($139904448777264(@17), @16, ControlDependent|Writes:92) | |
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f3e4bbf89c0, 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 = 0x7f3e4bbfdee8, 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(139905535193120, DFG:@5) | |
Int64 @29 = Load($139905535193120(@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 = 0x7f3e4bbe0c18, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@22) | |
Int64 @32 = Const64(139904448824368, DFG:@39) | |
Int32 @33 = Const32(1, DFG:@36) | |
Int64 @34 = Const64(139904449134752, DFG:@37) | |
Int64 @35 = Patchpoint($139904448824368(@32):SomeRegister, $139904448824368(@32):StackArgument(8), $1(@33):StackArgument(16), $139904449134752(@34):StackArgument(24), generator = 0x7f3e4bb9a000, 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 = 0x7f3e4bbe0c60, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@15) | |
Int64 @37 = Const64(139905535250592, DFG:@28) | |
Int64 @38 = Load($139905535250592(@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 = 0x7f3e4bbccc30, 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 = 0x7f3e4bbcccd0, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, DFG:@24) | |
Int64 @44 = Const64(139905535250592, DFG:@20) | |
Int64 @45 = ZExt32(@43, DFG:@20) | |
Int64 @46 = Add(@45, $-281474976710656(@13), DFG:@20) | |
Void @47 = Store(@46, $139905535250592(@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(139904448777264) | |
Void @18 = Store($139904448777264(@17), @12, offset = 16, ControlDependent|Writes:92) | |
Void @19 = Patchpoint(@12:SomeRegister, generator = 0x7f3e4bbf89c0, 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(139905535250592, DFG:@28) | |
Int64 @29 = Load($139905535250592(@37), offset = -57472, 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 @34 = Const64(139904449134752, DFG:@37) | |
Int64 @13 = Const64(-281474976710656) | |
Int64 @32 = Const64(139904448824368, DFG:@39) | |
Int64 @28 = Const64(139905535193120, DFG:@5) | |
Void @30 = Jump(Terminal, DFG:@1) | |
Successors: #2 | |
BB#2: ; frequency = 10.000000 | |
Predecessors: #0, #2 | |
Void @31 = Patchpoint(@29:ColdAny, generator = 0x7f3e4bbe0c18, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@22) | |
Int64 @35 = Patchpoint($139904448824368(@32):SomeRegister, $139904448824368(@32):StackArgument(8), $1(@33):StackArgument(16), $139904449134752(@34):StackArgument(24), generator = 0x7f3e4bb9a000, 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 = 0x7f3e4bbe0c60, earlyClobbered = [], lateClobbered = [], usedRegisters = [], resultConstraint = WarmAny, ExitsSideways|WritesPinned|ReadsPinned|Fence|Reads:Top, DFG:@15) | |
Int64 @38 = Load($139905535250592(@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 = 0x7f3e4bbccc30, 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 = 0x7f3e4bbcccd0, 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, $139905535250592(@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 $0x7f3e0af8cc30, %tmp9, $139904448777264(@17) | |
Move %tmp9, 16(%rbp), @18 | |
Patch &Patchpoint0, %rbp, %tmp8, @19 | |
Move $0x7f3e4bbb10a0, %tmp7, $139905535250592(@37) | |
Move -57472(%tmp7), %tmp6, @29 | |
Move $1, %tmp5, $1(@33) | |
Move $10000000, %tmp4, $10000000(@48) | |
Move $0x7f3e0afe40a0, %tmp3, $139904449134752(@34) | |
Move $0xffff000000000000, %tmp2, $-281474976710656(@13) | |
Move $0x7f3e0af98430, %tmp1, $139904448824368(@32) | |
Move $0x7f3e4bba3020, %tmp0, $139905535193120(@28) | |
Jump @30 | |
Successors: #1 | |
BB#1: ; frequency = 10.000000 | |
Patch &Patchpoint0, %tmp6, @31 | |
Move %tmp1, 8(callArg), @35 | |
Move32 $1, 16(callArg), @35 | |
Move %tmp3, 24(callArg), @35 | |
Patch &Patchpoint0, %rax, %tmp1, 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 $0x7f3e0af8cc30, %rax, $139904448777264(@17) | |
Move %rax, 16(%rbp), @18 | |
Patch &Patchpoint0, %rbp, %rax, @19 | |
Move $0x7f3e4bbb10a0, %r15, $139905535250592(@37) | |
Move -57472(%r15), %r14, @29 | |
Add64 $-1086115840, %r15, %r13, $139904449134752(@34) | |
Move $0xffff000000000000, %r12, $-281474976710656(@13) | |
Add64 $-1086426224, %r15, %rbx, $139904448824368(@32) | |
Jump @30 | |
Successors: #1 | |
BB#1: ; frequency = 10.000000 | |
Predecessors: #0, #1 | |
Patch &Patchpoint0, %r14, @31 | |
Move %rbx, -120(%rbp), @35 | |
Move32 $1, -112(%rbp), @35 | |
Move %r13, -104(%rbp), @35 | |
Patch &Patchpoint0, %rax, %rbx, -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