Skip to content

Instantly share code, notes, and snippets.

@trevnorris
Last active August 29, 2015 14:21
Show Gist options
  • Save trevnorris/8160de664e5b594576b0 to your computer and use it in GitHub Desktop.
Save trevnorris/8160de664e5b594576b0 to your computer and use it in GitHub Desktop.

Here is the output from running with all IRHydra flags.

--- FUNCTION SOURCE (runSplice) id{0,0} ---
(arr, index) {
for (var i = 0; i < 1e7; i++) {
arr.splice(index, 1);
arr.push(100);
}
}
--- END ---
--- Raw source ---
(arr, index) {
for (var i = 0; i < 1e7; i++) {
arr.splice(index, 1);
arr.push(100);
}
}
--- Optimized code ---
optimization_id = 0
source_position = 33
kind = OPTIMIZED_FUNCTION
name = runSplice
stack_slots = 8
Instructions (size = 636)
0x20d3f3c36500 0 55 push rbp
0x20d3f3c36501 1 4889e5 REX.W movq rbp,rsp
0x20d3f3c36504 4 56 push rsi
0x20d3f3c36505 5 57 push rdi
0x20d3f3c36506 6 4883ec40 REX.W subq rsp,0x40
;;; <@0,#0> -------------------- B0 --------------------
;;; <@2,#1> context
0x20d3f3c3650a 10 488b45f8 REX.W movq rax,[rbp-0x8] ;; debug: position 33
;;; <@3,#1> gap
0x20d3f3c3650e 14 488945e0 REX.W movq [rbp-0x20],rax
;;; <@12,#9> -------------------- B1 --------------------
;;; <@13,#9> gap
0x20d3f3c36512 18 488bf0 REX.W movq rsi,rax
;;; <@14,#11> stack-check
0x20d3f3c36515 21 493ba530080000 REX.W cmpq rsp,[r13+0x830]
0x20d3f3c3651c 28 7305 jnc 35 (0x20d3f3c36523)
0x20d3f3c3651e 30 e89db4ffff call StackCheck (0x20d3f3c319c0) ;; code: BUILTIN
;;; <@16,#11> lazy-bailout
;;; <@19,#15> goto
0x20d3f3c36523 35 e92c000000 jmp 84 (0x20d3f3c36554) ;; debug: position 50
;;; <@20,#19> -------------------- B2 (OSR entry) --------------------
0x20d3f3c36528 40 4883ec38 REX.W subq rsp,0x38
;;; <@34,#27> context
0x20d3f3c3652c 44 488b75f8 REX.W movq rsi,[rbp-0x8]
;;; <@35,#27> gap
0x20d3f3c36530 48 488b45e8 REX.W movq rax,[rbp-0x18]
;;; <@36,#117> tagged-to-i
0x20d3f3c36534 52 a801 test al,0x1
0x20d3f3c36536 54 0f8567010000 jnz 419 (0x20d3f3c366a3)
0x20d3f3c3653c 60 48c1e820 REX.W shrq rax, 32
;;; <@38,#29> gap
0x20d3f3c36540 64 488bde REX.W movq rbx,rsi
0x20d3f3c36543 67 488b7520 REX.W movq rsi,[rbp+0x20]
0x20d3f3c36547 71 488b4d18 REX.W movq rcx,[rbp+0x18]
0x20d3f3c3654b 75 488b5510 REX.W movq rdx,[rbp+0x10]
;;; <@39,#29> goto
0x20d3f3c3654f 79 e912000000 jmp 102 (0x20d3f3c36566)
;;; <@40,#16> -------------------- B3 --------------------
;;; <@42,#18> gap
0x20d3f3c36554 84 488b7520 REX.W movq rsi,[rbp+0x20]
0x20d3f3c36558 88 488b4d18 REX.W movq rcx,[rbp+0x18]
0x20d3f3c3655c 92 488b5510 REX.W movq rdx,[rbp+0x10]
0x20d3f3c36560 96 488b5de0 REX.W movq rbx,[rbp-0x20]
0x20d3f3c36564 100 33c0 xorl rax,rax
;;; <@44,#40> -------------------- B4 --------------------
0x20d3f3c36566 102 488975c0 REX.W movq [rbp-0x40],rsi
0x20d3f3c3656a 106 48894dc8 REX.W movq [rbp-0x38],rcx
0x20d3f3c3656e 110 488955d0 REX.W movq [rbp-0x30],rdx
0x20d3f3c36572 114 48895dd8 REX.W movq [rbp-0x28],rbx
;;; <@46,#57> check-non-smi
0x20d3f3c36576 118 f6c101 testb rcx,0x1 ;; debug: position 90
0x20d3f3c36579 121 0f849c010000 jz 539 (0x20d3f3c3671b)
;;; <@48,#60> check-maps
;;; <@50,#76> check-maps
;;; <@54,#43> -------------------- B5 (loop header) --------------------
0x20d3f3c3657f 127 488945b8 REX.W movq [rbp-0x48],rax ;; debug: position 66
;;; <@57,#47> compare-numeric-and-branch
0x20d3f3c36583 131 3d80969800 cmp rax,0x989680 ;; debug: position 68
0x20d3f3c36588 136 0f8d04010000 jge 402 (0x20d3f3c36692)
;;; <@58,#48> -------------------- B6 (unreachable/replaced) --------------------
;;; <@62,#54> -------------------- B7 --------------------
;;; <@64,#56> stack-check
0x20d3f3c3658e 142 493ba530080000 REX.W cmpq rsp,[r13+0x830] ;; debug: position 50
0x20d3f3c36595 149 0f823b010000 jc 470 (0x20d3f3c366d6)
;;; <@66,#58> check-maps
0x20d3f3c3659b 155 49ba59db70615b3e0000 REX.W movq r10,0x3e5b6170db59 ;; debug: position 90
;; object: 0x3e5b6170db59 <Map(elements=1)>
0x20d3f3c365a5 165 4c3951ff REX.W cmpq [rcx-0x1],r10
0x20d3f3c365a9 169 0f8571010000 jnz 544 (0x20d3f3c36720)
;;; <@68,#64> push-argument
0x20d3f3c365af 175 51 push rcx
;;; <@70,#64> push-argument
0x20d3f3c365b0 176 52 push rdx
;;; <@72,#64> push-argument
0x20d3f3c365b1 177 49ba0000000001000000 REX.W movq r10,0x100000000
0x20d3f3c365bb 187 4152 push r10
;;; <@74,#63> constant-t
0x20d3f3c365bd 189 48bf71a1e042e3030000 REX.W movq rdi,0x3e342e0a171 ;; object: 0x3e342e0a171 <JS Function splice (SharedFunctionInfo 0x3a907a937911)>
;;; <@76,#65> call-js-function
0x20d3f3c365c7 199 b802000000 movl rax,0x2
0x20d3f3c365cc 204 488b772f REX.W movq rsi,[rdi+0x2f]
0x20d3f3c365d0 208 ff5717 call [rdi+0x17]
;;; <@78,#66> lazy-bailout
;;; <@79,#66> gap
0x20d3f3c365d3 211 488b55c8 REX.W movq rdx,[rbp-0x38]
;;; <@80,#68> check-maps
0x20d3f3c365d7 215 49ba59db70615b3e0000 REX.W movq r10,0x3e5b6170db59 ;; debug: position 116
;; object: 0x3e5b6170db59 <Map(elements=1)>
0x20d3f3c365e1 225 4c3952ff REX.W cmpq [rdx-0x1],r10
0x20d3f3c365e5 229 0f853a010000 jnz 549 (0x20d3f3c36725)
;;; <@82,#77> load-named-field
0x20d3f3c365eb 235 8b7a1b movl rdi,[rdx+0x1b]
;;; <@83,#77> gap
0x20d3f3c365ee 238 48897db0 REX.W movq [rbp-0x50],rdi
;;; <@84,#81> load-named-field
0x20d3f3c365f2 242 488b420f REX.W movq rax,[rdx+0xf]
;;; <@86,#82> check-maps
0x20d3f3c365f6 246 49ba094270615b3e0000 REX.W movq r10,0x3e5b61704209 ;; object: 0x3e5b61704209 <Map(elements=0)>
0x20d3f3c36600 256 4c3950ff REX.W cmpq [rax-0x1],r10
0x20d3f3c36604 260 0f8520010000 jnz 554 (0x20d3f3c3672a)
;;; <@88,#83> load-named-field
0x20d3f3c3660a 266 8b5a1b movl rbx,[rdx+0x1b]
;;; <@91,#85> compare-numeric-and-branch
0x20d3f3c3660d 269 3bfb cmpl rdi,rbx
0x20d3f3c3660f 271 0f8d10000000 jge 293 (0x20d3f3c36625)
;;; <@92,#100> -------------------- B8 --------------------
;;; <@94,#101> bounds-check
0x20d3f3c36615 277 3bdf cmpl rbx,rdi
0x20d3f3c36617 279 0f8612010000 jna 559 (0x20d3f3c3672f)
;;; <@96,#102> gap
0x20d3f3c3661d 285 488bdf REX.W movq rbx,rdi
;;; <@97,#102> goto
0x20d3f3c36620 288 e943000000 jmp 360 (0x20d3f3c36668)
;;; <@98,#86> -------------------- B9 --------------------
;;; <@100,#87> load-named-field
0x20d3f3c36625 293 8b580b movl rbx,[rax+0xb]
;;; <@103,#88> compare-numeric-and-branch
0x20d3f3c36628 296 3bfb cmpl rdi,rbx
0x20d3f3c3662a 298 0f8c23000000 jl 339 (0x20d3f3c36653)
;;; <@104,#93> -------------------- B10 (unreachable/replaced) --------------------
;;; <@108,#89> -------------------- B11 --------------------
;;; <@110,#119> smi-tag
0x20d3f3c36630 304 8bc7 movl rax,rdi
0x20d3f3c36632 306 48c1e020 REX.W shlq rax, 32
;;; <@112,#120> smi-tag
0x20d3f3c36636 310 8bcb movl rcx,rbx
0x20d3f3c36638 312 48c1e120 REX.W shlq rcx, 32
;;; <@113,#120> gap
0x20d3f3c3663c 316 488b75d8 REX.W movq rsi,[rbp-0x28]
0x20d3f3c36640 320 488bd8 REX.W movq rbx,rax
0x20d3f3c36643 323 488bc2 REX.W movq rax,rdx
;;; <@114,#91> call-with-descriptor
0x20d3f3c36646 326 e815fbffff call 0x20d3f3c36160 ;; code: STUB, GrowArrayElementsStub, minor: 257
;;; <@116,#91> lazy-bailout
;;; <@118,#92> check-non-smi
0x20d3f3c3664b 331 a801 test al,0x1
0x20d3f3c3664d 333 0f84e1000000 jz 564 (0x20d3f3c36734)
;;; <@122,#97> -------------------- B12 --------------------
;;; <@123,#97> gap
0x20d3f3c36653 339 488b5db0 REX.W movq rbx,[rbp-0x50]
;;; <@124,#98> add-i
0x20d3f3c36657 343 8d5301 leal rdx,[rbx+0x1]
;;; <@126,#121> smi-tag
0x20d3f3c3665a 346 8bca movl rcx,rdx
0x20d3f3c3665c 348 48c1e120 REX.W shlq rcx, 32
;;; <@127,#121> gap
0x20d3f3c36660 352 488b55c8 REX.W movq rdx,[rbp-0x38]
;;; <@128,#99> store-named-field
0x20d3f3c36664 356 48894a17 REX.W movq [rdx+0x17],rcx
;;; <@132,#105> -------------------- B13 --------------------
;;; <@134,#106> store-keyed
0x20d3f3c36668 360 49ba0000000064000000 REX.W movq r10,0x6400000000
0x20d3f3c36672 370 4c8954d80f REX.W movq [rax+rbx*8+0xf],r10
;;; <@135,#106> gap
0x20d3f3c36677 375 488b45b8 REX.W movq rax,[rbp-0x48]
;;; <@136,#109> add-i
0x20d3f3c3667b 379 83c001 addl rax,0x1 ;; debug: position 76
;;; <@138,#112> gap
0x20d3f3c3667e 382 488b75c0 REX.W movq rsi,[rbp-0x40] ;; debug: position 50
0x20d3f3c36682 386 488bca REX.W movq rcx,rdx
0x20d3f3c36685 389 488b55d0 REX.W movq rdx,[rbp-0x30]
0x20d3f3c36689 393 488b5dd8 REX.W movq rbx,[rbp-0x28]
;;; <@139,#112> goto
0x20d3f3c3668d 397 e9edfeffff jmp 127 (0x20d3f3c3657f)
;;; <@140,#51> -------------------- B14 (unreachable/replaced) --------------------
;;; <@144,#113> -------------------- B15 --------------------
;;; <@146,#6> constant-t
0x20d3f3c36692 402 48b86141907a903a0000 REX.W movq rax,0x3a907a904161 ;; debug: position 33
;; object: 0x3a907a904161 <undefined>
;;; <@148,#115> return
0x20d3f3c3669c 412 488be5 REX.W movq rsp,rbp
0x20d3f3c3669f 415 5d pop rbp
0x20d3f3c366a0 416 c21800 ret 0x18
;;; <@36,#117> -------------------- Deferred tagged-to-i --------------------
0x20d3f3c366a3 419 4d8b5500 REX.W movq r10,[r13+0x0] ;; debug: position 50
0x20d3f3c366a7 423 4c3950ff REX.W cmpq [rax-0x1],r10
0x20d3f3c366ab 427 0f8588000000 jnz 569 (0x20d3f3c36739)
0x20d3f3c366b1 433 f20f104007 movsd xmm0,[rax+0x7]
0x20d3f3c366b6 438 f20f2cc0 cvttsd2sil rax,xmm0
0x20d3f3c366ba 442 0f57c9 xorps xmm1,xmm1
0x20d3f3c366bd 445 f20f2ac8 cvtsi2sd xmm1,rax
0x20d3f3c366c1 449 660f2ec1 ucomisd xmm0,xmm1
0x20d3f3c366c5 453 0f8573000000 jnz 574 (0x20d3f3c3673e)
0x20d3f3c366cb 459 0f8a72000000 jpe 579 (0x20d3f3c36743)
0x20d3f3c366d1 465 e96afeffff jmp 64 (0x20d3f3c36540)
;;; <@64,#56> -------------------- Deferred stack-check --------------------
0x20d3f3c366d6 470 50 push rax
0x20d3f3c366d7 471 51 push rcx
0x20d3f3c366d8 472 52 push rdx
0x20d3f3c366d9 473 53 push rbx
0x20d3f3c366da 474 56 push rsi
0x20d3f3c366db 475 57 push rdi
0x20d3f3c366dc 476 4150 push r8
0x20d3f3c366de 478 4151 push r9
0x20d3f3c366e0 480 4153 push r11
0x20d3f3c366e2 482 4154 push r12
0x20d3f3c366e4 484 4156 push r14
0x20d3f3c366e6 486 4157 push r15
0x20d3f3c366e8 488 488d6424e0 REX.W leaq rsp,[rsp-0x20]
0x20d3f3c366ed 493 488b75f8 REX.W movq rsi,[rbp-0x8]
0x20d3f3c366f1 497 33c0 xorl rax,rax
0x20d3f3c366f3 499 498d9d38c5cefe REX.W leaq rbx,[r13-0x1313ac8]
0x20d3f3c366fa 506 e80116fdff call 0x20d3f3c07d00 ;; code: STUB, CEntryStub, minor: 1
0x20d3f3c366ff 511 488d642420 REX.W leaq rsp,[rsp+0x20]
0x20d3f3c36704 516 415f pop r15
0x20d3f3c36706 518 415e pop r14
0x20d3f3c36708 520 415c pop r12
0x20d3f3c3670a 522 415b pop r11
0x20d3f3c3670c 524 4159 pop r9
0x20d3f3c3670e 526 4158 pop r8
0x20d3f3c36710 528 5f pop rdi
0x20d3f3c36711 529 5e pop rsi
0x20d3f3c36712 530 5b pop rbx
0x20d3f3c36713 531 5a pop rdx
0x20d3f3c36714 532 59 pop rcx
0x20d3f3c36715 533 58 pop rax
0x20d3f3c36716 534 e980feffff jmp 155 (0x20d3f3c3659b)
;;; -------------------- Jump table --------------------
0x20d3f3c3671b 539 e8f4f8ccff call 0x20d3f3906014 ;; debug: position 29184
;; debug: deopt reason 'Smi'
;; deoptimization bailout 2
0x20d3f3c36720 544 e803f9ccff call 0x20d3f3906028 ;; debug: position 29184
;; debug: deopt reason 'wrong map'
;; deoptimization bailout 4
0x20d3f3c36725 549 e812f9ccff call 0x20d3f390603c ;; debug: position 42496
;; debug: deopt reason 'wrong map'
;; deoptimization bailout 6
0x20d3f3c3672a 554 e817f9ccff call 0x20d3f3906046 ;; debug: position 42496
;; debug: deopt reason 'wrong map'
;; deoptimization bailout 7
0x20d3f3c3672f 559 e81cf9ccff call 0x20d3f3906050 ;; debug: position 42496
;; debug: deopt reason 'out of bounds'
;; deoptimization bailout 8
0x20d3f3c36734 564 e82bf9ccff call 0x20d3f3906064 ;; debug: position 42496
;; debug: deopt reason 'Smi'
;; deoptimization bailout 10
0x20d3f3c36739 569 e830f9ccff call 0x20d3f390606e ;; debug: position 8704
;; debug: deopt reason 'not a heap number'
;; deoptimization bailout 11
0x20d3f3c3673e 574 e82bf9ccff call 0x20d3f390606e ;; debug: position 8704
;; debug: deopt reason 'lost precision'
;; deoptimization bailout 11
0x20d3f3c36743 579 e826f9ccff call 0x20d3f390606e ;; debug: position 8704
;; debug: deopt reason 'NaN'
;; deoptimization bailout 11
;;; Safepoint table.
Deoptimization Input Data (deopt points = 12)
index ast id argc pc
0 3 0 35
1 8 0 -1
2 6 0 -1
3 10 0 155
4 10 0 -1
5 42 0 211
6 42 0 -1
7 42 0 -1
8 42 0 -1
9 42 0 331
10 42 0 -1
11 6 0 -1
Safepoints (size = 52)
0x20d3f3c36523 35 00000010 (sp -> fp) 0
0x20d3f3c365d3 211 00111100 (sp -> fp) 5
0x20d3f3c3664b 331 00111100 (sp -> fp) 9
0x20d3f3c366ff 511 00111100 | rcx | rdx | rbx | rsi (sp -> fp) 3
RelocInfo (size = 946)
0x20d3f3c3650a position (33)
0x20d3f3c3650a comment (;;; <@0,#0> -------------------- B0 --------------------)
0x20d3f3c3650a comment (;;; <@2,#1> context)
0x20d3f3c3650e comment (;;; <@3,#1> gap)
0x20d3f3c36512 comment (;;; <@12,#9> -------------------- B1 --------------------)
0x20d3f3c36512 comment (;;; <@13,#9> gap)
0x20d3f3c36515 comment (;;; <@14,#11> stack-check)
0x20d3f3c3651f code target (BUILTIN) (0x20d3f3c319c0)
0x20d3f3c36523 comment (;;; <@16,#11> lazy-bailout)
0x20d3f3c36523 position (50)
0x20d3f3c36523 comment (;;; <@19,#15> goto)
0x20d3f3c36528 comment (;;; <@20,#19> -------------------- B2 (OSR entry) --------------------)
0x20d3f3c3652c comment (;;; <@34,#27> context)
0x20d3f3c36530 comment (;;; <@35,#27> gap)
0x20d3f3c36534 comment (;;; <@36,#117> tagged-to-i)
0x20d3f3c36540 comment (;;; <@38,#29> gap)
0x20d3f3c3654f comment (;;; <@39,#29> goto)
0x20d3f3c36554 comment (;;; <@40,#16> -------------------- B3 --------------------)
0x20d3f3c36554 comment (;;; <@42,#18> gap)
0x20d3f3c36566 comment (;;; <@44,#40> -------------------- B4 --------------------)
0x20d3f3c36576 comment (;;; <@46,#57> check-non-smi)
0x20d3f3c36576 position (90)
0x20d3f3c3657f comment (;;; <@48,#60> check-maps)
0x20d3f3c3657f comment (;;; <@50,#76> check-maps)
0x20d3f3c3657f position (66)
0x20d3f3c3657f comment (;;; <@54,#43> -------------------- B5 (loop header) --------------------)
0x20d3f3c36583 position (68)
0x20d3f3c36583 comment (;;; <@57,#47> compare-numeric-and-branch)
0x20d3f3c3658e comment (;;; <@58,#48> -------------------- B6 (unreachable/replaced) --------------------)
0x20d3f3c3658e position (50)
0x20d3f3c3658e comment (;;; <@62,#54> -------------------- B7 --------------------)
0x20d3f3c3658e comment (;;; <@64,#56> stack-check)
0x20d3f3c3659b comment (;;; <@66,#58> check-maps)
0x20d3f3c3659b position (90)
0x20d3f3c3659d embedded object (0x3e5b6170db59 <Map(elements=1)>)
0x20d3f3c365af comment (;;; <@68,#64> push-argument)
0x20d3f3c365b0 comment (;;; <@70,#64> push-argument)
0x20d3f3c365b1 comment (;;; <@72,#64> push-argument)
0x20d3f3c365bd comment (;;; <@74,#63> constant-t)
0x20d3f3c365bf embedded object (0x3e342e0a171 <JS Function splice (SharedFunctionInfo 0x3a907a937911)>)
0x20d3f3c365c7 comment (;;; <@76,#65> call-js-function)
0x20d3f3c365d3 comment (;;; <@78,#66> lazy-bailout)
0x20d3f3c365d3 comment (;;; <@79,#66> gap)
0x20d3f3c365d7 comment (;;; <@80,#68> check-maps)
0x20d3f3c365d7 position (116)
0x20d3f3c365d9 embedded object (0x3e5b6170db59 <Map(elements=1)>)
0x20d3f3c365eb comment (;;; <@82,#77> load-named-field)
0x20d3f3c365ee comment (;;; <@83,#77> gap)
0x20d3f3c365f2 comment (;;; <@84,#81> load-named-field)
0x20d3f3c365f6 comment (;;; <@86,#82> check-maps)
0x20d3f3c365f8 embedded object (0x3e5b61704209 <Map(elements=0)>)
0x20d3f3c3660a comment (;;; <@88,#83> load-named-field)
0x20d3f3c3660d comment (;;; <@91,#85> compare-numeric-and-branch)
0x20d3f3c36615 comment (;;; <@92,#100> -------------------- B8 --------------------)
0x20d3f3c36615 comment (;;; <@94,#101> bounds-check)
0x20d3f3c3661d comment (;;; <@96,#102> gap)
0x20d3f3c36620 comment (;;; <@97,#102> goto)
0x20d3f3c36625 comment (;;; <@98,#86> -------------------- B9 --------------------)
0x20d3f3c36625 comment (;;; <@100,#87> load-named-field)
0x20d3f3c36628 comment (;;; <@103,#88> compare-numeric-and-branch)
0x20d3f3c36630 comment (;;; <@104,#93> -------------------- B10 (unreachable/replaced) --------------------)
0x20d3f3c36630 comment (;;; <@108,#89> -------------------- B11 --------------------)
0x20d3f3c36630 comment (;;; <@110,#119> smi-tag)
0x20d3f3c36636 comment (;;; <@112,#120> smi-tag)
0x20d3f3c3663c comment (;;; <@113,#120> gap)
0x20d3f3c36646 comment (;;; <@114,#91> call-with-descriptor)
0x20d3f3c36647 code target (STUB) (0x20d3f3c36160)
0x20d3f3c3664b comment (;;; <@116,#91> lazy-bailout)
0x20d3f3c3664b comment (;;; <@118,#92> check-non-smi)
0x20d3f3c36653 comment (;;; <@122,#97> -------------------- B12 --------------------)
0x20d3f3c36653 comment (;;; <@123,#97> gap)
0x20d3f3c36657 comment (;;; <@124,#98> add-i)
0x20d3f3c3665a comment (;;; <@126,#121> smi-tag)
0x20d3f3c36660 comment (;;; <@127,#121> gap)
0x20d3f3c36664 comment (;;; <@128,#99> store-named-field)
0x20d3f3c36668 comment (;;; <@132,#105> -------------------- B13 --------------------)
0x20d3f3c36668 comment (;;; <@134,#106> store-keyed)
0x20d3f3c36677 comment (;;; <@135,#106> gap)
0x20d3f3c3667b comment (;;; <@136,#109> add-i)
0x20d3f3c3667b position (76)
0x20d3f3c3667e comment (;;; <@138,#112> gap)
0x20d3f3c3667e position (50)
0x20d3f3c3668d comment (;;; <@139,#112> goto)
0x20d3f3c36692 comment (;;; <@140,#51> -------------------- B14 (unreachable/replaced) --------------------)
0x20d3f3c36692 position (33)
0x20d3f3c36692 comment (;;; <@144,#113> -------------------- B15 --------------------)
0x20d3f3c36692 comment (;;; <@146,#6> constant-t)
0x20d3f3c36694 embedded object (0x3a907a904161 <undefined>)
0x20d3f3c3669c comment (;;; <@148,#115> return)
0x20d3f3c366a3 position (50)
0x20d3f3c366a3 comment (;;; <@36,#117> -------------------- Deferred tagged-to-i --------------------)
0x20d3f3c366d6 comment (;;; <@64,#56> -------------------- Deferred stack-check --------------------)
0x20d3f3c366fb code target (STUB) (0x20d3f3c07d00)
0x20d3f3c3671b comment (;;; -------------------- Jump table --------------------)
0x20d3f3c3671b position (29184)
0x20d3f3c3671b deopt reason (Smi)
0x20d3f3c3671c runtime entry (deoptimization bailout 2)
0x20d3f3c36720 position (29184)
0x20d3f3c36720 deopt reason (wrong map)
0x20d3f3c36721 runtime entry (deoptimization bailout 4)
0x20d3f3c36725 position (42496)
0x20d3f3c36725 deopt reason (wrong map)
0x20d3f3c36726 runtime entry (deoptimization bailout 6)
0x20d3f3c3672a position (42496)
0x20d3f3c3672a deopt reason (wrong map)
0x20d3f3c3672b runtime entry (deoptimization bailout 7)
0x20d3f3c3672f position (42496)
0x20d3f3c3672f deopt reason (out of bounds)
0x20d3f3c36730 runtime entry (deoptimization bailout 8)
0x20d3f3c36734 position (42496)
0x20d3f3c36734 deopt reason (Smi)
0x20d3f3c36735 runtime entry (deoptimization bailout 10)
0x20d3f3c36739 position (8704)
0x20d3f3c36739 deopt reason (not a heap number)
0x20d3f3c3673a runtime entry (deoptimization bailout 11)
0x20d3f3c3673e position (8704)
0x20d3f3c3673e deopt reason (lost precision)
0x20d3f3c3673f runtime entry (deoptimization bailout 11)
0x20d3f3c36743 position (8704)
0x20d3f3c36743 deopt reason (NaN)
0x20d3f3c36744 runtime entry (deoptimization bailout 11)
0x20d3f3c36748 comment (;;; Safepoint table.)
--- End code ---
begin_compilation
name "runSplice"
method "runSplice:0"
date 1432073723000
end_compilation
begin_cfg
name "Z_Code generation"
begin_block
name "B0"
from_bci -1
to_bci -1
predecessors
successors "B1"
xhandlers
flags
loop_depth 0
first_lir_id 0
last_lir_id 22
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v0 BlockEntry type:Tagged <|@
0 2 i78 Constant 1 type:Smi <|@
0 1 t14 Constant 0x3a907a9041f9 <true> [map 0x3e5b617044c9] <|@
0 3 t6 Constant 0x3a907a904161 <undefined> [map 0x3e5b617043c1] <|@
0 3 t1 Context type:Tagged <|@
0 3 t2 Parameter 0 type:Tagged <|@
0 3 t3 Parameter 1 type:Tagged <|@
0 3 t4 Parameter 2 type:Tagged <|@
0 0 t5 ArgumentsObject t2 t3 t4 type:Tagged <|@
0 0 v7 Simulate id=2 var[4] = t6, var[3] = t1, var[2] = t4, var[1] = t3, var[0] = t2 type:Tagged <|@
0 0 v8 Goto B1 type:Tagged <|@
end_HIR
begin_LIR
0 label () () () () [hir:v0] <|@
2 gap () () () () [hir:v0] <|@
4 context [rax|R]= [hir:t1] <|@
6 gap ([stack:1] = [rax|R];) () () () [hir:t1] <|@
8 parameter [stack:-3]= [hir:t2] <|@
10 gap () ([stack:-3];) () () [hir:t2] <|@
12 parameter [stack:-2]= [hir:t3] <|@
14 gap () ([stack:-2];) () () [hir:t3] <|@
16 parameter [stack:-1]= [hir:t4] <|@
18 gap () ([stack:-1];) () () [hir:t4] <|@
20 gap () () () () [hir:v8] <|@
22 goto B1 [hir:v8] <|@
end_LIR
end_block
begin_block
name "B1"
from_bci -1
to_bci -1
predecessors "B0"
successors "B3" "B2"
xhandlers
flags
dominator "B0"
loop_depth 0
first_lir_id 24
last_lir_id 38
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v9 BlockEntry type:Tagged <|@
0 0 v10 Simulate id=3 type:Tagged <|@
0 0 v11 StackCheck t1 changes[NewSpacePromotion] type:Tagged <|@
0 2 i12 Constant 0 type:Smi pos:30 <|@
0 0 v15 Branch t14 goto (B3, B2) (None) type:Tagged pos:17 <|@
end_HIR
begin_LIR
24 label () () () () [hir:v9] <|@
26 gap () ([rsi|R] = [rax|R];) () () [hir:v9] <|@
28 stack-check = [rsi|R] [id=3|parameters=3|arguments_stack_height=0|[stack:-3];[stack:-2];[stack:-1];[stack:1];[constant:6]] {[rsi|R];[stack:1]} [hir:v11] <|@
30 gap () () () () [hir:v11] <|@
32 lazy-bailout = [id=3|deopt_id=0|parameters=3|arguments_stack_height=0|[stack:-3];[stack:-2];[stack:-1];[stack:1];[constant:6]] [hir:v11] <|@
34 gap () () () () [hir:v11] <|@
36 gap () () () () [hir:v15] <|@
38 goto B3 [hir:v15] <|@
end_LIR
end_block
begin_block
name "B2"
from_bci -1
to_bci -1
predecessors "B1"
successors "B4"
xhandlers
flags "osr"
dominator "B1"
loop_depth 0
first_lir_id 40
last_lir_id 78
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v19 BlockEntry type:Tagged pos:17 <|@
0 2 t20 UnknownOSRValue parameter @ 0 type:Tagged pos:17 <|@
0 2 t21 UnknownOSRValue parameter @ 1 type:Tagged pos:17 <|@
0 2 t22 UnknownOSRValue parameter @ 2 type:Tagged pos:17 <|@
0 1 t23 UnknownOSRValue special @ 3 type:Tagged pos:17 <|@
0 2 t24 UnknownOSRValue local @ 4 type:Tagged pos:17 <|@
0 0 v25 Simulate id=8 var[4] = t24, var[3] = t23, var[2] = t22, var[1] = t21, var[0] = t20 type:Tagged pos:17 <|@
0 0 v26 OsrEntry changes[NewSpacePromotion,OsrEntries] type:Tagged pos:17 <|@
0 2 t27 Context type:Tagged pos:17 <|@
0 0 v28 Simulate id=6 var[3] = t27 type:Tagged pos:17 <|@
0 1 i117 Change t24 t to i type:TaggedNumber pos:17 <|@
0 0 v29 Goto B4 type:Tagged pos:17 <|@
end_HIR
begin_LIR
40 label () () () () [hir:v19] <|@
42 gap () () () () [hir:v19] <|@
44 unknown-osr-value [stack:-3]= [hir:t20] <|@
46 gap () ([stack:-3];) () () [hir:t20] <|@
48 unknown-osr-value [stack:-2]= [hir:t21] <|@
50 gap () ([stack:-2];) () () [hir:t21] <|@
52 unknown-osr-value [stack:-1]= [hir:t22] <|@
54 gap () ([stack:-1];) () () [hir:t22] <|@
56 unknown-osr-value [stack:-1]= [hir:t23] <|@
58 gap () ([stack:-1];) () () [hir:t23] <|@
60 unknown-osr-value [stack:0]= [hir:t24] <|@
62 gap () ([stack:0];) () () [hir:t24] <|@
64 osr-entry = [id=8|deopt_id=1|parameters=3|arguments_stack_height=0|[stack:-3];[stack:-2];[stack:-1];[stack:-1];[stack:0]] [hir:v26] <|@
66 gap () () () () [hir:v26] <|@
68 context [rsi|R]= [hir:t27] <|@
70 gap ((0) = [rsi|R];) ([rax|R] = [stack:0];) () () [hir:t27] <|@
72 tagged-to-i [rax|R]= [rax|R] [id=6|deopt_id=11|parameters=3|arguments_stack_height=0|[stack:-3];[stack:-2];[stack:-1];[rsi|R];[stack:0]] [hir:i117] <|@
74 gap ((0) = [rax|R];) () () () [hir:i117] <|@
76 gap () ([rsi|R] = [stack:-3]; [rcx|R] = [stack:-2]; [rdx|R] = [stack:-1]; [rbx|R] = [rsi|R]; [rax|R];) () () [hir:v29] <|@
78 goto B4 [hir:v29] <|@
end_LIR
end_block
begin_block
name "B3"
from_bci -1
to_bci -1
predecessors "B1"
successors "B4"
xhandlers
flags
dominator "B1"
loop_depth 0
first_lir_id 80
last_lir_id 86
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v16 BlockEntry type:Tagged pos:17 <|@
0 0 v17 Simulate id=6 var[4] = i12 type:Tagged pos:17 <|@
0 0 v18 Goto B4 type:Tagged pos:17 <|@
end_HIR
begin_LIR
80 label () () () () [hir:v16] <|@
82 gap () () () () [hir:v16] <|@
84 gap () ([rsi|R] = [stack:-3]; [rcx|R] = [stack:-2]; [rdx|R] = [stack:-1]; [rbx|R] = [stack:1]; [rax|R] = [constant:12];) () () [hir:v18] <|@
86 goto B4 [hir:v18] <|@
end_LIR
end_block
begin_block
name "B4"
from_bci -1
to_bci -1
predecessors "B3" "B2"
successors "B5"
xhandlers
flags
dominator "B1"
loop_depth 0
first_lir_id 88
last_lir_id 106
begin_states
begin_locals
size 5
method "None"
0 t30 [ t2 t20 uses:0_0s_0i_0d_0t type:Tagged]
1 t31 [ t3 t21 uses:15_0s_0i_0d_0t type:Tagged]
2 t32 [ t4 t22 uses:1_0s_0i_0d_0t type:Tagged]
3 t33 [ t1 t27 uses:5_0s_0i_0d_2t type:Tagged]
4 i34 [ i12 i117 uses:1_2s_0i_0d_0t type:TaggedNumber]
end_locals
end_states
begin_HIR
0 0 v40 BlockEntry type:Tagged pos:17 <|@
0 0 v41 Simulate id=6 type:Tagged pos:17 <|@
0 1 i46 Constant 10000000 type:Smi pos:37 <|@
0 0 t57 CheckHeapObject t31 pos:57 <|@
0 2 t59 Constant 0x3e342e09b81 <JS Array[0]> [map 0x3e5b6170d421] pos:57 <|@
0 0 t60 CheckMaps t59 [0x3e5b6170d421](stability-check) pos:57 <|@
0 1 t63 Constant 0x3e342e0a171 <JS Function splice (SharedFunctionInfo 0x3a907a937911)> [map 0x3e5b6170cce9] pos:57 <|@
0 1 t118 Constant 1 pos:57 <|@
0 2 t75 Constant 0x3e342e044f9 <an Object with map 0x3e5b6170cc39> [map 0x3e5b6170cc39] pos:83 <|@
0 0 t76 CheckMaps t75 [0x3e5b6170cc39](stability-check) pos:83 <|@
0 1 s84 Constant 100 type:Smi [noOSE] pos:83 <|@
0 1 t90 Constant 0x20d3f3c36101 <Code: STUB> [map 0x3e5b61704731] [noOSE] pos:83 <|@
0 0 v42 Goto B5 type:Tagged pos:17 <|@
end_HIR
begin_LIR
88 label () ([stack:5] = [rsi|R]; [stack:4] = [rcx|R]; [stack:3] = [rdx|R]; [stack:2] = [rbx|R]; (0) = [rax|R];) () () [hir:v40] <|@
90 gap () () () () [hir:v40] <|@
92 check-non-smi = [rcx|R] [id=6|deopt_id=2|parameters=3|arguments_stack_height=0|[rsi|R];[rcx|R];[rdx|R];[rbx|R];[rax|R]] [hir:t57] <|@
94 gap () () () () [hir:t57] <|@
96 check-maps = NULL [hir:t60] <|@
98 gap () () () () [hir:t60] <|@
100 check-maps = NULL [hir:t76] <|@
102 gap () () () () [hir:t76] <|@
104 gap () ([rax|R];) () () [hir:v42] <|@
106 goto B5 [hir:v42] <|@
end_LIR
end_block
begin_block
name "B5"
from_bci -1
to_bci -1
predecessors "B4" "B13"
successors "B6" "B14"
xhandlers
flags "dom-loop-succ"
dominator "B4"
loop_depth 1
first_lir_id 108
last_lir_id 114
begin_states
begin_locals
size 1
method "None"
4 i39 [ i34 i109 uses:2_2s_0i_0d_0t type:TaggedNumber]
end_locals
end_states
begin_HIR
0 0 v43 BlockEntry type:Tagged pos:33 <|@
0 0 i47 CompareNumericAndBranch LT i39 i46 goto (B6, B14) type:Tagged pos:35 <|@
end_HIR
begin_LIR
108 label () ([stack:6] = [rax|R];) () () [hir:v43] <|@
110 gap () () () () [hir:v43] <|@
112 gap () () () () [hir:i47] <|@
114 compare-numeric-and-branch if [rax|R] < [constant:46] then B6 else B14 [hir:i47] <|@
end_LIR
end_block
begin_block
name "B6"
from_bci -1
to_bci -1
predecessors "B5"
successors "B7"
xhandlers
flags "dom-loop-succ"
dominator "B5"
loop_depth 1
first_lir_id 116
last_lir_id 122
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v48 BlockEntry type:Tagged pos:35 <|@
0 0 v49 Simulate id=10 type:Tagged pos:35 <|@
0 0 v50 Goto B7 type:Tagged pos:35 <|@
end_HIR
begin_LIR
116 label () () () () Dead block replaced with B7 [hir:v48] <|@
118 gap () () () () [hir:v48] <|@
120 gap () () () () [hir:v50] <|@
122 goto B7 [hir:v50] <|@
end_LIR
end_block
begin_block
name "B7"
from_bci -1
to_bci -1
predecessors "B6"
successors "B9" "B8"
xhandlers
flags "dom-loop-succ"
dominator "B6"
loop_depth 1
first_lir_id 124
last_lir_id 182
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v54 BlockEntry type:Tagged pos:17 <|@
0 0 v55 Simulate id=10 type:Tagged pos:17 <|@
0 0 v56 StackCheck t33 changes[NewSpacePromotion] type:Tagged pos:17 <|@
0 0 t58 CheckMaps t31 [0x3e5b6170db59] pos:57 <|@
0 0 t64 PushArguments t31 t32 t118 type:Tagged pos:57 <|@
0 0 t65 CallJSFunction t63 #3 changes[*] type:Tagged pos:57 <|@
0 0 v66 Simulate id=42 type:Tagged pos:57 <|@
0 0 t68 CheckMaps t31 [0x3e5b6170db59] pos:83 <|@
0 6 i77 LoadNamedField t31.%length@24 type:Smi [noOSE] pos:83 <|@
0 6 t81 LoadNamedField t31.%elements@16 type:Tagged [noOSE] pos:83 <|@
0 0 t82 CheckMaps t81 [0x3e5b61704209] [noOSE] pos:83 <|@
0 2 i83 LoadNamedField t31.%length@24 type:Smi [noOSE] pos:83 <|@
0 0 i85 CompareNumericAndBranch GTE i77 i83 goto (B9, B8) type:Tagged pos:83 <|@
end_HIR
begin_LIR
124 label () () () () [hir:v54] <|@
126 gap () () () () [hir:v54] <|@
128 stack-check = [rbx|R] [id=10|deopt_id=3|parameters=3|arguments_stack_height=0|[rsi|R];[rcx|R];[rdx|R];[rbx|R];[rax|R]] {[stack:5];[rsi|R];[stack:4];[rcx|R];[stack:3];[rdx|R];[stack:2];[rbx|R]} [hir:v56] <|@
130 gap () () () () [hir:v56] <|@
132 check-maps = [rcx|R] [id=10|deopt_id=4|parameters=3|arguments_stack_height=0|[rsi|R];[rcx|R];[rdx|R];[rbx|R];[rax|R]] [hir:t58] <|@
134 gap () () () () [hir:t58] <|@
136 push-argument = [rcx|R] [hir:t64] <|@
138 gap () () () () [hir:t64] <|@
140 push-argument = [rdx|R] [hir:t64] <|@
142 gap () () () () [hir:t64] <|@
144 push-argument = [constant:118] [hir:t64] <|@
146 gap () () () () [hir:t64] <|@
148 constant-t [rdi|R]= [hir:t63] <|@
150 gap ((0) = [rdi|R];) ([rdi|R];) () () [hir:t63] <|@
152 call-js-function [rax|R]= [rdi|R]#2 / {[rdi|R];[stack:5];[stack:4];[stack:3];[stack:2]} [hir:t65] <|@
154 gap ((0) = [rax|R];) () () () [hir:t65] <|@
156 lazy-bailout = [id=42|deopt_id=5|parameters=3|arguments_stack_height=0|[stack:5];[stack:4];[stack:3];[stack:2];[stack:6]] [hir:v66] <|@
158 gap () () ([rdx|R] = [stack:4];) () [hir:v66] <|@
160 check-maps = [rdx|R] [id=42|deopt_id=6|parameters=3|arguments_stack_height=0|[stack:5];[rdx|R];[stack:3];[stack:2];[stack:6]] [hir:t68] <|@
162 gap () () () () [hir:t68] <|@
164 load-named-field [rdi|R]= [rdx|R] [hir:i77] <|@
166 gap ([stack:7] = [rdi|R];) () () () [hir:i77] <|@
168 load-named-field [rax|R]= [rdx|R] [hir:t81] <|@
170 gap ((0) = [rax|R];) () () () [hir:t81] <|@
172 check-maps = [rax|R] [id=42|deopt_id=7|parameters=3|arguments_stack_height=0|[stack:5];[rdx|R];[stack:3];[stack:2];[stack:6]] [hir:t82] <|@
174 gap () () () () [hir:t82] <|@
176 load-named-field [rbx|R]= [rdx|R] [hir:i83] <|@
178 gap ((0) = [rbx|R];) () () () [hir:i83] <|@
180 gap () () () () [hir:i85] <|@
182 compare-numeric-and-branch if [rdi|R] >= [rbx|R] then B9 else B8 [hir:i85] <|@
end_LIR
end_block
begin_block
name "B8"
from_bci -1
to_bci -1
predecessors "B7"
successors "B13"
xhandlers
flags
dominator "B7"
loop_depth 1
first_lir_id 184
last_lir_id 194
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v100 BlockEntry type:Tagged pos:83 <|@
0 0 i101 BoundsCheck i77 i83 type:Tagged [noOSE] pos:83 <|@
0 0 v102 Goto B13 type:Tagged pos:83 <|@
end_HIR
begin_LIR
184 label () () () () [hir:v100] <|@
186 gap () () () () [hir:v100] <|@
188 bounds-check = [rdi|R] [rbx|R] [id=42|deopt_id=8|parameters=3|arguments_stack_height=0|[stack:5];[rdx|R];[stack:3];[stack:2];[stack:6]] [hir:i101] <|@
190 gap () () () () [hir:i101] <|@
192 gap () ([rax|R]; [rbx|R] = [rdi|R];) () () [hir:v102] <|@
194 goto B13 [hir:v102] <|@
end_LIR
end_block
begin_block
name "B9"
from_bci -1
to_bci -1
predecessors "B7"
successors "B11" "B10"
xhandlers
flags
dominator "B7"
loop_depth 1
first_lir_id 196
last_lir_id 206
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v86 BlockEntry type:Tagged pos:83 <|@
0 2 i87 LoadNamedField t81.%length@8 type:Smi [noOSE] pos:83 <|@
0 0 i88 CompareNumericAndBranch GTE i77 i87 goto (B11, B10) type:Tagged pos:83 <|@
end_HIR
begin_LIR
196 label () () () () [hir:v86] <|@
198 gap () () () () [hir:v86] <|@
200 load-named-field [rbx|R]= [rax|R] [hir:i87] <|@
202 gap ((0) = [rbx|R];) () () () [hir:i87] <|@
204 gap () () () () [hir:i88] <|@
206 compare-numeric-and-branch if [rdi|R] >= [rbx|R] then B11 else B10 [hir:i88] <|@
end_LIR
end_block
begin_block
name "B10"
from_bci -1
to_bci -1
predecessors "B9"
successors "B12"
xhandlers
flags
dominator "B9"
loop_depth 1
first_lir_id 208
last_lir_id 214
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v93 BlockEntry type:Tagged pos:83 <|@
0 0 v94 Goto B12 type:Tagged pos:83 <|@
end_HIR
begin_LIR
208 label () () () () Dead block replaced with B12 [hir:v93] <|@
210 gap () () () () [hir:v93] <|@
212 gap () ([rax|R];) () () [hir:v94] <|@
214 goto B12 [hir:v94] <|@
end_LIR
end_block
begin_block
name "B11"
from_bci -1
to_bci -1
predecessors "B9"
successors "B12"
xhandlers
flags
dominator "B9"
loop_depth 1
first_lir_id 216
last_lir_id 242
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v89 BlockEntry type:Tagged pos:83 <|@
0 1 t119 Change i77 i to t pos:83 <|@
0 1 t120 Change i87 i to t pos:83 <|@
0 2 t91 CallWithDescriptor t90 t33 t31 t119 t120 #0 changes[*] type:Tagged [noOSE] pos:83 <|@
0 0 t92 CheckHeapObject t91 [noOSE] pos:83 <|@
0 0 v95 Goto B12 type:Tagged pos:83 <|@
end_HIR
begin_LIR
216 label () () () () [hir:v89] <|@
218 gap () () () () [hir:v89] <|@
220 smi-tag [rax|R]= [rdi|R] [hir:t119] <|@
222 gap ((0) = [rax|R];) () () () [hir:t119] <|@
224 smi-tag [rcx|R]= [rbx|R] [hir:t120] <|@
226 gap ((0) = [rcx|R];) ([rsi|R] = [stack:2]; [rax|R] = [rdx|R]; [rbx|R] = [rax|R]; [rcx|R];) () () [hir:t120] <|@
228 call-with-descriptor [rax|R][constant:90] [rsi|R] [rax|R] [rbx|R] [rcx|R] #-1 / [id=42|parameters=3|arguments_stack_height=0|[stack:5];[stack:4];[stack:3];[stack:2];[stack:6]] {[rsi|R];[rax|R];[stack:5];[stack:4];[stack:3];[stack:2]} [hir:t91] <|@
230 gap ((0) = [rax|R];) ([rax|R];) () () [hir:t91] <|@
232 lazy-bailout = [id=42|deopt_id=9|parameters=3|arguments_stack_height=0|[stack:5];[stack:4];[stack:3];[stack:2];[stack:6]] [hir:t91] <|@
234 gap () () () () [hir:t91] <|@
236 check-non-smi = [rax|R] [id=42|deopt_id=10|parameters=3|arguments_stack_height=0|[stack:5];[stack:4];[stack:3];[stack:2];[stack:6]] [hir:t92] <|@
238 gap () () () () [hir:t92] <|@
240 gap () ([rax|R];) () () [hir:v95] <|@
242 goto B12 [hir:v95] <|@
end_LIR
end_block
begin_block
name "B12"
from_bci -1
to_bci -1
predecessors "B10" "B11"
successors "B13"
xhandlers
flags
dominator "B9"
loop_depth 1
first_lir_id 244
last_lir_id 262
begin_states
begin_locals
size 1
method "None"
-1 t96 [ t81 t91 uses:1_0s_0i_0d_1t type:Tagged]
end_locals
end_states
begin_HIR
0 0 v97 BlockEntry type:Tagged pos:83 <|@
0 1 i98 Add i77 i78 type:TaggedNumber [noOSE] pos:83 <|@
0 1 s121 Change i98 i to s type:Smi pos:83 <|@
0 0 v99 StoreNamedField t31.%length@24 = s121 changes[ArrayLengths] type:Tagged [noOSE] pos:83 <|@
0 0 v103 Goto B13 type:Tagged pos:83 <|@
end_HIR
begin_LIR
244 label () ((0) = [rax|R];) () () [hir:v97] <|@
246 gap () () ([rbx|R] = [stack:7];) () [hir:v97] <|@
248 add-i [rdx|R]= [rbx|R] [constant:78] [hir:i98] <|@
250 gap ((0) = [rdx|R];) () () () [hir:i98] <|@
252 smi-tag [rcx|R]= [rdx|R] [hir:s121] <|@
254 gap ((0) = [rcx|R];) () ([rdx|R] = [stack:4];) () [hir:s121] <|@
256 store-named-field [rdx|R].%length@24 <- [rcx|R] [hir:v99] <|@
258 gap () () () () [hir:v99] <|@
260 gap () ([rax|R];) () () [hir:v103] <|@
262 goto B13 [hir:v103] <|@
end_LIR
end_block
begin_block
name "B13"
from_bci -1
to_bci -1
predecessors "B8" "B12"
successors "B5"
xhandlers
flags "dom-loop-succ"
dominator "B7"
loop_depth 1
first_lir_id 264
last_lir_id 278
begin_states
begin_locals
size 1
method "None"
-1 t104 [ t81 t96 uses:1_0s_0i_0d_1t type:Tagged]
end_locals
end_states
begin_HIR
0 0 v105 BlockEntry type:Tagged pos:83 <|@
0 0 v106 StoreKeyed t104[i77] = s84 changes[ArrayElements] type:Tagged [noOSE] pos:83 <|@
0 0 v107 Simulate id=60 type:Tagged [noOSE] pos:83 <|@
0 2 i109 Add i39 i78 type:TaggedNumber pos:43 <|@
0 0 v111 Simulate id=6 var[4] = i109 type:Tagged pos:17 <|@
0 0 v112 Goto B5 type:Tagged pos:17 <|@
end_HIR
begin_LIR
264 label () ((0) = [rax|R];) () () [hir:v105] <|@
266 gap () () () () [hir:v105] <|@
268 store-keyed [rax|R][[rbx|R]] <- [constant:84] [hir:v106] <|@
270 gap () () ([rax|R] = [stack:6];) () [hir:v106] <|@
272 add-i [rax|R]= [rax|R] [constant:78] [hir:i109] <|@
274 gap ((0) = [rax|R];) () () () [hir:i109] <|@
276 gap () ([rax|R]; [rsi|R] = [stack:5]; [rcx|R] = [rdx|R]; [rdx|R] = [stack:3]; [rbx|R] = [stack:2];) () () [hir:v112] <|@
278 goto B5 [hir:v112] <|@
end_LIR
end_block
begin_block
name "B14"
from_bci -1
to_bci -1
predecessors "B5"
successors "B15"
xhandlers
flags
dominator "B5"
loop_depth 0
first_lir_id 280
last_lir_id 286
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v51 BlockEntry type:Tagged pos:35 <|@
0 0 v52 Simulate id=7 var[4] = t6 type:Tagged pos:35 <|@
0 0 v53 Goto B15 type:Tagged pos:35 <|@
end_HIR
begin_LIR
280 label () () () () Dead block replaced with B15 [hir:v51] <|@
282 gap () () () () [hir:v51] <|@
284 gap () () () () [hir:v53] <|@
286 goto B15 [hir:v53] <|@
end_LIR
end_block
begin_block
name "B15"
from_bci -1
to_bci -1
predecessors "B14"
successors
xhandlers
flags
dominator "B14"
loop_depth 0
first_lir_id 288
last_lir_id 298
begin_states
begin_locals
size 0
method "None"
end_locals
end_states
begin_HIR
0 0 v113 BlockEntry type:Tagged <|@
0 1 s122 Constant 2 type:Smi <|@
0 0 v115 Return t6 (pop s122 values) type:Tagged <|@
end_HIR
begin_LIR
288 label () () () () [hir:v113] <|@
290 gap () () () () [hir:v113] <|@
292 constant-t [rax|R]= [hir:t6] <|@
294 gap ((0) = [rax|R];) ([rax|R];) () () [hir:t6] <|@
296 return = [rax|R] NULL [constant:122] [hir:v115] <|@
298 gap () () () () [hir:v115] <|@
end_LIR
end_block
end_cfg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment