Skip to content

Instantly share code, notes, and snippets.

@joa
Created August 30, 2013 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joa/6389914 to your computer and use it in GitHub Desktop.
Save joa/6389914 to your computer and use it in GitHub Desktop.
./d8 --print_opt_code script.js
--- Raw source ---
() {
var a = 1|0;
var b = 0|0;
for(var i = 0; i < n; i++) {
t = b;
b = (a+b)|0;
a = t;
}
print(b);
}
--- Optimized code ---
kind = OPTIMIZED_FUNCTION
name = test32bit
stack_slots = 6
Instructions (size = 689)
0x39029fb3d520 0 55 push rbp
0x39029fb3d521 1 4889e5 REX.W movq rbp,rsp
0x39029fb3d524 4 56 push rsi
0x39029fb3d525 5 57 push rdi
0x39029fb3d526 6 4883ec30 REX.W subq rsp,0x30
0x39029fb3d52a 10 488bc6 REX.W movq rax,rsi
0x39029fb3d52d 13 488945c0 REX.W movq [rbp-0x40],rax
0x39029fb3d531 17 493b6560 REX.W cmpq rsp,[r13+0x60]
0x39029fb3d535 21 7305 jnc 28 (0x39029fb3d53c)
0x39029fb3d537 23 e8c4fefdff call StackCheck (0x39029fb1d400) ;; code: BUILTIN
0x39029fb3d53c 28 e973000000 jmp 148 (0x39029fb3d5b4)
0x39029fb3d541 33 488bc6 REX.W movq rax,rsi
0x39029fb3d544 36 488b5dd8 REX.W movq rbx,[rbp-0x28]
0x39029fb3d548 40 f6c301 testb rbx,0x1
0x39029fb3d54b 43 7424 jz 81 (0x39029fb3d571)
0x39029fb3d54d 45 4d8b5500 REX.W movq r10,[r13+0x0]
0x39029fb3d551 49 4c3953ff REX.W cmpq [rbx-0x1],r10
0x39029fb3d555 53 7413 jz 74 (0x39029fb3d56a)
0x39029fb3d557 55 493b5da8 REX.W cmpq rbx,[r13-0x58]
0x39029fb3d55b 59 0f8521020000 jnz 610 (0x39029fb3d782)
0x39029fb3d561 65 0f57d2 xorps xmm2, xmm2
0x39029fb3d564 68 f20f5ed2 divsd xmm2,xmm2
0x39029fb3d568 72 eb13 jmp 93 (0x39029fb3d57d)
0x39029fb3d56a 74 f20f105307 movsd xmm2,[rbx+0x7]
0x39029fb3d56f 79 eb0c jmp 93 (0x39029fb3d57d)
0x39029fb3d571 81 4c8bd3 REX.W movq r10,rbx
0x39029fb3d574 84 49c1ea20 REX.W shrq r10,32
0x39029fb3d578 88 f2410f2ad2 cvtsi2sd xmm2,r10
0x39029fb3d57d 93 488b55d0 REX.W movq rdx,[rbp-0x30]
0x39029fb3d581 97 f6c201 testb rdx,0x1
0x39029fb3d584 100 0f8542010000 jnz 428 (0x39029fb3d6cc)
0x39029fb3d58a 106 48c1ea20 REX.W shrq rdx,32
0x39029fb3d58e 110 488b4dc8 REX.W movq rcx,[rbp-0x38]
0x39029fb3d592 114 f6c101 testb rcx,0x1
0x39029fb3d595 117 0f8576010000 jnz 497 (0x39029fb3d711)
0x39029fb3d59b 123 48c1e920 REX.W shrq rcx,32
0x39029fb3d59f 127 488bda REX.W movq rbx,rdx
0x39029fb3d5a2 130 488bd0 REX.W movq rdx,rax
0x39029fb3d5a5 133 488bc1 REX.W movq rax,rcx
0x39029fb3d5a8 136 488b4de8 REX.W movq rcx,[rbp-0x18]
0x39029fb3d5ac 140 0f28ca movaps xmm1, xmm2
0x39029fb3d5af 143 e921000000 jmp 181 (0x39029fb3d5d5)
0x39029fb3d5b4 148 48b8000000000000f03f REX.W movq rax,0x3ff0000000000000
0x39029fb3d5be 158 66480f6ec8 REX.W movq xmm1,rax
0x39029fb3d5c3 163 488b4d10 REX.W movq rcx,[rbp+0x10]
0x39029fb3d5c7 167 488b55c0 REX.W movq rdx,[rbp-0x40]
0x39029fb3d5cb 171 bb00000000 movl rbx,(nil)
0x39029fb3d5d0 176 b800000000 movl rax,(nil)
0x39029fb3d5d5 181 48894dd8 REX.W movq [rbp-0x28],rcx
0x39029fb3d5d9 185 ba00e1f505 movl rdx,0x5f5e100
0x39029fb3d5de 190 33d2 xorl rdx,rdx
0x39029fb3d5e0 192 3d00e1f505 cmp rax, 0x5f5e100
0x39029fb3d5e5 197 0f8da3000000 jge 366 (0x39029fb3d68e)
0x39029fb3d5eb 203 493b6560 REX.W cmpq rsp,[r13+0x60]
0x39029fb3d5ef 207 0f824c010000 jc 545 (0x39029fb3d741)
0x39029fb3d5f5 213 488bd3 REX.W movq rdx,rbx
0x39029fb3d5f8 216 48c1e220 REX.W shlq rdx,32
0x39029fb3d5fc 220 48bfa8d66039763f0000 REX.W movq rdi,0x3f763960d6a8 ;; property cell
0x39029fb3d606 230 4d8b55b0 REX.W movq r10,[r13-0x50]
0x39029fb3d60a 234 4c3917 REX.W cmpq [rdi],r10
0x39029fb3d60d 237 0f8474010000 jz 615 (0x39029fb3d787)
0x39029fb3d613 243 488917 REX.W movq [rdi],rdx
0x39029fb3d616 246 f20f2ad3 cvtsi2sd xmm2,rbx
0x39029fb3d61a 250 f20f58d1 addsd xmm2,xmm1
0x39029fb3d61e 254 f2480f2cd2 REX.W cvttsd2siq rdx,xmm2
0x39029fb3d623 259 49ba0000000000000080 REX.W movq r10,0x8000000000000000
0x39029fb3d62d 269 493bd2 REX.W cmpq rdx,r10
0x39029fb3d630 272 0f8456010000 jz 620 (0x39029fb3d78c)
0x39029fb3d636 278 48bfa8d66039763f0000 REX.W movq rdi,0x3f763960d6a8 ;; property cell
0x39029fb3d640 288 488b3f REX.W movq rdi,[rdi]
0x39029fb3d643 291 493b7db0 REX.W cmpq rdi,[r13-0x50]
0x39029fb3d647 295 0f8444010000 jz 625 (0x39029fb3d791)
0x39029fb3d64d 301 83c001 addl rax,0x1
0x39029fb3d650 304 40f6c701 testb rdi,0x1
0x39029fb3d654 308 7424 jz 346 (0x39029fb3d67a)
0x39029fb3d656 310 4d8b5500 REX.W movq r10,[r13+0x0]
0x39029fb3d65a 314 4c3957ff REX.W cmpq [rdi-0x1],r10
0x39029fb3d65e 318 7413 jz 339 (0x39029fb3d673)
0x39029fb3d660 320 493b7da8 REX.W cmpq rdi,[r13-0x58]
0x39029fb3d664 324 0f852c010000 jnz 630 (0x39029fb3d796)
0x39029fb3d66a 330 0f57c9 xorps xmm1, xmm1
0x39029fb3d66d 333 f20f5ec9 divsd xmm1,xmm1
0x39029fb3d671 337 eb13 jmp 358 (0x39029fb3d686)
0x39029fb3d673 339 f20f104f07 movsd xmm1,[rdi+0x7]
0x39029fb3d678 344 eb0c jmp 358 (0x39029fb3d686)
0x39029fb3d67a 346 4c8bd7 REX.W movq r10,rdi
0x39029fb3d67d 349 49c1ea20 REX.W shrq r10,32
0x39029fb3d681 353 f2410f2aca cvtsi2sd xmm1,r10
0x39029fb3d686 358 488bda REX.W movq rbx,rdx
0x39029fb3d689 361 e952ffffff jmp 192 (0x39029fb3d5e0)
0x39029fb3d68e 366 488b4627 REX.W movq rax,[rsi+0x27]
0x39029fb3d692 370 48ba09253212830a0000 REX.W movq rdx,0xa8312322509 ;; object: 0xa8312322509 <JS Function print (SharedFunctionInfo 0xa8312322479)>
0x39029fb3d69c 380 488b402f REX.W movq rax,[rax+0x2f]
0x39029fb3d6a0 384 50 push rax
0x39029fb3d6a1 385 48c1e320 REX.W shlq rbx,32
0x39029fb3d6a5 389 53 push rbx
0x39029fb3d6a6 390 48b9e9cd116a472b0000 REX.W movq rcx,0x2b476a11cde9 ;; object: 0x2b476a11cde9 <String[5]: print>
0x39029fb3d6b0 400 e8cbf0fdff call 0x39029fb1c780 ;; debug: position 320
;; code: CALL_IC, UNINITIALIZED, argc = 1
0x39029fb3d6b5 405 488b75f8 REX.W movq rsi,[rbp-0x8]
0x39029fb3d6b9 409 33c0 xorl rax,rax
0x39029fb3d6bb 411 48b82141300334240000 REX.W movq rax,0x243403304121 ;; object: 0x243403304121 <undefined>
0x39029fb3d6c5 421 488be5 REX.W movq rsp,rbp
0x39029fb3d6c8 424 5d pop rbp
0x39029fb3d6c9 425 c20800 ret 0x8
0x39029fb3d6cc 428 4d8b5500 REX.W movq r10,[r13+0x0]
0x39029fb3d6d0 432 4c3952ff REX.W cmpq [rdx-0x1],r10
0x39029fb3d6d4 436 0f85c1000000 jnz 635 (0x39029fb3d79b)
0x39029fb3d6da 442 f20f104207 movsd xmm0,[rdx+0x7]
0x39029fb3d6df 447 f20f2cd0 cvttsd2sil rdx,xmm0
0x39029fb3d6e3 451 f20f2aca cvtsi2sd xmm1,rdx
0x39029fb3d6e7 455 660f2ec1 ucomisd xmm0,xmm1
0x39029fb3d6eb 459 0f85aa000000 jnz 635 (0x39029fb3d79b)
0x39029fb3d6f1 465 0f8aa4000000 jpe 635 (0x39029fb3d79b)
0x39029fb3d6f7 471 85d2 testl rdx,rdx
0x39029fb3d6f9 473 0f850d000000 jnz 492 (0x39029fb3d70c)
0x39029fb3d6ff 479 660f50d0 movmskpd rdx,xmm0
0x39029fb3d703 483 83e201 andl rdx,0x1
0x39029fb3d706 486 0f858f000000 jnz 635 (0x39029fb3d79b)
0x39029fb3d70c 492 e97dfeffff jmp 110 (0x39029fb3d58e)
0x39029fb3d711 497 4d8b5500 REX.W movq r10,[r13+0x0]
0x39029fb3d715 501 4c3951ff REX.W cmpq [rcx-0x1],r10
0x39029fb3d719 505 0f8581000000 jnz 640 (0x39029fb3d7a0)
0x39029fb3d71f 511 f20f104107 movsd xmm0,[rcx+0x7]
0x39029fb3d724 516 f20f2cc8 cvttsd2sil rcx,xmm0
0x39029fb3d728 520 f20f2ac9 cvtsi2sd xmm1,rcx
0x39029fb3d72c 524 660f2ec1 ucomisd xmm0,xmm1
0x39029fb3d730 528 0f856a000000 jnz 640 (0x39029fb3d7a0)
0x39029fb3d736 534 0f8a64000000 jpe 640 (0x39029fb3d7a0)
0x39029fb3d73c 540 e95efeffff jmp 127 (0x39029fb3d59f)
0x39029fb3d741 545 50 push rax
0x39029fb3d742 546 51 push rcx
0x39029fb3d743 547 52 push rdx
0x39029fb3d744 548 53 push rbx
0x39029fb3d745 549 56 push rsi
0x39029fb3d746 550 57 push rdi
0x39029fb3d747 551 4150 push r8
0x39029fb3d749 553 4151 push r9
0x39029fb3d74b 555 4153 push r11
0x39029fb3d74d 557 4156 push r14
0x39029fb3d74f 559 4157 push r15
0x39029fb3d751 561 488d6424d8 REX.W leaq rsp,[rsp-0x28]
0x39029fb3d756 566 488b75f8 REX.W movq rsi,[rbp-0x8]
0x39029fb3d75a 570 33c0 xorl rax,rax
0x39029fb3d75c 572 498d9d7d7dc6fe REX.W leaq rbx,[r13-0x1398283]
0x39029fb3d763 579 e81893fcff call 0x39029fb06a80 ;; debug: position 262
;; code: STUB, CEntryStub, minor: 1
0x39029fb3d768 584 488d642428 REX.W leaq rsp,[rsp+0x28]
0x39029fb3d76d 589 415f pop r15
0x39029fb3d76f 591 415e pop r14
0x39029fb3d771 593 415b pop r11
0x39029fb3d773 595 4159 pop r9
0x39029fb3d775 597 4158 pop r8
0x39029fb3d777 599 5f pop rdi
0x39029fb3d778 600 5e pop rsi
0x39029fb3d779 601 5b pop rbx
0x39029fb3d77a 602 5a pop rdx
0x39029fb3d77b 603 59 pop rcx
0x39029fb3d77c 604 58 pop rax
0x39029fb3d77d 605 e973feffff jmp 213 (0x39029fb3d5f5)
0x39029fb3d782 610 e88d88ccff call 0x39029f806014 ;; deoptimization bailout 2
0x39029fb3d787 615 e89c88ccff call 0x39029f806028 ;; deoptimization bailout 4
0x39029fb3d78c 620 e8a188ccff call 0x39029f806032 ;; deoptimization bailout 5
0x39029fb3d791 625 e8a688ccff call 0x39029f80603c ;; deoptimization bailout 6
0x39029fb3d796 630 e8ab88ccff call 0x39029f806046 ;; deoptimization bailout 7
0x39029fb3d79b 635 e8ba88ccff call 0x39029f80605a ;; deoptimization bailout 9
0x39029fb3d7a0 640 e8bf88ccff call 0x39029f806064 ;; deoptimization bailout 10
0x39029fb3d7a5 645 0f1f00 nop
Deoptimization Input Data (deopt points = 11)
index ast id argc pc
0 3 0 28
1 47 0 -1
2 45 0 -1
3 49 0 213
4 49 0 -1
5 70 0 -1
6 70 0 -1
7 45 0 -1
8 99 0 409
9 45 0 -1
10 45 0 -1
Safepoints (size = 41)
0x39029fb3d53c 28 100000 (sp -> fp) 0
0x39029fb3d6b5 405 000100 (sp -> fp) 8
0x39029fb3d768 584 000100 | rcx | rsi (sp -> fp) 3
RelocInfo (size = 44)
0x39029fb3d538 code target (BUILTIN) (0x39029fb1d400)
0x39029fb3d5fe property cell
0x39029fb3d638 property cell
0x39029fb3d694 embedded object (0xa8312322509 <JS Function print (SharedFunctionInfo 0xa8312322479)>)
0x39029fb3d6a8 embedded object (0x2b476a11cde9 <String[5]: print>)
0x39029fb3d6b0 position (320)
0x39029fb3d6b1 code target (CALL_IC) (0x39029fb1c780)
0x39029fb3d6bd embedded object (0x243403304121 <undefined>)
0x39029fb3d763 position (262)
0x39029fb3d764 code target (STUB) (0x39029fb06a80)
0x39029fb3d783 runtime entry (deoptimization bailout 2)
0x39029fb3d788 runtime entry (deoptimization bailout 4)
0x39029fb3d78d runtime entry (deoptimization bailout 5)
0x39029fb3d792 runtime entry (deoptimization bailout 6)
0x39029fb3d797 runtime entry (deoptimization bailout 7)
0x39029fb3d79c runtime entry (deoptimization bailout 9)
0x39029fb3d7a1 runtime entry (deoptimization bailout 10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment