Skip to content

Instantly share code, notes, and snippets.

@gskachkov
Last active Nov 4, 2015
Embed
What would you like to do?
Generated DFG JIT code for f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)], instruction count = 56:
Optimized with execution counter = 945.000000/1290.000000, -55
Code at [0x598072c043a0, 0x598072c0477b):
0x598072c043a0: push %rbp
0x598072c043a1: mov %rsp, %rbp
0x598072c043a4: mov $0x105c7e800, %r11
0x598072c043ae: mov %r11, 0x10(%rbp)
0x598072c043b2: lea -0x50(%rbp), %rsi
0x598072c043b6: mov $0x105c06378, %r11
0x598072c043c0: cmp %rsi, (%r11)
0x598072c043c3: ja 0x598072c04612
0x598072c043c9: lea -0x40(%rbp), %rsp
0x598072c043cd: test $0xf, %spl
0x598072c043d1: jz 0x598072c043de
0x598072c043d7: mov $0x64, %r11d
0x598072c043dd: int3
0x598072c043de: mov %rbx, -0x28(%rbp)
0x598072c043e2: mov %r12, -0x20(%rbp)
0x598072c043e6: mov %r13, -0x18(%rbp)
0x598072c043ea: mov %r14, -0x10(%rbp)
0x598072c043ee: mov %r15, -0x8(%rbp)
0x598072c043f2: mov $0xffff000000000000, %r14
0x598072c043fc: mov %r14, %r15
0x598072c043ff: or $0x2, %r15
Block #0 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors:
Successors: #1 (ForwardEdge) #2 (ForwardEdge)
Dominated by: #0
Dominates: #0 #1 #2
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 0/2
0x598072c04403: test $0x7, %bpl
0x598072c04407: jz 0x598072c04414
0x598072c0440d: mov $0xa, %r11d
0x598072c04413: int3
0x598072c04414: mov $0xffff000000000000, %r11
0x598072c0441e: cmp %r11, %r14
0x598072c04421: jz 0x598072c0442f
0x598072c04427: mov $0x82, %r11d
0x598072c0442d: int3
0x598072c0442e: int3
0x598072c0442f: mov $0xffff000000000002, %r11
0x598072c04439: cmp %r11, %r15
0x598072c0443c: jz 0x598072c04449
0x598072c04442: mov $0x78, %r11d
0x598072c04448: int3
0x598072c04449: cmp $0x989680, 0x20(%rbp)
0x598072c04450: jb 0x598072c0445d
0x598072c04456: mov $0x1e, %r11d
0x598072c0445c: int3
1:< 7:loc5> JSConstant(JS|PureInt, Other, Undefined, bc#0)
0x598072c0445d: mov $0x105c06398, %r11
0x598072c04467: mov (%r11), %r11
0x598072c0446a: test %r11, %r11
0x598072c0446d: jz 0x598072c0447a
0x598072c04473: mov $0x113, %r11d
0x598072c04479: int3
2:<!0:-> MovHint(@1, MustGen, loc0, W:SideState, ClobbersExit, bc#0)
0x598072c0447a: mov $0x105c06398, %r11
0x598072c04484: mov (%r11), %r11
0x598072c04487: test %r11, %r11
0x598072c0448a: jz 0x598072c04497
0x598072c04490: mov $0x113, %r11d
0x598072c04496: int3
4:<!0:-> MovHint(@1, MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c04497: mov $0x105c06398, %r11
0x598072c044a1: mov (%r11), %r11
0x598072c044a4: test %r11, %r11
0x598072c044a7: jz 0x598072c044b4
0x598072c044ad: mov $0x113, %r11d
0x598072c044b3: int3
6:<!0:-> MovHint(@1, MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c044b4: mov $0x105c06398, %r11
0x598072c044be: mov (%r11), %r11
0x598072c044c1: test %r11, %r11
0x598072c044c4: jz 0x598072c044d1
0x598072c044ca: mov $0x113, %r11d
0x598072c044d0: int3
8:<!0:-> MovHint(@1, MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c044d1: mov $0x105c06398, %r11
0x598072c044db: mov (%r11), %r11
0x598072c044de: test %r11, %r11
0x598072c044e1: jz 0x598072c044ee
0x598072c044e7: mov $0x113, %r11d
0x598072c044ed: int3
10:<!0:-> MovHint(@1, MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c044ee: mov $0x105c06398, %r11
0x598072c044f8: mov (%r11), %r11
0x598072c044fb: test %r11, %r11
0x598072c044fe: jz 0x598072c0450b
0x598072c04504: mov $0x113, %r11d
0x598072c0450a: int3
12:<!0:-> MovHint(@1, MustGen, loc5, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c0450b: mov $0x105c06398, %r11
0x598072c04515: mov (%r11), %r11
0x598072c04518: test %r11, %r11
0x598072c0451b: jz 0x598072c04528
0x598072c04521: mov $0x113, %r11d
0x598072c04527: int3
14:<!0:-> MovHint(@1, MustGen, loc6, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x598072c04528: mov $0x105c06398, %r11
0x598072c04532: mov (%r11), %r11
0x598072c04535: test %r11, %r11
0x598072c04538: jz 0x598072c04545
0x598072c0453e: mov $0x113, %r11d
0x598072c04544: int3
16:< 1:loc5> GetCallee(JS|UseAsOther, Function, R:Stack(3), bc#1)
0x598072c04545: mov $0x105c06398, %r11
0x598072c0454f: mov (%r11), %r11
0x598072c04552: test %r11, %r11
0x598072c04555: jz 0x598072c04562
0x598072c0455b: mov $0x113, %r11d
0x598072c04561: int3
0x598072c04562: mov 0x18(%rbp), %rax
17:< 3:loc5> GetScope(KnownCell:@16, JS|UseAsOther, Otherobj, bc#1)
0x598072c04566: mov $0x105c06398, %r11
0x598072c04570: mov (%r11), %r11
0x598072c04573: test %r11, %r11
0x598072c04576: jz 0x598072c04583
0x598072c0457c: mov $0x113, %r11d
0x598072c04582: int3
0x598072c04583: test %rax, %r15
0x598072c04586: jz 0x598072c04593
0x598072c0458c: mov $0xb4, %r11d
0x598072c04592: int3
0x598072c04593: mov 0x10(%rax), %rax
18:<!0:-> MovHint(@17, MustGen, loc3, W:SideState, ClobbersExit, bc#1)
0x598072c04597: mov $0x105c06398, %r11
0x598072c045a1: mov (%r11), %r11
0x598072c045a4: test %r11, %r11
0x598072c045a7: jz 0x598072c045b4
0x598072c045ad: mov $0x113, %r11d
0x598072c045b3: int3
20:<!0:-> MovHint(@17, MustGen, loc4, W:SideState, ClobbersExit, bc#3)
0x598072c045b4: mov $0x105c06398, %r11
0x598072c045be: mov (%r11), %r11
0x598072c045c1: test %r11, %r11
0x598072c045c4: jz 0x598072c045d1
0x598072c045ca: mov $0x113, %r11d
0x598072c045d0: int3
23:<!0:-> ForceOSRExit(MustGen, W:SideState, Exits, bc#6)
0x598072c045d1: mov $0x105c06398, %r11
0x598072c045db: mov (%r11), %r11
0x598072c045de: test %r11, %r11
0x598072c045e1: jz 0x598072c045ee
0x598072c045e7: mov $0x113, %r11d
0x598072c045ed: int3
0x598072c045ee: jmp 0x598072c04754
0x598072c045f3: mov $0xc3, %r10
0x598072c045fd: mov $0xa2, %r11d
0x598072c04603: int3
55:<!0:-> Phantom(@17, MustGen, bc#6)
24:< 3:loc5> JSConstant(JS|UseAsOther, Other, Null, bc#6)
25:<!0:-> MovHint(@24, MustGen, loc7, W:SideState, ClobbersExit, bc#6)
28:< 1:loc6> GetClosureVar(Check:KnownCell:@24, JS|PureInt, Function, scope1, R:ScopeProperties(1), Exits, bc#13) predicting Function
29:<!0:-> MovHint(@28, MustGen, loc6, W:SideState, ClobbersExit, bc#13)
32:< 7:loc5> GetClosureVar(Check:KnownCell:@24, JS|UseAsOther, Final, scope0, R:ScopeProperties(0), Exits, bc#21) predicting Final
33:<!0:-> MovHint(@32, MustGen, this, W:SideState, ClobbersExit, bc#21)
35:<!0:-> CheckNotEmpty(@32, MustGen, Exits, bc#29)
36:<!0:-> MovHint(@32, MustGen, loc5, W:SideState, ClobbersExit, bc#31)
40:<!0:-> CheckStructure(Check:Cell:@32, MustGen, [%Bl:Object], R:JSCell_structureID, Exits, bc#36)
41:< 2:loc6> GetByOffset(Check:KnownCell:@32, Check:KnownCell:@32, JS|UseAsOther, Stringident, id3{id}, 0, inferredType = String, R:NamedProperties(3), Exits, bc#36) predicting Stringident
42:<!0:-> MovHint(@41, MustGen, loc8, W:SideState, ClobbersExit, bc#36)
44:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): A, ID: 4, bc#45)
45:< 2:loc7> CompareStrictEq(Check:StringIdent:@41, Check:StringIdent:@44, Boolean|UseAsOther, Bool, Exits, bc#45)
56:<!0:-> Phantom(@32, MustGen, bc#45)
46:<!0:-> MovHint(@45, MustGen, loc8, W:SideState, ClobbersExit, bc#45)
48:<!0:-> Branch(Check:KnownBoolean:@45, MustGen, T:#1/w:1.000000, F:#2/w:1.000000, W:SideState, bc#49)
Block #1 (bc#52):
Execution count: 1.000000
Predecessors: #0
Successors:
Dominated by: #0 #1
Dominates: #1
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 2/1
0x598072c04604: mov $0xdc, %r11d
0x598072c0460a: int3
49:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): ok, ID: 4, bc#52)
54:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#52)
50:<!0:-> Return(@49, MustGen, W:SideState, Exits, bc#52)
Block #2 (bc#54):
Execution count: 1.000000
Predecessors: #0
Successors:
Dominated by: #0 #2
Dominates: #2
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 1/0
0x598072c0460b: mov $0xdc, %r11d
0x598072c04611: int3
51:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): ok, ID: 4, bc#54)
53:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#54)
52:<!0:-> Return(@51, MustGen, W:SideState, Exits, bc#54)
(End Of Main Path)
0x598072c04612: mov $0x0, 0x24(%rbp)
0x598072c04619: mov $0x105c7e800, %rsi
0x598072c04623: mov %rbp, %rdi
0x598072c04626: mov $0x105c047f0, %r11
0x598072c04630: mov $0xbadbeef, (%r11)
0x598072c04637: mov $0x105c047f4, %r11
0x598072c04641: mov $0xbadbeef, (%r11)
0x598072c04648: mov $0x1, 0x24(%rbp)
0x598072c0464f: mov $0x10395fb40, %r11
0x598072c04659: call %r11
0x598072c0465c: mov $0x105c06398, %r11
0x598072c04666: mov (%r11), %r11
0x598072c04669: test %r11, %r11
0x598072c0466c: jnz 0x598072c0470a
0x598072c04672: push %rbp
0x598072c04673: mov %rsp, %rbp
0x598072c04676: mov $0x105c7e800, %r11
0x598072c04680: mov %r11, 0x10(%rbp)
0x598072c04684: mov 0x20(%rbp), %esi
0x598072c04687: cmp $0x1, %esi
0x598072c0468a: jae 0x598072c043b2
0x598072c04690: mov $0x2, 0x24(%rbp)
0x598072c04697: mov %rbp, %rdi
0x598072c0469a: mov $0x105c047f0, %r11
0x598072c046a4: mov $0xbadbeef, (%r11)
0x598072c046ab: mov $0x105c047f4, %r11
0x598072c046b5: mov $0xbadbeef, (%r11)
0x598072c046bc: mov $0x3, 0x24(%rbp)
0x598072c046c3: mov $0x10395fbd0, %r11
0x598072c046cd: call %r11
0x598072c046d0: mov $0x105c06398, %r11
0x598072c046da: mov (%r11), %r11
0x598072c046dd: test %r11, %r11
0x598072c046e0: jnz 0x598072c0470a
0x598072c046e6: test %eax, %eax
0x598072c046e8: jz 0x598072c043b2
0x598072c046ee: mov $0x4, 0x24(%rbp)
0x598072c046f5: mov %rax, %rdi
0x598072c046f8: mov $0x598072c01ca0, %r11
0x598072c04702: call %r11
0x598072c04705: jmp 0x598072c043b2
0x598072c0470a: mov $0x105c06218, %r9
0x598072c04714: mov %rbx, (%r9)
0x598072c04717: mov %r12, 0x8(%r9)
0x598072c0471b: mov %r13, 0x10(%r9)
0x598072c0471f: mov %r14, 0x18(%r9)
0x598072c04723: mov %r15, 0x20(%r9)
0x598072c04727: mov $0x105c02000, %rdi
0x598072c04731: mov %rbp, %rsi
0x598072c04734: lea -0x40(%rbp), %rsp
0x598072c04738: mov $0x1039680a0, %r11
0x598072c04742: call %r11
0x598072c04745: mov $0x105c06290, %rsi
0x598072c0474f: mov (%rsi), %rsi
0x598072c04752: jmp %rsi
0x598072c04754: test $0x7, %bpl
0x598072c04758: jz 0x598072c04765
0x598072c0475e: mov $0xa, %r11d
0x598072c04764: int3
0x598072c04765: mov $0x105c062a0, %r11
0x598072c0476f: mov $0x0, (%r11)
0x598072c04776: jmp 0x598072c04120
Structures:
%Bl:Object = 0x105c54e00:[Object, {id:0}, NonArray, Proto:0x105c33d80]
Generated JIT code for DFG OSR exit #0 (bc#6, InadequateCoverage) from f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)], with operands = arg0:[Undefined] loc0:[Undefined] loc1:[Undefined] loc2:[Undefined] loc3:cell(%rax) loc4:cell(%rax) loc5:[Undefined] loc6:[Undefined] loc7:[Undefined] loc8:[Undefined] loc9:[Undefined]:
Code at [0x598072c04800, 0x598072c049c0):
0x598072c04800: test $0x7, %bpl
0x598072c04804: jz 0x598072c04811
0x598072c0480a: mov $0xa, %r11d
0x598072c04810: int3
0x598072c04811: mov $0xffff000000000000, %r11
0x598072c0481b: cmp %r11, %r14
0x598072c0481e: jz 0x598072c0482c
0x598072c04824: mov $0x82, %r11d
0x598072c0482a: int3
0x598072c0482b: int3
0x598072c0482c: mov $0xffff000000000002, %r11
0x598072c04836: cmp %r11, %r15
0x598072c04839: jz 0x598072c04846
0x598072c0483f: mov $0x78, %r11d
0x598072c04845: int3
0x598072c04846: mov %rax, 0x105efd488
0x598072c04850: mov %rax, 0x105efd490
0x598072c0485a: lea -0x50(%rbp), %rsp
0x598072c0485e: mov -0x28(%rbp), %rbx
0x598072c04862: mov -0x20(%rbp), %r12
0x598072c04866: mov -0x18(%rbp), %r13
0x598072c0486a: mov -0x10(%rbp), %r14
0x598072c0486e: mov -0x8(%rbp), %r15
0x598072c04872: mov %r13, -0x18(%rbp)
0x598072c04876: mov %r14, -0x10(%rbp)
0x598072c0487a: mov %r15, -0x8(%rbp)
0x598072c0487e: mov $0xffff000000000000, %r14
0x598072c04888: mov %r14, %r15
0x598072c0488b: or $0x2, %r15
0x598072c0488f: mov $0xa, 0x28(%rbp)
0x598072c04897: mov 0x105efd488, %rax
0x598072c048a1: mov %rax, -0x20(%rbp)
0x598072c048a5: mov 0x105efd490, %rax
0x598072c048af: mov %rax, -0x28(%rbp)
0x598072c048b3: mov $0xa, -0x30(%rbp)
0x598072c048bb: mov $0xa, -0x38(%rbp)
0x598072c048c3: mov $0xa, -0x40(%rbp)
0x598072c048cb: mov $0xa, -0x48(%rbp)
0x598072c048d3: mov $0xa, -0x50(%rbp)
0x598072c048db: mov $0x105eba704, %r11
0x598072c048e5: add $0x1, (%r11)
0x598072c048e9: mov $0x105c7e800, %rax
0x598072c048f3: mov 0x214(%rax), %edx
0x598072c048f9: inc %edx
0x598072c048fb: mov %edx, 0x214(%rax)
0x598072c04901: mov $0x105c7f100, %rax
0x598072c0490b: cmp $0x0, 0x204(%rax)
0x598072c04912: jge 0x598072c04925
0x598072c04918: mov $0x64, %esi
0x598072c0491d: cmp %esi, %edx
0x598072c0491f: jbe 0x598072c04944
0x598072c04925: mov %rax, %rdi
0x598072c04928: mov $0x105eba700, %rsi
0x598072c04932: mov $0x1035c6e20, %r10
0x598072c0493c: call %r10
0x598072c0493f: jmp 0x598072c04962
0x598072c04944: mov $0xfffffc18, 0x204(%rax)
0x598072c0494e: mov $0x50a, 0x20c(%rax)
0x598072c04958: mov $0x447a0000, 0x208(%rax)
0x598072c04962: mov $0x105c7f100, %r11
0x598072c0496c: mov %r11, 0x10(%rbp)
0x598072c04970: mov $0x6, 0x24(%rbp)
0x598072c04977: mov $0x105c7f100, %rsi
0x598072c04981: cmp $0x0, 0x7(%rsi)
0x598072c04985: jnz 0x598072c0499b
0x598072c0498b: mov %rbp, %rdi
0x598072c0498e: mov $0x103967ee0, %r10
0x598072c04998: call %r10
0x598072c0499b: lea -0x50(%rbp), %rsp
0x598072c0499f: mov $0x5980b2c00a64, %rdx
0x598072c049a9: jmp %rdx
Jettisoning f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)] and counting reoptimization due to OSRExit.
Did invalidate f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)]
Did count reoptimization for f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)]
Did install baseline version of f#EI3Q4I:[0x105c7e800->0x105c7f100->0x105c6c900, DFGFunctionCall, 56 (StrictMode)]
Generated DFG JIT code for check#CM9wQu:[0x105c7e500->0x105c7fa00->0x105c6cc00, DFGFunctionCall, 80], instruction count = 80:
Optimized with execution counter = 945.000000/1379.000000, -55
Code at [0x598072c04d40, 0x598072c0552a):
0x598072c04d40: push %rbp
0x598072c04d41: mov %rsp, %rbp
0x598072c04d44: mov $0x105c7e500, %r11
0x598072c04d4e: mov %r11, 0x10(%rbp)
0x598072c04d52: lea -0x140(%rbp), %rsi
0x598072c04d59: mov $0x105c06378, %r11
0x598072c04d63: cmp %rsi, (%r11)
0x598072c04d66: ja 0x598072c053be
0x598072c04d6c: lea -0xe0(%rbp), %rsp
0x598072c04d73: test $0xf, %spl
0x598072c04d77: jz 0x598072c04d84
0x598072c04d7d: mov $0x64, %r11d
0x598072c04d83: int3
0x598072c04d84: mov %rbx, -0x28(%rbp)
0x598072c04d88: mov %r12, -0x20(%rbp)
0x598072c04d8c: mov %r13, -0x18(%rbp)
0x598072c04d90: mov %r14, -0x10(%rbp)
0x598072c04d94: mov %r15, -0x8(%rbp)
0x598072c04d98: mov $0xffff000000000000, %r14
0x598072c04da2: mov %r14, %r15
0x598072c04da5: or $0x2, %r15
Block #0 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors:
Successors: #4 (ForwardEdge) #5 (ForwardEdge)
Dominated by: #0
Dominates: #0 #4 #5
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 0/2
0x598072c04da9: test $0x7, %bpl
0x598072c04dad: jz 0x598072c04dba
0x598072c04db3: mov $0xa, %r11d
0x598072c04db9: int3
0x598072c04dba: mov $0xffff000000000000, %r11
0x598072c04dc4: cmp %r11, %r14
0x598072c04dc7: jz 0x598072c04dd5
0x598072c04dcd: mov $0x82, %r11d
0x598072c04dd3: int3
0x598072c04dd4: int3
0x598072c04dd5: mov $0xffff000000000002, %r11
0x598072c04ddf: cmp %r11, %r15
0x598072c04de2: jz 0x598072c04def
0x598072c04de8: mov $0x78, %r11d
0x598072c04dee: int3
0x598072c04def: cmp $0x989680, 0x20(%rbp)
0x598072c04df6: jb 0x598072c04e03
0x598072c04dfc: mov $0x1e, %r11d
0x598072c04e02: int3
0:< 1:-> SetArgument(IsFlushed, this(a), machine:this, W:SideState, bc#0) predicting Otherobj
0x598072c04e03: mov $0x105c06398, %r11
0x598072c04e0d: mov (%r11), %r11
0x598072c04e10: test %r11, %r11
0x598072c04e13: jz 0x598072c04e20
0x598072c04e19: mov $0x113, %r11d
0x598072c04e1f: int3
Generated DFG JIT code for f#EI3Q4I:[0x10b086500->0x10b086e00->0x10b06c800, DFGFunctionCall, 56 (StrictMode)], instruction count = 56:
Optimized with execution counter = 375.000000/1290.000000, -625
Code at [0x5fb903a04260, 0x5fb903a04ad2):
0x5fb903a04260: push %rbp
0x5fb903a04261: mov %rsp, %rbp
0x5fb903a04264: mov $0x10b086500, %r11
0x5fb903a0426e: mov %r11, 0x10(%rbp)
0x5fb903a04272: lea -0x50(%rbp), %rsi
0x5fb903a04276: mov $0x10b006378, %r11
0x5fb903a04280: cmp %rsi, (%r11)
0x5fb903a04283: ja 0x5fb903a048f4
0x5fb903a04289: lea -0x40(%rbp), %rsp
0x5fb903a0428d: test $0xf, %spl
0x5fb903a04291: jz 0x5fb903a0429e
0x5fb903a04297: mov $0x64, %r11d
0x5fb903a0429d: int3
0x5fb903a0429e: mov %rbx, -0x28(%rbp)
0x5fb903a042a2: mov %r12, -0x20(%rbp)
0x5fb903a042a6: mov %r13, -0x18(%rbp)
0x5fb903a042aa: mov %r14, -0x10(%rbp)
0x5fb903a042ae: mov %r15, -0x8(%rbp)
0x5fb903a042b2: mov $0xffff000000000000, %r14
0x5fb903a042bc: mov %r14, %r15
0x5fb903a042bf: or $0x2, %r15
Block #0 (bc#0): (OSR target)
Execution count: 1.000000
Predecessors:
Successors: #1 (ForwardEdge) #2 (ForwardEdge)
Dominated by: #0
Dominates: #0 #1 #2
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 0/2
0x5fb903a042c3: test $0x7, %bpl
0x5fb903a042c7: jz 0x5fb903a042d4
0x5fb903a042cd: mov $0xa, %r11d
0x5fb903a042d3: int3
0x5fb903a042d4: mov $0xffff000000000000, %r11
0x5fb903a042de: cmp %r11, %r14
0x5fb903a042e1: jz 0x5fb903a042ef
0x5fb903a042e7: mov $0x82, %r11d
0x5fb903a042ed: int3
0x5fb903a042ee: int3
0x5fb903a042ef: mov $0xffff000000000002, %r11
0x5fb903a042f9: cmp %r11, %r15
0x5fb903a042fc: jz 0x5fb903a04309
0x5fb903a04302: mov $0x78, %r11d
0x5fb903a04308: int3
0x5fb903a04309: cmp $0x989680, 0x20(%rbp)
0x5fb903a04310: jb 0x5fb903a0431d
0x5fb903a04316: mov $0x1e, %r11d
0x5fb903a0431c: int3
1:< 7:loc5> JSConstant(JS|PureInt, Other, Undefined, bc#0)
0x5fb903a0431d: mov $0x10b006398, %r11
0x5fb903a04327: mov (%r11), %r11
0x5fb903a0432a: test %r11, %r11
0x5fb903a0432d: jz 0x5fb903a0433a
0x5fb903a04333: mov $0x113, %r11d
0x5fb903a04339: int3
2:<!0:-> MovHint(@1, MustGen, loc0, W:SideState, ClobbersExit, bc#0)
0x5fb903a0433a: mov $0x10b006398, %r11
0x5fb903a04344: mov (%r11), %r11
0x5fb903a04347: test %r11, %r11
0x5fb903a0434a: jz 0x5fb903a04357
0x5fb903a04350: mov $0x113, %r11d
0x5fb903a04356: int3
4:<!0:-> MovHint(@1, MustGen, loc1, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a04357: mov $0x10b006398, %r11
0x5fb903a04361: mov (%r11), %r11
0x5fb903a04364: test %r11, %r11
0x5fb903a04367: jz 0x5fb903a04374
0x5fb903a0436d: mov $0x113, %r11d
0x5fb903a04373: int3
6:<!0:-> MovHint(@1, MustGen, loc2, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a04374: mov $0x10b006398, %r11
0x5fb903a0437e: mov (%r11), %r11
0x5fb903a04381: test %r11, %r11
0x5fb903a04384: jz 0x5fb903a04391
0x5fb903a0438a: mov $0x113, %r11d
0x5fb903a04390: int3
8:<!0:-> MovHint(@1, MustGen, loc3, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a04391: mov $0x10b006398, %r11
0x5fb903a0439b: mov (%r11), %r11
0x5fb903a0439e: test %r11, %r11
0x5fb903a043a1: jz 0x5fb903a043ae
0x5fb903a043a7: mov $0x113, %r11d
0x5fb903a043ad: int3
10:<!0:-> MovHint(@1, MustGen, loc4, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a043ae: mov $0x10b006398, %r11
0x5fb903a043b8: mov (%r11), %r11
0x5fb903a043bb: test %r11, %r11
0x5fb903a043be: jz 0x5fb903a043cb
0x5fb903a043c4: mov $0x113, %r11d
0x5fb903a043ca: int3
12:<!0:-> MovHint(@1, MustGen, loc5, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a043cb: mov $0x10b006398, %r11
0x5fb903a043d5: mov (%r11), %r11
0x5fb903a043d8: test %r11, %r11
0x5fb903a043db: jz 0x5fb903a043e8
0x5fb903a043e1: mov $0x113, %r11d
0x5fb903a043e7: int3
14:<!0:-> MovHint(@1, MustGen, loc6, W:SideState, ClobbersExit, bc#0, ExitInvalid)
0x5fb903a043e8: mov $0x10b006398, %r11
0x5fb903a043f2: mov (%r11), %r11
0x5fb903a043f5: test %r11, %r11
0x5fb903a043f8: jz 0x5fb903a04405
0x5fb903a043fe: mov $0x113, %r11d
0x5fb903a04404: int3
16:< 1:loc5> GetCallee(JS|UseAsOther, Function, R:Stack(3), bc#1)
0x5fb903a04405: mov $0x10b006398, %r11
0x5fb903a0440f: mov (%r11), %r11
0x5fb903a04412: test %r11, %r11
0x5fb903a04415: jz 0x5fb903a04422
0x5fb903a0441b: mov $0x113, %r11d
0x5fb903a04421: int3
0x5fb903a04422: mov 0x18(%rbp), %rax
17:< 5:loc5> GetScope(KnownCell:@16, JS|UseAsOther, Otherobj, bc#1)
0x5fb903a04426: mov $0x10b006398, %r11
0x5fb903a04430: mov (%r11), %r11
0x5fb903a04433: test %r11, %r11
0x5fb903a04436: jz 0x5fb903a04443
0x5fb903a0443c: mov $0x113, %r11d
0x5fb903a04442: int3
0x5fb903a04443: test %rax, %r15
0x5fb903a04446: jz 0x5fb903a04453
0x5fb903a0444c: mov $0xb4, %r11d
0x5fb903a04452: int3
0x5fb903a04453: mov 0x10(%rax), %rax
18:<!0:-> MovHint(@17, MustGen, loc3, W:SideState, ClobbersExit, bc#1)
0x5fb903a04457: mov $0x10b006398, %r11
0x5fb903a04461: mov (%r11), %r11
0x5fb903a04464: test %r11, %r11
0x5fb903a04467: jz 0x5fb903a04474
0x5fb903a0446d: mov $0x113, %r11d
0x5fb903a04473: int3
20:<!0:-> MovHint(@17, MustGen, loc4, W:SideState, ClobbersExit, bc#3)
0x5fb903a04474: mov $0x10b006398, %r11
0x5fb903a0447e: mov (%r11), %r11
0x5fb903a04481: test %r11, %r11
0x5fb903a04484: jz 0x5fb903a04491
0x5fb903a0448a: mov $0x113, %r11d
0x5fb903a04490: int3
23:<!0:-> MovHint(@17, MustGen, loc7, W:SideState, ClobbersExit, bc#6)
0x5fb903a04491: mov $0x10b006398, %r11
0x5fb903a0449b: mov (%r11), %r11
0x5fb903a0449e: test %r11, %r11
0x5fb903a044a1: jz 0x5fb903a044ae
0x5fb903a044a7: mov $0x113, %r11d
0x5fb903a044ad: int3
26:< 1:loc6> GetClosureVar(KnownCell:@17, JS|PureInt, Function, scope1, R:ScopeProperties(1), Exits, bc#13) predicting Function
0x5fb903a044ae: mov $0x10b006398, %r11
0x5fb903a044b8: mov (%r11), %r11
0x5fb903a044bb: test %r11, %r11
0x5fb903a044be: jz 0x5fb903a044cb
0x5fb903a044c4: mov $0x113, %r11d
0x5fb903a044ca: int3
0x5fb903a044cb: test %rax, %r15
0x5fb903a044ce: jz 0x5fb903a044db
0x5fb903a044d4: mov $0xb4, %r11d
0x5fb903a044da: int3
0x5fb903a044db: mov 0x28(%rax), %rsi
27:<!0:-> MovHint(@26, MustGen, loc6, W:SideState, ClobbersExit, bc#13)
0x5fb903a044df: mov $0x10b006398, %r11
0x5fb903a044e9: mov (%r11), %r11
0x5fb903a044ec: test %r11, %r11
0x5fb903a044ef: jz 0x5fb903a044fc
0x5fb903a044f5: mov $0x113, %r11d
0x5fb903a044fb: int3
30:< 6:loc5> GetClosureVar(KnownCell:@17, JS|UseAsOther, Final, scope0, R:ScopeProperties(0), Exits, bc#21) predicting Final
0x5fb903a044fc: mov $0x10b006398, %r11
0x5fb903a04506: mov (%r11), %r11
0x5fb903a04509: test %r11, %r11
0x5fb903a0450c: jz 0x5fb903a04519
0x5fb903a04512: mov $0x113, %r11d
0x5fb903a04518: int3
0x5fb903a04519: test %rax, %r15
0x5fb903a0451c: jz 0x5fb903a04529
0x5fb903a04522: mov $0xb4, %r11d
0x5fb903a04528: int3
0x5fb903a04529: mov 0x20(%rax), %rsi
31:<!0:-> MovHint(@30, MustGen, this, W:SideState, ClobbersExit, bc#21)
0x5fb903a0452d: mov $0x10b006398, %r11
0x5fb903a04537: mov (%r11), %r11
0x5fb903a0453a: test %r11, %r11
0x5fb903a0453d: jz 0x5fb903a0454a
0x5fb903a04543: mov $0x113, %r11d
0x5fb903a04549: int3
34:<!0:-> MovHint(@30, MustGen, loc5, W:SideState, ClobbersExit, bc#31)
0x5fb903a0454a: mov $0x10b006398, %r11
0x5fb903a04554: mov (%r11), %r11
0x5fb903a04557: test %r11, %r11
0x5fb903a0455a: jz 0x5fb903a04567
0x5fb903a04560: mov $0x113, %r11d
0x5fb903a04566: int3
38:<!0:-> CheckStructure(Check:Cell:@30, MustGen, [%B0:Object], R:JSCell_structureID, Exits, bc#36)
0x5fb903a04567: mov $0x10b006398, %r11
0x5fb903a04571: mov (%r11), %r11
0x5fb903a04574: test %r11, %r11
0x5fb903a04577: jz 0x5fb903a04584
0x5fb903a0457d: mov $0x113, %r11d
0x5fb903a04583: int3
0x5fb903a04584: test %rsi, %r15
0x5fb903a04587: jnz 0x5fb903a04a36
0x5fb903a0458d: cmp $0x1de, (%rsi)
0x5fb903a04593: jnz 0x5fb903a04a5d
39:< 2:loc6> GetByOffset(KnownCell:@30, KnownCell:@30, JS|UseAsOther, Stringident, id2{id}, 0, inferredType = String, R:NamedProperties(2), Exits, bc#36) predicting Stringident
0x5fb903a04599: mov $0x10b006398, %r11
0x5fb903a045a3: mov (%r11), %r11
0x5fb903a045a6: test %r11, %r11
0x5fb903a045a9: jz 0x5fb903a045b6
0x5fb903a045af: mov $0x113, %r11d
0x5fb903a045b5: int3
0x5fb903a045b6: test %rsi, %r15
0x5fb903a045b9: jz 0x5fb903a045c6
0x5fb903a045bf: mov $0xb4, %r11d
0x5fb903a045c5: int3
0x5fb903a045c6: mov 0x10(%rsi), %rax
40:<!0:-> MovHint(@39, MustGen, loc8, W:SideState, ClobbersExit, bc#36)
0x5fb903a045ca: mov $0x10b006398, %r11
0x5fb903a045d4: mov (%r11), %r11
0x5fb903a045d7: test %r11, %r11
0x5fb903a045da: jz 0x5fb903a045e7
0x5fb903a045e0: mov $0x113, %r11d
0x5fb903a045e6: int3
42:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): A, ID: 4, bc#45)
0x5fb903a045e7: mov $0x10b006398, %r11
0x5fb903a045f1: mov (%r11), %r11
0x5fb903a045f4: test %r11, %r11
0x5fb903a045f7: jz 0x5fb903a04604
0x5fb903a045fd: mov $0x113, %r11d
0x5fb903a04603: int3
43:< 2:loc7> CompareStrictEq(Check:StringIdent:@39, StringIdent:@42, Boolean|UseAsOther, Bool, Exits, bc#45)
0x5fb903a04604: mov $0x10b006398, %r11
0x5fb903a0460e: mov (%r11), %r11
0x5fb903a04611: test %r11, %r11
0x5fb903a04614: jz 0x5fb903a04621
0x5fb903a0461a: mov $0x113, %r11d
0x5fb903a04620: int3
0x5fb903a04621: mov $0x10b03b7a0, %r8
0x5fb903a0462b: mov 0x10(%rax), %rdx
0x5fb903a0462f: test %rdx, %rdx
0x5fb903a04632: jz 0x5fb903a04a84
0x5fb903a04638: test $0x10, 0x10(%rdx)
0x5fb903a0463c: jz 0x5fb903a04aab
0x5fb903a04642: mov 0x10(%r8), %rcx
0x5fb903a04646: cmp %rcx, %rdx
0x5fb903a04649: setz %dl
0x5fb903a0464c: movzx %dl, %edx
0x5fb903a0464f: or $0x6, %edx
53:<!0:-> Phantom(@30, MustGen, bc#45)
0x5fb903a04652: mov $0x10b006398, %r11
0x5fb903a0465c: mov (%r11), %r11
0x5fb903a0465f: test %r11, %r11
0x5fb903a04662: jz 0x5fb903a0466f
0x5fb903a04668: mov $0x113, %r11d
0x5fb903a0466e: int3
44:<!0:-> MovHint(@43, MustGen, loc8, W:SideState, ClobbersExit, bc#45)
0x5fb903a0466f: mov $0x10b006398, %r11
0x5fb903a04679: mov (%r11), %r11
0x5fb903a0467c: test %r11, %r11
0x5fb903a0467f: jz 0x5fb903a0468c
0x5fb903a04685: mov $0x113, %r11d
0x5fb903a0468b: int3
46:<!0:-> Branch(KnownBoolean:@43, MustGen, T:#1/w:1.000000, F:#2/w:1.000000, W:SideState, bc#49)
0x5fb903a0468c: mov $0x10b006398, %r11
0x5fb903a04696: mov (%r11), %r11
0x5fb903a04699: test %r11, %r11
0x5fb903a0469c: jz 0x5fb903a046a9
0x5fb903a046a2: mov $0x113, %r11d
0x5fb903a046a8: int3
0x5fb903a046a9: test $0x1, %dl
0x5fb903a046ac: jz 0x5fb903a047d3
Block #1 (bc#52):
Execution count: 1.000000
Predecessors: #0
Successors:
Dominated by: #0 #1
Dominates: #1
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 2/1
0x5fb903a046b2: test $0x7, %bpl
0x5fb903a046b6: jz 0x5fb903a046c3
0x5fb903a046bc: mov $0xa, %r11d
0x5fb903a046c2: int3
0x5fb903a046c3: mov $0xffff000000000000, %r11
0x5fb903a046cd: cmp %r11, %r14
0x5fb903a046d0: jz 0x5fb903a046de
0x5fb903a046d6: mov $0x82, %r11d
0x5fb903a046dc: int3
0x5fb903a046dd: int3
0x5fb903a046de: mov $0xffff000000000002, %r11
0x5fb903a046e8: cmp %r11, %r15
0x5fb903a046eb: jz 0x5fb903a046f8
0x5fb903a046f1: mov $0x78, %r11d
0x5fb903a046f7: int3
0x5fb903a046f8: cmp $0x989680, 0x20(%rbp)
0x5fb903a046ff: jb 0x5fb903a0470c
0x5fb903a04705: mov $0x1e, %r11d
0x5fb903a0470b: int3
47:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): ok, ID: 4, bc#52)
0x5fb903a0470c: mov $0x10b006398, %r11
0x5fb903a04716: mov (%r11), %r11
0x5fb903a04719: test %r11, %r11
0x5fb903a0471c: jz 0x5fb903a04729
0x5fb903a04722: mov $0x113, %r11d
0x5fb903a04728: int3
52:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#52)
0x5fb903a04729: mov $0x10b006398, %r11
0x5fb903a04733: mov (%r11), %r11
0x5fb903a04736: test %r11, %r11
0x5fb903a04739: jz 0x5fb903a04746
0x5fb903a0473f: mov $0x113, %r11d
0x5fb903a04745: int3
0x5fb903a04746: mov $0x10b2b7144, %r11
0x5fb903a04750: add $0xf, (%r11)
0x5fb903a04754: js 0x5fb903a04793
0x5fb903a0475a: mov %rbp, %rdi
0x5fb903a0475d: mov $0x10b0047f0, %r11
0x5fb903a04767: mov $0xbadbeef, (%r11)
0x5fb903a0476e: mov $0x10b0047f4, %r11
0x5fb903a04778: mov $0xbadbeef, (%r11)
0x5fb903a0477f: mov $0x0, 0x24(%rbp)
0x5fb903a04786: mov $0x108a0c0c0, %r11
0x5fb903a04790: call %r11
48:<!0:-> Return(@47, MustGen, W:SideState, Exits, bc#52)
0x5fb903a04793: mov $0x10b006398, %r11
0x5fb903a0479d: mov (%r11), %r11
0x5fb903a047a0: test %r11, %r11
0x5fb903a047a3: jz 0x5fb903a047b0
0x5fb903a047a9: mov $0x113, %r11d
0x5fb903a047af: int3
0x5fb903a047b0: mov $0x10b04d300, %rax
0x5fb903a047ba: mov -0x28(%rbp), %rbx
0x5fb903a047be: mov -0x20(%rbp), %r12
0x5fb903a047c2: mov -0x18(%rbp), %r13
0x5fb903a047c6: mov -0x10(%rbp), %r14
0x5fb903a047ca: mov -0x8(%rbp), %r15
0x5fb903a047ce: mov %rbp, %rsp
0x5fb903a047d1: pop %rbp
0x5fb903a047d2: ret
Block #2 (bc#54):
Execution count: 1.000000
Predecessors: #0
Successors:
Dominated by: #0 #2
Dominates: #2
Dominance Frontier:
Iterated Dominance Frontier:
Pre/Post Numbering: 1/0
0x5fb903a047d3: test $0x7, %bpl
0x5fb903a047d7: jz 0x5fb903a047e4
0x5fb903a047dd: mov $0xa, %r11d
0x5fb903a047e3: int3
0x5fb903a047e4: mov $0xffff000000000000, %r11
0x5fb903a047ee: cmp %r11, %r14
0x5fb903a047f1: jz 0x5fb903a047ff
0x5fb903a047f7: mov $0x82, %r11d
0x5fb903a047fd: int3
0x5fb903a047fe: int3
0x5fb903a047ff: mov $0xffff000000000002, %r11
0x5fb903a04809: cmp %r11, %r15
0x5fb903a0480c: jz 0x5fb903a04819
0x5fb903a04812: mov $0x78, %r11d
0x5fb903a04818: int3
0x5fb903a04819: cmp $0x989680, 0x20(%rbp)
0x5fb903a04820: jb 0x5fb903a0482d
0x5fb903a04826: mov $0x1e, %r11d
0x5fb903a0482c: int3
49:< 1:loc7> JSConstant(JS|UseAsOther, Stringident, Strong:String (atomic) (identifier): ok, ID: 4, bc#54)
0x5fb903a0482d: mov $0x10b006398, %r11
0x5fb903a04837: mov (%r11), %r11
0x5fb903a0483a: test %r11, %r11
0x5fb903a0483d: jz 0x5fb903a0484a
0x5fb903a04843: mov $0x113, %r11d
0x5fb903a04849: int3
51:<!0:-> CheckTierUpAtReturn(MustGen, W:SideState, Exits, bc#54)
0x5fb903a0484a: mov $0x10b006398, %r11
0x5fb903a04854: mov (%r11), %r11
0x5fb903a04857: test %r11, %r11
0x5fb903a0485a: jz 0x5fb903a04867
0x5fb903a04860: mov $0x113, %r11d
0x5fb903a04866: int3
0x5fb903a04867: mov $0x10b2b7144, %r11
0x5fb903a04871: add $0xf, (%r11)
0x5fb903a04875: js 0x5fb903a048b4
0x5fb903a0487b: mov %rbp, %rdi
0x5fb903a0487e: mov $0x10b0047f0, %r11
0x5fb903a04888: mov $0xbadbeef, (%r11)
0x5fb903a0488f: mov $0x10b0047f4, %r11
0x5fb903a04899: mov $0xbadbeef, (%r11)
0x5fb903a048a0: mov $0x1, 0x24(%rbp)
0x5fb903a048a7: mov $0x108a0c0c0, %r11
0x5fb903a048b1: call %r11
50:<!0:-> Return(@49, MustGen, W:SideState, Exits, bc#54)
0x5fb903a048b4: mov $0x10b006398, %r11
0x5fb903a048be: mov (%r11), %r11
0x5fb903a048c1: test %r11, %r11
0x5fb903a048c4: jz 0x5fb903a048d1
0x5fb903a048ca: mov $0x113, %r11d
0x5fb903a048d0: int3
0x5fb903a048d1: mov $0x10b04d300, %rax
0x5fb903a048db: mov -0x28(%rbp), %rbx
0x5fb903a048df: mov -0x20(%rbp), %r12
0x5fb903a048e3: mov -0x18(%rbp), %r13
0x5fb903a048e7: mov -0x10(%rbp), %r14
0x5fb903a048eb: mov -0x8(%rbp), %r15
0x5fb903a048ef: mov %rbp, %rsp
0x5fb903a048f2: pop %rbp
0x5fb903a048f3: ret
(End Of Main Path)
0x5fb903a048f4: mov $0x2, 0x24(%rbp)
0x5fb903a048fb: mov $0x10b086500, %rsi
0x5fb903a04905: mov %rbp, %rdi
0x5fb903a04908: mov $0x10b0047f0, %r11
0x5fb903a04912: mov $0xbadbeef, (%r11)
0x5fb903a04919: mov $0x10b0047f4, %r11
0x5fb903a04923: mov $0xbadbeef, (%r11)
0x5fb903a0492a: mov $0x3, 0x24(%rbp)
0x5fb903a04931: mov $0x108da4b40, %r11
0x5fb903a0493b: call %r11
0x5fb903a0493e: mov $0x10b006398, %r11
0x5fb903a04948: mov (%r11), %r11
0x5fb903a0494b: test %r11, %r11
0x5fb903a0494e: jnz 0x5fb903a049ec
0x5fb903a04954: push %rbp
0x5fb903a04955: mov %rsp, %rbp
0x5fb903a04958: mov $0x10b086500, %r11
0x5fb903a04962: mov %r11, 0x10(%rbp)
0x5fb903a04966: mov 0x20(%rbp), %esi
0x5fb903a04969: cmp $0x1, %esi
0x5fb903a0496c: jae 0x5fb903a04272
0x5fb903a04972: mov $0x4, 0x24(%rbp)
0x5fb903a04979: mov %rbp, %rdi
0x5fb903a0497c: mov $0x10b0047f0, %r11
0x5fb903a04986: mov $0xbadbeef, (%r11)
0x5fb903a0498d: mov $0x10b0047f4, %r11
0x5fb903a04997: mov $0xbadbeef, (%r11)
0x5fb903a0499e: mov $0x5, 0x24(%rbp)
0x5fb903a049a5: mov $0x108da4bd0, %r11
0x5fb903a049af: call %r11
0x5fb903a049b2: mov $0x10b006398, %r11
0x5fb903a049bc: mov (%r11), %r11
0x5fb903a049bf: test %r11, %r11
0x5fb903a049c2: jnz 0x5fb903a049ec
0x5fb903a049c8: test %eax, %eax
0x5fb903a049ca: jz 0x5fb903a04272
0x5fb903a049d0: mov $0x6, 0x24(%rbp)
0x5fb903a049d7: mov %rax, %rdi
0x5fb903a049da: mov $0x5fb903a01ca0, %r11
0x5fb903a049e4: call %r11
0x5fb903a049e7: jmp 0x5fb903a04272
0x5fb903a049ec: mov $0x10b006218, %r9
0x5fb903a049f6: mov %rbx, (%r9)
0x5fb903a049f9: mov %r12, 0x8(%r9)
0x5fb903a049fd: mov %r13, 0x10(%r9)
0x5fb903a04a01: mov %r14, 0x18(%r9)
0x5fb903a04a05: mov %r15, 0x20(%r9)
0x5fb903a04a09: mov $0x10b002000, %rdi
0x5fb903a04a13: mov %rbp, %rsi
0x5fb903a04a16: lea -0x40(%rbp), %rsp
0x5fb903a04a1a: mov $0x108dad0a0, %r11
0x5fb903a04a24: call %r11
0x5fb903a04a27: mov $0x10b006290, %rsi
0x5fb903a04a31: mov (%rsi), %rsi
0x5fb903a04a34: jmp %rsi
0x5fb903a04a36: test $0x7, %bpl
0x5fb903a04a3a: jz 0x5fb903a04a47
0x5fb903a04a40: mov $0xa, %r11d
0x5fb903a04a46: int3
0x5fb903a04a47: mov $0x10b0062a0, %r11
0x5fb903a04a51: mov $0x0, (%r11)
0x5fb903a04a58: jmp 0x5fb903a03fe0
0x5fb903a04a5d: test $0x7, %bpl
0x5fb903a04a61: jz 0x5fb903a04a6e
0x5fb903a04a67: mov $0xa, %r11d
0x5fb903a04a6d: int3
0x5fb903a04a6e: mov $0x10b0062a0, %r11
0x5fb903a04a78: mov $0x1, (%r11)
0x5fb903a04a7f: jmp 0x5fb903a03fe0
0x5fb903a04a84: test $0x7, %bpl
0x5fb903a04a88: jz 0x5fb903a04a95
0x5fb903a04a8e: mov $0xa, %r11d
0x5fb903a04a94: int3
0x5fb903a04a95: mov $0x10b0062a0, %r11
0x5fb903a04a9f: mov $0x2, (%r11)
0x5fb903a04aa6: jmp 0x5fb903a03fe0
0x5fb903a04aab: test $0x7, %bpl
0x5fb903a04aaf: jz 0x5fb903a04abc
0x5fb903a04ab5: mov $0xa, %r11d
0x5fb903a04abb: int3
0x5fb903a04abc: mov $0x10b0062a0, %r11
0x5fb903a04ac6: mov $0x3, (%r11)
0x5fb903a04acd: jmp 0x5fb903a03fe0
Structures:
%B0:Object = 0x10b054d80:[Object, {id:0}, NonArray, Proto:0x10b033d60]
var testCase = function (actual, expected, message) {
if (actual !== expected) {
throw message + ". Expected '" + expected + "', but was '" + actual + "'";
}
};
var A = class A {
constructor() {
this.id = 'A'
}
};
var B = class B extends A {
constructor (beforeSuper) {
var f = () => {
//debug('S1.2');
var s = this;
//debug('S1.2.1')
//debug(s);
if (this.id === 'A') {
//debug('S1.3');
return 'ok';
}
//debug('S1.4');
return 'ok';
};
let val;
//debug('S1.0');
if (beforeSuper) {
//debug('S1.1');
//var s = this;
//debug(s);
val = f();
//debug('S1.3');
super();
debug('S1.3');
} else {
super();
val = f();
}
this.res = val;
}
};
var tryToCreate = function (classForCreate) {
let result = false;
try {
new B(true);
} catch (e) {
result = e instanceof ReferenceError;
}
return result;
}
var check = function (classForCheck) {
testCase(tryToCreate(classForCheck), true, 'Exception wasn\'t thrown or was not a reference error');
var result = new classForCheck(false);
}
var checkSuccess = function (classForCheck) {
testCase((new classForCheck(false)).res, 'ok', 'Error in setting id ');
};
noInline(B);
for (var i = 0; i < 10000; i++) {
check(B);
}
for (var i = 0; i < 10000; i++) {
checkSuccess(B);
}
<global>#Dli5SE:[0x10b087d00->0x10b06d700, NoneGlobal, 38]: 38 m_instructions; 304 bytes; 1 parameter(s); 16 callee register(s); 5 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] mov loc5, Undefined(const0)
[ 9] resolve_scope loc10, loc3, load(@id0), <GlobalProperty>, 1, 0x10b043700
[ 16] get_from_scope loc6, loc10, load(@id0), 1024<ThrowIfNotFound|GlobalProperty|NotInitialization>, 163 predicting None
[ 24] mov loc9, String (atomic) (identifier): test_class_12.js, ID: 4(const1)
[ 27] call loc5, loc6, 2, 16 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 36] end loc5
Identifiers:
id0 = load
Constants:
k0 = Undefined
k1 = String (atomic) (identifier): test_class_12.js, ID: 4
<global>#DNtw0K:[0x10b087a00->0x10b06d600, NoneGlobal, 726]: 726 m_instructions; 5808 bytes; 1 parameter(s); 26 callee register(s); 5 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] mov loc5, Undefined(const0)
[ 9] resolve_scope loc6, loc3, testCase(@id0), <GlobalVar>, 1, 0x10b043700
[ 16] new_func_exp loc7, loc3, f0
[ 20] put_to_scope loc6, testCase(@id0), loc7, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188518536
[ 27] resolve_scope loc6, loc3, A(@id1), <GlobalVar>, 1, 0x10b043700
[ 34] mov loc7, <JSValue()>(const1)
[ 37] new_func_exp loc8, loc3, f1
[ 41] new_object loc9, 2
[ 45] mov loc10, String (atomic) (identifier): constructor, ID: 4(const2)
[ 48] new_object loc11, 3
[ 52] mov loc12, True(const3)
[ 55] put_by_id loc11, configurable(@id2), loc12, IsDirect|Bottom
[ 64] put_by_id loc11, writable(@id3), loc12, IsDirect|Bottom
[ 73] put_by_id loc11, value(@id4), loc8, IsDirect|Bottom
[ 82] mov loc13, Cell: 0x10b06a2f0 (0x10b02a400:[Function, {name:100, length:101}, NonArray, Proto:0x10b039e00, Leaf]), ID: 56(const4)
[ 85] mov loc18, Undefined(const0)
[ 88] mov loc17, loc9
[ 91] mov loc16, loc10
[ 94] mov loc15, loc11
[ 97] call loc19, loc13, 4, 24 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 106] mov loc11, String (atomic) (identifier): prototype, ID: 4(const5)
[ 109] new_object loc12, 2
[ 113] mov loc13, True(const3)
[ 116] mov loc14, False(const6)
[ 119] put_by_id loc12, writable(@id3), loc14, IsDirect|Bottom
[ 128] put_by_id loc12, value(@id4), loc9, IsDirect|Bottom
[ 137] mov loc14, Cell: 0x10b06a2f0 (0x10b02a400:[Function, {name:100, length:101}, NonArray, Proto:0x10b039e00, Leaf]), ID: 56(const4)
[ 140] mov loc20, Undefined(const0)
[ 143] mov loc19, loc8
[ 146] mov loc18, loc11
[ 149] mov loc17, loc12
[ 152] call loc21, loc14, 4, 26 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 161] mov loc7, loc8
[ 164] put_to_scope loc6, A(@id1), loc8, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188576616
[ 171] resolve_scope loc6, loc3, B(@id5), <GlobalVar>, 1, 0x10b043700
[ 178] mov loc7, <JSValue()>(const1)
[ 181] resolve_scope loc8, loc3, A(@id1), <GlobalVar>, 1, 0x10b043700
[ 188] get_from_scope loc8, loc8, A(@id1), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188576616 predicting None
[ 196] new_func_exp loc9, loc3, f2
[ 200] new_object loc10, 1
[ 204] mov loc11, Null(const7)
[ 207] is_undefined loc12, loc8
[ 210] jtrue loc12, 15(->225)
[ 213] eq_null loc12, loc8
[ 216] jtrue loc12, 39(->255)
[ 219] is_object loc12, loc8
[ 222] jtrue loc12, 6(->228)
[ 225] throw_static_error String (atomic) (identifier): The superclass is not an object., ID: 4(const8), false
[ 228] get_by_id loc11, loc8, prototype(@id6) predicting None
[ 237] is_object_or_null loc12, loc11
[ 240] jtrue loc12, 6(->246)
[ 243] throw_static_error String (atomic) (identifier): The superclass's prototype is not an object., ID: 4(const9), false
[ 246] put_by_id loc9, __proto__(@id7), loc8, Bottom
[ 255] put_by_id loc10, __proto__(@id7), loc11, Bottom
[ 264] put_by_id loc9, PrivateSymbol.homeObject(@id8), loc10, Bottom
[ 273] mov loc11, String (atomic) (identifier): constructor, ID: 4(const2)
[ 276] new_object loc12, 3
[ 280] mov loc13, True(const3)
[ 283] put_by_id loc12, configurable(@id2), loc13, IsDirect|Bottom
[ 292] put_by_id loc12, writable(@id3), loc13, IsDirect|Bottom
[ 301] put_by_id loc12, value(@id4), loc9, IsDirect|Bottom
[ 310] mov loc14, Cell: 0x10b06a2f0 (0x10b02a400:[Function, {name:100, length:101}, NonArray, Proto:0x10b039e00, Leaf]), ID: 56(const4)
[ 313] mov loc20, Undefined(const0)
[ 316] mov loc19, loc10
[ 319] mov loc18, loc11
[ 322] mov loc17, loc12
[ 325] call loc21, loc14, 4, 26 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 334] mov loc12, String (atomic) (identifier): prototype, ID: 4(const5)
[ 337] new_object loc13, 2
[ 341] mov loc14, True(const3)
[ 344] mov loc15, False(const6)
[ 347] put_by_id loc13, writable(@id3), loc15, IsDirect|Bottom
[ 356] put_by_id loc13, value(@id4), loc10, IsDirect|Bottom
[ 365] mov loc15, Cell: 0x10b06a2f0 (0x10b02a400:[Function, {name:100, length:101}, NonArray, Proto:0x10b039e00, Leaf]), ID: 56(const4)
[ 368] mov loc20, Undefined(const0)
[ 371] mov loc19, loc9
[ 374] mov loc18, loc12
[ 377] mov loc17, loc13
[ 380] call loc21, loc15, 4, 26 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 389] mov loc7, loc9
[ 392] put_to_scope loc6, B(@id5), loc9, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188518528
[ 399] resolve_scope loc6, loc3, tryToCreate(@id9), <GlobalVar>, 1, 0x10b043700
[ 406] new_func_exp loc7, loc3, f3
[ 410] put_to_scope loc6, tryToCreate(@id9), loc7, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188576608
[ 417] resolve_scope loc6, loc3, check(@id10), <GlobalVar>, 1, 0x10b043700
[ 424] new_func_exp loc7, loc3, f4
[ 428] put_to_scope loc6, check(@id10), loc7, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188576632
[ 435] resolve_scope loc6, loc3, checkSuccess(@id11), <GlobalVar>, 1, 0x10b043700
[ 442] new_func_exp loc7, loc3, f5
[ 446] put_to_scope loc6, checkSuccess(@id11), loc7, 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188576624
[ 453] resolve_scope loc10, loc3, noInline(@id12), <GlobalProperty>, 1, 0x10b043700
[ 460] get_from_scope loc6, loc10, noInline(@id12), 1024<ThrowIfNotFound|GlobalProperty|NotInitialization>, 170 predicting None
[ 468] resolve_scope loc9, loc3, B(@id5), <GlobalVar>, 1, 0x10b043700
[ 475] get_from_scope loc9, loc9, B(@id5), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518528 predicting None
[ 483] call loc5, loc6, 2, 16 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 492] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 499] put_to_scope loc6, i(@id13), Int32: 0(const10), 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188518544
[ 506] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 513] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 521] jnless loc7, Int32: 10000(const11), 87(->608)
[ 525] loop_hint
[ 526] resolve_scope loc10, loc3, check(@id10), <GlobalVar>, 1, 0x10b043700
[ 533] get_from_scope loc6, loc10, check(@id10), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188576632 predicting None
[ 541] resolve_scope loc9, loc3, B(@id5), <GlobalVar>, 1, 0x10b043700
[ 548] get_from_scope loc9, loc9, B(@id5), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518528 predicting None
[ 556] call loc5, loc6, 2, 16 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 565] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 572] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 580] inc loc7
[ 582] put_to_scope loc6, i(@id13), loc7, 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, <structure>, 188518544
[ 589] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 596] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 604] jless loc7, Int32: 10000(const11), -79(->525)
[ 608] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 615] put_to_scope loc6, i(@id13), Int32: 0(const10), 1048577<DoNotThrowIfNotFound|GlobalVar|Initialization>, <structure>, 188518544
[ 622] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 629] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 637] jnless loc7, Int32: 10000(const11), 87(->724)
[ 641] loop_hint
[ 642] resolve_scope loc10, loc3, checkSuccess(@id11), <GlobalVar>, 1, 0x10b043700
[ 649] get_from_scope loc6, loc10, checkSuccess(@id11), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188576624 predicting None
[ 657] resolve_scope loc9, loc3, B(@id5), <GlobalVar>, 1, 0x10b043700
[ 664] get_from_scope loc9, loc9, B(@id5), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518528 predicting None
[ 672] call loc5, loc6, 2, 16 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 681] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 688] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 696] inc loc7
[ 698] put_to_scope loc6, i(@id13), loc7, 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, <structure>, 188518544
[ 705] resolve_scope loc6, loc3, i(@id13), <GlobalVar>, 1, 0x10b043700
[ 712] get_from_scope loc7, loc6, i(@id13), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518544 predicting None
[ 720] jless loc7, Int32: 10000(const11), -79(->641)
[ 724] end loc5
Identifiers:
id0 = testCase
id1 = A
id2 = configurable
id3 = writable
id4 = value
id5 = B
id6 = prototype
id7 = __proto__
id8 = PrivateSymbol.homeObject
id9 = tryToCreate
id10 = check
id11 = checkSuccess
id12 = noInline
id13 = i
Constants:
k0 = Undefined
k1 = <JSValue()>
k2 = String (atomic) (identifier): constructor, ID: 4
k3 = True
k4 = Cell: 0x10b06a2f0 (0x10b02a400:[Function, {name:100, length:101}, NonArray, Proto:0x10b039e00, Leaf]), ID: 56
k5 = String (atomic) (identifier): prototype, ID: 4
k6 = False
k7 = Null
k8 = String (atomic) (identifier): The superclass is not an object., ID: 4
k9 = String (atomic) (identifier): The superclass's prototype is not an object., ID: 4
k10 = Int32: 0: in source as integer
k11 = Int32: 10000: in source as integer
check#Ec4uUn:[0x10b087700->0x10b06cb00, NoneFunctionCall, 80]: 80 m_instructions; 640 bytes; 2 parameter(s); 22 callee register(s); 7 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] resolve_scope loc12, loc3, testCase(@id0), <GlobalVar>, 1, 0x10b043700
[ 13] get_from_scope loc7, loc12, testCase(@id0), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518536 predicting None
[ 21] resolve_scope loc16, loc3, tryToCreate(@id1), <GlobalVar>, 1, 0x10b043700
[ 28] get_from_scope loc13, loc16, tryToCreate(@id1), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188576608 predicting None
[ 36] mov loc15, arg1
[ 39] call loc11, loc13, 2, 22 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 48] mov loc10, True(const1)
[ 51] mov loc9, String (atomic) (identifier): Exception wasn't thrown or was not a reference error, ID: 4(const2)
[ 54] call loc7, loc7, 4, 18 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 63] mov loc10, arg1
[ 66] mov loc9, False(const3)
[ 69] construct loc5, arg1, 2, 16 status(Could Take Slow Path, maxNumArguments = 1) predicting None
[ 78] ret Undefined(const4)
Identifiers:
id0 = testCase
id1 = tryToCreate
Constants:
k0 = Cell: 0x10b04bd60 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = True
k2 = String (atomic) (identifier): Exception wasn't thrown or was not a reference error, ID: 4
k3 = False
k4 = Undefined
tryToCreate#EZrPRb:[0x10b087400->0x10b06cc00, NoneFunctionCall, 88]: 88 m_instructions; 704 bytes; 2 parameter(s); 18 callee register(s); 6 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] mov loc6, <JSValue()>(const1)
[ 9] mov loc6, False(const2)
[ 12] resolve_scope loc7, loc3, B(@id0), <GlobalVar>, 1, 0x10b043700
[ 19] get_from_scope loc8, loc7, B(@id0), 1025<ThrowIfNotFound|GlobalVar|NotInitialization>, 188518528 predicting None
[ 27] mov loc12, loc8
[ 30] mov loc11, True(const3)
[ 33] construct loc8, loc8, 2, 18 status(Could Take Slow Path, maxNumArguments = 1) predicting None
[ 42] jmp 44(->86)
[ 44] catch loc7, loc8
[ 47] mov loc3, loc4
[ 50] mov loc9, loc8
[ 53] resolve_scope loc10, loc3, ReferenceError(@id1), <GlobalProperty>, 1, 0x10b043700
[ 60] get_from_scope loc11, loc10, ReferenceError(@id1), 1024<ThrowIfNotFound|GlobalProperty|NotInitialization>, 107 predicting None
[ 68] check_has_instance loc6, loc9, loc11, 18(->86)
[ 73] get_by_id loc12, loc11, prototype(@id2) predicting None
[ 82] instanceof loc6, loc9, loc12
[ 86] ret loc6
Identifiers:
id0 = B
id1 = ReferenceError
id2 = prototype
Constants:
k0 = Cell: 0x10b04bba0 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = <JSValue()>
k2 = False
k3 = True
Exception Handlers:
1: { start: [ 12] end: [ 44] target: [ 44] } catch
B#EOCSTa:[0x10b087100->0x10b06cd00, NoneFunctionConstruct, 235 (NeverInline) (StrictMode)]: 235 m_instructions; 1880 bytes; 2 parameter(s); 20 callee register(s); 9 variable(s); lexical environment in r-7
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] mov loc5, head3
[ 9] create_lexical_environment loc6, loc3, Cell: 0x10b04b9e0 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20(const0), Undefined(const1)
[ 14] mov loc3, loc6
[ 17] mov loc8, this
[ 20] mov this, <JSValue()>(const2)
[ 23] put_to_scope loc6, this(@id0), this, 1049604<DoNotThrowIfNotFound|LocalClosureVar|NotInitialization>, <structure>, 0
[ 30] put_to_scope loc6, PrivateSymbol.newTargetLocal(@id1), loc8, 1049604<DoNotThrowIfNotFound|LocalClosureVar|NotInitialization>, <structure>, 1
[ 37] put_to_scope loc6, PrivateSymbol.underscoreProtoScopeLocal(@id2), head3, 1049610<DoNotThrowIfNotFound|UnresolvedProperty|NotInitialization>, <structure>, 0
[ 44] mov loc9, <JSValue()>(const2)
[ 47] op_new_arrow_func_exp loc7, loc3, f0, this
[ 52] mov loc9, Undefined(const1)
[ 55] jfalse arg1, 80(->135)
[ 58] op_check_tdz loc9
[ 60] mov loc10, loc7
[ 63] mov loc12, Undefined(const1)
[ 66] call loc9, loc10, 1, 18 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 75] get_by_id loc10, head3, __proto__(@id3) predicting None
[ 84] mov loc12, loc8
[ 87] construct loc10, loc10, 1, 18 status(Could Take Slow Path, maxNumArguments = 1) predicting None
[ 96] mov this, loc10
[ 99] put_to_scope loc6, this(@id0), this, 1049604<DoNotThrowIfNotFound|LocalClosureVar|NotInitialization>, <structure>, 0
[ 106] resolve_scope loc14, loc3, debug(@id4), <GlobalProperty>, 2, 0x10b043700
[ 113] get_from_scope loc10, loc14, debug(@id4), 1024<ThrowIfNotFound|GlobalProperty|NotInitialization>, 148 predicting None
[ 121] mov loc13, String (atomic) (identifier): S1.3, ID: 4(const3)
[ 124] call loc10, loc10, 2, 20 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 133] jmp 50(->183)
[ 135] get_by_id loc10, head3, __proto__(@id3) predicting None
[ 144] mov loc12, loc8
[ 147] construct loc10, loc10, 1, 18 status(Could Take Slow Path, maxNumArguments = 1) predicting None
[ 156] mov this, loc10
[ 159] put_to_scope loc6, this(@id0), this, 1049604<DoNotThrowIfNotFound|LocalClosureVar|NotInitialization>, <structure>, 0
[ 166] op_check_tdz loc9
[ 168] mov loc10, loc7
[ 171] mov loc12, Undefined(const1)
[ 174] call loc9, loc10, 1, 18 status(Could Take Slow Path, maxNumArguments = 1) Original; predicting None
[ 183] get_from_scope this, loc6, this(@id0), 1049603<DoNotThrowIfNotFound|ClosureVar|NotInitialization>, 0 predicting None
[ 191] op_check_tdz this
[ 193] op_check_tdz loc9
[ 195] put_by_id this, res(@id5), loc9, Bottom
[ 204] get_from_scope this, loc6, this(@id0), 1049603<DoNotThrowIfNotFound|ClosureVar|NotInitialization>, 0 predicting None
[ 212] op_check_tdz this
[ 214] is_object loc10, this
[ 217] jtrue loc10, 16(->233)
[ 220] is_undefined loc10, this
[ 223] jtrue loc10, 6(->229)
[ 226] throw_static_error String (atomic) (identifier): Cannot return a non-object type in the constructor of a derived class., ID: 4(const4), false
[ 229] op_check_tdz this
[ 231] ret this
[ 233] ret this
Identifiers:
id0 = this
id1 = PrivateSymbol.newTargetLocal
id2 = PrivateSymbol.underscoreProtoScopeLocal
id3 = __proto__
id4 = debug
id5 = res
Constants:
k0 = Cell: 0x10b04b9e0 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = Undefined
k2 = <JSValue()>
k3 = String (atomic) (identifier): S1.3, ID: 4
k4 = String (atomic) (identifier): Cannot return a non-object type in the constructor of a derived class., ID: 4
f#EI3Q4I:[0x10b086e00->0x10b06c800, NoneFunctionCall, 56 (StrictMode)]: 56 m_instructions; 448 bytes; 1 parameter(s); 10 callee register(s); 7 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] resolve_scope loc7, loc3, this(@id0), <ClosureVar>, 0, 0x10b04b9e0
[ 13] get_from_scope loc6, loc7, PrivateSymbol.newTargetLocal(@id1), 1049603<DoNotThrowIfNotFound|ClosureVar|NotInitialization>, 1 predicting None
[ 21] get_from_scope this, loc7, this(@id0), 1049603<DoNotThrowIfNotFound|ClosureVar|NotInitialization>, 0 predicting None
[ 29] op_check_tdz this
[ 31] mov loc5, this
[ 34] op_check_tdz this
[ 36] get_by_id loc8, this, id(@id2) predicting None
[ 45] stricteq loc8, loc8, String (atomic) (identifier): A, ID: 4(const1)
[ 49] jfalse loc8, 5(->54)
[ 52] ret String (atomic) (identifier): ok, ID: 4(const2)
[ 54] ret String (atomic) (identifier): ok, ID: 4(const2)
Identifiers:
id0 = this
id1 = PrivateSymbol.newTargetLocal
id2 = id
Constants:
k0 = Cell: 0x10b04b900 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = String (atomic) (identifier): A, ID: 4
k2 = String (atomic) (identifier): ok, ID: 4
testCase#AbtSW4:[0x10b086b00->0x10b06cf00, NoneFunctionCall, 48]: 48 m_instructions; 384 bytes; 4 parameter(s); 12 callee register(s); 6 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] nstricteq loc6, arg1, arg2
[ 10] jfalse loc6, 36(->46)
[ 13] mov loc6, arg3
[ 16] mov loc7, String (atomic) (identifier): . Expected ', ID: 4(const1)
[ 19] to_primitive loc6, loc6
[ 22] mov loc8, arg2
[ 25] to_primitive loc8, loc8
[ 28] mov loc9, String (atomic) (identifier): ', but was ', ID: 4(const2)
[ 31] mov loc10, arg1
[ 34] to_primitive loc10, loc10
[ 37] mov loc11, String (atomic) (identifier): ', ID: 4(const3)
[ 40] strcat loc6, loc6, 6
[ 44] throw loc6
[ 46] ret Undefined(const4)
Constants:
k0 = Cell: 0x10b04b820 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = String (atomic) (identifier): . Expected ', ID: 4
k2 = String (atomic) (identifier): ', but was ', ID: 4
k3 = String (atomic) (identifier): ', ID: 4
k4 = Undefined
A#DkhXIP:[0x10b086800->0x10b06ce00, NoneFunctionConstruct, 36 (StrictMode)]: 36 m_instructions; 288 bytes; 1 parameter(s); 8 callee register(s); 7 variable(s)
[ 0] enter
[ 1] get_scope loc3
[ 3] mov loc4, loc3
[ 6] mov loc5, head3
[ 9] mov loc6, this
[ 12] create_this this, this, 1, 0
[ 17] put_by_id this, id(@id0), String (atomic) (identifier): A, ID: 4(const1), Bottom
[ 26] is_object loc7, this
[ 29] jtrue loc7, 5(->34)
[ 32] ret this
[ 34] ret this
Identifiers:
id0 = id
Constants:
k0 = Cell: 0x10b04b6d0 (0x10b02b600:[SymbolTable, {}, NonArray, Leaf]), ID: 20
k1 = String (atomic) (identifier): A, ID: 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment