Created
July 30, 2015 18:20
-
-
Save gskachkov/4d3c8128b06fe0f674a3 to your computer and use it in GitHub Desktop.
common function
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
>>> load('LayoutTests/js/regress/script-tests/functionexp-afcall-1.js') | |
DFG(Driver) compiling fe#EVgtVm:[0x107edf708->0x107edf4b0->0x107c43e00, NoneFunctionCall, 10 (NeverInline)] with DFGMode, number of instructions = 10 | |
Deferring DFG compilation of fe#EVgtVm:[0x107edf708->0x107edf4b0->0x107c43e00, NoneFunctionCall, 10 (NeverInline)] with queue length 0. | |
DFG(Driver) compiling <global>#ATWxP7:[0x107edf960->0x107edf258->0x107c60100, NoneGlobal, 260] with DFGMode, number of instructions = 260 | |
Deferring DFG compilation of <global>#ATWxP7:[0x107edf960->0x107edf258->0x107c60100, NoneGlobal, 260] with queue length 1. | |
DFG(Plan) compiling fe#EVgtVm:[0x107edf708->0x107edf4b0->0x107c43e00, NoneFunctionCall, 10 (NeverInline)] with DFGMode, number of instructions = 10 | |
Compiler must handle OSR entry from bc#0 with values: arg2:Int32: 2 arg1:Int32: 1 arg0:Cell: 0x107c3f800 (0x107c708e0:[global, {parseInt:100, Object:101, Function:102, Array:103, RegExp:104, EvalError:105, RangeError:106, ReferenceError:107, SyntaxError:108, TypeError:109, URIError:110, Promise:111, Set:112, Map:113, Date:114, String:115, Symbol:116, Boolean:117, Number:118, Error:119, ArrayBuffer:120, WeakMap:121, WeakSet:122, eval:123, Intl:124, JSON:125, Math:126, Reflect:127, DataView:128, Float64Array:129, Float32Array:130, Uint32Array:131, Int32Array:132, Uint16Array:133, Int16Array:134, Uint8ClampedArray:135, Uint8Array:136, Int8Array:137, console:138, debug:139, describe:140, describeArray:141, print:142, quit:143, gc:144, fullGC:145, edenGC:146, gcHeapSize:147, deleteAllCompiledCode:148, addressOf:149, version:150, run:151, load:152, readFile:153, checkSyntax:154, jscStack:155, readline:156, preciseTime:157, neverInlineFunction:158, noInline:159, numberOfDFGCompiles:160, optimizeNextInvocation:161, reoptimizationRetryCount:162, transferArrayBuffer:163, Root:164, Element:165, getElement:166, setElementRoot:167, DFGTrue:168, OSRExit:169, isFinalTier:170, predictInt32:171, isInt32:172, fiatInt52:173, effectful42:174, makeMasquerader:175, hasCustomProperties:176, createProxy:177, createRuntimeArray:178, createImpureGetter:179, setImpureGetterDelegate:180, dumpTypesForAllVariables:181, findTypeForExpression:182, returnTypeFor:183, dumpBasicBlockExecutionRanges:184, hasBasicBlockExecuted:185, enableExceptionFuzz:186, arguments:187}, NonArray, Proto:0x107c5fff0]), ID: 414 | |
Allocating another allocator region. | |
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 structure registration changed the IR. | |
Phase invalidation point injection changed the IR. | |
Phase control flow analysis changed the IR. | |
Phase tier-up check injection changed the IR. | |
Phase fast store barrier insertion 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 fe#EVgtVm:[0x107edf708->0x107edf4b0->0x107c43e00, DFGFunctionCall, 10 (NeverInline)]: | |
Fixpoint state: FixpointConverged; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: ExactRefCount | |
Arguments: -, @1, @2 | |
Block #0 (bc#0): (OSR target) | |
Execution count: 1.000000 | |
Predecessors: | |
Successors: | |
Dominated by: #0 | |
Dominates: #0 | |
Dominance Frontier: | |
Iterated Dominance Frontier: | |
States: StructuresAreWatched | |
Vars Before: arg2:(Int32) arg1:(Int32) arg0:(Top, TOP, TOP) | |
Intersected Vars Before: arg2:(Int32) arg1:(Int32) arg0:(Top, TOP, TOP) | |
Var Links: arg2:@2 arg1:@1 | |
1:< 2:-> SetArgument(IsFlushed, arg1(B<BoolInt32>/FlushedInt32), machine:arg1, W:SideState, bc#0) predicting Boolint32 | |
2:< 2:-> SetArgument(IsFlushed, arg2(C<Int32>/FlushedInt32), machine:arg2, W:SideState, bc#0) predicting Nonboolint32 | |
3:< 2:loc0> JSConstant(JS|PureInt, Other, Undefined, bc#0) | |
4:<!0:-> MovHint(@3, MustGen, loc0, W:SideState, bc#0) | |
6:<!0:-> MovHint(@3, MustGen, loc1, W:SideState, bc#0) | |
9:< 1:loc0> JSConstant(JS|PureInt, Otherobj, Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414, bc#1) | |
10:<!0:-> MovHint(@9, MustGen, loc0, W:SideState, bc#1) | |
12:<!1:loc0> GetLocal(@1, JS|MustGen|UseAsOther, Boolint32, arg1(B<BoolInt32>/FlushedInt32), machine:arg1, R:Stack(6), bc#3) predicting Boolint32 | |
13:<!1:loc1> GetLocal(@2, JS|MustGen|UseAsOther, Nonboolint32, arg2(C<Int32>/FlushedInt32), machine:arg2, R:Stack(7), bc#3) predicting Nonboolint32 | |
14:<!2:loc1> ArithAdd(Int32:@12, Int32:@13, JS|MustGen|UseAsOther, Int32, CheckOverflow, bc#3) | |
15:<!0:-> MovHint(@14, MustGen, loc2, W:SideState, bc#3) | |
20:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, bc#8) | |
17:<!0:-> Return(@14, MustGen, W:SideState, bc#8) | |
18:<!0:-> Flush(@2, MustGen|IsFlushed, arg2(C<Int32>/FlushedInt32), machine:arg2, R:Stack(7), W:SideState, bc#8) predicting Nonboolint32 | |
19:<!0:-> Flush(@1, MustGen|IsFlushed, arg1(B<BoolInt32>/FlushedInt32), machine:arg1, R:Stack(6), W:SideState, bc#8) predicting Boolint32 | |
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated | |
Vars After: | |
Var Links: arg2:@13 arg1:@12 | |
GC Values: | |
Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414 | |
Weak:Cell: 0x107c58d00 (%Dy:Function), ID: 39 | |
Structures: | |
%Aj:global = 0x107c708e0:[global, {parseInt:100, Object:101, Function:102, Array:103, RegExp:104, EvalError:105, RangeError:106, ReferenceError:107, SyntaxError:108, TypeError:109, URIError:110, Promise:111, Set:112, Map:113, Date:114, String:115, Symbol:116, Boolean:117, Number:118, Error:119, ArrayBuffer:120, WeakMap:121, WeakSet:122, eval:123, Intl:124, JSON:125, Math:126, Reflect:127, DataView:128, Float64Array:129, Float32Array:130, Uint32Array:131, Int32Array:132, Uint16Array:133, Int16Array:134, Uint8ClampedArray:135, Uint8Array:136, Int8Array:137, console:138, debug:139, describe:140, describeArray:141, print:142, quit:143, gc:144, fullGC:145, edenGC:146, gcHeapSize:147, deleteAllCompiledCode:148, addressOf:149, version:150, run:151, load:152, readFile:153, checkSyntax:154, jscStack:155, readline:156, preciseTime:157, neverInlineFunction:158, noInline:159, numberOfDFGCompiles:160, optimizeNextInvocation:161, reoptimizationRetryCount:162, transferArrayBuffer:163, Root:164, Element:165, getElement:166, setElementRoot:167, DFGTrue:168, OSRExit:169, isFinalTier:170, predictInt32:171, isInt32:172, fiatInt52:173, effectful42:174, makeMasquerader:175, hasCustomProperties:176, createProxy:177, createRuntimeArray:178, createImpureGetter:179, setImpureGetterDelegate:180, dumpTypesForAllVariables:181, findTypeForExpression:182, returnTypeFor:183, dumpBasicBlockExecutionRanges:184, hasBasicBlockExecuted:185, enableExceptionFuzz:186, arguments:187}, NonArray, Proto:0x107c5fff0] | |
%Dy:Function = 0x107c22ef0:[Function, {}, NonArray, Proto:0x107c31e20] | |
SpeculativeJIT generating Node @1 (bc#0) at JIT offset 0x41 | |
SpeculativeJIT generating Node @2 (bc#0) at JIT offset 0x41 | |
SpeculativeJIT generating Node @3 (bc#0) at JIT offset 0x41 | |
SpeculativeJIT generating Node @4 (bc#0) at JIT offset 0x41 | |
SpeculativeJIT generating Node @6 (bc#0) at JIT offset 0x41 | |
SpeculativeJIT generating Node @9 (bc#1) at JIT offset 0x41 | |
SpeculativeJIT generating Node @10 (bc#1) at JIT offset 0x41 | |
SpeculativeJIT generating Node @12 (bc#3) at JIT offset 0x41 | |
SpeculativeJIT generating Node @13 (bc#3) at JIT offset 0x44 | |
SpeculativeJIT generating Node @14 (bc#3) at JIT offset 0x47 | |
SpeculativeJIT generating Node @15 (bc#3) at JIT offset 0x4f | |
SpeculativeJIT generating Node @20 (bc#8) at JIT offset 0x4f | |
SpeculativeJIT generating Node @17 (bc#8) at JIT offset 0x80 | |
Bailing compilation. | |
OSR Entries: | |
bc#0, machine code offset = 65, stack rules = [arg2:(Int32) (maps to arg2), arg1:(Int32) (maps to arg1), arg0:(Top, 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)], machine stack used = --------------------------------------------------------------- | |
DFG(Plan) compiling <global>#ATWxP7:[0x107edf960->0x107edf258->0x107c60100, NoneGlobal, 260] with DFGMode, number of instructions = 260 | |
Compiler must handle OSR entry from bc#96 with values: arg0:Cell: 0x107c82ba0 (0x107c71520:[JSProxy, {}, NonArray, Proto:0x107c5fff0]), ID: 386 loc0:Cell: 0x107c3f800 (0x107c708e0:[global, {parseInt:100, Object:101, Function:102, Array:103, RegExp:104, EvalError:105, RangeError:106, ReferenceError:107, SyntaxError:108, TypeError:109, URIError:110, Promise:111, Set:112, Map:113, Date:114, String:115, Symbol:116, Boolean:117, Number:118, Error:119, ArrayBuffer:120, WeakMap:121, WeakSet:122, eval:123, Intl:124, JSON:125, Math:126, Reflect:127, DataView:128, Float64Array:129, Float32Array:130, Uint32ArrayDFG(Driver) compiling :fe131#, Int32Array:132, Uint16Array:133, Int16Array:134, Uint8ClampedArray:135, Uint8Array:136, Int8Array:137, console:138, debug:139, describe:140, describeArray:141, print:142, quit:143, gc:144, fullGC:145, edenGC:146, gcHeapSize:147, deleteAllCompiledCode:148, addressOf:149, version:150, run:151, load:152, readFile:153, checkSyntax:154, jscStack:155, readline:156, preciseTime:157, neverInlineFunction:158, noInline:159, numberOfDFGCompiles:160, optimizeNextInvocation:161, reoptimizationRetryCount:162, transferArrayBuffer:163, Root:164, Element:165, getElement:166, setElementRoot:167, DFGTrue:168, OSRExit:169, isFinalTier:170, predictInt32:171, isInt32:172, fiatInt52:173, effectful42:174, makeMasquerader:175, hasCustomProperties:176, createProxy:177, createRuntimeArray:178, createImpureGetter:179, setImpureGetterDelegate:180, dumpTypesForAllVariables:181, findTypeForExpression:182, returnTypeFor:183, dumpBasicBlockExecutionRanges:184, hasBasicBlockExecuted:185, enableExceptionFuzz:186, arguments:187}, NonArray, Proto:0x107c5fff0]), ID: 414 | |
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 structure registration changed the IR. | |
Phase invalidation point injection changed the IR. | |
Phase local common subexpression elimination 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 CPS rethreading changed the IR. | |
Phase control flow analysis changed the IR. | |
FTL rejecting <global>#ATWxP7:[0x107edf960->0x107edf258->0x107c60100, NoneGlobal, 260] because it doesn't belong to a function. | |
Phase fast store barrier insertion 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>#ATWxP7:[0x107edf960->0x107edf258->0x107c60100, DFGGlobal, 260]: | |
Fixpoint state: FixpointConverged; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: ExactRefCount | |
Arguments: - | |
Block #0 (bc#0): (OSR target) | |
Execution count: 1.000000 | |
Predecessors: | |
Successors: #1 | |
States: StructuresAreWatched | |
Vars Before: arg0:(Top, TOP, TOP) | |
Intersected Vars Before: arg0:(Top, TOP, TOP) | |
Var Links: | |
1:< 2:loc0> JSConstant(JS|PureInt, Other, Undefined, bc#0) | |
2:<!0:-> MovHint(@1, MustGen, loc0, W:SideState, bc#0) | |
4:< 1:loc1> GetCallee(JS|UseAsOther, Function, R:Stack(3), bc#1) | |
5:< 3:loc1> GetScope(KnownCell:@4, JS|UseAsOther, Otherobj, bc#1) | |
6:<!0:-> MovHint(@5, MustGen, loc0, W:SideState, bc#1) | |
9:<!0:-> MovHint(@1, MustGen, loc1, W:SideState, bc#3) | |
11:< 11:loc0> JSConstant(JS|UseAsOther, Otherobj, Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414, bc#6) | |
12:<!0:-> MovHint(@11, MustGen, loc2, W:SideState, bc#6) | |
14:< 3:loc2> NewFunction(Cell:@5, JS|UseAsOther, Function, <0x107c43e00, FunctionExecutable>, fe#EVgtVm/<nogen>:[0x107c43e00], R:HeapObjectCount, W:HeapObjectCount,Watchpoint_fire, bc#13) | |
15:<!0:-> MovHint(@14, MustGen, loc3, W:SideState, bc#13) | |
162:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#13, exit: bc#17) | |
166:<!0:-> StoreBarrier(Check:Cell:@11, MustGen, W:SideState, bc#17) | |
18:<!0:-> PutGlobalVar(Cell:@11, @14, MustGen, globalscope39(0x107fe65b8), W:Absolute(4429079992), bc#17) | |
19:<!0:-> NotifyWrite(MustGen, 0x107ffca50, W:Watchpoint_fire,SideState, bc#17) | |
168:<!0:-> Phantom(@14, MustGen, bc#17) | |
169:<!0:-> Phantom(@11, MustGen, bc#17) | |
163:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#24) | |
22:<!0:-> MovHint(@11, MustGen, loc4, W:SideState, bc#24) | |
25:<!0:-> CheckStructure(Cell:@11, MustGen, [%Aj:global], R:JSCell_structureID, bc#31) | |
28:< 2:loc2> JSConstant(JS|UseAsOther, Function, Weak:Cell: 0x107c59240 (%CY:Function), ID: 44, bc#31) | |
29:<!0:-> MovHint(@28, MustGen, loc2, W:SideState, bc#31) | |
32:<!0:-> MovHint(@11, MustGen, loc3, W:SideState, bc#39) | |
35:< 2:loc3> JSConstant(JS|UseAsOther, Function, Weak:Cell: 0x107c58d00 (%Dy:Function), ID: 39, bc#46) | |
36:<!0:-> MovHint(@35, MustGen, loc3, W:SideState, bc#46) | |
38:<!1:loc3> Call(@28, @11, @35, JS|MustGen|VarArgs|PureInt, Other, R:World, W:Heap, bc#54) predicting Other | |
39:<!0:-> MovHint(@38, MustGen, loc1, W:SideState, bc#54) | |
164:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#54, exit: bc#63) | |
42:<!0:-> MovHint(@11, MustGen, loc2, W:SideState, bc#63) | |
44:< 2:loc3> JSConstant(JS|UseAsOther, Boolint32, Int32: 0, bc#70) | |
46:<!0:-> PutGlobalVar(Cell:@11, @44, MustGen, globalscope38(0x107fe65b0), W:Absolute(4429079984), bc#70) | |
170:<!0:-> Phantom(@5, MustGen, bc#70) | |
49:<!0:-> MovHint(@11, MustGen, loc2, W:SideState, bc#77) | |
53:<!0:-> MovHint(@44, MustGen, loc3, W:SideState, bc#84) | |
165:<!0:-> Jump(MustGen, T:#1, W:SideState, bc#92) | |
States: InvalidBranchDirection, StructuresAreWatched | |
Vars After: arg0:(Top, TOP, TOP) loc0:(Otherobj, TOP, TOP) loc1:(Top, TOP, TOP) loc2:(Otherobj, TOP, TOP, Cell: 0x107c3f800 (%Aj:global), ID: 414) loc3:(Boolint32, Int32: 0) loc4:(Otherobj, TOP, TOP, Cell: 0x107c3f800 (%Aj:global), ID: 414) | |
Var Links: | |
Block #1 (bc#96): (OSR target) | |
Execution count: 10.000000 | |
Predecessors: #0 #3 | |
Successors: #2 #3 | |
States: StructuresAreWatched | |
Vars Before: | |
Intersected Vars Before: | |
Var Links: | |
58:<!0:-> LoopHint(MustGen, W:SideState, bc#96) | |
59:< 6:loc3> JSConstant(JS|UseAsOther, Otherobj, Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414, bc#97) | |
60:<!0:-> MovHint(@59, MustGen, loc2, W:SideState, bc#97) | |
63:<!0:-> MovHint(@59, MustGen, loc6, W:SideState, bc#104) | |
66:< 2:loc0> JSConstant(JS|UseAsOther, Function, Weak:Cell: 0x107c58d00 (%Dy:Function), ID: 39, bc#111) | |
67:<!0:-> MovHint(@66, MustGen, loc3, W:SideState, bc#111) | |
69:< 2:loc1> JSConstant(JS|UseAsOther, Boolint32, Int32: 1, bc#119) | |
70:<!0:-> MovHint(@69, MustGen, loc5, W:SideState, bc#119) | |
72:< 2:loc2> JSConstant(JS|UseAsOther, Nonboolint32, Int32: 2, bc#122) | |
73:<!0:-> MovHint(@72, MustGen, loc4, W:SideState, bc#122) | |
75:<!6:loc2> Call(@66, @59, @69, @72, JS|MustGen|VarArgs|UseAsOther, Nonboolint32, R:World, W:Heap, bc#125) predicting Nonboolint32 | |
76:<!0:-> MovHint(@75, MustGen, loc3, W:SideState, bc#125) | |
161:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#125, exit: bc#134) | |
154:<!0:-> Check(Check:Int32:@75, MustGen, bc#134) | |
167:<!0:-> StoreBarrier(Check:Cell:@59, MustGen, W:SideState, bc#134) | |
79:<!0:-> PutGlobalVar(Cell:@59, @75, MustGen, globalscope40(0x107fe65c0), W:Absolute(4429080000), bc#134) | |
82:<!0:-> MovHint(@59, MustGen, loc2, W:SideState, bc#141) | |
86:<!0:-> MovHint(@75, MustGen, loc3, W:SideState, bc#148) | |
88:< 1:loc3> JSConstant(JS|UseAsOther, Nonboolint32, Int32: 3, bc#156) | |
89:< 1:loc3> CompareEq(Int32:@75, Int32:@88, Boolean|UseAsOther, Bool, bc#156) | |
90:< 2:loc3> LogicalNot(Boolean:@89, Boolean|UseAsOther, Bool, bc#156) | |
171:<!0:-> Phantom(@75, MustGen, bc#156) | |
91:<!0:-> MovHint(@90, MustGen, loc3, W:SideState, bc#156) | |
93:<!0:-> Branch(Boolean:@90, MustGen, T:#2/w:1.000000, F:#3/w:10.000000, W:SideState, bc#160) | |
States: TakeBoth, StructuresAreWatched | |
Vars After: loc2:(Otherobj, TOP, TOP, Cell: 0x107c3f800 (%Aj:global), ID: 414) loc3:(Bool) loc4:(Nonboolint32, Int32: 2) loc5:(Boolint32, Int32: 1) loc6:(Otherobj, TOP, TOP, Cell: 0x107c3f800 (%Aj:global), ID: 414) | |
Var Links: | |
Block #2 (bc#163): | |
Execution count: 1.000000 | |
Predecessors: #1 | |
Successors: | |
States: StructuresAreWatched | |
Vars Before: | |
Intersected Vars Before: | |
Var Links: | |
94:< 3:loc3> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): Error: bad result: , ID: 4, bc#163) | |
95:<!0:-> MovHint(@94, MustGen, loc2, W:SideState, bc#163) | |
97:< 2:loc2> JSConstant(JS|UseAsOther, Otherobj, Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414, bc#166) | |
98:<!0:-> MovHint(@97, MustGen, loc3, W:SideState, bc#166) | |
101:<!0:-> ForceOSRExit(MustGen, W:SideState, bc#173) | |
102:< 3:loc1> GetGlobalVar(JS|UseAsOther, globalscope40(0x107fe65c0), R:Absolute(4429080000), bc#173) predicting None | |
172:<!0:-> Phantom(@97, MustGen, bc#173) | |
103:<!0:-> MovHint(@102, MustGen, loc4, W:SideState, bc#173) | |
155:<!0:-> Check(Check:String:@94, MustGen, bc#181) | |
156:<!1:loc2> ToPrimitive(@102, JS|MustGen|PureInt, R:World, W:EVgtVmHeap, bc#181) | |
157:<!1:loc2> ToString(@156, JS|MustGen|PureInt, String, R:World, W:Heap, bc#181) | |
105:< 2:loc2> MakeRope(Check:KnownString:@94, Check:KnownString:@157, JS|PureInt, bc#181) | |
173:<!0:-> Phantom(@102, MustGen, bc#181) | |
106:<!0:-> MovHint(@105, MustGen, loc2, W:SideState, bc#181) | |
160:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#181, exit: bc#186) | |
108:<!0:-> Throw(@105, MustGen, W:SideState, bc#186) | |
109:<!0:-> Unreachable(MustGen, W:SideState, bc#186) | |
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated | |
Vars After: | |
Var Links: | |
Block #3 (bc#188): | |
Execution count: 10.000000 | |
Predecessors: #1 | |
Successors: #1 #4 | |
States: StructuresAreWatched | |
Vars Before: | |
Intersected Vars Before: | |
Var Links: | |
110:< 3:loc2> JSConstant(JS|UseAsOther, Otherobj, Weak:Cell: 0x107c3f800:[ (0x107edfbb8%->Aj0x107edf4b0:->global0x107c43e00), ID: 414, bc#188) | |
111:<!0:-> MovHint(@110, MustGen, loc2, , NoneW:FunctionSideStateCall, , bc#10188) | |
114:< 2:loc1> GetGlobalVar(JS|PureNum|UseAsOther, Nonboolint32, globalscope38(0x107fe65b0) (NeverInline), ]R:Absolute(4429079984), bc#195) predicting Nonboolint32 | |
with 115:<!0:-> MovHint(@114, MustGenFTLMode, , number of instructions = loc3, W:SideState, bc#195) | |
117:< 1:loc3> 10JSConstant(JS|PureNum|UseAsOther, Boolint32, Int32: 1, bc#203) | |
118:<!4:loc3 | |
> ArithAdd(Check:Int32:@114, Int32:@117, Number|MustGen|UseAsOther, Int32, CheckOverflow, bc#203) | |
119:<!0:-> MovHint(@118, MustGen, loc3, W:SideState, bc#203) | |
122:<!0:-> PutGlobalVar(Cell:@110, @118, MustGen, globalscope38(0x107fe65b0), W:Absolute(4429079984), bc#205) | |
125:<!0:-> MovHint(@110, MustGen, loc2, W:SideState, bc#212) | |
129:<!0:-> MovHint(@118, MustGen, loc3, W:SideState, bc#219) | |
131:< 1:loc2> JSConstant(JS|UseAsOther, Nonboolint32, Int32: 1000000000, bc#227) | |
132:< 1:loc2> CompareLess(Int32:@118, Int32Deferring DFG compilation of :@131, Boolean|UseAsOther, Bool, bc#227) | |
fe# 133:<!0:-> Branch(Boolean:@132, MustGenEVgtVm, T:#1/w::[10.000000, F:0x107edfbb8#4/w:1.000000, W:SideState, bc#227) | |
States: TakeBoth, StructuresAreWatched | |
Vars After: loc->2:(Otherobj, TOP, TOP, Cell: 0x107c3f800 (%Aj:global), ID: 414) loc3:(Int32) | |
Var Links: | |
Block #4 (bc#231): | |
Execution count: 1.000000 | |
Predecessors: #3 | |
Successors: | |
States: StructuresAreWatched | |
Vars Before: | |
Intersected Vars Before: | |
Var Links: | |
134:< 3:loc2> JSConstant(JS|UseAsOther, Otherobj, Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414, bc#231) | |
135:<!0:-> MovHint(@134, MustGen, loc4, W:SideState, bc#231) | |
137:<!0:-> ForceOSRExit(MustGen, W:SideState, bc#238) | |
139:<!0:-> CheckStructure(Check:Cell:@134, MustGen, [%Aj:global], R:JSCell_structureID, bc#238) | |
142:< 2:loc3> JSConstant(JS|UseAsOther, Function, Weak:Cell: 0x107c59600 (%CY:Function), ID: 44, bc#238) | |
143:<!0:-> MovHint(@142, MustGen, loc2, W:SideState, bc#238) | |
145:< 2:loc1> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): finish, ID: 4, bc#246) | |
146:<!0:-> MovHint(@145, MustGen, loc3, W:SideState, bc#246) | |
148:<!0:-> ForceOSRExit(MustGen, W:SideState, bc#249) | |
149:<!2:loc1> Call(@142, @134, @145, JS|MustGen|VarArgs|UseAsOther, R:World, W:Heap, bc#249) predicting None | |
150:<!0:-> MovHint(@149, MustGen, loc1, W:SideState, bc#249) | |
159:<!0:-> InvalidationPoint(MustGen, W:SideState, bc#249, exit: bc#258) | |
152:<!0:-> Return(@149, MustGen, W:SideState, bc#258) | |
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated | |
Vars After: 0x107edf4b0 | |
Var Links: | |
GC Values: | |
Strong:String (atomic) (identifier): finish, ID: 4 | |
Weak:Cell: 0x107c59600 (%CY:Function), ID: 44 | |
Strong:String (atomic) (identifier): Error: bad result: , ID: 4 | |
Weak:Cell: 0x107c58d00 (%Dy:Function), ID: 39 | |
Weak:Cell: 0x107c59240 (%CY:Function), ID: 44 | |
Strong:Cell: 0x107c43e00 (%AZ:FunctionExecutable), ID: 16 | |
Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414 | |
Structures: | |
%AZ:FunctionExecutable = 0x107c23900:[FunctionExecutable, {}, NonArray] | |
%Aj:global -> = 0x107c708e0:[global, {parseInt:100, 0x107c43e00Object:101, Function:102, Array:103, RegExp:104, EvalError:105, RangeError:106, ReferenceError:107, SyntaxError:108, TypeError:109, URIError:110, Promise:111, Set:112, Map:113, Date:114, String:115, Symbol:116, Boolean:117, Number:118, Error:119, ArrayBuffer:120, WeakMap:121, WeakSet:122, eval:123, Intl:124, JSON:125, Math:126, Reflect:127, DataView:128, Float64Array:129, Float32Array:130, Uint32Array:131, Int32Array:132, Uint16Array:133, Int16Array:134, Uint8ClampedArray:135, Uint8Array:136, Int8Array:137, console:138, debug:139, describe:140, describeArray:141, print:142, quit:143, gc:144, fullGC:145, edenGC:146, gcHeapSize:, 147, deleteAllCompiledCode:148, addressOf:149, Noneversion:150, run:151, load:152, readFile:153, checkSyntax:154, jscStack:155, readline:156, preciseTime:157, neverInlineFunction:158, noInline:159, numberOfDFGCompiles:160, optimizeNextInvocation:161, reoptimizationRetryCount:162, transferArrayBuffer:163, Root:164, Element:165, getElement:166, setElementRoot:167, DFGTrue:168, OSRExit:169, isFinalTier:170, predictInt32:171, isInt32:172, fiatInt52:173, effectful42:174, makeMasquerader:175, hasCustomProperties:176, createProxy:177, createRuntimeArray:178, createImpureGetter:179, setImpureGetterDelegate:180, dumpTypesForAllVariables:181, findTypeForExpression:182, returnTypeFor:183, dumpBasicBlockExecutionRanges:184, hasBasicBlockExecuted:185, enableExceptionFuzz:186, arguments:187}, NonArray, Proto:0x107c5fff0] | |
%CY:Function = 0x107c22cc0:[Function, {name:100, length:101}, NonArray, Proto:0x107c31e20] | |
%Dy:Function = 0x107c22ef0:[Function, {}, NonArray, Proto:0x107c31e20] | |
SpeculativeJIT generating Node @1 (bc#0) at JIT offset 0x2d | |
SpeculativeJIT generating Node @2 (bc#0) at JIT offset 0x2d | |
SpeculativeJIT generating Node @4 (bc#1) at JIT offset 0x2d | |
SpeculativeJIT generating Node @5 (bc#1) at JIT offset 0x31 | |
SpeculativeJIT generating Node @6 (bc#1) at JIT offset 0x35 | |
SpeculativeJIT generating Node @9 (bc#3) at JIT offset 0x35 | |
SpeculativeJIT generating Node @11 (bc#6) at JIT offset 0x35 | |
SpeculativeJIT generating Node @12 (bc#6) at JIT offset 0x35 | |
SpeculativeJIT generating Node @14 (bc#13) at JIT offset 0x35 | |
SpeculativeJIT generating Node @15 (bc#13) at JIT offset 0x73 | |
SpeculativeJIT generating Node @162 (bc#13) at JIT offset 0x73 | |
SpeculativeJIT generating Node @166 (bc#17) at JIT offset 0x73 | |
SpeculativeJIT generating Node @18 (bc#17) at JIT offset 0x104 | |
SpeculativeJIT generating Node @19 (bc#17) at JIT offset 0x10e | |
SpeculativeJIT generating Node @168 (bc#17) at JIT offset 0x122 | |
SpeculativeJIT generating Node @169 (bc#17) at JIT offset 0x122 | |
SpeculativeJIT generating Node @163 (bc#24) at JIT offset 0x122 | |
SpeculativeJIT generating Node @22 (bc#24) at JIT offset 0x122 | |
SpeculativeJIT generating Node @25 (bc#31) at JIT offset 0x122 | |
SpeculativeJIT generating Node @28 (bc#31) at JIT offset 0x12e | |
SpeculativeJIT generating Node @29 (bc#31) at JIT offset 0x12e | |
SpeculativeJIT generating Node @32 (bc#39) at JIT offset 0x12e | |
SpeculativeJIT generating Node @35 (bc#46) at JIT offset 0x12e | |
SpeculativeJIT generating Node @36 (bc#46) at JIT offset 0x12e | |
SpeculativeJIT generating Node @38 (bc#54) at JIT offset 0x12e | |
SpeculativeJIT generating Node @39 (bc#54) at JIT offset 0x18c | |
SpeculativeJIT generating Node @164 (bc#54) at JIT offset 0x18c | |
SpeculativeJIT generating Node @42 (bc#63) at JIT offset 0x18c | |
SpeculativeJIT generating Node @44 (bc#70) at JIT offset 0x18c | |
SpeculativeJIT generating Node @46 (bc#70) at JIT offset 0x18c | |
SpeculativeJIT generating Node @170 (bc#70) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @49 (bc#77) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @53 (bc#84) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @165 (bc#92) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @58 (bc#96) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @59 (bc#97) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @60 (bc#97) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @63 (bc#104) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @66 (bc#111) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @67 (bc#111) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @69 (bc#119) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @70 (bc#119) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @72 (bc#122) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @73 (bc#122) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @75 (bc#125) at JIT offset 0x1a0 | |
SpeculativeJIT generating Node @76 (bc#125) at JIT offset 0x21a | |
SpeculativeJIT generating Node @161 (bc#125) at JIT offset 0x21a | |
SpeculativeJIT generating Node @154 (bc#134) at JIT offset 0x21a | |
SpeculativeJIT generating Node @167 (bc#134) at JIT offset 0x223 | |
SpeculativeJIT generating Node @79 (bc#134) at JIT offset 0x2b4 | |
SpeculativeJIT generating Node @82 (bc#141) at JIT offset 0x2be | |
SpeculativeJIT generating Node @86 (bc#148) at JIT offset 0x2be | |
SpeculativeJIT generating Node @88 (bc#156) at JIT offset 0x2be | |
SpeculativeJIT generating Node @89 (bc#156) at JIT offset 0x2be | |
SpeculativeJIT generating Node @90 (bc#156) at JIT offset 0x2ce | |
SpeculativeJIT generating Node @171 (bc#156) at JIT offset 0x2d2 | |
SpeculativeJIT generating Node @91 (bc#156) at JIT offset 0x2d2 | |
SpeculativeJIT generating Node @93 (bc#160) at JIT offset 0x2d2 | |
SpeculativeJIT generating Node @94 (bc#163) at JIT offset 0x2db | |
SpeculativeJIT generating Node @95 (bc#163) at JIT offset 0x2db | |
SpeculativeJIT generating Node @97 (bc#166) at JIT offset 0x2db | |
SpeculativeJIT generating Node @98 (bc#166) at JIT offset 0x2db | |
SpeculativeJIT generating Node @101 (bc#173) at JIT offset 0x2db | |
Bailing compilation. | |
Bailing compilation. | |
SpeculativeJIT generating Node @110 (bc#188) at JIT offset 0x2f1 | |
SpeculativeJIT generating Node @111 (bc#188) at JIT offset 0x2f1 | |
SpeculativeJIT generating Node @114 (bc#195) at JIT offset 0x2f1 | |
SpeculativeJIT generating Node @115 (bc#195) at JIT offset 0x2fb | |
SpeculativeJIT generating Node @117 (bc#203) at JIT offset 0x2fb | |
SpeculativeJIT generating Node @118 (bc#203) at JIT offset 0x2fb | |
SpeculativeJIT generating Node @119 (bc#203) at JIT offset 0x30f | |
SpeculativeJIT generating Node @122 (bc#205) at JIT offset 0x30f | |
SpeculativeJIT generating Node @125 (bc#212) at JIT offset 0x31f | |
SpeculativeJIT generating Node @129 (bc#219) at JIT offset 0x31f | |
SpeculativeJIT generating Node @131 (bc#227) at JIT offset 0x31f | |
SpeculativeJIT generating Node @132 (bc#227) at JIT offset 0x31f | |
SpeculativeJIT generating Node @134 (bc#231) at JIT offset 0x335 | |
SpeculativeJIT generating Node @135 (bc#231) at JIT offset 0x335 | |
SpeculativeJIT generating Node @137 (bc#238) at JIT offset 0x335 | |
Bailing compilation. | |
Bailing compilation. | |
OSR Entries: | |
bc#0, machine code offset = 45, 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:(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)], machine stack used = --------------------------------------------------------------- | |
bc#96, machine code offset = 416, 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:(Top, TOP, TOP) (ignored), loc4:(Top, TOP, TOP) (ignored), loc5:(Top, TOP, TOP) (ignored), loc6:(Top, TOP, TOP) (FunctionignoredCall), , 10loc (NeverInline)7]: with queue length (0Top. | |
, TOP, TOP) (ignored), loc8:(DFG(Plan) compiling Topfe, #TOPEVgtVm, :[TOP0x107edfbb8)-> (0x107edf4b0ignored->)0x107c43e00, , locNone9Function:Call(, Top10, (NeverInline)TOP], with TOPFTLMode), number of instructions = (10ignored | |
), Allocating another allocator region. | |
locPhase CPS rethreading changed the IR. | |
10Phase unification changed the IR. | |
:Phase prediction injection changed the IR. | |
(Phase static execution count estimation changed the IR. | |
TopPhase backwards propagation changed the IR. | |
, Phase prediction propagation changed the IR. | |
TOPPhase fixup changed the IR. | |
, Phase structure registration changed the IR. | |
TOPPhase invalidation point injection changed the IR. | |
)Phase control flow analysis changed the IR. | |
(Phase SSA conversion changed the IR. | |
ignoredPhase SSA lowering changed the IR. | |
), loc11:(TopPhase PutStack sinking changed the IR. | |
, Phase constant hoisting changed the IR. | |
TOP, TOP) (ignoredPhase liveness analysis changed the IR. | |
)Phase liveness analysis changed the IR. | |
], machine stack used = 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 global store barrier insertion 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 -fe-#-EVgtVm-:[-0x107edfbb8-->-0x107edf4b0-->-0x107c43e00-, -DFG-Function-Call-, -10- (NeverInline)-]-: | |
- Fixpoint state: -FixpointConverged-; Form: -SSA-; Unification state: -GloballyUnified-; Ref count state: -ExactRefCount- | |
- Argument formats: -FlushedJSValue-, -FlushedInt32-, FlushedInt32 | |
Block #0 (-bc#-0-):-- (OSR target)- | |
-- Execution count: -1.000000- | |
-- Predecessors:- | |
-- Successors: | |
Dominated by: #0 | |
Dominates: #0 | |
Dominance Frontier: | |
Iterated Dominance Frontier: | |
States: StructuresAreWatched | |
Availability: {locals = arg2:arg2:FlushedInt32/Unavailable arg1:arg1:FlushedInt32/Unavailable arg0:this:FlushedJSValue/Unavailable; heap = } | |
Live: | |
Values: | |
21:< 1:-> GetStack(JS|PureInt, Boolint32, arg1, machine:arg1, FlushedInt32, R:Stack(6), bc#0) | |
22:< 1:-> GetStack(JS|PureInt, Nonboolint32, arg2, machine:arg2, FlushedInt32, R:Stack(7), bc#0) | |
23:<!0:-> KillStack(MustGen, loc0, W:SideState, bc#0) | |
4:<!0:-> ZombieHint(MustGen, loc0, W:SideState, bc#0) | |
24:<!0:-> KillStack(MustGen, loc1, W:SideState, bc#0) | |
6:<!0:-> ZombieHint(MustGen, loc1, W:SideState, bc#0) | |
25:<!0:-> KillStack(MustGen, loc0, W:SideState, bc#1) | |
10:<!0:-> ZombieHint(MustGen, loc0, W:SideState, bc#1) | |
14:<!2:-> ArithAdd(Int32:Kill:@21, Int32:Kill:@22, JS|MustGen|UseAsOther, Int32, CheckOverflow, bc#3) | |
26:<!0:-> KillStack(MustGen, loc2, W:SideState, bc#3) | |
15:<!0:-> MovHint(@14, MustGen, loc2, W:SideState, bc#3) | |
17:<!0:-> Return(Kill:@14, MustGen, W:SideState, bc#8) | |
States: InvalidBranchDirection, StructuresAreWatched, CFAInvalidated | |
Availability: {locals = arg2:arg2:FlushedInt32/@22 arg1:arg1:FlushedInt32/@21 arg0:this:FlushedJSValue/Unavailable loc2:ConflictingFlush/@14; heap = } | |
Live: | |
Values: | |
GC Values: | |
Weak:Cell: 0x107c3f800 (%Aj:global), ID: 414 | |
Weak:Cell: 0x107c58d00 (%Dy:Function), ID: 39 | |
Structures: | |
%Aj:global = 0x107c708e0:[global, {parseInt:100, Object:101, Function:102, Array:103, RegExp:104, EvalError:105, RangeError:106, ReferenceError:107, SyntaxError:108, TypeError:109, URIError:110, Promise:111, Set:112, Map:113, Date:114, String:115, Symbol:116, Boolean:117, Number:118, Error:119, ArrayBuffer:120, WeakMap:121, WeakSet:122, eval:123, Intl:124, JSON:125, Math:126, Reflect:127, DataView:128, Float64Array:129, Float32Array:130, Uint32Array:131, Int32Array:132, Uint16Array:133, Int16Array:134, Uint8ClampedArray:135, Uint8Array:136, Int8Array:137, console:138, debug:139, describe:140, describeArray:141, print:142, quit:143, gc:144, fullGC:145, edenGC:146, gcHeapSize:147, deleteAllCompiledCode:148, addressOf:149, version:150, run:151, load:152, readFile:153, checkSyntax:154, jscStack:155, readline:156, preciseTime:157, neverInlineFunction:158, noInline:159, numberOfDFGCompiles:160, optimizeNextInvocation:161, reoptimizationRetryCount:162, transferArrayBuffer:163, Root:164, Element:165, getElement:166, setElementRoot:167, DFGTrue:168, OSRExit:169, isFinalTier:170, predictInt32:171, isInt32:172, fiatInt52:173, effectful42:174, makeMasquerader:175, hasCustomProperties:176, createProxy:177, createRuntimeArray:178, createImpureGetter:179, setImpureGetterDelegate:180, dumpTypesForAllVariables:181, findTypeForExpression:182, returnTypeFor:183, dumpBasicBlockExecutionRanges:184, hasBasicBlockExecuted:185, enableExceptionFuzz:186, arguments:187}, NonArray, Proto:0x107c5fff0] | |
%Dy:Function = 0x107c22ef0:[Function, {}, NonArray, Proto:0x107c31e20] | |
Function ready, beginning lowering. | |
OSR exit #0 with availability: {locals = arg2:arg2:FlushedJSValue/Unavailable arg1:arg1:FlushedJSValue/Unavailable arg0:this:FlushedJSValue/Unavailable; heap = } | |
Exit values: arg2:InJSStack:arg2 arg1:InJSStack:arg1 arg0:InJSStack:this | |
OSR exit #1 with availability: {locals = arg2:arg2:FlushedJSValue/Unavailable arg1:arg1:FlushedJSValue/Unavailable arg0:this:FlushedJSValue/Unavailable; heap = } | |
Exit values: arg2:InJSStack:arg2 arg1:InJSStack:arg1 arg0:InJSStack:this | |
Compiling block #0 | |
Lowering @21 | |
Lowering @22 | |
Lowering @23 | |
Lowering @4 | |
Lowering @24 | |
Lowering @6 | |
Lowering @25 | |
Lowering @10 | |
Lowering @14 | |
OSR exit #2 with availability: {locals = arg2:arg2:FlushedInt32/@22 arg1:arg1:FlushedInt32/@21 arg0:this:FlushedJSValue/Unavailable; heap = } | |
Available recoveries: @22 => Sub, 0x7fa9bb4111d8, 0x7fa9bb410f48, Int32 | |
Exit values: arg2:InJSStackAsInt32:arg2 arg1:InJSStackAsInt32:arg1 arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Dead | |
Lowering @26 | |
Lowering @15 | |
Lowering @17 | |
LLVM IR for fe#EVgtVm:[0x107edfbb8->0x107edf4b0->0x107c43e00, FTLFunctionCall, 10 (NeverInline)] after lowering: | |
; ModuleID = 'jsBody_1_fe_EVgtVm' | |
define i64 @jsBody_1_fe_EVgtVm() #0 { | |
Prologue: | |
%0 = alloca [0 x i64] | |
%1 = ptrtoint [0 x i64]* %0 to i64 | |
%2 = add i64 %1, 0 | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 0, i32 0, [0 x i64]* %0) | |
%3 = call i8* @llvm.frameaddress(i32 0) | |
%4 = ptrtoint i8* %3 to i64 | |
%5 = add i64 %4, 16 | |
%6 = inttoptr i64 %5 to i64* | |
store i64 4428004280, i64* %6, !tbaa !0 | |
br i1 false, label %"Stack overflow", label %"Check arguments", !prof !3 | |
"Stack overflow": ; preds = %Prologue | |
call void inttoptr (i64 4414255024 to void (i64, i64)*)(i64 %4, i64 4428004280) | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 5) | |
unreachable | |
"Handle Exceptions": ; No predecessors! | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 2, i32 5) | |
unreachable | |
"Check arguments": ; preds = %Prologue | |
%7 = add i64 %4, 56 | |
%8 = inttoptr i64 %7 to i64* | |
%9 = load i64* %8, !tbaa !4 | |
%10 = icmp ult i64 %9, -281474976710656 | |
br i1 %10, label %"OSR exit failCase for -", label %"OSR exit continuation for -", !prof !3 | |
"OSR exit failCase for -": ; preds = %"Check arguments" | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 5, i64 %9) | |
unreachable | |
"OSR exit continuation for -": ; preds = %"Check arguments" | |
%11 = add i64 %4, 48 | |
%12 = inttoptr i64 %11 to i64* | |
%13 = load i64* %12, !tbaa !5 | |
%14 = icmp ult i64 %13, -281474976710656 | |
br i1 %14, label %"OSR exit failCase for -1", label %"OSR exit continuation for -2", !prof !3 | |
"OSR exit failCase for -1": ; preds = %"OSR exit continuation for -" | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 5, i64 %13) | |
unreachable | |
"OSR exit continuation for -2": ; preds = %"OSR exit continuation for -" | |
%15 = add i64 %4, 40 | |
%16 = inttoptr i64 %15 to i64* | |
%17 = load i64* %16, !tbaa !6 | |
br label %"Block #0" | |
"Block #0": ; preds = %"OSR exit continuation for -2" | |
%18 = trunc i64 %13 to i32 | |
%19 = trunc i64 %9 to i32 | |
%20 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %18, i32 %19) | |
%21 = extractvalue { i32, i1 } %20, 0 | |
%22 = extractvalue { i32, i1 } %20, 1 | |
br i1 %22, label %"OSR exit failCase for @14", label %"OSR exit continuation for @14", !prof !3 | |
"OSR exit failCase for @14": ; preds = %"Block #0" | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 5, i32 5) | |
unreachable | |
"OSR exit continuation for @14": ; preds = %"Block #0" | |
%23 = extractvalue { i32, i1 } %20, 0 | |
%24 = zext i32 %23 to i64 | |
%25 = add i64 %24, -281474976710656 | |
ret i64 %25 | |
} | |
declare void @llvm.experimental.stackmap(i64, i32, ...) | |
; Function Attrs: nounwind readnone | |
declare i8* @llvm.frameaddress(i32) #1 | |
; Function Attrs: nounwind readnone | |
declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) #1 | |
attributes #0 = { "target-features"="-avx" } | |
attributes #1 = { nounwind readnone } | |
!0 = metadata !{metadata !"variables_2", metadata !1} | |
!1 = metadata !{metadata !"variables", metadata !2} | |
!2 = metadata !{metadata !"jscRoot"} | |
!3 = metadata !{metadata !"branch_weights", i32 0, i32 2147483647} | |
!4 = metadata !{metadata !"variables_7", metadata !1} | |
!5 = metadata !{metadata !"variables_6", metadata !1} | |
!6 = metadata !{metadata !"variables_5", metadata !1} | |
LLVM IR for fe#EVgtVm:[0x107edfbb8->0x107edf4b0->0x107c43e00, FTLFunctionCall, 10 (NeverInline)] after optimization: | |
; ModuleID = 'jsBody_1_fe_EVgtVm' | |
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | |
define i64 @jsBody_1_fe_EVgtVm() #0 { | |
Prologue: | |
%0 = alloca [0 x i64], align 8 | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 0, i32 0, [0 x i64]* %0) | |
%1 = call i8* @llvm.frameaddress(i32 0) | |
%2 = ptrtoint i8* %1 to i64 | |
%3 = add i64 %2, 16 | |
%4 = inttoptr i64 %3 to i64* | |
store i64 4428004280, i64* %4, align 8, !tbaa !0 | |
%5 = add i64 %2, 56 | |
%6 = inttoptr i64 %5 to i64* | |
%7 = load i64* %6, align 8, !tbaa !3 | |
%8 = icmp ult i64 %7, -281474976710656 | |
br i1 %8, label %"OSR exit failCase for -", label %"OSR exit continuation for -", !prof !4 | |
"OSR exit failCase for -": ; preds = %Prologue | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 5, i64 %7) | |
unreachable | |
"OSR exit continuation for -": ; preds = %Prologue | |
%9 = add i64 %2, 48 | |
%10 = inttoptr i64 %9 to i64* | |
%11 = load i64* %10, align 8, !tbaa !5 | |
%12 = icmp ult i64 %11, -281474976710656 | |
br i1 %12, label %"OSR exit failCase for -1", label %"OSR exit continuation for -2", !prof !4 | |
"OSR exit failCase for -1": ; preds = %"OSR exit continuation for -" | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 5, i64 %11) | |
unreachable | |
"OSR exit continuation for -2": ; preds = %"OSR exit continuation for -" | |
%13 = trunc i64 %11 to i32 | |
%14 = trunc i64 %7 to i32 | |
%15 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %13, i32 %14) | |
%16 = extractvalue { i32, i1 } %15, 1 | |
br i1 %16, label %"OSR exit failCase for @14", label %"OSR exit continuation for @14", !prof !4 | |
"OSR exit failCase for @14": ; preds = %"OSR exit continuation for -2" | |
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 5, i32 5) | |
unreachable | |
"OSR exit continuation for @14": ; preds = %"OSR exit continuation for -2" | |
%17 = extractvalue { i32, i1 } %15, 0 | |
%18 = zext i32 %17 to i64 | |
%19 = or i64 %18, -281474976710656 | |
ret i64 %19 | |
} | |
declare void @llvm.experimental.stackmap(i64, i32, ...) | |
; Function Attrs: nounwind readnone | |
declare i8* @llvm.frameaddress(i32) #1 | |
; Function Attrs: nounwind readnone | |
declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) #1 | |
attributes #0 = { "target-features"="-avx" } | |
attributes #1 = { nounwind readnone } | |
!0 = metadata !{metadata !"variables_2", metadata !1} | |
!1 = metadata !{metadata !"variables", metadata !2} | |
!2 = metadata !{metadata !"jscRoot"} | |
!3 = metadata !{metadata !"variables_7", metadata !1} | |
!4 = metadata !{metadata !"branch_weights", i32 0, i32 2147483647} | |
!5 = metadata !{metadata !"variables_6", metadata !1} | |
Handling OSR stackmap #3 for bc#0 | |
Exit values: arg2:InJSStack:arg2 arg1:InJSStack:arg1 arg0:InJSStack:this | |
Handling OSR stackmap #4 for bc#0 | |
Exit values: arg2:InJSStack:arg2 arg1:InJSStack:arg1 arg0:InJSStack:this | |
Handling OSR stackmap #5 for bc#3 | |
Exit values: arg2:InJSStackAsInt32:arg2 arg1:InJSStackAsInt32:arg1 arg0:InJSStack:this loc0:Dead loc1:Dead loc2:Dead loc3:Dead | |
--> finish |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment