Why for loop will become faster if divided in two loop?

43 views
Skip to first unread message

b...@b6n.ch

unread,
Apr 10, 2017, 11:49:34 PM4/10/17
to v8-users
Hey.

I found curios things in d8 version 5.9.0(git hash b086856f0a15374286529bb56668f19bd18c4965).
This is my code samples

/**
 * @fileoverview
 * @author Taketoshi Aono
 */

const Benchmark = require('benchmark');
const suite = new Benchmark.Suite;

const anyType1 = 'a';
const anyType2 = 2;
const anyType3 = /klfjakl/;
const anyType4 = {a:2,b:3};
const anyType5 = {f:2,d:4};
const anyType6 = Date.now();

const anyMap1 = {a:2,b:3};
const anyMap2 = {f:2,d:4};
const anyMap3 = {e:2,f:4};
const anyMap4 = {h:2,i:4};
const anyMap5 = {j:2,k:4};
const anyMap6 = {l:2,m:4};

const sameType1 = 1;
const sameType2 = 2;
const sameType3 = 3;
const sameType4 = 4;
const sameType5 = 5;
const sameType6 = 6;


function heavy() {
  let ret = 0;
  for (let i = 0; i < 100; i++) {
    let a = Date.now()
    ret += a;
  }
  return ret;
}

// add tests
suite
  .add('one loop', () => {
    for (let i = 0; i < 10000; i++) {
      heavy();
      heavy();
    }
  })
  .add('divide loop', () => {
    for (let i = 0; i < 10000; i++) {
      heavy();
    }
    for (let i = 0; i < 10000; i++) {
      heavy();
    }
  })
  .on('cycle', function(event) {
    console.log(String(event.target));
  })
  .on('complete', function() {
    console.log('Fastest is ' + this.filter('fastest').map('name'));
  })
  .run({ 'async': true });



And if you run in this code nodejs -v7.2.1.
Divide loop is faster than one loop.

I think it's strange, so I check generated code.

ONE LOOP

optimization_id = 2
source_position = 0
kind = OPTIMIZED_FUNCTION
stack_slots = 22
compiler = turbofan
Instructions (size = 1445)
0x3f4a6c304800     0  55             push rbp
0x3f4a6c304801     1  4889e5         REX.W movq rbp,rsp
0x3f4a6c304804     4  56             push rsi
0x3f4a6c304805     5  57             push rdi
0x3f4a6c304806     6  48ba00000000c2000000 REX.W movq rdx,0xc200000000
0x3f4a6c304810    10  e84bf9dfff     call 0x3f4a6c104160  (Abort)    ;; code: BUILTIN
0x3f4a6c304815    15  cc             int3l
0x3f4a6c304816    16  4883ec30       REX.W subq rsp,0x30
0x3f4a6c30481a    1a  48897580       REX.W movq [rbp-0x80],rsi
0x3f4a6c30481e    1e  488b55a8       REX.W movq rdx,[rbp-0x58]
0x3f4a6c304822    22  488b45b8       REX.W movq rax,[rbp-0x48]
0x3f4a6c304826    26  488b5dc0       REX.W movq rbx,[rbp-0x40]
0x3f4a6c30482a    2a  660f1f440000   nop
0x3f4a6c304830    30  4533c0         xorl r8,r8
0x3f4a6c304833    33  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c30483d    3d  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304847    47  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c30484e    4e  0f86ae020000   jna 0x3f4a6c304b02  <+0x302>
0x3f4a6c304854    54  a801           test al,0x1
0x3f4a6c304856    56  0f85a0040000   jnz 0x3f4a6c304cfc  <+0x4fc>
0x3f4a6c30485c    5c  483bc8         REX.W cmpq rcx,rax
0x3f4a6c30485f    5f  0f842c000000   jz 0x3f4a6c304891  <+0x91>
0x3f4a6c304865    65  f6c301         testb rbx,0x1
0x3f4a6c304868    68  0f8593040000   jnz 0x3f4a6c304d01  <+0x501>
0x3f4a6c30486e    6e  488bf3         REX.W movq rsi,rbx
0x3f4a6c304871    71  48c1ee20       REX.W shrq rsi, 32
0x3f4a6c304875    75  83eeff         subl rsi,0xff
0x3f4a6c304878    78  0f8088040000   jo 0x3f4a6c304d06  <+0x506>
0x3f4a6c30487e    7e  48c1e620       REX.W shlq rsi, 32
0x3f4a6c304882    82  48898570ffffff REX.W movq [rbp-0x90],rax
0x3f4a6c304889    89  4c8bce         REX.W movq r9,rsi
0x3f4a6c30488c    8c  e90c000000     jmp 0x3f4a6c30489d  <+0x9d>
0x3f4a6c304891    91  33c0           xorl rax,rax
0x3f4a6c304893    93  4c8bcb         REX.W movq r9,rbx
0x3f4a6c304896    96  48898570ffffff REX.W movq [rbp-0x90],rax
0x3f4a6c30489d    9d  41f6c101       testb r9,0x1
0x3f4a6c3048a1    a1  0f8564040000   jnz 0x3f4a6c304d0b  <+0x50b>
0x3f4a6c3048a7    a7  4c898d78ffffff REX.W movq [rbp-0x88],r9
0x3f4a6c3048ae    ae  4c3bcf         REX.W cmpq r9,rdi
0x3f4a6c3048b1    b1  0f8d41020000   jge 0x3f4a6c304af8  <+0x2f8>
0x3f4a6c3048b7    b7  be01000000     movl rsi,0x1
0x3f4a6c3048bc    bc  498b45a0       REX.W movq rax,[r13-0x60]
0x3f4a6c3048c0    c0  ba01000000     movl rdx,0x1
0x3f4a6c3048c5    c5  83fe01         cmpl rsi,0x1
0x3f4a6c3048c8    c8  0f851b020000   jnz 0x3f4a6c304ae9  <+0x2e9>
0x3f4a6c3048ce    ce  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c3048d5    d5  0f867c020000   jna 0x3f4a6c304b57  <+0x357>
0x3f4a6c3048db    db  498bc0         REX.W movq rax,r8
0x3f4a6c3048de    de  488bda         REX.W movq rbx,rdx
0x3f4a6c3048e1    e1  49ba0000000000000000 REX.W movq r10,0x0
0x3f4a6c3048eb    eb  4c895588       REX.W movq [rbp-0x78],r10
0x3f4a6c3048ef    ef  90             nop
0x3f4a6c3048f0    f0  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3f4a6c3048f4    f4  49bc7092890801000000 REX.W movq r12,0x108899270    ;; external reference (Runtime::DateCurrentTime)
0x3f4a6c3048fe    fe  49bbd13bb8122d320000 REX.W movq r11,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304908   108  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c30490f   10f  0f867f020000   jna 0x3f4a6c304b94  <+0x394>
0x3f4a6c304915   115  83fb01         cmpl rbx,0x1
0x3f4a6c304918   118  0f841b000000   jz 0x3f4a6c304939  <+0x139>
0x3f4a6c30491e   11e  488bf0         REX.W movq rsi,rax
0x3f4a6c304921   121  83eeff         subl rsi,0xff
0x3f4a6c304924   124  0f80e6030000   jo 0x3f4a6c304d10  <+0x510>
0x3f4a6c30492a   12a  48899d60ffffff REX.W movq [rbp-0xa0],rbx
0x3f4a6c304931   131  4c8bf6         REX.W movq r14,rsi
0x3f4a6c304934   134  e90a000000     jmp 0x3f4a6c304943  <+0x143>
0x3f4a6c304939   139  4c898560ffffff REX.W movq [rbp-0xa0],r8
0x3f4a6c304940   140  4c8bf0         REX.W movq r14,rax
0x3f4a6c304943   143  4c89b568ffffff REX.W movq [rbp-0x98],r14
0x3f4a6c30494a   14a  4183fe6k4       cmpl r14,0x64
0x3f4a6c30494e   14e  0f8373000000   jnc 0x3f4a6c3049c7  <+0x1c7>
0x3f4a6c304954   154  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c30495b   15b  0f86aa020000   jna 0x3f4a6c304c0b  <+0x40b>
0x3f4a6c304961   161  4c89e3         REX.W movq rbx,r12
0x3f4a6c304964   164  498bc0         REX.W movq rax,r8
0x3f4a6c304967   167  498bf3         REX.W movq rsi,r11
0x3f4a6c30496a   16a  e891f8dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c30496f   16f  a801           test al,0x1
0x3f4a6c304971   171  0f85f6020000   jnz 0x3f4a6c304c6d  <+0x46d>
0x3f4a6c304977   177  48c1e820       REX.W shrq rax, 32
0x3f4a6c30497b   17b  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3f4a6c30497f   17f  c5fb2ac0       vcvtlsi2sd xmm0,xmm0,rax
0x3f4a6c304983   183  c5fb104d88     vmovsd xmm1,[rbp-0x78]
0x3f4a6c304988   188  c5f358c0       vaddsd xmm0,xmm1,xmm0
0x3f4a6c30498c   18c  488b9d60ffffff REX.W movq rbx,[rbp-0xa0]
0x3f4a6c304993   193  c5fb114588     vmovsd [rbp-0x78],xmm0
0x3f4a6c304998   198  488b8568ffffff REX.W movq rax,[rbp-0x98]
0x3f4a6c30499f   19f  4c8b8d78ffffff REX.W movq r9,[rbp-0x88]
0x3f4a6c3049a6   1a6  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c3049b0   1b0  4533c0         xorl r8,r8
0x3f4a6c3049b3   1b3  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c3049bd   1bd  ba01000000     movl rdx,0x1
0x3f4a6c3049c2   1c2  e929ffffff     jmp 0x3f4a6c3048f0  <+0xf0>
0x3f4a6c3049c7   1c7  bb01000000     movl rbx,0x1
0x3f4a6c3049cc   1cc  49ba0000000000000000 REX.W movq r10,0x0
0x3f4a6c3049d6   1d6  4c895588       REX.W movq [rbp-0x78],r10
0x3f4a6c3049da   1da  33c0           xorl rax,rax
0x3f4a6c3049dc   1dc  0f1f4000       nop
0x3f4a6c3049e0   1e0  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c3049e7   1e7  0f868a020000   jna 0x3f4a6c304c77  <+0x477>
0x3f4a6c3049ed   1ed  83fb01         cmpl rbx,0x1
0x3f4a6c3049f0   1f0  0f8418000000   jz 0x3f4a6c304a0e  <+0x20e>
0x3f4a6c3049f6   1f6  488bd0         REX.W movq rdx,rax
0x3f4a6c3049f9   1f9  83eaff         subl rdx,0xff
0x3f4a6c3049fc   1fc  0f8013030000   jo 0x3f4a6c304d15  <+0x515>
0x3f4a6c304a02   202  48899d60ffffff REX.W movq [rbp-0xa0],rbx
0x3f4a6c304a09   209  e90d000000     jmp 0x3f4a6c304a1b  <+0x21b>
0x3f4a6c304a0e   20e  4533d2         xorl r10,r10
0x3f4a6c304a11   211  4c899560ffffff REX.W movq [rbp-0xa0],r10
0x3f4a6c304a18   218  488bd0         REX.W movq rdx,rax
0x3f4a6c304a1b   21b  48899568ffffff REX.W movq [rbp-0x98],rdx
0x3f4a6c304a22   222  83fa64         cmpl rdx,0x64
0x3f4a6c304a25   225  0f835d000000   jnc 0x3f4a6c304a88  <+0x288>
0x3f4a6c304a2b   22b  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3f4a6c304a32   232  0f867b020000   jna 0x3f4a6c304cb3  <+0x4b3>
0x3f4a6c304a38   238  48bb7092890801000000 REX.W movq rbx,0x108899270    ;; external reference (Runtime::DateCurrentTime)
0x3f4a6c304a42   242  33c0           xorl rax,rax
0x3f4a6c304a44   244  48bed13bb8122d320000 REX.W movq rsi,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304a4e   24e  e8adf7dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304a53   253  a801           test al,0x1
0x3f4a6c304a55   255  0f857f020000   jnz 0x3f4a6c304cda  <+0x4da>
0x3f4a6c304a5b   25b  48c1e820       REX.W shrq rax, 32
0x3f4a6c304a5f   25f  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3f4a6c304a63   263  c5fb2ac0       vcvtlsi2sd xmm0,xmm0,rax
0x3f4a6c304a67   267  c5fb104d88     vmovsd xmm1,[rbp-0x78]
0x3f4a6c304a6c   26c  c5f358c0       vaddsd xmm0,xmm1,xmm0
0x3f4a6c304a70   270  488b9d60ffffff REX.W movq rbx,[rbp-0xa0]
0x3f4a6c304a77   277  c5fb114588     vmovsd [rbp-0x78],xmm0
0x3f4a6c304a7c   27c  488b8568ffffff REX.W movq rax,[rbp-0x98]
0x3f4a6c304a83   283  e958ffffff     jmp 0x3f4a6c3049e0  <+0x1e0>
0x3f4a6c304a88   288  498b8520ce0400 REX.W movq rax,[r13+0x4ce20]
0x3f4a6c304a8f   28f  488d5810       REX.W leaq rbx,[rax+0x10]
0x3f4a6c304a93   293  c5fb104d88     vmovsd xmm1,[rbp-0x78]
0x3f4a6c304a98   298  49399d28ce0400 REX.W cmpq [r13+0x4ce28],rbx
0x3f4a6c304a9f   29f  0f863f020000   jna 0x3f4a6c304ce4  <+0x4e4>
0x3f4a6c304aa5   2a5  488d5810       REX.W leaq rbx,[rax+0x10]
0x3f4a6c304aa9   2a9  4883c001       REX.W addq rax,0x1
0x3f4a6c304aad   2ad  49899d20ce0400 REX.W movq [r13+0x4ce20],rbx
0x3f4a6c304ab4   2b4  498b5d50       REX.W movq rbx,[r13+0x50]
0x3f4a6c304ab8   2b8  488958ff       REX.W movq [rax-0x1],rbx
0x3f4a6c304abc   2bc  c5fb114807     vmovsd [rax+0x7],xmm1
0x3f4a6c304ac1   2c1  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304acb   2cb  33f6           xorl rsi,rsi
0x3f4a6c304acd   2cd  488b9d78ffffff REX.W movq rbx,[rbp-0x88]
0x3f4a6c304ad4   2d4  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c304ade   2de  4c8bc6         REX.W movq r8,rsi
0x3f4a6c304ae1   2e1  4c8bcb         REX.W movq r9,rbx
0x3f4a6c304ae4   2e4  e9d7fdffff     jmp 0x3f4a6c3048c0  <+0xc0>
0x3f4a6c304ae9   2e9  488bd0         REX.W movq rdx,rax
0x3f4a6c304aec   2ec  488b8570ffffff REX.W movq rax,[rbp-0x90]
0x3f4a6c304af3   2f3  e938fdffff     jmp 0x3f4a6c304830  <+0x30>
0x3f4a6c304af8   2f8  488bc2         REX.W movq rax,rdx
0x3f4a6c304afb   2fb  488be5         REX.W movq rsp,rbp
0x3f4a6c304afe   2fe  5d             pop rbp
0x3f4a6c304aff   2ff  c20800         ret 0x8
0x3f4a6c304b02   302  48895588       REX.W movq [rbp-0x78],rdx
0x3f4a6c304b06   306  48899d68ffffff REX.W movq [rbp-0x98],rbx
0x3f4a6c304b0d   30d  48898578ffffff REX.W movq [rbp-0x88],rax
0x3f4a6c304b14   314  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304b1e   31e  33c0           xorl rax,rax
0x3f4a6c304b20   320  488b7580       REX.W movq rsi,[rbp-0x80]
0x3f4a6c304b24   324  e8d7f6dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304b29   329  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304b33   333  488b5588       REX.W movq rdx,[rbp-0x78]
0x3f4a6c304b37   337  4533c0         xorl r8,r8
0x3f4a6c304b3a   33a  488b9d68ffffff REX.W movq rbx,[rbp-0x98]
0x3f4a6c304b41   341  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c304b4b   34b  488b8578ffffff REX.W movq rax,[rbp-0x88]
0x3f4a6c304b52   352  e9fdfcffff     jmp 0x3f4a6c304854  <+0x54>
0x3f4a6c304b57   357  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304b61   361  33c0           xorl rax,rax
0x3f4a6c304b63   363  488b7580       REX.W movq rsi,[rbp-0x80]
0x3f4a6c304b67   367  e894f6dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304b6c   36c  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304b76   376  4c8b8d78ffffff REX.W movq r9,[rbp-0x88]
0x3f4a6c304b7d   37d  4533c0         xorl r8,r8
0x3f4a6c304b80   380  ba01000000     movl rdx,0x1
0x3f4a6c304b85   385  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c304b8f   38f  e947fdffff     jmp 0x3f4a6c3048db  <+0xdb>
0x3f4a6c304b94   394  48899d68ffffff REX.W movq [rbp-0x98],rbx
0x3f4a6c304b9b   39b  48898560ffffff REX.W movq [rbp-0xa0],rax
0x3f4a6c304ba2   3a2  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304bac   3ac  33c0           xorl rax,rax
0x3f4a6c304bae   3ae  48bed13bb8122d320000 REX.W movq rsi,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304bb8   3b8  e843f6dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304bbd   3bd  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304bc7   3c7  4c8b8d78ffffff REX.W movq r9,[rbp-0x88]
0x3f4a6c304bce   3ce  49bc7092890801000000 REX.W movq r12,0x108899270    ;; external reference (Runtime::DateCurrentTime)
0x3f4a6c304bd8   3d8  4533c0         xorl r8,r8
0x3f4a6c304bdb   3db  49bbd13bb8122d320000 REX.W movq r11,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304be5   3e5  ba01000000     movl rdx,0x1
0x3f4a6c304bea   3ea  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3f4a6c304bee   3ee  488b9d68ffffff REX.W movq rbx,[rbp-0x98]
0x3f4a6c304bf5   3f5  488b8560ffffff REX.W movq rax,[rbp-0xa0]
0x3f4a6c304bfc   3fc  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c304c06   406  e90afdffff     jmp 0x3f4a6c304915  <+0x115>
0x3f4a6c304c0b   40b  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304c15   415  33c0           xorl rax,rax
0x3f4a6c304c17   417  48bed13bb8122d320000 REX.W movq rsi,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304c21   421  e8daf5dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304c26   426  48b90000000001000000 REX.W movq rcx,0x100000000
0x3f4a6c304c30   430  4c8b8d78ffffff REX.W movq r9,[rbp-0x88]
0x3f4a6c304c37   437  49bc7092890801000000 REX.W movq r12,0x108899270    ;; external reference (Runtime::DateCurrentTime)
0x3f4a6c304c41   441  4533c0         xorl r8,r8
0x3f4a6c304c44   444  49bbd13bb8122d320000 REX.W movq r11,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304c4e   44e  ba01000000     movl rdx,0x1
0x3f4a6c304c53   453  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3f4a6c304c57   457  4c8bb568ffffff REX.W movq r14,[rbp-0x98]
0x3f4a6c304c5e   45e  48bf0000000010270000 REX.W movq rdi,0x271000000000
0x3f4a6c304c68   468  e9f4fcffff     jmp 0x3f4a6c304961  <+0x161>
0x3f4a6c304c6d   46d  c5fb104007     vmovsd xmm0,[rax+0x7]
0x3f4a6c304c72   472  e90cfdffff     jmp 0x3f4a6c304983  <+0x183>
0x3f4a6c304c77   477  48899d68ffffff REX.W movq [rbp-0x98],rbx
0x3f4a6c304c7e   47e  48898560ffffff REX.W movq [rbp-0xa0],rax
0x3f4a6c304c85   485  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304c8f   48f  33c0           xorl rax,rax
0x3f4a6c304c91   491  48bed13bb8122d320000 REX.W movq rsi,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304c9b   49b  e860f5dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304ca0   4a0  488b8560ffffff REX.W movq rax,[rbp-0xa0]
0x3f4a6c304ca7   4a7  488b9d68ffffff REX.W movq rbx,[rbp-0x98]
0x3f4a6c304cae   4ae  e93afdffff     jmp 0x3f4a6c3049ed  <+0x1ed>
0x3f4a6c304cb3   4b3  48bb20b28e0801000000 REX.W movq rbx,0x1088eb220    ;; external reference (Runtime::StackGuard)
0x3f4a6c304cbd   4bd  33c0           xorl rax,rax
0x3f4a6c304cbf   4bf  48bed13bb8122d320000 REX.W movq rsi,0x322d12b83bd1    ;; object: 0x322d12b83bd1 <FixedArray[267]>
0x3f4a6c304cc9   4c9  e832f5dfff     call 0x3f4a6c104200     ;; code: STUB, CEntryStub, minor: 8
0x3f4a6c304cce   4ce  488b9568ffffff REX.W movq rdx,[rbp-0x98]
0x3f4a6c304cd5   4d5  e95efdffff     jmp 0x3f4a6c304a38  <+0x238>
0x3f4a6c304cda   4da  c5fb104007     vmovsd xmm0,[rax+0x7]
0x3f4a6c304cdf   4df  e983fdffff     jmp 0x3f4a6c304a67  <+0x267>
0x3f4a6c304ce4   4e4  ba10000000     movl rdx,0x10
0x3f4a6c304ce9   4e9  e8f286efff     call 0x3f4a6c1fd3e0  (AllocateInNewSpace)    ;; code: BUILTIN
0x3f4a6c304cee   4ee  4883e801       REX.W subq rax,0x1
0x3f4a6c304cf2   4f2  c5fb104d88     vmovsd xmm1,[rbp-0x78]
0x3f4a6c304cf7   4f7  e9a9fdffff     jmp 0x3f4a6c304aa5  <+0x2a5>
0x3f4a6c304cfc   4fc  e8fff2c7ff     call 0x3f4a6bf84000     ;; deoptimization bailout 0
0x3f4a6c304d01   501  e804f3c7ff     call 0x3f4a6bf8400a     ;; deoptimization bailout 1
0x3f4a6c304d06   506  e809f3c7ff     call 0x3f4a6bf84014     ;; deoptimization bailout 2
0x3f4a6c304d0b   50b  e80ef3c7ff     call 0x3f4a6bf8401e     ;; deoptimization bailout 3
0x3f4a6c304d10   510  e813f3c7ff     call 0x3f4a6bf84028     ;; deoptimization bailout 4
0x3f4a6c304d15   515  e82cf3c7ff     call 0x3f4a6bf84046     ;; deoptimization bailout 7
0x3f4a6c304d1a   51a  90             nop
0x3f4a6c304d1b   51b  90             nop
0x3f4a6c304d1c   51c  90             nop
0x3f4a6c304d1d   51d  90             nop
0x3f4a6c304d1e   51e  90             nop
0x3f4a6c304d1f   51f  90             nop
0x3f4a6c304d20   520  90             nop
0x3f4a6c304d21   521  90             nop
0x3f4a6c304d22   522  90             nop
0x3f4a6c304d23   523  90             nop
0x3f4a6c304d24   524  90             nop
0x3f4a6c304d25   525  90             nop
0x3f4a6c304d26   526  90             nop
0x3f4a6c304d27   527  90             nop


TWO LOOP

optimization_id = 2
source_position = 0
kind = OPTIMIZED_FUNCTION
stack_slots = 27
compiler = turbofan
Instructions (size = 1456)
0x3b9775a04800     0  55             push rbp
0x3b9775a04801     1  4889e5         REX.W movq rbp,rsp
0x3b9775a04804     4  56             push rsi
0x3b9775a04805     5  57             push rdi
0x3b9775a04806     6  48ba00000000c2000000 REX.W movq rdx,0xc200000000
0x3b9775a04810    10  e84bf9dfff     call 0x3b9775804160  (Abort)    ;; code: BUILTIN
0x3b9775a04815    15  cc             int3l
0x3b9775a04816    16  4883ec30       REX.W subq rsp,0x30
0x3b9775a0481a    1a  4889b558ffffff REX.W movq [rbp-0xa8],rsi
0x3b9775a04821    21  488b45a8       REX.W movq rax,[rbp-0x58]
0x3b9775a04825    25  488b5db0       REX.W movq rbx,[rbp-0x50]
0x3b9775a04829    29  0f1f8000000000 nop
0x3b9775a04830    30  4533c0         xorl r8,r8
0x3b9775a04833    33  bf01000000     movl rdi,0x1
0x3b9775a04838    38  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a0483c    3c  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04846    46  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a04850    50  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a04857    57  0f869f020000   jna 0x3b9775a04afc  <+0x2fc>
0x3b9775a0485d    5d  a801           test al,0x1
0x3b9775a0485f    5f  0f85ab040000   jnz 0x3b9775a04d10  <+0x510>
0x3b9775a04865    65  483bd0         REX.W cmpq rdx,rax
0x3b9775a04868    68  0f842c000000   jz 0x3b9775a0489a  <+0x9a>
0x3b9775a0486e    6e  f6c301         testb rbx,0x1
0x3b9775a04871    71  0f859e040000   jnz 0x3b9775a04d15  <+0x515>
0x3b9775a04877    77  488bf3         REX.W movq rsi,rbx
0x3b9775a0487a    7a  48c1ee20       REX.W shrq rsi, 32
0x3b9775a0487e    7e  83eeff         subl rsi,0xff
0x3b9775a04881    81  0f8093040000   jo 0x3b9775a04d1a  <+0x51a>
0x3b9775a04887    87  48c1e620       REX.W shlq rsi, 32
0x3b9775a0488b    8b  48898548ffffff REX.W movq [rbp-0xb8],rax
0x3b9775a04892    92  4c8bce         REX.W movq r9,rsi
0x3b9775a04895    95  e90c000000     jmp 0x3b9775a048a6  <+0xa6>
0x3b9775a0489a    9a  33c0           xorl rax,rax
0x3b9775a0489c    9c  4c8bcb         REX.W movq r9,rbx
0x3b9775a0489f    9f  48898548ffffff REX.W movq [rbp-0xb8],rax
0x3b9775a048a6    a6  41f6c101       testb r9,0x1
0x3b9775a048aa    aa  0f856f040000   jnz 0x3b9775a04d1f  <+0x51f>
0x3b9775a048b0    b0  4c898d50ffffff REX.W movq [rbp-0xb0],r9
0x3b9775a048b7    b7  4c3bc9         REX.W cmpq r9,rcx
0x3b9775a048ba    ba  0f8d57010000   jge 0x3b9775a04a17  <+0x217>
0x3b9775a048c0    c0  488bc7         REX.W movq rax,rdi
0x3b9775a048c3    c3  6666660f1f840000000000 nop
0x3b9775a048ce    ce  6690           nop
0x3b9775a048d0    d0  83f801         cmpl rax,0x1
0x3b9775a048d3    d3  0f8532010000   jnz 0x3b9775a04a0b  <+0x20b>
0x3b9775a048d9    d9  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a048e0    e0  0f866f020000   jna 0x3b9775a04b55  <+0x355>
0x3b9775a048e6    e6  488bdf         REX.W movq rbx,rdi
0x3b9775a048e9    e9  c5fb118560ffffff vmovsd [rbp-0xa0],xmm0
0x3b9775a048f1    f1  498bc0         REX.W movq rax,r8
0x3b9775a048f4    f4  6666660f1f840000000000 nop
0x3b9775a048ff    ff  90             nop
0x3b9775a04900   100  49bbd13b485ef92f0000 REX.W movq r11,0x2ff95e483bd1    ;; object: 0x2ff95e483bd1 <FixedArray[267]>
0x3b9775a0490a   10a  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a04911   111  0f8682020000   jna 0x3b9775a04b99  <+0x399>
0x3b9775a04917   117  83fb01         cmpl rbx,0x1
0x3b9775a0491a   11a  0f841b000000   jz 0x3b9775a0493b  <+0x13b>
0x3b9775a04920   120  488bf0         REX.W movq rsi,rax
0x3b9775a04923   123  83eeff         subl rsi,0xff
0x3b9775a04926   126  0f80f8030000   jo 0x3b9775a04d24  <+0x524>
0x3b9775a0492c   12c  48899d38ffffff REX.W movq [rbp-0xc8],rbx
0x3b9775a04933   133  4c8be6         REX.W movq r12,rsi
0x3b9775a04936   136  e90a000000     jmp 0x3b9775a04945  <+0x145>
0x3b9775a0493b   13b  4c898538ffffff REX.W movq [rbp-0xc8],r8
0x3b9775a04942   142  4c8be0         REX.W movq r12,rax
0x3b9775a04945   145  4c89a540ffffff REX.W movq [rbp-0xc0],r12
0x3b9775a0494c   14c  4183fc64       cmpl r12,0x64
0x3b9775a04950   150  0f8384000000   jnc 0x3b9775a049da  <+0x1da>
0x3b9775a04956   156  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a0495d   15d  0f86a3020000   jna 0x3b9775a04c06  <+0x406>
0x3b9775a04963   163  48bb7032860f01000000 REX.W movq rbx,0x10f863270    ;; external reference (Runtime::DateCurrentTime)
0x3b9775a0496d   16d  498bc0         REX.W movq rax,r8
0x3b9775a04970   170  498bf3         REX.W movq rsi,r11
0x3b9775a04973   173  e888f8dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04978   178  a801           test al,0x1
0x3b9775a0497a   17a  0f85de020000   jnz 0x3b9775a04c5e  <+0x45e>
0x3b9775a04980   180  48c1e820       REX.W shrq rax, 32
0x3b9775a04984   184  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04988   188  c5fb2ac0       vcvtlsi2sd xmm0,xmm0,rax
0x3b9775a0498c   18c  c5fb108d60ffffff vmovsd xmm1,[rbp-0xa0]
0x3b9775a04994   194  c5f358c0       vaddsd xmm0,xmm1,xmm0
0x3b9775a04998   198  488b9d38ffffff REX.W movq rbx,[rbp-0xc8]
0x3b9775a0499f   19f  c5fb118560ffffff vmovsd [rbp-0xa0],xmm0
0x3b9775a049a7   1a7  488b8540ffffff REX.W movq rax,[rbp-0xc0]
0x3b9775a049ae   1ae  4533c0         xorl r8,r8
0x3b9775a049b1   1b1  bf01000000     movl rdi,0x1
0x3b9775a049b6   1b6  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a049ba   1ba  4c8b8d50ffffff REX.W movq r9,[rbp-0xb0]
0x3b9775a049c1   1c1  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a049cb   1cb  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a049d5   1d5  e926ffffff     jmp 0x3b9775a04900  <+0x100>
0x3b9775a049da   1da  33c0           xorl rax,rax
0x3b9775a049dc   1dc  488b9d50ffffff REX.W movq rbx,[rbp-0xb0]
0x3b9775a049e3   1e3  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a049ed   1ed  bf01000000     movl rdi,0x1
0x3b9775a049f2   1f2  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a049f6   1f6  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04a00   200  4c8bc0         REX.W movq r8,rax
0x3b9775a04a03   203  4c8bcb         REX.W movq r9,rbx
0x3b9775a04a06   206  e9c5feffff     jmp 0x3b9775a048d0  <+0xd0>
0x3b9775a04a0b   20b  488b8548ffffff REX.W movq rax,[rbp-0xb8]
0x3b9775a04a12   212  e919feffff     jmp 0x3b9775a04830  <+0x30>
0x3b9775a04a17   217  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04a1b   21b  498b55a0       REX.W movq rdx,[r13-0x60]
0x3b9775a04a1f   21f  b801000000     movl rax,0x1
0x3b9775a04a24   224  6666660f1f840000000000 nop
0x3b9775a04a2f   22f  90             nop

0x3b9775a04a30   230  498b5da0       REX.W movq rbx,[r13-0x60]
0x3b9775a04a34   234  48b919fb4a5ef92f0000 REX.W movq rcx,0x2ff95e4afb19    ;; object: 0x2ff95e4afb19 <JSFunction heavy (sfi = 0x2ff95e4af691)>
0x3b9775a04a3e   23e  49ba000000000088c340 REX.W movq r10,0x40c3880000000000
0x3b9775a04a48   248  c4c1f96eca     vmovq xmm1,r10
0x3b9775a04a4d   24d  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a04a54   254  0f860e020000   jna 0x3b9775a04c68  <+0x468>
0x3b9775a04a5a   25a  83f801         cmpl rax,0x1
0x3b9775a04a5d   25d  0f841f000000   jz 0x3b9775a04a82  <+0x282>
0x3b9775a04a63   263  49ba000000000000f0bf REX.W movq r10,0xbff0000000000000
0x3b9775a04a6d   26d  c4c1f96ed2     vmovq xmm2,r10
0x3b9775a04a72   272  c5fb5cc2       vsubsd xmm0,xmm0,xmm2
0x3b9775a04a76   276  48898548ffffff REX.W movq [rbp-0xb8],rax
0x3b9775a04a7d   27d  e90a000000     jmp 0x3b9775a04a8c  <+0x28c>
0x3b9775a04a82   282  4533d2         xorl r10,r10
0x3b9775a04a85   285  4c899548ffffff REX.W movq [rbp-0xb8],r10
0x3b9775a04a8c   28c  c5fb118550ffffff vmovsd [rbp-0xb0],xmm0
0x3b9775a04a94   294  c5f92ec8       vucomisd xmm1,xmm0
0x3b9775a04a98   298  0f8654000000   jna 0x3b9775a04af2  <+0x2f2>
0x3b9775a04a9e   29e  493ba5900c0000 REX.W cmpq rsp,[r13+0xc90]
0x3b9775a04aa5   2a5  0f8623020000   jna 0x3b9775a04cce  <+0x4ce>
0x3b9775a04aab   2ab  488b7127       REX.W movq rsi,[rcx+0x27]
0x3b9775a04aaf   2af  488b4627       REX.W movq rax,[rsi+0x27]
0x3b9775a04ab3   2b3  488b502f       REX.W movq rdx,[rax+0x2f]
0x3b9775a04ab7   2b7  ff702f         push [rax+0x2f]
0x3b9775a04aba   2ba  488bf9         REX.W movq rdi,rcx
0x3b9775a04abd   2bd  488bd3         REX.W movq rdx,rbx
0x3b9775a04ac0   2c0  33c0           xorl rax,rax
0x3b9775a04ac2   2c2  483b7727       REX.W cmpq rsi,[rdi+0x27]
0x3b9775a04ac6   2c6  7410           jz 0x3b9775a04ad8  <+0x2d8>
0x3b9775a04ac8   2c8  48ba00000000bf000000 REX.W movq rdx,0xbf00000000
0x3b9775a04ad2   2d2  e889f6dfff     call 0x3b9775804160  (Abort)    ;; code: BUILTIN
0x3b9775a04ad7   2d7  cc             int3l
0x3b9775a04ad8   2d8  ff5737         call [rdi+0x37]
0x3b9775a04adb   2db  488bd0         REX.W movq rdx,rax
0x3b9775a04ade   2de  488b8548ffffff REX.W movq rax,[rbp-0xb8]
0x3b9775a04ae5   2e5  c5fb108550ffffff vmovsd xmm0,[rbp-0xb0]
0x3b9775a04aed   2ed  e93effffff     jmp 0x3b9775a04a30  <+0x230>
0x3b9775a04af2   2f2  488bc2         REX.W movq rax,rdx
0x3b9775a04af5   2f5  488be5         REX.W movq rsp,rbp
0x3b9775a04af8   2f8  5d             pop rbp
0x3b9775a04af9   2f9  c20800         ret 0x8
0x3b9775a04afc   2fc  48899d60ffffff REX.W movq [rbp-0xa0],rbx
0x3b9775a04b03   303  48898550ffffff REX.W movq [rbp-0xb0],rax
0x3b9775a04b0a   30a  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04b14   314  33c0           xorl rax,rax
0x3b9775a04b16   316  488bb558ffffff REX.W movq rsi,[rbp-0xa8]
0x3b9775a04b1d   31d  e8def6dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04b22   322  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a04b2c   32c  4533c0         xorl r8,r8
0x3b9775a04b2f   32f  bf01000000     movl rdi,0x1
0x3b9775a04b34   334  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04b38   338  488b9d60ffffff REX.W movq rbx,[rbp-0xa0]
0x3b9775a04b3f   33f  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04b49   349  488b8550ffffff REX.W movq rax,[rbp-0xb0]
0x3b9775a04b50   350  e908fdffff     jmp 0x3b9775a0485d  <+0x5d>
0x3b9775a04b55   355  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04b5f   35f  33c0           xorl rax,rax
0x3b9775a04b61   361  488bb558ffffff REX.W movq rsi,[rbp-0xa8]
0x3b9775a04b68   368  e893f6dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04b6d   36d  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a04b77   377  4533c0         xorl r8,r8
0x3b9775a04b7a   37a  bf01000000     movl rdi,0x1
0x3b9775a04b7f   37f  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04b83   383  4c8b8d50ffffff REX.W movq r9,[rbp-0xb0]
0x3b9775a04b8a   38a  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04b94   394  e94dfdffff     jmp 0x3b9775a048e6  <+0xe6>
0x3b9775a04b99   399  48899d40ffffff REX.W movq [rbp-0xc0],rbx
0x3b9775a04ba0   3a0  48898538ffffff REX.W movq [rbp-0xc8],rax
0x3b9775a04ba7   3a7  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04bb1   3b1  33c0           xorl rax,rax
0x3b9775a04bb3   3b3  48bed13b485ef92f0000 REX.W movq rsi,0x2ff95e483bd1    ;; object: 0x2ff95e483bd1 <FixedArray[267]>
0x3b9775a04bbd   3bd  e83ef6dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04bc2   3c2  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a04bcc   3cc  4533c0         xorl r8,r8
0x3b9775a04bcf   3cf  bf01000000     movl rdi,0x1
0x3b9775a04bd4   3d4  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04bd8   3d8  4c8b8d50ffffff REX.W movq r9,[rbp-0xb0]
0x3b9775a04bdf   3df  49bbd13b485ef92f0000 REX.W movq r11,0x2ff95e483bd1    ;; object: 0x2ff95e483bd1 <FixedArray[267]>
0x3b9775a04be9   3e9  488b9d40ffffff REX.W movq rbx,[rbp-0xc0]
0x3b9775a04bf0   3f0  488b8538ffffff REX.W movq rax,[rbp-0xc8]
0x3b9775a04bf7   3f7  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04c01   401  e911fdffff     jmp 0x3b9775a04917  <+0x117>
0x3b9775a04c06   406  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04c10   410  33c0           xorl rax,rax
0x3b9775a04c12   412  48bed13b485ef92f0000 REX.W movq rsi,0x2ff95e483bd1    ;; object: 0x2ff95e483bd1 <FixedArray[267]>
0x3b9775a04c1c   41c  e8dff5dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04c21   421  48ba0000000001000000 REX.W movq rdx,0x100000000
0x3b9775a04c2b   42b  4533c0         xorl r8,r8
0x3b9775a04c2e   42e  bf01000000     movl rdi,0x1
0x3b9775a04c33   433  c5f957c0       vxorpd xmm0,xmm0,xmm0
0x3b9775a04c37   437  4c8b8d50ffffff REX.W movq r9,[rbp-0xb0]
0x3b9775a04c3e   43e  4c8ba540ffffff REX.W movq r12,[rbp-0xc0]
0x3b9775a04c45   445  49bbd13b485ef92f0000 REX.W movq r11,0x2ff95e483bd1    ;; object: 0x2ff95e483bd1 <FixedArray[267]>
0x3b9775a04c4f   44f  48b90000000010270000 REX.W movq rcx,0x271000000000
0x3b9775a04c59   459  e905fdffff     jmp 0x3b9775a04963  <+0x163>
0x3b9775a04c5e   45e  c5fb104007     vmovsd xmm0,[rax+0x7]
0x3b9775a04c63   463  e924fdffff     jmp 0x3b9775a0498c  <+0x18c>
0x3b9775a04c68   468  48899560ffffff REX.W movq [rbp-0xa0],rdx
0x3b9775a04c6f   46f  48898550ffffff REX.W movq [rbp-0xb0],rax
0x3b9775a04c76   476  c5fb118548ffffff vmovsd [rbp-0xb8],xmm0
0x3b9775a04c7e   47e  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04c88   488  33c0           xorl rax,rax
0x3b9775a04c8a   48a  488bb558ffffff REX.W movq rsi,[rbp-0xa8]
0x3b9775a04c91   491  e86af5dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04c96   496  c5fb108548ffffff vmovsd xmm0,[rbp-0xb8]
0x3b9775a04c9e   49e  488b9560ffffff REX.W movq rdx,[rbp-0xa0]
0x3b9775a04ca5   4a5  48b919fb4a5ef92f0000 REX.W movq rcx,0x2ff95e4afb19    ;; object: 0x2ff95e4afb19 <JSFunction heavy (sfi = 0x2ff95e4af691)>
0x3b9775a04caf   4af  498b5da0       REX.W movq rbx,[r13-0x60]
0x3b9775a04cb3   4b3  49ba000000000088c340 REX.W movq r10,0x40c3880000000000
0x3b9775a04cbd   4bd  c4c1f96eca     vmovq xmm1,r10
0x3b9775a04cc2   4c2  488b8550ffffff REX.W movq rax,[rbp-0xb0]
0x3b9775a04cc9   4c9  e98cfdffff     jmp 0x3b9775a04a5a  <+0x25a>
0x3b9775a04cce   4ce  48bb20528b0f01000000 REX.W movq rbx,0x10f8b5220    ;; external reference (Runtime::StackGuard)
0x3b9775a04cd8   4d8  33c0           xorl rax,rax
0x3b9775a04cda   4da  488bb558ffffff REX.W movq rsi,[rbp-0xa8]
0x3b9775a04ce1   4e1  e81af5dfff     call 0x3b9775804200     ;; code: STUB, CEntryStub, minor: 8
0x3b9775a04ce6   4e6  49ba000000000088c340 REX.W movq r10,0x40c3880000000000
0x3b9775a04cf0   4f0  c4c1f96eca     vmovq xmm1,r10
0x3b9775a04cf5   4f5  48b919fb4a5ef92f0000 REX.W movq rcx,0x2ff95e4afb19    ;; object: 0x2ff95e4afb19 <JSFunction heavy (sfi = 0x2ff95e4af691)>
0x3b9775a04cff   4ff  c5fb108550ffffff vmovsd xmm0,[rbp-0xb0]
0x3b9775a04d07   507  498b5da0       REX.W movq rbx,[r13-0x60]
0x3b9775a04d0b   50b  e99bfdffff     jmp 0x3b9775a04aab  <+0x2ab>
0x3b9775a04d10   510  e8ebf2c7ff     call 0x3b9775684000     ;; deoptimization bailout 0
0x3b9775a04d15   515  e8f0f2c7ff     call 0x3b977568400a     ;; deoptimization bailout 1
0x3b9775a04d1a   51a  e8f5f2c7ff     call 0x3b9775684014     ;; deoptimization bailout 2
0x3b9775a04d1f   51f  e8faf2c7ff     call 0x3b977568401e     ;; deoptimization bailout 3
0x3b9775a04d24   524  e8fff2c7ff     call 0x3b9775684028     ;; deoptimization bailout 4
0x3b9775a04d29   529  90             nop
0x3b9775a04d2a   52a  90             nop
0x3b9775a04d2b   52b  90             nop
0x3b9775a04d2c   52c  90             nop
0x3b9775a04d2d   52d  90             nop
0x3b9775a04d2e   52e  90             nop
0x3b9775a04d2f   52f  90             nop
0x3b9775a04d30   530  90             nop
0x3b9775a04d31   531  90             nop
0x3b9775a04d32   532  90             nop
0x3b9775a04d33   533  90             nop
0x3b9775a04d34   534  90             nop
0x3b9775a04d35   535  90             nop
0x3b9775a04d36   536  6690           nop

And I found that one loop version optimized code inlining two function call, tha's cause low performance?
So anyone know about this curios thing?

Thank you.

Rong Jie

unread,
Apr 12, 2017, 6:02:03 AM4/12/17
to v8-users
I think this might be due to loop fission optimization (https://en.wikipedia.org/wiki/Loop_fission), even GCC (C++ compiler) sometimes does that when appropriate.

Jakob Kummerow

unread,
Apr 12, 2017, 6:39:22 AM4/12/17
to v8-users
I cannot reproduce a difference here; both versions appear to have the same speed. (Of course there's some noise in the data, as always; so if you do just a single run of each version, then either one could get lucky or unlucky.)

On Wed, Apr 12, 2017 at 12:02 PM, Rong Jie <looro...@gmail.com> wrote:
I think this might be due to loop fission optimization (https://en.wikipedia.org/wiki/Loop_fission), even GCC (C++ compiler) sometimes does that when appropriate.

V8 doesn't do loop fission.
 

--
--
v8-users mailing list
v8-u...@googlegroups.com
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups "v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages