Skip to content

Instantly share code, notes, and snippets.

@gskachkov
Created July 30, 2015 18:20
Show Gist options
  • Save gskachkov/4d3c8128b06fe0f674a3 to your computer and use it in GitHub Desktop.
Save gskachkov/4d3c8128b06fe0f674a3 to your computer and use it in GitHub Desktop.
common function
>>> 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