Skip to content

Instantly share code, notes, and snippets.

@piscisaureus
Created November 3, 2012 02:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save piscisaureus/4005608 to your computer and use it in GitHub Desktop.
Save piscisaureus/4005608 to your computer and use it in GitHub Desktop.
D:\>v8-svn\build\Debug\d8 test.js --print_code --print_code_verbose --code_comments --nouse_inlining
--- Raw source ---
var counter = 0;
function it() {
if (counter > 100000) return;
return ++counter;
}
function call_iota() {
var s = 0;
var i = 0;
while (i !== undefined) {
s += i;
i = it();
}
return s;
}
print(call_iota());
--- Code ---
kind = FUNCTION
Instructions (size = 220)
[ function compiled by full code generator
0000000083A3ED60 0 55 push rbp
0000000083A3ED61 1 4889e5 REX.W movq rbp,rsp
0000000083A3ED64 4 56 push rsi
0000000083A3ED65 5 57 push rdi
[ Allocate locals
0000000083A3ED66 6 41ff75a8 push [r13-0x58]
]
[ Declarations
0000000083A3ED6A 10 56 push rsi
0000000083A3ED6B 11 49ba01aa45ae00000000 REX.W movq r10,00000000AE45AA01 ;; object: 00000000AE45AA01 <FixedArray[6]>
0000000083A3ED75 21 4152 push r10
0000000083A3ED77 23 6a00 push 0x0
0000000083A3ED79 25 b803000000 movl rax,0000000000000003
0000000083A3ED7E 30 48bb405a713f01000000 REX.W movq rbx,000000013F715A40
0000000083A3ED88 40 e89375fcff call 0000000083A06320 ;; debug: statement 0
;; code: STUB, CEntryStub, minor: 0
]
[ Stack check
0000000083A3ED8D 45 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3ED91 49 7305 jnc 56 (0000000083A3ED98)
0000000083A3ED93 51 e8e839fdff call 0000000083A12780 ;; code: STUB, StackCheckStub, minor: 0
]
[ Body
[ Block
[ ExpressionStatement
[ CallRuntime
[ Literal
0000000083A3ED98 56 49baf97b12ee00000000 REX.W movq r10,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3EDA2 66 4152 push r10
]
[ Literal
0000000083A3EDA4 68 6a00 push 0x0
]
[ Literal
0000000083A3EDA6 70 6a00 push 0x0
]
0000000083A3EDA8 72 b803000000 movl rax,0000000000000003
0000000083A3EDAD 77 48bb0070713f01000000 REX.W movq rbx,000000013F717000
0000000083A3EDB7 87 e86475fcff call 0000000083A06320 ;; code: STUB, CEntryStub, minor: 0
]
]
]
[ ExpressionStatement
[ Assignment
[ Call
0000000083A3EDBC 92 ff7627 push [rsi+0x27]
[ Call
0000000083A3EDBF 95 ff7627 push [rsi+0x27]
0000000083A3EDC2 98 48b9397c12ee00000000 REX.W movq rcx,00000000EE127C39 ;; object: 00000000EE127C39 <String[9]: call_iota>
0000000083A3EDCC 108 e8cfa6fdff call 0000000083A194A0 ;; debug: statement 220
;; debug: position 226
;; code: contextual, CALL_IC, UNINITIALIZED, argc = 0
0000000083A3EDD1 113 488b75f8 REX.W movq rsi,[rbp-0x8]
0000000083A3EDD5 117 50 push rax
]
0000000083A3EDD6 118 48b9296010ee00000000 REX.W movq rcx,00000000EE106029 ;; object: 00000000EE106029 <String[5]: print>
0000000083A3EDE0 128 e85bc5fdff call 0000000083A1B340 ;; debug: statement 220
;; code: contextual, CALL_IC, UNINITIALIZED, argc = 1
0000000083A3EDE5 133 488b75f8 REX.W movq rsi,[rbp-0x8]
]
0000000083A3EDE9 137 488945e8 REX.W movq [rbp-0x18],rax
]
]
[ ReturnStatement
[ VariableProxy
Stack slot
0000000083A3EDED 141 488b45e8 REX.W movq rax,[rbp-0x18]
]
[ Return sequence
0000000083A3EDF1 145 48bbf19090b300000000 REX.W movq rbx,00000000B39090F1 ;; object: 00000000B39090F1 Cell for 5888
0000000083A3EDFB 155 83430bd3 addl [rbx+0xb],0xd3
0000000083A3EDFF 159 791f jns 192 (0000000083A3EE20)
0000000083A3EE01 161 50 push rax
0000000083A3EE02 162 e89947fdff call 0000000083A135A0 ;; debug: statement 241
;; code: STUB, InterruptStub, minor: 0
0000000083A3EE07 167 58 pop rax
0000000083A3EE08 168 48bbf19090b300000000 REX.W movq rbx,00000000B39090F1 ;; object: 00000000B39090F1 Cell for 5888
0000000083A3EE12 178 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3EE1C 188 4c895307 REX.W movq [rbx+0x7],r10
0000000083A3EE20 192 488be5 REX.W movq rsp,rbp ;; debug: statement 240
;; js return
0000000083A3EE23 195 5d pop rbp
0000000083A3EE24 196 c20800 ret 0x8
0000000083A3EE27 199 cc int3
0000000083A3EE28 200 cc int3
0000000083A3EE29 201 cc int3
0000000083A3EE2A 202 cc int3
0000000083A3EE2B 203 cc int3
0000000083A3EE2C 204 cc int3
]
]
]
[ return <undefined>;
0000000083A3EE2D 205 498b45a8 REX.W movq rax,[r13-0x58]
[ Return sequence
0000000083A3EE31 209 e9bbffffff jmp 145 (0000000083A3EDF1)
]
]
]
0000000083A3EE36 214 6690 nop
Deoptimization Output Data (deopt points = 0)
Stack checks (size = 0)
ast_id pc_offset
00000000AE45AA41: [TypeFeedbackInfo]
- ic_total_count: 2, ic_with_type_info_count: 0
- type_feedback_cells: 00000000FC604101: [FixedArray]
- length: 0
RelocInfo (size = 484)
0000000083A3ED60 comment ([ function compiled by full code generator)
0000000083A3ED66 comment ([ Allocate locals)
0000000083A3ED6A comment (])
0000000083A3ED6A comment ([ Declarations)
0000000083A3ED6D embedded object (00000000AE45AA01 <FixedArray[6]>)
0000000083A3ED88 statement position (0)
0000000083A3ED89 code target (STUB) (0000000083A06320)
0000000083A3ED8D comment (])
0000000083A3ED8D comment ([ Stack check)
0000000083A3ED94 code target (STUB) (0000000083A12780)
0000000083A3ED98 comment (])
0000000083A3ED98 comment ([ Body)
0000000083A3ED98 comment ([ Block)
0000000083A3ED98 comment ([ ExpressionStatement)
0000000083A3ED98 comment ([ CallRuntime)
0000000083A3ED98 comment ([ Literal)
0000000083A3ED9A embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3EDA4 comment (])
0000000083A3EDA4 comment ([ Literal)
0000000083A3EDA6 comment (])
0000000083A3EDA6 comment ([ Literal)
0000000083A3EDA8 comment (])
0000000083A3EDB8 code target (STUB) (0000000083A06320)
0000000083A3EDBC comment (])
0000000083A3EDBC comment (])
0000000083A3EDBC comment (])
0000000083A3EDBC comment ([ ExpressionStatement)
0000000083A3EDBC comment ([ Assignment)
0000000083A3EDBC comment ([ Call)
0000000083A3EDBF comment ([ Call)
0000000083A3EDC4 embedded object (00000000EE127C39 <String[9]: call_iota>)
0000000083A3EDCC statement position (220)
0000000083A3EDCC position (226)
0000000083A3EDCD code target (context) (CALL_IC) (0000000083A194A0)
0000000083A3EDD6 comment (])
0000000083A3EDD8 embedded object (00000000EE106029 <String[5]: print>)
0000000083A3EDE0 statement position (220)
0000000083A3EDE1 code target (context) (CALL_IC) (0000000083A1B340)
0000000083A3EDE9 comment (])
0000000083A3EDED comment (])
0000000083A3EDED comment (])
0000000083A3EDED comment ([ ReturnStatement)
0000000083A3EDED comment ([ VariableProxy)
0000000083A3EDED comment (Stack slot)
0000000083A3EDF1 comment (])
0000000083A3EDF1 comment ([ Return sequence)
0000000083A3EDF3 embedded object (00000000B39090F1 Cell for 5888)
0000000083A3EE02 statement position (241)
0000000083A3EE03 code target (STUB) (0000000083A135A0)
0000000083A3EE0A embedded object (00000000B39090F1 Cell for 5888)
0000000083A3EE20 statement position (240)
0000000083A3EE20 js return
0000000083A3EE2D comment (])
0000000083A3EE2D comment (])
0000000083A3EE2D comment (])
0000000083A3EE2D comment ([ return <undefined>;)
0000000083A3EE31 comment ([ Return sequence)
0000000083A3EE36 comment (])
0000000083A3EE36 comment (])
0000000083A3EE36 comment (])
--- Raw source ---
() {
var s = 0;
var i = 0;
while (i !== undefined) {
s += i;
i = it();
}
return s;
}
--- Code ---
kind = FUNCTION
name = call_iota
Instructions (size = 328)
[ function compiled by full code generator
0000000083A3EEA0 0 55 push rbp
0000000083A3EEA1 1 4889e5 REX.W movq rbp,rsp
0000000083A3EEA4 4 56 push rsi
0000000083A3EEA5 5 57 push rdi
[ Allocate locals
0000000083A3EEA6 6 498b55a8 REX.W movq rdx,[r13-0x58]
0000000083A3EEAA 10 52 push rdx
0000000083A3EEAB 11 52 push rdx
]
[ Declarations
]
[ Stack check
0000000083A3EEAC 12 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3EEB0 16 7305 jnc 23 (0000000083A3EEB7)
0000000083A3EEB2 18 e8c938fdff call 0000000083A12780 ;; debug: statement 108
;; code: STUB, StackCheckStub, minor: 0
]
[ Body
[ Block
[ ExpressionStatement
[ Assignment
[ Literal
0000000083A3EEB7 23 33c0 xorl rax,rax
]
0000000083A3EEB9 25 488945e8 REX.W movq [rbp-0x18],rax
]
]
]
[ Block
[ ExpressionStatement
[ Assignment
[ Literal
0000000083A3EEBD 29 33c0 xorl rax,rax
]
0000000083A3EEBF 31 488945e0 REX.W movq [rbp-0x20],rax
]
]
]
[ WhileStatement
0000000083A3EEC3 35 e979000000 jmp 161 (0000000083A3EF41)
[ Block
[ ExpressionStatement
[ Assignment
Stack slot
0000000083A3EEC8 40 488b45e8 REX.W movq rax,[rbp-0x18]
0000000083A3EECC 44 50 push rax
[ VariableProxy
Stack slot
0000000083A3EECD 45 488b45e0 REX.W movq rax,[rbp-0x20]
]
0000000083A3EED1 49 5a pop rdx
0000000083A3EED2 50 488bc8 REX.W movq rcx,rax
0000000083A3EED5 53 480bc2 REX.W orq rax,rdx
0000000083A3EED8 56 a801 test al,0x1
0000000083A3EEDA 58 720c jc 72 (0000000083A3EEE8)
0000000083A3EEDC 60 488bc1 REX.W movq rax,rcx
0000000083A3EEDF 63 e81cbbfdff call 0000000083A1AA00 ;; debug: statement 174
;; debug: position 177
;; code: BINARY_OP_IC, UNINITIALIZED (id = 49)
0000000083A3EEE4 68 a80a test al,0xa
0000000083A3EEE6 70 eb0c jmp 84 (0000000083A3EEF4)
0000000083A3EEE8 72 488bc2 REX.W movq rax,rdx
0000000083A3EEEB 75 4803c1 REX.W addq rax,rcx
0000000083A3EEEE 78 0f80e8ffffff jo 60 (0000000083A3EEDC)
0000000083A3EEF4 84 488945e8 REX.W movq [rbp-0x18],rax
]
]
[ ExpressionStatement
[ Assignment
[ Call
0000000083A3EEF8 88 ff7627 push [rsi+0x27]
0000000083A3EEFB 91 48b9197c12ee00000000 REX.W movq rcx,00000000EE127C19 ;; object: 00000000EE127C19 <String[2]: it>
0000000083A3EF05 101 e896a5fdff call 0000000083A194A0 ;; debug: statement 187
;; debug: position 191
;; code: contextual, CALL_IC, UNINITIALIZED, argc = 0
0000000083A3EF0A 106 488b75f8 REX.W movq rsi,[rbp-0x8]
]
0000000083A3EF0E 110 488945e0 REX.W movq [rbp-0x20],rax
]
]
]
[ Stack check
0000000083A3EF12 114 48bb319190b300000000 REX.W movq rbx,00000000B3909131 ;; object: 00000000B3909131 Cell for 5888
0000000083A3EF1C 124 83430bff addl [rbx+0xb],0xff
0000000083A3EF20 128 791f jns 161 (0000000083A3EF41)
0000000083A3EF22 130 e87946fdff call 0000000083A135A0 ;; debug: statement 143
;; code: STUB, InterruptStub, minor: 0
0000000083A3EF27 135 a801 test al,0x1
0000000083A3EF29 137 48bb319190b300000000 REX.W movq rbx,00000000B3909131 ;; object: 00000000B3909131 Cell for 5888
0000000083A3EF33 147 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3EF3D 157 4c895307 REX.W movq [rbx+0x7],r10
]
[ UnaryOperation (NOT)
[ CompareOperation
[ VariableProxy
Stack slot
0000000083A3EF41 161 ff75e0 push [rbp-0x20]
]
[ VariableProxy
Global variable
0000000083A3EF44 164 48b9614160fc00000000 REX.W movq rcx,00000000FC604161 ;; object: 00000000FC604161 <String[9]: undefined>
0000000083A3EF4E 174 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3EF52 178 e869edfcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: position 156
;; code: contextual, LOAD_IC, UNINITIALIZED
]
0000000083A3EF57 183 5a pop rdx
0000000083A3EF58 184 488bca REX.W movq rcx,rdx
0000000083A3EF5B 187 480bc8 REX.W orq rcx,rax
0000000083A3EF5E 190 f6c101 testb rcx,0x1
0000000083A3EF61 193 730e jnc 209 (0000000083A3EF71)
0000000083A3EF63 195 483bd0 REX.W cmpq rdx,rax
0000000083A3EF66 198 0f8426000000 jz 242 (0000000083A3EF92)
0000000083A3EF6C 204 e957ffffff jmp 40 (0000000083A3EEC8)
0000000083A3EF71 209 e88a7ffdff call 0000000083A16F00 ;; debug: position 152
;; code: COMPARE_IC, UNINITIALIZED (id = 34)
0000000083A3EF76 214 a815 test al,0x15
0000000083A3EF78 216 eb0f jmp 233 (0000000083A3EF89)
0000000083A3EF7A 218 493b45c0 REX.W cmpq rax,[r13-0x40]
0000000083A3EF7E 222 0f840e000000 jz 242 (0000000083A3EF92)
0000000083A3EF84 228 e93fffffff jmp 40 (0000000083A3EEC8)
0000000083A3EF89 233 4885c0 REX.W testq rax,rax
0000000083A3EF8C 236 0f8536ffffff jnz 40 (0000000083A3EEC8)
]
]
]
[ ReturnStatement
[ VariableProxy
Stack slot
0000000083A3EF92 242 488b45e8 REX.W movq rax,[rbp-0x18]
]
[ Return sequence
0000000083A3EF96 246 48bb319190b300000000 REX.W movq rbx,00000000B3909131 ;; object: 00000000B3909131 Cell for 5888
0000000083A3EFA0 256 83430bff addl [rbx+0xb],0xff
0000000083A3EFA4 260 791f jns 293 (0000000083A3EFC5)
0000000083A3EFA6 262 50 push rax
0000000083A3EFA7 263 e8f445fdff call 0000000083A135A0 ;; debug: statement 206
;; debug: position 213
;; code: STUB, InterruptStub, minor: 0
0000000083A3EFAC 268 58 pop rax
0000000083A3EFAD 269 48bb319190b300000000 REX.W movq rbx,00000000B3909131 ;; object: 00000000B3909131 Cell for 5888
0000000083A3EFB7 279 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3EFC1 289 4c895307 REX.W movq [rbx+0x7],r10
0000000083A3EFC5 293 488be5 REX.W movq rsp,rbp ;; debug: statement 216
;; js return
0000000083A3EFC8 296 5d pop rbp
0000000083A3EFC9 297 c20800 ret 0x8
0000000083A3EFCC 300 cc int3
0000000083A3EFCD 301 cc int3
0000000083A3EFCE 302 cc int3
0000000083A3EFCF 303 cc int3
0000000083A3EFD0 304 cc int3
0000000083A3EFD1 305 cc int3
]
]
]
[ return <undefined>;
0000000083A3EFD2 306 498b45a8 REX.W movq rax,[r13-0x58]
[ Return sequence
0000000083A3EFD6 310 e9bbffffff jmp 246 (0000000083A3EF96)
]
]
]
0000000083A3EFDB 315 90 nop
Deoptimization Output Data (deopt points = 0)
Stack checks (size = 1)
ast_id pc_offset
28 135
00000000AE45AC11: [TypeFeedbackInfo]
- ic_total_count: 4, ic_with_type_info_count: 0
- type_feedback_cells: 00000000FC604101: [FixedArray]
- length: 0
RelocInfo (size = 803)
0000000083A3EEA0 comment ([ function compiled by full code generator)
0000000083A3EEA6 comment ([ Allocate locals)
0000000083A3EEAC comment (])
0000000083A3EEAC comment ([ Declarations)
0000000083A3EEAC comment (])
0000000083A3EEAC comment ([ Stack check)
0000000083A3EEB2 statement position (108)
0000000083A3EEB3 code target (STUB) (0000000083A12780)
0000000083A3EEB7 comment (])
0000000083A3EEB7 comment ([ Body)
0000000083A3EEB7 comment ([ Block)
0000000083A3EEB7 comment ([ ExpressionStatement)
0000000083A3EEB7 comment ([ Assignment)
0000000083A3EEB7 comment ([ Literal)
0000000083A3EEB9 comment (])
0000000083A3EEBD comment (])
0000000083A3EEBD comment (])
0000000083A3EEBD comment (])
0000000083A3EEBD comment ([ Block)
0000000083A3EEBD comment ([ ExpressionStatement)
0000000083A3EEBD comment ([ Assignment)
0000000083A3EEBD comment ([ Literal)
0000000083A3EEBF comment (])
0000000083A3EEC3 comment (])
0000000083A3EEC3 comment (])
0000000083A3EEC3 comment (])
0000000083A3EEC3 comment ([ WhileStatement)
0000000083A3EEC8 comment ([ Block)
0000000083A3EEC8 comment ([ ExpressionStatement)
0000000083A3EEC8 comment ([ Assignment)
0000000083A3EEC8 comment (Stack slot)
0000000083A3EECD comment ([ VariableProxy)
0000000083A3EECD comment (Stack slot)
0000000083A3EED1 comment (])
0000000083A3EEDF statement position (174)
0000000083A3EEDF position (177)
0000000083A3EEE0 code target with id (BINARY_OP_IC) (0000000083A1AA00) (id=49)
0000000083A3EEF8 comment (])
0000000083A3EEF8 comment (])
0000000083A3EEF8 comment ([ ExpressionStatement)
0000000083A3EEF8 comment ([ Assignment)
0000000083A3EEF8 comment ([ Call)
0000000083A3EEFD embedded object (00000000EE127C19 <String[2]: it>)
0000000083A3EF05 statement position (187)
0000000083A3EF05 position (191)
0000000083A3EF06 code target (context) (CALL_IC) (0000000083A194A0)
0000000083A3EF0E comment (])
0000000083A3EF12 comment (])
0000000083A3EF12 comment (])
0000000083A3EF12 comment (])
0000000083A3EF12 comment ([ Stack check)
0000000083A3EF14 embedded object (00000000B3909131 Cell for 5888)
0000000083A3EF22 statement position (143)
0000000083A3EF23 code target (STUB) (0000000083A135A0)
0000000083A3EF2B embedded object (00000000B3909131 Cell for 5888)
0000000083A3EF41 comment (])
0000000083A3EF41 comment ([ UnaryOperation (NOT))
0000000083A3EF41 comment ([ CompareOperation)
0000000083A3EF41 comment ([ VariableProxy)
0000000083A3EF41 comment (Stack slot)
0000000083A3EF44 comment (])
0000000083A3EF44 comment ([ VariableProxy)
0000000083A3EF44 comment (Global variable)
0000000083A3EF46 embedded object (00000000FC604161 <String[9]: undefined>)
0000000083A3EF52 position (156)
0000000083A3EF53 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3EF57 comment (])
0000000083A3EF71 position (152)
0000000083A3EF72 code target with id (COMPARE_IC) (0000000083A16F00) (id=34)
0000000083A3EF92 comment (])
0000000083A3EF92 comment (])
0000000083A3EF92 comment (])
0000000083A3EF92 comment ([ ReturnStatement)
0000000083A3EF92 comment ([ VariableProxy)
0000000083A3EF92 comment (Stack slot)
0000000083A3EF96 comment (])
0000000083A3EF96 comment ([ Return sequence)
0000000083A3EF98 embedded object (00000000B3909131 Cell for 5888)
0000000083A3EFA7 statement position (206)
0000000083A3EFA7 position (213)
0000000083A3EFA8 code target (STUB) (0000000083A135A0)
0000000083A3EFAF embedded object (00000000B3909131 Cell for 5888)
0000000083A3EFC5 statement position (216)
0000000083A3EFC5 js return
0000000083A3EFD2 comment (])
0000000083A3EFD2 comment (])
0000000083A3EFD2 comment (])
0000000083A3EFD2 comment ([ return <undefined>;)
0000000083A3EFD6 comment ([ Return sequence)
0000000083A3EFDB comment (])
0000000083A3EFDB comment (])
0000000083A3EFDB comment (])
--- Raw source ---
() {
if (counter > 100000) return;
return ++counter;
}
--- Code ---
kind = FUNCTION
name = it
Instructions (size = 240)
[ function compiled by full code generator
0000000083A3F060 0 55 push rbp
0000000083A3F061 1 4889e5 REX.W movq rbp,rsp
0000000083A3F064 4 56 push rsi
0000000083A3F065 5 57 push rdi
[ Allocate locals
]
[ Declarations
]
[ Stack check
0000000083A3F066 6 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3F06A 10 7305 jnc 17 (0000000083A3F071)
0000000083A3F06C 12 e80f37fdff call 0000000083A12780 ;; debug: statement 28
;; code: STUB, StackCheckStub, minor: 0
]
[ Body
[ IfStatement
[ CompareOperation
[ VariableProxy
Global variable
0000000083A3F071 17 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F07B 27 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3F07F 31 e83cecfcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: statement 35
;; debug: position 39
;; code: contextual, LOAD_IC, UNINITIALIZED
0000000083A3F084 36 50 push rax
]
[ Literal
0000000083A3F085 37 48b800000000ef208816 REX.W movq rax,168820EF00000000
0000000083A3F08F 47 49ba000000004fa68916 REX.W movq r10,1689A64F00000000
0000000083A3F099 57 4933c2 REX.W xorq rax,r10
]
0000000083A3F09C 60 5a pop rdx
0000000083A3F09D 61 e89e9bfdff call 0000000083A18C40 ;; debug: position 47
;; code: COMPARE_IC, UNINITIALIZED (id = 8)
0000000083A3F0A2 66 90 nop
0000000083A3F0A3 67 eb0f jmp 84 (0000000083A3F0B4)
0000000083A3F0A5 69 493b45c0 REX.W cmpq rax,[r13-0x40]
0000000083A3F0A9 73 0f840e000000 jz 93 (0000000083A3F0BD)
0000000083A3F0AF 79 e94f000000 jmp 163 (0000000083A3F103)
0000000083A3F0B4 84 4885c0 REX.W testq rax,rax
0000000083A3F0B7 87 0f8e46000000 jle 163 (0000000083A3F103)
]
[ ReturnStatement
[ Literal
0000000083A3F0BD 93 48b8214140ae00000000 REX.W movq rax,00000000AE404121 ;; object: 00000000AE404121 <undefined>
]
[ Return sequence
0000000083A3F0C7 103 48bb419190b300000000 REX.W movq rbx,00000000B3909141 ;; object: 00000000B3909141 Cell for 5888
0000000083A3F0D1 113 83430bd3 addl [rbx+0xb],0xd3
0000000083A3F0D5 117 791f jns 150 (0000000083A3F0F6)
0000000083A3F0D7 119 50 push rax
0000000083A3F0D8 120 e8c344fdff call 0000000083A135A0 ;; debug: statement 57
;; code: STUB, InterruptStub, minor: 0
0000000083A3F0DD 125 58 pop rax
0000000083A3F0DE 126 48bb419190b300000000 REX.W movq rbx,00000000B3909141 ;; object: 00000000B3909141 Cell for 5888
0000000083A3F0E8 136 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3F0F2 146 4c895307 REX.W movq [rbx+0x7],r10
0000000083A3F0F6 150 488be5 REX.W movq rsp,rbp ;; debug: statement 86
;; js return
0000000083A3F0F9 153 5d pop rbp
0000000083A3F0FA 154 c20800 ret 0x8
0000000083A3F0FD 157 cc int3
0000000083A3F0FE 158 cc int3
0000000083A3F0FF 159 cc int3
0000000083A3F100 160 cc int3
0000000083A3F101 161 cc int3
0000000083A3F102 162 cc int3
]
]
]
[ ReturnStatement
[ CountOperation
Global variable
0000000083A3F103 163 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F10D 173 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3F111 177 e8aaebfcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: statement 67
;; debug: position 76
;; code: contextual, LOAD_IC, UNINITIALIZED
0000000083A3F116 182 a801 test al,0x1
0000000083A3F118 184 7405 jz 191 (0000000083A3F11F)
0000000083A3F11A 186 e8a1cbfdff call 0000000083A1BCC0 ;; code: STUB, ToNumberStub, minor: 0
0000000083A3F11F 191 4c89e2 REX.W movq rdx,r12
0000000083A3F122 194 e8d9b8fdff call 0000000083A1AA00 ;; code: BINARY_OP_IC, UNINITIALIZED (id = 20)
0000000083A3F127 199 90 nop
0000000083A3F128 200 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F132 210 488b5627 REX.W movq rdx,[rsi+0x27]
0000000083A3F136 214 e82504fdff call StoreIC_Initialize (0000000083A0F560) ;; code: contextual, STORE_IC, UNINITIALIZED
]
[ Return sequence
0000000083A3F13B 219 e987ffffff jmp 103 (0000000083A3F0C7)
]
]
]
[ return <undefined>;
0000000083A3F140 224 498b45a8 REX.W movq rax,[r13-0x58]
[ Return sequence
0000000083A3F144 228 e97effffff jmp 103 (0000000083A3F0C7)
]
]
]
0000000083A3F149 233 0f1f00 nop
Deoptimization Output Data (deopt points = 0)
Stack checks (size = 0)
ast_id pc_offset
00000000AE45AC71: [TypeFeedbackInfo]
- ic_total_count: 5, ic_with_type_info_count: 0
- type_feedback_cells: 00000000FC604101: [FixedArray]
- length: 0
RelocInfo (size = 433)
0000000083A3F060 comment ([ function compiled by full code generator)
0000000083A3F066 comment ([ Allocate locals)
0000000083A3F066 comment (])
0000000083A3F066 comment ([ Declarations)
0000000083A3F066 comment (])
0000000083A3F066 comment ([ Stack check)
0000000083A3F06C statement position (28)
0000000083A3F06D code target (STUB) (0000000083A12780)
0000000083A3F071 comment (])
0000000083A3F071 comment ([ Body)
0000000083A3F071 comment ([ IfStatement)
0000000083A3F071 comment ([ CompareOperation)
0000000083A3F071 comment ([ VariableProxy)
0000000083A3F071 comment (Global variable)
0000000083A3F073 embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F07F statement position (35)
0000000083A3F07F position (39)
0000000083A3F080 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3F085 comment (])
0000000083A3F085 comment ([ Literal)
0000000083A3F09C comment (])
0000000083A3F09D position (47)
0000000083A3F09E code target with id (COMPARE_IC) (0000000083A18C40) (id=8)
0000000083A3F0BD comment (])
0000000083A3F0BD comment ([ ReturnStatement)
0000000083A3F0BD comment ([ Literal)
0000000083A3F0BF embedded object (00000000AE404121 <undefined>)
0000000083A3F0C7 comment (])
0000000083A3F0C7 comment ([ Return sequence)
0000000083A3F0C9 embedded object (00000000B3909141 Cell for 5888)
0000000083A3F0D8 statement position (57)
0000000083A3F0D9 code target (STUB) (0000000083A135A0)
0000000083A3F0E0 embedded object (00000000B3909141 Cell for 5888)
0000000083A3F0F6 statement position (86)
0000000083A3F0F6 js return
0000000083A3F103 comment (])
0000000083A3F103 comment (])
0000000083A3F103 comment (])
0000000083A3F103 comment ([ ReturnStatement)
0000000083A3F103 comment ([ CountOperation)
0000000083A3F103 comment (Global variable)
0000000083A3F105 embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F111 statement position (67)
0000000083A3F111 position (76)
0000000083A3F112 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3F11B code target (STUB) (0000000083A1BCC0)
0000000083A3F123 code target with id (BINARY_OP_IC) (0000000083A1AA00) (id=20)
0000000083A3F12A embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F137 code target (context) (STORE_IC) (0000000083A0F560)
0000000083A3F13B comment (])
0000000083A3F13B comment ([ Return sequence)
0000000083A3F140 comment (])
0000000083A3F140 comment (])
0000000083A3F140 comment (])
0000000083A3F140 comment ([ return <undefined>;)
0000000083A3F144 comment ([ Return sequence)
0000000083A3F149 comment (])
0000000083A3F149 comment (])
0000000083A3F149 comment (])
--- Raw source ---
() {
if (counter > 100000) return;
return ++counter;
}
--- Code ---
kind = FUNCTION
name = it
Instructions (size = 240)
[ function compiled by full code generator
0000000083A3F640 0 55 push rbp
0000000083A3F641 1 4889e5 REX.W movq rbp,rsp
0000000083A3F644 4 56 push rsi
0000000083A3F645 5 57 push rdi
[ Allocate locals
]
[ Declarations
]
[ Stack check
0000000083A3F646 6 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3F64A 10 7305 jnc 17 (0000000083A3F651)
0000000083A3F64C 12 e82f31fdff call 0000000083A12780 ;; debug: statement 28
;; code: STUB, StackCheckStub, minor: 0
]
[ Body
[ IfStatement
[ CompareOperation
[ VariableProxy
Global variable
0000000083A3F651 17 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F65B 27 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3F65F 31 e85ce6fcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: statement 35
;; debug: position 39
;; code: contextual, LOAD_IC, UNINITIALIZED
0000000083A3F664 36 50 push rax
]
[ Literal
0000000083A3F665 37 48b800000000ca0d7619 REX.W movq rax,19760DCA00000000
0000000083A3F66F 47 49ba000000006a8b7719 REX.W movq r10,19778B6A00000000
0000000083A3F679 57 4933c2 REX.W xorq rax,r10
]
0000000083A3F67C 60 5a pop rdx
0000000083A3F67D 61 e8be95fdff call 0000000083A18C40 ;; debug: position 47
;; code: COMPARE_IC, UNINITIALIZED (id = 8)
0000000083A3F682 66 90 nop
0000000083A3F683 67 eb0f jmp 84 (0000000083A3F694)
0000000083A3F685 69 493b45c0 REX.W cmpq rax,[r13-0x40]
0000000083A3F689 73 0f840e000000 jz 93 (0000000083A3F69D)
0000000083A3F68F 79 e94f000000 jmp 163 (0000000083A3F6E3)
0000000083A3F694 84 4885c0 REX.W testq rax,rax
0000000083A3F697 87 0f8e46000000 jle 163 (0000000083A3F6E3)
]
[ ReturnStatement
[ Literal
0000000083A3F69D 93 48b8214140ae00000000 REX.W movq rax,00000000AE404121 ;; object: 00000000AE404121 <undefined>
]
[ Return sequence
0000000083A3F6A7 103 48bb519190b300000000 REX.W movq rbx,00000000B3909151 ;; object: 00000000B3909151 Cell for 5888
0000000083A3F6B1 113 83430bd3 addl [rbx+0xb],0xd3
0000000083A3F6B5 117 791f jns 150 (0000000083A3F6D6)
0000000083A3F6B7 119 50 push rax
0000000083A3F6B8 120 e8e33efdff call 0000000083A135A0 ;; debug: statement 57
;; code: STUB, InterruptStub, minor: 0
0000000083A3F6BD 125 58 pop rax
0000000083A3F6BE 126 48bb519190b300000000 REX.W movq rbx,00000000B3909151 ;; object: 00000000B3909151 Cell for 5888
0000000083A3F6C8 136 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3F6D2 146 4c895307 REX.W movq [rbx+0x7],r10
0000000083A3F6D6 150 488be5 REX.W movq rsp,rbp ;; debug: statement 86
;; js return
0000000083A3F6D9 153 5d pop rbp
0000000083A3F6DA 154 c20800 ret 0x8
0000000083A3F6DD 157 cc int3
0000000083A3F6DE 158 cc int3
0000000083A3F6DF 159 cc int3
0000000083A3F6E0 160 cc int3
0000000083A3F6E1 161 cc int3
0000000083A3F6E2 162 cc int3
]
]
]
[ ReturnStatement
[ CountOperation
Global variable
0000000083A3F6E3 163 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F6ED 173 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3F6F1 177 e8cae5fcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: statement 67
;; debug: position 76
;; code: contextual, LOAD_IC, UNINITIALIZED
0000000083A3F6F6 182 a801 test al,0x1
0000000083A3F6F8 184 7405 jz 191 (0000000083A3F6FF)
0000000083A3F6FA 186 e8c1c5fdff call 0000000083A1BCC0 ;; code: STUB, ToNumberStub, minor: 0
0000000083A3F6FF 191 4c89e2 REX.W movq rdx,r12
0000000083A3F702 194 e8f9b2fdff call 0000000083A1AA00 ;; code: BINARY_OP_IC, UNINITIALIZED (id = 20)
0000000083A3F707 199 90 nop
0000000083A3F708 200 48b9f97b12ee00000000 REX.W movq rcx,00000000EE127BF9 ;; object: 00000000EE127BF9 <String[7]: counter>
0000000083A3F712 210 488b5627 REX.W movq rdx,[rsi+0x27]
0000000083A3F716 214 e845fefcff call StoreIC_Initialize (0000000083A0F560) ;; code: contextual, STORE_IC, UNINITIALIZED
]
[ Return sequence
0000000083A3F71B 219 e987ffffff jmp 103 (0000000083A3F6A7)
]
]
]
[ return <undefined>;
0000000083A3F720 224 498b45a8 REX.W movq rax,[r13-0x58]
[ Return sequence
0000000083A3F724 228 e97effffff jmp 103 (0000000083A3F6A7)
]
]
]
0000000083A3F729 233 0f1f00 nop
Deoptimization Output Data (deopt points = 12)
ast id pc state
2 6 NO_REGISTERS
3 6 NO_REGISTERS
4 37 NO_REGISTERS
6 60 TOS_REG
8 69 TOS_REG
13 93 NO_REGISTERS
10 103 TOS_REG
14 163 NO_REGISTERS
12 163 NO_REGISTERS
15 182 TOS_REG
19 219 TOS_REG
17 219 TOS_REG
Stack checks (size = 0)
ast_id pc_offset
00000000AE45ADA9: [TypeFeedbackInfo]
- ic_total_count: 5, ic_with_type_info_count: 0
- type_feedback_cells: 00000000FC604101: [FixedArray]
- length: 0
RelocInfo (size = 433)
0000000083A3F640 comment ([ function compiled by full code generator)
0000000083A3F646 comment ([ Allocate locals)
0000000083A3F646 comment (])
0000000083A3F646 comment ([ Declarations)
0000000083A3F646 comment (])
0000000083A3F646 comment ([ Stack check)
0000000083A3F64C statement position (28)
0000000083A3F64D code target (STUB) (0000000083A12780)
0000000083A3F651 comment (])
0000000083A3F651 comment ([ Body)
0000000083A3F651 comment ([ IfStatement)
0000000083A3F651 comment ([ CompareOperation)
0000000083A3F651 comment ([ VariableProxy)
0000000083A3F651 comment (Global variable)
0000000083A3F653 embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F65F statement position (35)
0000000083A3F65F position (39)
0000000083A3F660 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3F665 comment (])
0000000083A3F665 comment ([ Literal)
0000000083A3F67C comment (])
0000000083A3F67D position (47)
0000000083A3F67E code target with id (COMPARE_IC) (0000000083A18C40) (id=8)
0000000083A3F69D comment (])
0000000083A3F69D comment ([ ReturnStatement)
0000000083A3F69D comment ([ Literal)
0000000083A3F69F embedded object (00000000AE404121 <undefined>)
0000000083A3F6A7 comment (])
0000000083A3F6A7 comment ([ Return sequence)
0000000083A3F6A9 embedded object (00000000B3909151 Cell for 5888)
0000000083A3F6B8 statement position (57)
0000000083A3F6B9 code target (STUB) (0000000083A135A0)
0000000083A3F6C0 embedded object (00000000B3909151 Cell for 5888)
0000000083A3F6D6 statement position (86)
0000000083A3F6D6 js return
0000000083A3F6E3 comment (])
0000000083A3F6E3 comment (])
0000000083A3F6E3 comment (])
0000000083A3F6E3 comment ([ ReturnStatement)
0000000083A3F6E3 comment ([ CountOperation)
0000000083A3F6E3 comment (Global variable)
0000000083A3F6E5 embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F6F1 statement position (67)
0000000083A3F6F1 position (76)
0000000083A3F6F2 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3F6FB code target (STUB) (0000000083A1BCC0)
0000000083A3F703 code target with id (BINARY_OP_IC) (0000000083A1AA00) (id=20)
0000000083A3F70A embedded object (00000000EE127BF9 <String[7]: counter>)
0000000083A3F717 code target (context) (STORE_IC) (0000000083A0F560)
0000000083A3F71B comment (])
0000000083A3F71B comment ([ Return sequence)
0000000083A3F720 comment (])
0000000083A3F720 comment (])
0000000083A3F720 comment (])
0000000083A3F720 comment ([ return <undefined>;)
0000000083A3F724 comment ([ Return sequence)
0000000083A3F729 comment (])
0000000083A3F729 comment (])
0000000083A3F729 comment (])
--- Raw source ---
() {
if (counter > 100000) return;
return ++counter;
}
--- Optimized code ---
kind = OPTIMIZED_FUNCTION
name = it
stack_slots = 0
Instructions (size = 186)
0000000083A3F7A0 0 55 push rbp
0000000083A3F7A1 1 4889e5 REX.W movq rbp,rsp
0000000083A3F7A4 4 56 push rsi
0000000083A3F7A5 5 57 push rdi
;;; @0: label.
;;; B0
;;; @1: gap.
;;; @2: parameter.
;;; @3: gap.
;;; @4: context.
0000000083A3F7A6 6 488bc6 REX.W movq rax,rsi
;;; @5: gap.
;;; @6: gap.
;;; @7: goto.
;;; @8: label.
;;; B1
;;; @9: gap.
;;; @10: stack-check.
0000000083A3F7A9 9 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3F7AD 13 7305 jnc 20 (0000000083A3F7B4)
0000000083A3F7AF 15 e8cc2ffdff call 0000000083A12780 ;; code: STUB, StackCheckStub, minor: 0
;;; @11: gap.
;;; @12: load-global-cell.
0000000083A3F7B4 20 48a1089190b300000000 REX.W movq rax,(00000000B3909108) ;; global property cell
;;; @13: gap.
;;; @14: tagged-to-i.
0000000083A3F7BE 30 a801 test al,0x1
0000000083A3F7C0 32 0f853b000000 jnz 97 (0000000083A3F801)
0000000083A3F7C6 38 48c1e820 REX.W shrq rax,32
;;; @15: gap.
;;; @16: gap.
;;; @17: cmp-id-and-branch.
0000000083A3F7CA 42 3da0860100 cmp rax, 00000000000186A0
0000000083A3F7CF 47 0f8f1b000000 jg 80 (0000000083A3F7F0)
;;; @22: label.
;;; B3
;;; @23: gap.
;;; @24: add-i.
0000000083A3F7D5 53 83c001 addl rax,0x1
;;; @25: gap.
;;; @26: smi-tag.
0000000083A3F7D8 56 48c1e020 REX.W shlq rax,32
;;; @27: gap.
;;; @28: store-global-cell.
0000000083A3F7DC 60 49ba089190b300000000 REX.W movq r10,00000000B3909108 ;; global property cell
0000000083A3F7E6 70 498902 REX.W movq [r10],rax
;;; @29: gap.
;;; @30: return.
0000000083A3F7E9 73 488be5 REX.W movq rsp,rbp
0000000083A3F7EC 76 5d pop rbp
0000000083A3F7ED 77 c20800 ret 0x8
;;; @31: gap.
;;; @36: label.
;;; B5
;;; @37: gap.
;;; @38: constant-t.
0000000083A3F7F0 80 48b8214140ae00000000 REX.W movq rax,00000000AE404121 ;; object: 00000000AE404121 <undefined>
;;; @39: gap.
;;; @40: return.
0000000083A3F7FA 90 488be5 REX.W movq rsp,rbp
0000000083A3F7FD 93 5d pop rbp
0000000083A3F7FE 94 c20800 ret 0x8
;;; @41: gap.
;;; Deferred code @14: tagged-to-i.
0000000083A3F801 97 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A3F805 101 4c3950ff REX.W cmpq [rax-0x1],r10
0000000083A3F809 105 0f851f000000 jnz 142 (0000000083A3F82E)
0000000083A3F80F 111 f20f104007 movsd xmm0,[rax+0x7]
0000000083A3F814 116 f20f2cc0 cvttsd2sil rax,xmm0
0000000083A3F818 120 f20f2ac8 cvtsi2sd xmm1,rax
0000000083A3F81C 124 660f2ec1 ucomisd xmm0,xmm1
0000000083A3F820 128 0f8508000000 jnz 142 (0000000083A3F82E)
0000000083A3F826 134 0f8a02000000 jpe 142 (0000000083A3F82E)
0000000083A3F82C 140 eb9c jmp 42 (0000000083A3F7CA)
0000000083A3F82E 142 49ba0a60b08300000000 REX.W movq r10,0000000083B0600A ;; deoptimization bailout 1
0000000083A3F838 152 41ffe2 jmp r10
0000000083A3F83B 155 90 nop
0000000083A3F83C 156 90 nop
0000000083A3F83D 157 90 nop
0000000083A3F83E 158 90 nop
0000000083A3F83F 159 90 nop
0000000083A3F840 160 90 nop
0000000083A3F841 161 90 nop
0000000083A3F842 162 90 nop
0000000083A3F843 163 90 nop
0000000083A3F844 164 90 nop
0000000083A3F845 165 90 nop
0000000083A3F846 166 90 nop
0000000083A3F847 167 90 nop
;;; Safepoint table.
Deoptimization Input Data (deopt points = 2)
index ast id argc pc commands
0 3 0 20 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=3, function=<self>, height=0}
STACK_SLOT {input=-1}
1 3 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=3, function=<self>, height=0}
STACK_SLOT {input=-1}
Safepoints (size = 18)
0000000083A3F7B4 20 11111111 (sp -> fp) 0
RelocInfo (size = 448)
0000000083A3F7A6 comment (;;; @0: label.)
0000000083A3F7A6 comment (;;; B0)
0000000083A3F7A6 comment (;;; @1: gap.)
0000000083A3F7A6 comment (;;; @2: parameter.)
0000000083A3F7A6 comment (;;; @3: gap.)
0000000083A3F7A6 comment (;;; @4: context.)
0000000083A3F7A9 comment (;;; @5: gap.)
0000000083A3F7A9 comment (;;; @6: gap.)
0000000083A3F7A9 comment (;;; @7: goto.)
0000000083A3F7A9 comment (;;; @8: label.)
0000000083A3F7A9 comment (;;; B1)
0000000083A3F7A9 comment (;;; @9: gap.)
0000000083A3F7A9 comment (;;; @10: stack-check.)
0000000083A3F7B0 code target (STUB) (0000000083A12780)
0000000083A3F7B4 comment (;;; @11: gap.)
0000000083A3F7B4 comment (;;; @12: load-global-cell.)
0000000083A3F7B6 global property cell
0000000083A3F7BE comment (;;; @13: gap.)
0000000083A3F7BE comment (;;; @14: tagged-to-i.)
0000000083A3F7CA comment (;;; @15: gap.)
0000000083A3F7CA comment (;;; @16: gap.)
0000000083A3F7CA comment (;;; @17: cmp-id-and-branch.)
0000000083A3F7D5 comment (;;; @22: label.)
0000000083A3F7D5 comment (;;; B3)
0000000083A3F7D5 comment (;;; @23: gap.)
0000000083A3F7D5 comment (;;; @24: add-i.)
0000000083A3F7D8 comment (;;; @25: gap.)
0000000083A3F7D8 comment (;;; @26: smi-tag.)
0000000083A3F7DC comment (;;; @27: gap.)
0000000083A3F7DC comment (;;; @28: store-global-cell.)
0000000083A3F7DE global property cell
0000000083A3F7E9 comment (;;; @29: gap.)
0000000083A3F7E9 comment (;;; @30: return.)
0000000083A3F7F0 comment (;;; @31: gap.)
0000000083A3F7F0 comment (;;; @36: label.)
0000000083A3F7F0 comment (;;; B5)
0000000083A3F7F0 comment (;;; @37: gap.)
0000000083A3F7F0 comment (;;; @38: constant-t.)
0000000083A3F7F2 embedded object (00000000AE404121 <undefined>)
0000000083A3F7FA comment (;;; @39: gap.)
0000000083A3F7FA comment (;;; @40: return.)
0000000083A3F801 comment (;;; @41: gap.)
0000000083A3F801 comment (;;; Deferred code @14: tagged-to-i.)
0000000083A3F830 runtime entry (deoptimization bailout 1)
0000000083A3F848 comment (;;; Safepoint table.)
--- Raw source ---
() {
var s = 0;
var i = 0;
while (i !== undefined) {
s += i;
i = it();
}
return s;
}
--- Code ---
kind = FUNCTION
name = call_iota
Instructions (size = 328)
[ function compiled by full code generator
0000000083A3F8C0 0 55 push rbp
0000000083A3F8C1 1 4889e5 REX.W movq rbp,rsp
0000000083A3F8C4 4 56 push rsi
0000000083A3F8C5 5 57 push rdi
[ Allocate locals
0000000083A3F8C6 6 498b55a8 REX.W movq rdx,[r13-0x58]
0000000083A3F8CA 10 52 push rdx
0000000083A3F8CB 11 52 push rdx
]
[ Declarations
]
[ Stack check
0000000083A3F8CC 12 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3F8D0 16 7305 jnc 23 (0000000083A3F8D7)
0000000083A3F8D2 18 e8a92efdff call 0000000083A12780 ;; debug: statement 108
;; code: STUB, StackCheckStub, minor: 0
]
[ Body
[ Block
[ ExpressionStatement
[ Assignment
[ Literal
0000000083A3F8D7 23 33c0 xorl rax,rax
]
0000000083A3F8D9 25 488945e8 REX.W movq [rbp-0x18],rax
]
]
]
[ Block
[ ExpressionStatement
[ Assignment
[ Literal
0000000083A3F8DD 29 33c0 xorl rax,rax
]
0000000083A3F8DF 31 488945e0 REX.W movq [rbp-0x20],rax
]
]
]
[ WhileStatement
0000000083A3F8E3 35 e979000000 jmp 161 (0000000083A3F961)
[ Block
[ ExpressionStatement
[ Assignment
Stack slot
0000000083A3F8E8 40 488b45e8 REX.W movq rax,[rbp-0x18]
0000000083A3F8EC 44 50 push rax
[ VariableProxy
Stack slot
0000000083A3F8ED 45 488b45e0 REX.W movq rax,[rbp-0x20]
]
0000000083A3F8F1 49 5a pop rdx
0000000083A3F8F2 50 488bc8 REX.W movq rcx,rax
0000000083A3F8F5 53 480bc2 REX.W orq rax,rdx
0000000083A3F8F8 56 a801 test al,0x1
0000000083A3F8FA 58 720c jc 72 (0000000083A3F908)
0000000083A3F8FC 60 488bc1 REX.W movq rax,rcx
0000000083A3F8FF 63 e8fcb0fdff call 0000000083A1AA00 ;; debug: statement 174
;; debug: position 177
;; code: BINARY_OP_IC, UNINITIALIZED (id = 49)
0000000083A3F904 68 a80a test al,0xa
0000000083A3F906 70 eb0c jmp 84 (0000000083A3F914)
0000000083A3F908 72 488bc2 REX.W movq rax,rdx
0000000083A3F90B 75 4803c1 REX.W addq rax,rcx
0000000083A3F90E 78 0f80e8ffffff jo 60 (0000000083A3F8FC)
0000000083A3F914 84 488945e8 REX.W movq [rbp-0x18],rax
]
]
[ ExpressionStatement
[ Assignment
[ Call
0000000083A3F918 88 ff7627 push [rsi+0x27]
0000000083A3F91B 91 48b9197c12ee00000000 REX.W movq rcx,00000000EE127C19 ;; object: 00000000EE127C19 <String[2]: it>
0000000083A3F925 101 e8769bfdff call 0000000083A194A0 ;; debug: statement 187
;; debug: position 191
;; code: contextual, CALL_IC, UNINITIALIZED, argc = 0
0000000083A3F92A 106 488b75f8 REX.W movq rsi,[rbp-0x8]
]
0000000083A3F92E 110 488945e0 REX.W movq [rbp-0x20],rax
]
]
]
[ Stack check
0000000083A3F932 114 48bb619190b300000000 REX.W movq rbx,00000000B3909161 ;; object: 00000000B3909161 Cell for 5888
0000000083A3F93C 124 83430bff addl [rbx+0xb],0xff
0000000083A3F940 128 791f jns 161 (0000000083A3F961)
0000000083A3F942 130 e8593cfdff call 0000000083A135A0 ;; debug: statement 143
;; code: STUB, InterruptStub, minor: 0
0000000083A3F947 135 a801 test al,0x1
0000000083A3F949 137 48bb619190b300000000 REX.W movq rbx,00000000B3909161 ;; object: 00000000B3909161 Cell for 5888
0000000083A3F953 147 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3F95D 157 4c895307 REX.W movq [rbx+0x7],r10
]
[ UnaryOperation (NOT)
[ CompareOperation
[ VariableProxy
Stack slot
0000000083A3F961 161 ff75e0 push [rbp-0x20]
]
[ VariableProxy
Global variable
0000000083A3F964 164 48b9614160fc00000000 REX.W movq rcx,00000000FC604161 ;; object: 00000000FC604161 <String[9]: undefined>
0000000083A3F96E 174 488b4627 REX.W movq rax,[rsi+0x27]
0000000083A3F972 178 e849e3fcff call LoadIC_Initialize (0000000083A0DCC0) ;; debug: position 156
;; code: contextual, LOAD_IC, UNINITIALIZED
]
0000000083A3F977 183 5a pop rdx
0000000083A3F978 184 488bca REX.W movq rcx,rdx
0000000083A3F97B 187 480bc8 REX.W orq rcx,rax
0000000083A3F97E 190 f6c101 testb rcx,0x1
0000000083A3F981 193 730e jnc 209 (0000000083A3F991)
0000000083A3F983 195 483bd0 REX.W cmpq rdx,rax
0000000083A3F986 198 0f8426000000 jz 242 (0000000083A3F9B2)
0000000083A3F98C 204 e957ffffff jmp 40 (0000000083A3F8E8)
0000000083A3F991 209 e86a75fdff call 0000000083A16F00 ;; debug: position 152
;; code: COMPARE_IC, UNINITIALIZED (id = 34)
0000000083A3F996 214 a815 test al,0x15
0000000083A3F998 216 eb0f jmp 233 (0000000083A3F9A9)
0000000083A3F99A 218 493b45c0 REX.W cmpq rax,[r13-0x40]
0000000083A3F99E 222 0f840e000000 jz 242 (0000000083A3F9B2)
0000000083A3F9A4 228 e93fffffff jmp 40 (0000000083A3F8E8)
0000000083A3F9A9 233 4885c0 REX.W testq rax,rax
0000000083A3F9AC 236 0f8536ffffff jnz 40 (0000000083A3F8E8)
]
]
]
[ ReturnStatement
[ VariableProxy
Stack slot
0000000083A3F9B2 242 488b45e8 REX.W movq rax,[rbp-0x18]
]
[ Return sequence
0000000083A3F9B6 246 48bb619190b300000000 REX.W movq rbx,00000000B3909161 ;; object: 00000000B3909161 Cell for 5888
0000000083A3F9C0 256 83430bff addl [rbx+0xb],0xff
0000000083A3F9C4 260 791f jns 293 (0000000083A3F9E5)
0000000083A3F9C6 262 50 push rax
0000000083A3F9C7 263 e8d43bfdff call 0000000083A135A0 ;; debug: statement 206
;; debug: position 213
;; code: STUB, InterruptStub, minor: 0
0000000083A3F9CC 268 58 pop rax
0000000083A3F9CD 269 48bb619190b300000000 REX.W movq rbx,00000000B3909161 ;; object: 00000000B3909161 Cell for 5888
0000000083A3F9D7 279 49ba0000000000170000 REX.W movq r10,0000170000000000
0000000083A3F9E1 289 4c895307 REX.W movq [rbx+0x7],r10
0000000083A3F9E5 293 488be5 REX.W movq rsp,rbp ;; debug: statement 216
;; js return
0000000083A3F9E8 296 5d pop rbp
0000000083A3F9E9 297 c20800 ret 0x8
0000000083A3F9EC 300 cc int3
0000000083A3F9ED 301 cc int3
0000000083A3F9EE 302 cc int3
0000000083A3F9EF 303 cc int3
0000000083A3F9F0 304 cc int3
0000000083A3F9F1 305 cc int3
]
]
]
[ return <undefined>;
0000000083A3F9F2 306 498b45a8 REX.W movq rax,[r13-0x58]
[ Return sequence
0000000083A3F9F6 310 e9bbffffff jmp 246 (0000000083A3F9B6)
]
]
]
0000000083A3F9FB 315 90 nop
Deoptimization Output Data (deopt points = 31)
ast id pc state
2 12 NO_REGISTERS
3 12 NO_REGISTERS
4 23 NO_REGISTERS
8 25 TOS_REG
14 29 TOS_REG
12 29 NO_REGISTERS
5 29 NO_REGISTERS
15 29 NO_REGISTERS
19 31 TOS_REG
25 35 TOS_REG
23 35 NO_REGISTERS
16 35 NO_REGISTERS
29 40 NO_REGISTERS
40 40 NO_REGISTERS
42 44 TOS_REG
44 49 TOS_REG
49 84 TOS_REG
48 88 TOS_REG
46 88 NO_REGISTERS
58 106 TOS_REG
56 110 TOS_REG
61 114 TOS_REG
59 114 NO_REGISTERS
41 114 NO_REGISTERS
26 161 NO_REGISTERS
28 161 NO_REGISTERS
30 164 NO_REGISTERS
32 183 TOS_REG
34 218 TOS_REG
27 242 NO_REGISTERS
62 246 TOS_REG
Stack checks (size = 1)
ast_id pc_offset
28 135
00000000AE45B041: [TypeFeedbackInfo]
- ic_total_count: 4, ic_with_type_info_count: 0
- type_feedback_cells: 00000000FC604101: [FixedArray]
- length: 0
RelocInfo (size = 803)
0000000083A3F8C0 comment ([ function compiled by full code generator)
0000000083A3F8C6 comment ([ Allocate locals)
0000000083A3F8CC comment (])
0000000083A3F8CC comment ([ Declarations)
0000000083A3F8CC comment (])
0000000083A3F8CC comment ([ Stack check)
0000000083A3F8D2 statement position (108)
0000000083A3F8D3 code target (STUB) (0000000083A12780)
0000000083A3F8D7 comment (])
0000000083A3F8D7 comment ([ Body)
0000000083A3F8D7 comment ([ Block)
0000000083A3F8D7 comment ([ ExpressionStatement)
0000000083A3F8D7 comment ([ Assignment)
0000000083A3F8D7 comment ([ Literal)
0000000083A3F8D9 comment (])
0000000083A3F8DD comment (])
0000000083A3F8DD comment (])
0000000083A3F8DD comment (])
0000000083A3F8DD comment ([ Block)
0000000083A3F8DD comment ([ ExpressionStatement)
0000000083A3F8DD comment ([ Assignment)
0000000083A3F8DD comment ([ Literal)
0000000083A3F8DF comment (])
0000000083A3F8E3 comment (])
0000000083A3F8E3 comment (])
0000000083A3F8E3 comment (])
0000000083A3F8E3 comment ([ WhileStatement)
0000000083A3F8E8 comment ([ Block)
0000000083A3F8E8 comment ([ ExpressionStatement)
0000000083A3F8E8 comment ([ Assignment)
0000000083A3F8E8 comment (Stack slot)
0000000083A3F8ED comment ([ VariableProxy)
0000000083A3F8ED comment (Stack slot)
0000000083A3F8F1 comment (])
0000000083A3F8FF statement position (174)
0000000083A3F8FF position (177)
0000000083A3F900 code target with id (BINARY_OP_IC) (0000000083A1AA00) (id=49)
0000000083A3F918 comment (])
0000000083A3F918 comment (])
0000000083A3F918 comment ([ ExpressionStatement)
0000000083A3F918 comment ([ Assignment)
0000000083A3F918 comment ([ Call)
0000000083A3F91D embedded object (00000000EE127C19 <String[2]: it>)
0000000083A3F925 statement position (187)
0000000083A3F925 position (191)
0000000083A3F926 code target (context) (CALL_IC) (0000000083A194A0)
0000000083A3F92E comment (])
0000000083A3F932 comment (])
0000000083A3F932 comment (])
0000000083A3F932 comment (])
0000000083A3F932 comment ([ Stack check)
0000000083A3F934 embedded object (00000000B3909161 Cell for 5888)
0000000083A3F942 statement position (143)
0000000083A3F943 code target (STUB) (0000000083A135A0)
0000000083A3F94B embedded object (00000000B3909161 Cell for 5888)
0000000083A3F961 comment (])
0000000083A3F961 comment ([ UnaryOperation (NOT))
0000000083A3F961 comment ([ CompareOperation)
0000000083A3F961 comment ([ VariableProxy)
0000000083A3F961 comment (Stack slot)
0000000083A3F964 comment (])
0000000083A3F964 comment ([ VariableProxy)
0000000083A3F964 comment (Global variable)
0000000083A3F966 embedded object (00000000FC604161 <String[9]: undefined>)
0000000083A3F972 position (156)
0000000083A3F973 code target (context) (LOAD_IC) (0000000083A0DCC0)
0000000083A3F977 comment (])
0000000083A3F991 position (152)
0000000083A3F992 code target with id (COMPARE_IC) (0000000083A16F00) (id=34)
0000000083A3F9B2 comment (])
0000000083A3F9B2 comment (])
0000000083A3F9B2 comment (])
0000000083A3F9B2 comment ([ ReturnStatement)
0000000083A3F9B2 comment ([ VariableProxy)
0000000083A3F9B2 comment (Stack slot)
0000000083A3F9B6 comment (])
0000000083A3F9B6 comment ([ Return sequence)
0000000083A3F9B8 embedded object (00000000B3909161 Cell for 5888)
0000000083A3F9C7 statement position (206)
0000000083A3F9C7 position (213)
0000000083A3F9C8 code target (STUB) (0000000083A135A0)
0000000083A3F9CF embedded object (00000000B3909161 Cell for 5888)
0000000083A3F9E5 statement position (216)
0000000083A3F9E5 js return
0000000083A3F9F2 comment (])
0000000083A3F9F2 comment (])
0000000083A3F9F2 comment (])
0000000083A3F9F2 comment ([ return <undefined>;)
0000000083A3F9F6 comment ([ Return sequence)
0000000083A3F9FB comment (])
0000000083A3F9FB comment (])
0000000083A3F9FB comment (])
--- Raw source ---
() {
var s = 0;
var i = 0;
while (i !== undefined) {
s += i;
i = it();
}
return s;
}
--- Optimized code ---
kind = OPTIMIZED_FUNCTION
name = call_iota
stack_slots = 9
Instructions (size = 572)
0000000083A3FA80 0 55 push rbp
0000000083A3FA81 1 4889e5 REX.W movq rbp,rsp
0000000083A3FA84 4 56 push rsi
0000000083A3FA85 5 57 push rdi
0000000083A3FA86 6 4883ec48 REX.W subq rsp,0x48
;;; @0: label.
;;; B0
;;; @1: gap.
;;; @2: parameter.
;;; @3: gap.
;;; @4: context.
0000000083A3FA8A 10 488bc6 REX.W movq rax,rsi
;;; @5: gap.
0000000083A3FA8D 13 488945c8 REX.W movq [rbp-0x38],rax
;;; @6: gap.
;;; @7: goto.
;;; @8: label.
;;; B1
;;; @9: gap.
;;; @10: stack-check.
0000000083A3FA91 17 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A3FA95 21 7305 jnc 28 (0000000083A3FA9C)
0000000083A3FA97 23 e8e42cfdff call 0000000083A12780 ;; code: STUB, StackCheckStub, minor: 0
;;; @11: gap.
;;; @12: gap.
;;; @13: goto.
0000000083A3FA9C 28 e930000000 jmp 81 (0000000083A3FAD1)
;;; @14: label.
;;; B2
;;; @15: gap.
;;; @16: unknown-osr-value.
;;; @17: gap.
;;; @18: unknown-osr-value.
;;; @19: gap.
;;; @20: unknown-osr-value.
;;; @21: gap.
;;; @22: unknown-osr-value.
;;; @23: gap.
;;; @24: osr-entry.
;;; @25: gap.
;;; @26: context.
0000000083A3FAA1 33 488bc6 REX.W movq rax,rsi
;;; @27: gap.
0000000083A3FAA4 36 488b5dd8 REX.W movq rbx,[rbp-0x28]
;;; @28: tagged-to-i.
0000000083A3FAA8 40 f6c301 testb rbx,0x1
0000000083A3FAAB 43 0f85ce000000 jnz 255 (0000000083A3FB7F)
0000000083A3FAB1 49 48c1eb20 REX.W shrq rbx,32
;;; @29: gap.
0000000083A3FAB5 53 488b55d0 REX.W movq rdx,[rbp-0x30]
;;; @30: tagged-to-i.
0000000083A3FAB9 57 f6c201 testb rdx,0x1
0000000083A3FABC 60 0f8502010000 jnz 324 (0000000083A3FBC4)
0000000083A3FAC2 66 48c1ea20 REX.W shrq rdx,32
;;; @31: gap.
;;; @32: gap.
0000000083A3FAC6 70 488b4de8 REX.W movq rcx,[rbp-0x18]
0000000083A3FACA 74 4892 REX.W xchgq rax, rdx
;;; @33: goto.
0000000083A3FACC 76 e912000000 jmp 99 (0000000083A3FAE3)
;;; @34: label.
;;; B3
;;; @35: gap.
;;; @36: gap.
0000000083A3FAD1 81 488b4d10 REX.W movq rcx,[rbp+0x10]
0000000083A3FAD5 85 488b55c8 REX.W movq rdx,[rbp-0x38]
0000000083A3FAD9 89 bb00000000 movl rbx,0000000000000000
0000000083A3FADE 94 b800000000 movl rax,0000000000000000
;;; @37: goto.
;;; @38: label.
;;; B4
0000000083A3FAE3 99 48894dc0 REX.W movq [rbp-0x40],rcx
;;; @39: gap.
;;; @40: global-object.
0000000083A3FAE7 103 488b5627 REX.W movq rdx,[rsi+0x27]
;;; @41: gap.
;;; @42: global-receiver.
0000000083A3FAEB 107 488b522f REX.W movq rdx,[rdx+0x2f]
;;; @43: gap.
0000000083A3FAEF 111 488955b0 REX.W movq [rbp-0x50],rdx
;;; @44: gap.
;;; @45: goto.
;;; @46: label.
;;; B5 - LOOP entry
0000000083A3FAF3 115 488945a8 REX.W movq [rbp-0x58],rax
;;; @47: gap.
0000000083A3FAF7 119 488bf8 REX.W movq rdi,rax
;;; @48: smi-tag.
0000000083A3FAFA 122 48c1e720 REX.W shlq rdi,32
;;; @49: gap.
;;; @50: gap.
;;; @51: is-nil-and-branch.
0000000083A3FAFE 126 493b7da8 REX.W cmpq rdi,[r13-0x58]
0000000083A3FB02 130 0f8469000000 jz 241 (0000000083A3FB71)
;;; @56: label.
;;; B7
;;; @57: gap.
0000000083A3FB08 136 488bfb REX.W movq rdi,rbx
;;; @58: add-i.
0000000083A3FB0B 139 03f8 addl rdi,rax
0000000083A3FB0D 141 0f803b010000 jo 462 (0000000083A3FC4E)
;;; @59: gap.
0000000083A3FB13 147 48897db8 REX.W movq [rbp-0x48],rdi
;;; @60: load-global-cell.
0000000083A3FB17 151 49b8189190b300000000 REX.W movq r8,00000000B3909118 ;; global property cell
0000000083A3FB21 161 4d8b00 REX.W movq r8,[r8]
;;; @61: gap.
;;; @62: check-function.
0000000083A3FB24 164 49ba81ab45ae00000000 REX.W movq r10,00000000AE45AB81 ;; object: 00000000AE45AB81 <JS Function it>
0000000083A3FB2E 174 4d3bc2 REX.W cmpq r8,r10
0000000083A3FB31 177 0f8524010000 jnz 475 (0000000083A3FC5B)
;;; @63: gap.
;;; @64: push-argument.
0000000083A3FB37 183 52 push rdx
;;; @65: gap.
;;; @66: call-known-global.
0000000083A3FB38 184 48bf81ab45ae00000000 REX.W movq rdi,00000000AE45AB81 ;; object: 00000000AE45AB81 <JS Function it>
0000000083A3FB42 194 488b772f REX.W movq rsi,[rdi+0x2f]
0000000083A3FB46 198 4c89e1 REX.W movq rcx,r12
0000000083A3FB49 201 ff5717 call [rdi+0x17] ;; debug: position 191
0000000083A3FB4C 204 488b75f8 REX.W movq rsi,[rbp-0x8]
;;; @67: gap.
;;; @68: lazy-bailout.
;;; @69: gap.
0000000083A3FB50 208 488bd8 REX.W movq rbx,rax
;;; @70: tagged-to-i.
0000000083A3FB53 211 f6c301 testb rbx,0x1
0000000083A3FB56 214 0f85ad000000 jnz 393 (0000000083A3FC09)
0000000083A3FB5C 220 48c1eb20 REX.W shrq rbx,32
;;; @71: gap.
;;; @72: gap.
0000000083A3FB60 224 488bc3 REX.W movq rax,rbx
0000000083A3FB63 227 488b5db8 REX.W movq rbx,[rbp-0x48]
0000000083A3FB67 231 488b4dc0 REX.W movq rcx,[rbp-0x40]
0000000083A3FB6B 235 488b55b0 REX.W movq rdx,[rbp-0x50]
;;; @73: goto.
0000000083A3FB6F 239 eb82 jmp 115 (0000000083A3FAF3)
;;; @78: label.
;;; B9
;;; @79: gap.
;;; @80: smi-tag.
0000000083A3FB71 241 48c1e320 REX.W shlq rbx,32
;;; @81: gap.
0000000083A3FB75 245 488bc3 REX.W movq rax,rbx
;;; @82: return.
0000000083A3FB78 248 488be5 REX.W movq rsp,rbp
0000000083A3FB7B 251 5d pop rbp
0000000083A3FB7C 252 c20800 ret 0x8
;;; @83: gap.
;;; Deferred code @28: tagged-to-i.
0000000083A3FB7F 255 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A3FB83 259 4c3953ff REX.W cmpq [rbx-0x1],r10
0000000083A3FB87 263 0f85db000000 jnz 488 (0000000083A3FC68)
0000000083A3FB8D 269 f20f104307 movsd xmm0,[rbx+0x7]
0000000083A3FB92 274 f20f2cd8 cvttsd2sil rbx,xmm0
0000000083A3FB96 278 f20f2acb cvtsi2sd xmm1,rbx
0000000083A3FB9A 282 660f2ec1 ucomisd xmm0,xmm1
0000000083A3FB9E 286 0f85c4000000 jnz 488 (0000000083A3FC68)
0000000083A3FBA4 292 0f8abe000000 jpe 488 (0000000083A3FC68)
0000000083A3FBAA 298 85db testl rbx,rbx
0000000083A3FBAC 300 0f850d000000 jnz 319 (0000000083A3FBBF)
0000000083A3FBB2 306 660f50d8 movmskpd rbx,xmm0
0000000083A3FBB6 310 83e301 andl rbx,0x1
0000000083A3FBB9 313 0f85a9000000 jnz 488 (0000000083A3FC68)
0000000083A3FBBF 319 e9f1feffff jmp 53 (0000000083A3FAB5)
;;; Deferred code @30: tagged-to-i.
0000000083A3FBC4 324 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A3FBC8 328 4c3952ff REX.W cmpq [rdx-0x1],r10
0000000083A3FBCC 332 0f85a3000000 jnz 501 (0000000083A3FC75)
0000000083A3FBD2 338 f20f104207 movsd xmm0,[rdx+0x7]
0000000083A3FBD7 343 f20f2cd0 cvttsd2sil rdx,xmm0
0000000083A3FBDB 347 f20f2aca cvtsi2sd xmm1,rdx
0000000083A3FBDF 351 660f2ec1 ucomisd xmm0,xmm1
0000000083A3FBE3 355 0f858c000000 jnz 501 (0000000083A3FC75)
0000000083A3FBE9 361 0f8a86000000 jpe 501 (0000000083A3FC75)
0000000083A3FBEF 367 85d2 testl rdx,rdx
0000000083A3FBF1 369 0f850d000000 jnz 388 (0000000083A3FC04)
0000000083A3FBF7 375 660f50d0 movmskpd rdx,xmm0
0000000083A3FBFB 379 83e201 andl rdx,0x1
0000000083A3FBFE 382 0f8571000000 jnz 501 (0000000083A3FC75)
0000000083A3FC04 388 e9bdfeffff jmp 70 (0000000083A3FAC6)
;;; Deferred code @70: tagged-to-i.
0000000083A3FC09 393 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A3FC0D 397 4c3953ff REX.W cmpq [rbx-0x1],r10
0000000083A3FC11 401 0f856b000000 jnz 514 (0000000083A3FC82)
0000000083A3FC17 407 f20f104307 movsd xmm0,[rbx+0x7]
0000000083A3FC1C 412 f20f2cd8 cvttsd2sil rbx,xmm0
0000000083A3FC20 416 f20f2acb cvtsi2sd xmm1,rbx
0000000083A3FC24 420 660f2ec1 ucomisd xmm0,xmm1
0000000083A3FC28 424 0f8554000000 jnz 514 (0000000083A3FC82)
0000000083A3FC2E 430 0f8a4e000000 jpe 514 (0000000083A3FC82)
0000000083A3FC34 436 85db testl rbx,rbx
0000000083A3FC36 438 0f850d000000 jnz 457 (0000000083A3FC49)
0000000083A3FC3C 444 660f50d8 movmskpd rbx,xmm0
0000000083A3FC40 448 83e301 andl rbx,0x1
0000000083A3FC43 451 0f8539000000 jnz 514 (0000000083A3FC82)
0000000083A3FC49 457 e912ffffff jmp 224 (0000000083A3FB60)
0000000083A3FC4E 462 49ba1460b08300000000 REX.W movq r10,0000000083B06014 ;; deoptimization bailout 2
0000000083A3FC58 472 41ffe2 jmp r10
0000000083A3FC5B 475 49ba1e60b08300000000 REX.W movq r10,0000000083B0601E ;; deoptimization bailout 3
0000000083A3FC65 485 41ffe2 jmp r10
0000000083A3FC68 488 49ba3260b08300000000 REX.W movq r10,0000000083B06032 ;; deoptimization bailout 5
0000000083A3FC72 498 41ffe2 jmp r10
0000000083A3FC75 501 49ba3c60b08300000000 REX.W movq r10,0000000083B0603C ;; deoptimization bailout 6
0000000083A3FC7F 511 41ffe2 jmp r10
0000000083A3FC82 514 49ba4660b08300000000 REX.W movq r10,0000000083B06046 ;; deoptimization bailout 7
0000000083A3FC8C 524 41ffe2 jmp r10
0000000083A3FC8F 527 90 nop
0000000083A3FC90 528 90 nop
0000000083A3FC91 529 90 nop
0000000083A3FC92 530 90 nop
0000000083A3FC93 531 90 nop
0000000083A3FC94 532 90 nop
0000000083A3FC95 533 90 nop
0000000083A3FC96 534 90 nop
0000000083A3FC97 535 90 nop
0000000083A3FC98 536 90 nop
0000000083A3FC99 537 90 nop
0000000083A3FC9A 538 90 nop
0000000083A3FC9B 539 90 nop
;;; Safepoint table.
Deoptimization Input Data (deopt points = 8)
index ast id argc pc commands
0 3 0 28 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=3, function=<self>, height=2}
STACK_SLOT {input=-1}
LITERAL {literal_id=0}
LITERAL {literal_id=0}
1 28 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=28, function=<self>, height=2}
STACK_SLOT {input=0}
STACK_SLOT {input=2}
STACK_SLOT {input=3}
2 29 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=29, function=<self>, height=2}
REGISTER {input=rcx}
INT32_REGISTER {input=rbx}
INT32_REGISTER {input=rax}
3 29 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=29, function=<self>, height=2}
REGISTER {input=rcx}
INT32_REGISTER {input=rbx}
INT32_REGISTER {input=rax}
4 56 0 208 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=56, function=<self>, height=3}
STACK_SLOT {input=5}
INT32_STACK_SLOT {input=6}
INT32_STACK_SLOT {input=8}
REGISTER {input=rax}
5 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=0}
STACK_SLOT {input=2}
STACK_SLOT {input=3}
6 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=0}
STACK_SLOT {input=2}
STACK_SLOT {input=3}
7 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=5}
INT32_STACK_SLOT {input=6}
REGISTER {input=rax}
Safepoints (size = 32)
0000000083A3FA9C 28 000010000 (sp -> fp) 0
0000000083A3FB4C 204 010100000 (sp -> fp) 4
RelocInfo (size = 996)
0000000083A3FA8A comment (;;; @0: label.)
0000000083A3FA8A comment (;;; B0)
0000000083A3FA8A comment (;;; @1: gap.)
0000000083A3FA8A comment (;;; @2: parameter.)
0000000083A3FA8A comment (;;; @3: gap.)
0000000083A3FA8A comment (;;; @4: context.)
0000000083A3FA8D comment (;;; @5: gap.)
0000000083A3FA91 comment (;;; @6: gap.)
0000000083A3FA91 comment (;;; @7: goto.)
0000000083A3FA91 comment (;;; @8: label.)
0000000083A3FA91 comment (;;; B1)
0000000083A3FA91 comment (;;; @9: gap.)
0000000083A3FA91 comment (;;; @10: stack-check.)
0000000083A3FA98 code target (STUB) (0000000083A12780)
0000000083A3FA9C comment (;;; @11: gap.)
0000000083A3FA9C comment (;;; @12: gap.)
0000000083A3FA9C comment (;;; @13: goto.)
0000000083A3FAA1 comment (;;; @14: label.)
0000000083A3FAA1 comment (;;; B2)
0000000083A3FAA1 comment (;;; @15: gap.)
0000000083A3FAA1 comment (;;; @16: unknown-osr-value.)
0000000083A3FAA1 comment (;;; @17: gap.)
0000000083A3FAA1 comment (;;; @18: unknown-osr-value.)
0000000083A3FAA1 comment (;;; @19: gap.)
0000000083A3FAA1 comment (;;; @20: unknown-osr-value.)
0000000083A3FAA1 comment (;;; @21: gap.)
0000000083A3FAA1 comment (;;; @22: unknown-osr-value.)
0000000083A3FAA1 comment (;;; @23: gap.)
0000000083A3FAA1 comment (;;; @24: osr-entry.)
0000000083A3FAA1 comment (;;; @25: gap.)
0000000083A3FAA1 comment (;;; @26: context.)
0000000083A3FAA4 comment (;;; @27: gap.)
0000000083A3FAA8 comment (;;; @28: tagged-to-i.)
0000000083A3FAB5 comment (;;; @29: gap.)
0000000083A3FAB9 comment (;;; @30: tagged-to-i.)
0000000083A3FAC6 comment (;;; @31: gap.)
0000000083A3FAC6 comment (;;; @32: gap.)
0000000083A3FACC comment (;;; @33: goto.)
0000000083A3FAD1 comment (;;; @34: label.)
0000000083A3FAD1 comment (;;; B3)
0000000083A3FAD1 comment (;;; @35: gap.)
0000000083A3FAD1 comment (;;; @36: gap.)
0000000083A3FAE3 comment (;;; @37: goto.)
0000000083A3FAE3 comment (;;; @38: label.)
0000000083A3FAE3 comment (;;; B4)
0000000083A3FAE7 comment (;;; @39: gap.)
0000000083A3FAE7 comment (;;; @40: global-object.)
0000000083A3FAEB comment (;;; @41: gap.)
0000000083A3FAEB comment (;;; @42: global-receiver.)
0000000083A3FAEF comment (;;; @43: gap.)
0000000083A3FAF3 comment (;;; @44: gap.)
0000000083A3FAF3 comment (;;; @45: goto.)
0000000083A3FAF3 comment (;;; @46: label.)
0000000083A3FAF3 comment (;;; B5 - LOOP entry)
0000000083A3FAF7 comment (;;; @47: gap.)
0000000083A3FAFA comment (;;; @48: smi-tag.)
0000000083A3FAFE comment (;;; @49: gap.)
0000000083A3FAFE comment (;;; @50: gap.)
0000000083A3FAFE comment (;;; @51: is-nil-and-branch.)
0000000083A3FB08 comment (;;; @56: label.)
0000000083A3FB08 comment (;;; B7)
0000000083A3FB08 comment (;;; @57: gap.)
0000000083A3FB0B comment (;;; @58: add-i.)
0000000083A3FB13 comment (;;; @59: gap.)
0000000083A3FB17 comment (;;; @60: load-global-cell.)
0000000083A3FB19 global property cell
0000000083A3FB24 comment (;;; @61: gap.)
0000000083A3FB24 comment (;;; @62: check-function.)
0000000083A3FB26 embedded object (00000000AE45AB81 <JS Function it>)
0000000083A3FB37 comment (;;; @63: gap.)
0000000083A3FB37 comment (;;; @64: push-argument.)
0000000083A3FB38 comment (;;; @65: gap.)
0000000083A3FB38 comment (;;; @66: call-known-global.)
0000000083A3FB3A embedded object (00000000AE45AB81 <JS Function it>)
0000000083A3FB49 position (191)
0000000083A3FB50 comment (;;; @67: gap.)
0000000083A3FB50 comment (;;; @68: lazy-bailout.)
0000000083A3FB50 comment (;;; @69: gap.)
0000000083A3FB53 comment (;;; @70: tagged-to-i.)
0000000083A3FB60 comment (;;; @71: gap.)
0000000083A3FB60 comment (;;; @72: gap.)
0000000083A3FB6F comment (;;; @73: goto.)
0000000083A3FB71 comment (;;; @78: label.)
0000000083A3FB71 comment (;;; B9)
0000000083A3FB71 comment (;;; @79: gap.)
0000000083A3FB71 comment (;;; @80: smi-tag.)
0000000083A3FB75 comment (;;; @81: gap.)
0000000083A3FB78 comment (;;; @82: return.)
0000000083A3FB7F comment (;;; @83: gap.)
0000000083A3FB7F comment (;;; Deferred code @28: tagged-to-i.)
0000000083A3FBC4 comment (;;; Deferred code @30: tagged-to-i.)
0000000083A3FC09 comment (;;; Deferred code @70: tagged-to-i.)
0000000083A3FC50 runtime entry (deoptimization bailout 2)
0000000083A3FC5D runtime entry (deoptimization bailout 3)
0000000083A3FC6A runtime entry (deoptimization bailout 5)
0000000083A3FC77 runtime entry (deoptimization bailout 6)
0000000083A3FC84 runtime entry (deoptimization bailout 7)
0000000083A3FC9C comment (;;; Safepoint table.)
--- Raw source ---
() {
var s = 0;
var i = 0;
while (i !== undefined) {
s += i;
i = it();
}
return s;
}
--- Optimized code ---
kind = OPTIMIZED_FUNCTION
name = call_iota
stack_slots = 7
Instructions (size = 748)
0000000083A40020 0 55 push rbp
0000000083A40021 1 4889e5 REX.W movq rbp,rsp
0000000083A40024 4 56 push rsi
0000000083A40025 5 57 push rdi
0000000083A40026 6 4883ec38 REX.W subq rsp,0x38
;;; @0: label.
;;; B0
;;; @1: gap.
;;; @2: parameter.
;;; @3: gap.
;;; @4: context.
0000000083A4002A 10 488bc6 REX.W movq rax,rsi
;;; @5: gap.
0000000083A4002D 13 488945c8 REX.W movq [rbp-0x38],rax
;;; @6: gap.
;;; @7: goto.
;;; @8: label.
;;; B1
;;; @9: gap.
;;; @10: stack-check.
0000000083A40031 17 493b6560 REX.W cmpq rsp,[r13+0x60]
0000000083A40035 21 7305 jnc 28 (0000000083A4003C)
0000000083A40037 23 e84427fdff call 0000000083A12780 ;; code: STUB, StackCheckStub, minor: 0
;;; @11: gap.
;;; @12: gap.
;;; @13: goto.
0000000083A4003C 28 e987000000 jmp 168 (0000000083A400C8)
;;; @14: label.
;;; B2
;;; @15: gap.
;;; @16: unknown-osr-value.
;;; @17: gap.
;;; @18: unknown-osr-value.
;;; @19: gap.
;;; @20: unknown-osr-value.
;;; @21: gap.
;;; @22: unknown-osr-value.
;;; @23: gap.
;;; @24: osr-entry.
;;; @25: gap.
;;; @26: context.
0000000083A40041 33 488bc6 REX.W movq rax,rsi
;;; @27: gap.
0000000083A40044 36 488b5dd8 REX.W movq rbx,[rbp-0x28]
;;; @28: double-untag.
0000000083A40048 40 f6c301 testb rbx,0x1
0000000083A4004B 43 7424 jz 81 (0000000083A40071)
0000000083A4004D 45 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A40051 49 4c3953ff REX.W cmpq [rbx-0x1],r10
0000000083A40055 53 7413 jz 74 (0000000083A4006A)
0000000083A40057 55 493b5da8 REX.W cmpq rbx,[r13-0x58]
0000000083A4005B 59 0f8533020000 jnz 628 (0000000083A40294)
0000000083A40061 65 0f57c9 xorps xmm1, xmm1
0000000083A40064 68 f20f5ec9 divsd xmm1,xmm1
0000000083A40068 72 eb13 jmp 93 (0000000083A4007D)
0000000083A4006A 74 f20f104b07 movsd xmm1,[rbx+0x7]
0000000083A4006F 79 eb0c jmp 93 (0000000083A4007D)
0000000083A40071 81 4c8bd3 REX.W movq r10,rbx
0000000083A40074 84 49c1ea20 REX.W shrq r10,32
0000000083A40078 88 f2410f2aca cvtsi2sd xmm1,r10
;;; @29: gap.
0000000083A4007D 93 488b55d0 REX.W movq rdx,[rbp-0x30]
;;; @30: double-untag.
0000000083A40081 97 f6c201 testb rdx,0x1
0000000083A40084 100 7424 jz 138 (0000000083A400AA)
0000000083A40086 102 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A4008A 106 4c3952ff REX.W cmpq [rdx-0x1],r10
0000000083A4008E 110 7413 jz 131 (0000000083A400A3)
0000000083A40090 112 493b55a8 REX.W cmpq rdx,[r13-0x58]
0000000083A40094 116 0f8507020000 jnz 641 (0000000083A402A1)
0000000083A4009A 122 0f57d2 xorps xmm2, xmm2
0000000083A4009D 125 f20f5ed2 divsd xmm2,xmm2
0000000083A400A1 129 eb13 jmp 150 (0000000083A400B6)
0000000083A400A3 131 f20f105207 movsd xmm2,[rdx+0x7]
0000000083A400A8 136 eb0c jmp 150 (0000000083A400B6)
0000000083A400AA 138 4c8bd2 REX.W movq r10,rdx
0000000083A400AD 141 49c1ea20 REX.W shrq r10,32
0000000083A400B1 145 f2410f2ad2 cvtsi2sd xmm2,r10
;;; @31: gap.
;;; @32: gap.
0000000083A400B6 150 488b5de8 REX.W movq rbx,[rbp-0x18]
0000000083A400BA 154 0f28c2 movaps xmm0, xmm2
0000000083A400BD 157 0f28d1 movaps xmm2, xmm1
0000000083A400C0 160 0f28c8 movaps xmm1, xmm0
;;; @33: goto.
0000000083A400C3 163 e90e000000 jmp 182 (0000000083A400D6)
;;; @34: label.
;;; B3
;;; @35: gap.
;;; @36: constant-d.
0000000083A400C8 168 0f57c9 xorps xmm1, xmm1
;;; @37: gap.
;;; @38: gap.
0000000083A400CB 171 488b5d10 REX.W movq rbx,[rbp+0x10]
0000000083A400CF 175 488b45c8 REX.W movq rax,[rbp-0x38]
0000000083A400D3 179 0f28d1 movaps xmm2, xmm1
;;; @39: goto.
;;; @40: label.
;;; B4
0000000083A400D6 182 48895dd8 REX.W movq [rbp-0x28],rbx
;;; @41: gap.
;;; @42: global-object.
0000000083A400DA 186 488b4627 REX.W movq rax,[rsi+0x27]
;;; @43: gap.
;;; @44: global-receiver.
0000000083A400DE 190 488b402f REX.W movq rax,[rax+0x2f]
;;; @45: gap.
0000000083A400E2 194 488945d0 REX.W movq [rbp-0x30],rax
;;; @46: gap.
;;; @47: goto.
;;; @48: label.
;;; B5 - LOOP entry
0000000083A400E6 198 f20f114dc0 movsd [rbp-0x40],xmm1
;;; @49: gap.
;;; @50: number-tag-d.
0000000083A400EB 203 498b8d10080000 REX.W movq rcx,[r13+0x810]
0000000083A400F2 210 488bd1 REX.W movq rdx,rcx
0000000083A400F5 213 4883c210 REX.W addq rdx,0x10
0000000083A400F9 217 0f82fd000000 jc 476 (0000000083A401FC)
0000000083A400FF 223 493b9518080000 REX.W cmpq rdx,[r13+0x818]
0000000083A40106 230 0f87f0000000 ja 476 (0000000083A401FC)
0000000083A4010C 236 49899510080000 REX.W movq [r13+0x810],rdx
0000000083A40113 243 4883c101 REX.W addq rcx,0x1
0000000083A40117 247 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A4011B 251 4c8951ff REX.W movq [rcx-0x1],r10
0000000083A4011F 255 f20f114907 movsd [rcx+0x7],xmm1
;;; @51: gap.
;;; @52: gap.
;;; @53: is-nil-and-branch.
0000000083A40124 260 493b4da8 REX.W cmpq rcx,[r13-0x58]
0000000083A40128 264 0f848b000000 jz 409 (0000000083A401B9)
;;; @58: label.
;;; B7
;;; @59: gap.
0000000083A4012E 270 0f28da movaps xmm3, xmm2
;;; @60: add-d.
0000000083A40131 273 f20f58d9 addsd xmm3,xmm1
;;; @61: gap.
0000000083A40135 277 f20f115db8 movsd [rbp-0x48],xmm3
;;; @62: load-global-cell.
0000000083A4013A 282 48ba189190b300000000 REX.W movq rdx,00000000B3909118 ;; global property cell
0000000083A40144 292 488b12 REX.W movq rdx,[rdx]
;;; @63: gap.
;;; @64: check-function.
0000000083A40147 295 49ba81ab45ae00000000 REX.W movq r10,00000000AE45AB81 ;; object: 00000000AE45AB81 <JS Function it>
0000000083A40151 305 493bd2 REX.W cmpq rdx,r10
0000000083A40154 308 0f8554010000 jnz 654 (0000000083A402AE)
;;; @65: gap.
;;; @66: push-argument.
0000000083A4015A 314 50 push rax
;;; @67: gap.
;;; @68: call-known-global.
0000000083A4015B 315 48bf81ab45ae00000000 REX.W movq rdi,00000000AE45AB81 ;; object: 00000000AE45AB81 <JS Function it>
0000000083A40165 325 488b772f REX.W movq rsi,[rdi+0x2f]
0000000083A40169 329 4c89e1 REX.W movq rcx,r12
0000000083A4016C 332 ff5717 call [rdi+0x17] ;; debug: position 191
0000000083A4016F 335 488b75f8 REX.W movq rsi,[rbp-0x8]
;;; @69: gap.
;;; @70: lazy-bailout.
;;; @71: gap.
;;; @72: double-untag.
0000000083A40173 339 a801 test al,0x1
0000000083A40175 341 7424 jz 379 (0000000083A4019B)
0000000083A40177 343 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A4017B 347 4c3950ff REX.W cmpq [rax-0x1],r10
0000000083A4017F 351 7413 jz 372 (0000000083A40194)
0000000083A40181 353 493b45a8 REX.W cmpq rax,[r13-0x58]
0000000083A40185 357 0f8530010000 jnz 667 (0000000083A402BB)
0000000083A4018B 363 0f57c9 xorps xmm1, xmm1
0000000083A4018E 366 f20f5ec9 divsd xmm1,xmm1
0000000083A40192 370 eb13 jmp 391 (0000000083A401A7)
0000000083A40194 372 f20f104807 movsd xmm1,[rax+0x7]
0000000083A40199 377 eb0c jmp 391 (0000000083A401A7)
0000000083A4019B 379 4c8bd0 REX.W movq r10,rax
0000000083A4019E 382 49c1ea20 REX.W shrq r10,32
0000000083A401A2 386 f2410f2aca cvtsi2sd xmm1,r10
;;; @73: gap.
;;; @74: gap.
0000000083A401A7 391 f20f1055b8 movsd xmm2,[rbp-0x48]
0000000083A401AC 396 488b5dd8 REX.W movq rbx,[rbp-0x28]
0000000083A401B0 400 488b45d0 REX.W movq rax,[rbp-0x30]
;;; @75: goto.
0000000083A401B4 404 e92dffffff jmp 198 (0000000083A400E6)
;;; @80: label.
;;; B9
;;; @81: gap.
;;; @82: number-tag-d.
0000000083A401B9 409 498b9d10080000 REX.W movq rbx,[r13+0x810]
0000000083A401C0 416 488bc3 REX.W movq rax,rbx
0000000083A401C3 419 4883c010 REX.W addq rax,0x10
0000000083A401C7 423 0f827b000000 jc 552 (0000000083A40248)
0000000083A401CD 429 493b8518080000 REX.W cmpq rax,[r13+0x818]
0000000083A401D4 436 0f876e000000 ja 552 (0000000083A40248)
0000000083A401DA 442 49898510080000 REX.W movq [r13+0x810],rax
0000000083A401E1 449 4883c301 REX.W addq rbx,0x1
0000000083A401E5 453 4d8b55f8 REX.W movq r10,[r13-0x8]
0000000083A401E9 457 4c8953ff REX.W movq [rbx-0x1],r10
0000000083A401ED 461 f20f115307 movsd [rbx+0x7],xmm2
;;; @83: gap.
0000000083A401F2 466 488bc3 REX.W movq rax,rbx
;;; @84: return.
0000000083A401F5 469 488be5 REX.W movq rsp,rbp
0000000083A401F8 472 5d pop rbp
0000000083A401F9 473 c20800 ret 0x8
;;; @85: gap.
;;; Deferred code @50: number-tag-d.
0000000083A401FC 476 33c9 xorl rcx,rcx
0000000083A401FE 478 50 push rax
0000000083A401FF 479 51 push rcx
0000000083A40200 480 52 push rdx
0000000083A40201 481 53 push rbx
0000000083A40202 482 56 push rsi
0000000083A40203 483 57 push rdi
0000000083A40204 484 4150 push r8
0000000083A40206 486 4151 push r9
0000000083A40208 488 4153 push r11
0000000083A4020A 490 4156 push r14
0000000083A4020C 492 4157 push r15
0000000083A4020E 494 488d6424d8 REX.W leaq rsp,[rsp-0x28]
0000000083A40213 499 488b75f8 REX.W movq rsi,[rbp-0x8]
0000000083A40217 503 33c0 xorl rax,rax
0000000083A40219 505 48bb60af723f01000000 REX.W movq rbx,000000013F72AF60
0000000083A40223 515 e8f863fcff call 0000000083A06620 ;; code: STUB, CEntryStub, minor: 1
0000000083A40228 520 4c8bd0 REX.W movq r10,rax
0000000083A4022B 523 488d642428 REX.W leaq rsp,[rsp+0x28]
0000000083A40230 528 415f pop r15
0000000083A40232 530 415e pop r14
0000000083A40234 532 415b pop r11
0000000083A40236 534 4159 pop r9
0000000083A40238 536 4158 pop r8
0000000083A4023A 538 5f pop rdi
0000000083A4023B 539 5e pop rsi
0000000083A4023C 540 5b pop rbx
0000000083A4023D 541 5a pop rdx
0000000083A4023E 542 59 pop rcx
0000000083A4023F 543 58 pop rax
0000000083A40240 544 498bca REX.W movq rcx,r10
0000000083A40243 547 e9d7feffff jmp 255 (0000000083A4011F)
;;; Deferred code @82: number-tag-d.
0000000083A40248 552 33db xorl rbx,rbx
0000000083A4024A 554 50 push rax
0000000083A4024B 555 51 push rcx
0000000083A4024C 556 52 push rdx
0000000083A4024D 557 53 push rbx
0000000083A4024E 558 56 push rsi
0000000083A4024F 559 57 push rdi
0000000083A40250 560 4150 push r8
0000000083A40252 562 4151 push r9
0000000083A40254 564 4153 push r11
0000000083A40256 566 4156 push r14
0000000083A40258 568 4157 push r15
0000000083A4025A 570 488d6424d8 REX.W leaq rsp,[rsp-0x28]
0000000083A4025F 575 488b75f8 REX.W movq rsi,[rbp-0x8]
0000000083A40263 579 33c0 xorl rax,rax
0000000083A40265 581 48bb60af723f01000000 REX.W movq rbx,000000013F72AF60
0000000083A4026F 591 e8ac63fcff call 0000000083A06620 ;; code: STUB, CEntryStub, minor: 1
0000000083A40274 596 4c8bd0 REX.W movq r10,rax
0000000083A40277 599 488d642428 REX.W leaq rsp,[rsp+0x28]
0000000083A4027C 604 415f pop r15
0000000083A4027E 606 415e pop r14
0000000083A40280 608 415b pop r11
0000000083A40282 610 4159 pop r9
0000000083A40284 612 4158 pop r8
0000000083A40286 614 5f pop rdi
0000000083A40287 615 5e pop rsi
0000000083A40288 616 5b pop rbx
0000000083A40289 617 5a pop rdx
0000000083A4028A 618 59 pop rcx
0000000083A4028B 619 58 pop rax
0000000083A4028C 620 498bda REX.W movq rbx,r10
0000000083A4028F 623 e959ffffff jmp 461 (0000000083A401ED)
0000000083A40294 628 49ba1460b08300000000 REX.W movq r10,0000000083B06014 ;; deoptimization bailout 2
0000000083A4029E 638 41ffe2 jmp r10
0000000083A402A1 641 49ba1e60b08300000000 REX.W movq r10,0000000083B0601E ;; deoptimization bailout 3
0000000083A402AB 651 41ffe2 jmp r10
0000000083A402AE 654 49ba2860b08300000000 REX.W movq r10,0000000083B06028 ;; deoptimization bailout 4
0000000083A402B8 664 41ffe2 jmp r10
0000000083A402BB 667 49ba3c60b08300000000 REX.W movq r10,0000000083B0603C ;; deoptimization bailout 6
0000000083A402C5 677 41ffe2 jmp r10
0000000083A402C8 680 90 nop
0000000083A402C9 681 90 nop
0000000083A402CA 682 90 nop
0000000083A402CB 683 90 nop
0000000083A402CC 684 90 nop
0000000083A402CD 685 90 nop
0000000083A402CE 686 90 nop
0000000083A402CF 687 90 nop
0000000083A402D0 688 90 nop
0000000083A402D1 689 90 nop
0000000083A402D2 690 90 nop
0000000083A402D3 691 90 nop
0000000083A402D4 692 90 nop
0000000083A402D5 693 0f1f00 nop
;;; Safepoint table.
Deoptimization Input Data (deopt points = 7)
index ast id argc pc commands
0 3 0 28 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=3, function=<self>, height=2}
STACK_SLOT {input=-1}
LITERAL {literal_id=0}
LITERAL {literal_id=0}
1 28 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=28, function=<self>, height=2}
STACK_SLOT {input=0}
STACK_SLOT {input=2}
STACK_SLOT {input=3}
2 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=0}
REGISTER {input=rbx}
STACK_SLOT {input=3}
3 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=0}
REGISTER {input=rbx}
REGISTER {input=rdx}
4 29 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=29, function=<self>, height=2}
REGISTER {input=rbx}
DOUBLE_REGISTER {input=xmm2}
DOUBLE_REGISTER {input=xmm1}
5 56 0 339 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=56, function=<self>, height=3}
STACK_SLOT {input=2}
DOUBLE_STACK_SLOT {input=6}
DOUBLE_STACK_SLOT {input=5}
REGISTER {input=rax}
6 26 0 -1 BEGIN {frame count=1, js frame count=1}
JS_FRAME {ast_id=26, function=<self>, height=2}
STACK_SLOT {input=2}
DOUBLE_STACK_SLOT {input=6}
REGISTER {input=rax}
Safepoints (size = 52)
0000000083A4003C 28 0010000 (sp -> fp) 0
0000000083A4016F 335 0001100 (sp -> fp) 5
0000000083A40228 520 0001100 | rax | rbx | rsi (sp -> fp) <none>
0000000083A40274 596 0000000 | rsi (sp -> fp) <none>
RelocInfo (size = 1001)
0000000083A4002A comment (;;; @0: label.)
0000000083A4002A comment (;;; B0)
0000000083A4002A comment (;;; @1: gap.)
0000000083A4002A comment (;;; @2: parameter.)
0000000083A4002A comment (;;; @3: gap.)
0000000083A4002A comment (;;; @4: context.)
0000000083A4002D comment (;;; @5: gap.)
0000000083A40031 comment (;;; @6: gap.)
0000000083A40031 comment (;;; @7: goto.)
0000000083A40031 comment (;;; @8: label.)
0000000083A40031 comment (;;; B1)
0000000083A40031 comment (;;; @9: gap.)
0000000083A40031 comment (;;; @10: stack-check.)
0000000083A40038 code target (STUB) (0000000083A12780)
0000000083A4003C comment (;;; @11: gap.)
0000000083A4003C comment (;;; @12: gap.)
0000000083A4003C comment (;;; @13: goto.)
0000000083A40041 comment (;;; @14: label.)
0000000083A40041 comment (;;; B2)
0000000083A40041 comment (;;; @15: gap.)
0000000083A40041 comment (;;; @16: unknown-osr-value.)
0000000083A40041 comment (;;; @17: gap.)
0000000083A40041 comment (;;; @18: unknown-osr-value.)
0000000083A40041 comment (;;; @19: gap.)
0000000083A40041 comment (;;; @20: unknown-osr-value.)
0000000083A40041 comment (;;; @21: gap.)
0000000083A40041 comment (;;; @22: unknown-osr-value.)
0000000083A40041 comment (;;; @23: gap.)
0000000083A40041 comment (;;; @24: osr-entry.)
0000000083A40041 comment (;;; @25: gap.)
0000000083A40041 comment (;;; @26: context.)
0000000083A40044 comment (;;; @27: gap.)
0000000083A40048 comment (;;; @28: double-untag.)
0000000083A4007D comment (;;; @29: gap.)
0000000083A40081 comment (;;; @30: double-untag.)
0000000083A400B6 comment (;;; @31: gap.)
0000000083A400B6 comment (;;; @32: gap.)
0000000083A400C3 comment (;;; @33: goto.)
0000000083A400C8 comment (;;; @34: label.)
0000000083A400C8 comment (;;; B3)
0000000083A400C8 comment (;;; @35: gap.)
0000000083A400C8 comment (;;; @36: constant-d.)
0000000083A400CB comment (;;; @37: gap.)
0000000083A400CB comment (;;; @38: gap.)
0000000083A400D6 comment (;;; @39: goto.)
0000000083A400D6 comment (;;; @40: label.)
0000000083A400D6 comment (;;; B4)
0000000083A400DA comment (;;; @41: gap.)
0000000083A400DA comment (;;; @42: global-object.)
0000000083A400DE comment (;;; @43: gap.)
0000000083A400DE comment (;;; @44: global-receiver.)
0000000083A400E2 comment (;;; @45: gap.)
0000000083A400E6 comment (;;; @46: gap.)
0000000083A400E6 comment (;;; @47: goto.)
0000000083A400E6 comment (;;; @48: label.)
0000000083A400E6 comment (;;; B5 - LOOP entry)
0000000083A400EB comment (;;; @49: gap.)
0000000083A400EB comment (;;; @50: number-tag-d.)
0000000083A40124 comment (;;; @51: gap.)
0000000083A40124 comment (;;; @52: gap.)
0000000083A40124 comment (;;; @53: is-nil-and-branch.)
0000000083A4012E comment (;;; @58: label.)
0000000083A4012E comment (;;; B7)
0000000083A4012E comment (;;; @59: gap.)
0000000083A40131 comment (;;; @60: add-d.)
0000000083A40135 comment (;;; @61: gap.)
0000000083A4013A comment (;;; @62: load-global-cell.)
0000000083A4013C global property cell
0000000083A40147 comment (;;; @63: gap.)
0000000083A40147 comment (;;; @64: check-function.)
0000000083A40149 embedded object (00000000AE45AB81 <JS Function it>)
0000000083A4015A comment (;;; @65: gap.)
0000000083A4015A comment (;;; @66: push-argument.)
0000000083A4015B comment (;;; @67: gap.)
0000000083A4015B comment (;;; @68: call-known-global.)
0000000083A4015D embedded object (00000000AE45AB81 <JS Function it>)
0000000083A4016C position (191)
0000000083A40173 comment (;;; @69: gap.)
0000000083A40173 comment (;;; @70: lazy-bailout.)
0000000083A40173 comment (;;; @71: gap.)
0000000083A40173 comment (;;; @72: double-untag.)
0000000083A401A7 comment (;;; @73: gap.)
0000000083A401A7 comment (;;; @74: gap.)
0000000083A401B4 comment (;;; @75: goto.)
0000000083A401B9 comment (;;; @80: label.)
0000000083A401B9 comment (;;; B9)
0000000083A401B9 comment (;;; @81: gap.)
0000000083A401B9 comment (;;; @82: number-tag-d.)
0000000083A401F2 comment (;;; @83: gap.)
0000000083A401F5 comment (;;; @84: return.)
0000000083A401FC comment (;;; @85: gap.)
0000000083A401FC comment (;;; Deferred code @50: number-tag-d.)
0000000083A40224 code target (STUB) (0000000083A06620)
0000000083A40248 comment (;;; Deferred code @82: number-tag-d.)
0000000083A40270 code target (STUB) (0000000083A06620)
0000000083A40296 runtime entry (deoptimization bailout 2)
0000000083A402A3 runtime entry (deoptimization bailout 3)
0000000083A402B0 runtime entry (deoptimization bailout 4)
0000000083A402BD runtime entry (deoptimization bailout 6)
0000000083A40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment