Yes, I run the function only once. In fact, the module is JIT-compiled and 
the function is called once.

I did some more experimenting an the problem is related either to 
`--predictable` or `--no-liftoff`. Here are the times I get with different 
configurations:

   - `--predictable` : 13 ms
   - `--no-liftoff` : 11 ms 
   - `--predictable --no-liftoff` : 11 ms
   - default (no additional flags) : 2158 ms

The disassembly in default configuration is

Liftoff:
0x3835c41b52c0     0  55             push rbp
0x3835c41b52c1     1  4889e5         REX.W movq rbp,rsp
0x3835c41b52c4     4  6a0a           push 0xa
0x3835c41b52c6     6  4881ec28000000 REX.W subq rsp,0x28
0x3835c41b52cd     d  488975f0       REX.W movq [rbp-0x10],rsi
0x3835c41b52d1    11  48c745dc00000000 REX.W movq [rbp-0x24],0x0
0x3835c41b52d9    19  48c745e400000000 REX.W movq [rbp-0x1c],0x0
0x3835c41b52e1    21  488b4df0       REX.W movq rcx,[rbp-0x10]
0x3835c41b52e5    25  488b4923       REX.W movq rcx,[rcx+0x23]
0x3835c41b52e9    29  483b21         REX.W cmpq rsp,[rcx]
0x3835c41b52ec    2c  0f86bb000000   jna 0x3835c41b53ad  <+0xed>
0x3835c41b52f2    32  488b4df0       REX.W movq rcx,[rbp-0x10]
0x3835c41b52f6    36  488b494f       REX.W movq rcx,[rcx+0x4f]
0x3835c41b52fa    3a  8b11           movl rdx,[rcx]
0x3835c41b52fc    3c  488b4df0       REX.W movq rcx,[rbp-0x10]
0x3835c41b5300    40  488b494f       REX.W movq rcx,[rcx+0x4f]
0x3835c41b5304    44  8b5904         movl rbx,[rcx+0x4]
0x3835c41b5307    47  8945ec         movl [rbp-0x14],rax
0x3835c41b530a    4a  8955e8         movl [rbp-0x18],rdx
0x3835c41b530d    4d  895de4         movl [rbp-0x1c],rbx
0x3835c41b5310    50  488b45f0       REX.W movq rax,[rbp-0x10]
0x3835c41b5314    54  488b4023       REX.W movq rax,[rax+0x23]
0x3835c41b5318    58  483b20         REX.W cmpq rsp,[rax]
0x3835c41b531b    5b  0f8698000000   jna 0x3835c41b53b9  <+0xf9>
0x3835c41b5321    61  488b45f0       REX.W movq rax,[rbp-0x10]
0x3835c41b5325    65  488b404f       REX.W movq rax,[rax+0x4f]
0x3835c41b5329    69  8b480c         movl rcx,[rax+0xc]
0x3835c41b532c    6c  8b45dc         movl rax,[rbp-0x24]
0x3835c41b532f    6f  ba2c000000     movl rdx,0x2c
0x3835c41b5334    74  0fafc2         imull rax,rdx
0x3835c41b5337    77  03c8           addl rcx,rax
0x3835c41b5339    79  488b55f0       REX.W movq rdx,[rbp-0x10]
0x3835c41b533d    7d  488b5213       REX.W movq rdx,[rdx+0x13]
0x3835c41b5341    81  b803000000     movl rax,0x3
0x3835c41b5346    86  48f7d8         REX.W negq rax
0x3835c41b5349    89  4803c2         REX.W addq rax,rdx

TurboFan:
0x3835c41b5357    97  488b45f0       REX.W movq rax,[rbp-0x10]
0x3835c41b535b    9b  488b400b       REX.W movq rax,[rax+0xb]
0x3835c41b53e0     0  55             push rbp0x3835c41b535f    9f  8b1408  
       movl rdx,[rax+rcx*1]
0x3835c41b5362    a2  33c0           xorl rax,rax

0x3835c41b5364    a4  3bd0           cmpl rdx,rax
0x3835c41b5366    a6  0f9cc2         setll dl
0x3835c41b53e1     1  4889e5         REX.W movq rbp,rsp
0x3835c41b5369    a9  0fb6d2         movzxbl rdx,rdx
0x3835c41b53e4     4  6a0a           push 0xa
0x3835c41b53e6     6  56             push rsi
0x3835c41b536c    ac  85d2           testl rdx,rdx0x3835c41b53e7     7  
4883ec28       REX.W subq rsp,0x28

0x3835c41b536e    ae  0f840e000000   jz 0x3835c41b5382  <+0xc2>
0x3835c41b53eb     b  488b5e4f       REX.W movq rbx,[rsi+0x4f]
0x3835c41b5374    b4  8b45e0         movl rax,[rbp-0x20]
0x3835c41b53ef     f  488b560b       REX.W movq rdx,[rsi+0xb]
0x3835c41b53f3    13  488b4e13       REX.W movq rcx,[rsi+0x13]
0x3835c41b53f7    17  4883e903       REX.W subq rcx,0x3
0x3835c41b5377    b7  83c001         addl rax,0x10x3835c41b53fb    1b  
33ff           xorl rdi,rdi
0x3835c41b53fd    1d  4c8bc7         REX.W movq r8,rdi
0x3835c41b537a    ba  8945e0         movl [rbp-0x20],rax
0x3835c41b537d    bd  e900000000     jmp 0x3835c41b5382  <+0xc2>
0x3835c41b5382    c2  8b45dc         movl rax,[rbp-0x24]
0x3835c41b5385    c5  83c001         addl rax,0x1
0x3835c41b5388    c8  488b4df0       REX.W movq rcx,[rbp-0x10]

0x3835c41b5400    20  4c8b4e23       REX.W movq r9,[rsi+0x23]
0x3835c41b538c    cc  488b494f       REX.W movq rcx,[rcx+0x4f]
0x3835c41b5404    24  493b21         REX.W cmpq rsp,[r9]
0x3835c41b5390    d0  8b5108         movl rdx,[rcx+0x8]
0x3835c41b5407    27  0f8633000000   jna 0x3835c41b5440  <+0x60>
0x3835c41b5393    d3  3bc2           cmpl rax,rdx
0x3835c41b540d    2d  446bcf2c       imull r9,rdi,0x2c
0x3835c41b5395    d5  0f8308000000   jnc 0x3835c41b53a3  <+0xe3>
0x3835c41b5411    31  448b5b0c       movl r11,[rbx+0xc]
0x3835c41b539b    db  8945dc         movl [rbp-0x24],rax
0x3835c41b539e    de  e96dffffff     jmp 0x3835c41b5310  <+0x50>
0x3835c41b5415    35  4503cb         addl r9,r11
0x3835c41b5418    38  4c3bc9         REX.W cmpq r9,rcx0x3835c41b53a3    e3  
8b4de0         movl rcx,[rbp-0x20]

0x3835c41b53a6    e6  8bc1           movl rax,rcx
0x3835c41b541b    3b  0f8352000000   jnc 0x3835c41b5473  
<+0x93>0x3835c41b53a8    e8  488be5         REX.W movq rsp,rbp
0x3835c41b53ab    eb  5d             pop rbp

0x3835c41b53ac    ec  c3             retl
0x3835c41b5421    41  42833c0a00     cmpl [rdx+r9*1],0x0
0x3835c41b53ad    ed  50             push rax0x3835c41b5426    46  
0f8d04000000   jge 0x3835c41b5430  <+0x50>

0x3835c41b53ae    ee  e80dfeffff     call 0x3835c41b51c0     ;; wasm stub: 
WasmStackGuard
0x3835c41b53b3    f3  58             pop rax
0x3835c41b53b4    f4  e939ffffff     jmp 0x3835c41b52f2  <+0x32>
0x3835c41b542c    4c  4183c001       addl r8,0x1
0x3835c41b53b9    f9  e802feffff     call 0x3835c41b51c0     ;; wasm stub: 
WasmStackGuard
0x3835c41b5430    50  83c701         addl rdi,0x10x3835c41b53be    fe  
e95effffff     jmp 0x3835c41b5321  <+0x61>
0x3835c41b53c3   103  e888fcffff     call 0x3835c41b5050     ;; wasm stub: 
ThrowWasmTrapMemOutOfBounds

The disassembly in `--predictable` configuration is

Liftoff:
0x1bef76d8f2c0     0  55             push rbp
0x1bef76d8f2c1     1  4889e5         REX.W movq rbp,rsp
0x1bef76d8f2c4     4  6a0a           push 0xa
0x1bef76d8f2c6     6  4881ec28000000 REX.W subq rsp,0x28
0x1bef76d8f2cd     d  488975f0       REX.W movq [rbp-0x10],rsi
0x1bef76d8f2d1    11  48c745dc00000000 REX.W movq [rbp-0x24],0x0
0x1bef76d8f2d9    19  48c745e400000000 REX.W movq [rbp-0x1c],0x0
0x1bef76d8f2e1    21  488b4df0       REX.W movq rcx,[rbp-0x10]
0x1bef76d8f2e5    25  488b4923       REX.W movq rcx,[rcx+0x23]
0x1bef76d8f2e9    29  483b21         REX.W cmpq rsp,[rcx]
0x1bef76d8f2ec    2c  0f86bb000000   jna 0x1bef76d8f3ad  <+0xed>
0x1bef76d8f2f2    32  488b4df0       REX.W movq rcx,[rbp-0x10]
0x1bef76d8f2f6    36  488b494f       REX.W movq rcx,[rcx+0x4f]
0x1bef76d8f2fa    3a  8b11           movl rdx,[rcx]
0x1bef76d8f2fc    3c  488b4df0       REX.W movq rcx,[rbp-0x10]
0x1bef76d8f300    40  488b494f       REX.W movq rcx,[rcx+0x4f]
0x1bef76d8f304    44  8b5904         movl rbx,[rcx+0x4]
0x1bef76d8f307    47  8945ec         movl [rbp-0x14],rax
0x1bef76d8f30a    4a  8955e8         movl [rbp-0x18],rdx
0x1bef76d8f30d    4d  895de4         movl [rbp-0x1c],rbx
0x1bef76d8f310    50  488b45f0       REX.W movq rax,[rbp-0x10]
0x1bef76d8f314    54  488b4023       REX.W movq rax,[rax+0x23]
0x1bef76d8f318    58  483b20         REX.W cmpq rsp,[rax]
0x1bef76d8f31b    5b  0f8698000000   jna 0x1bef76d8f3b9  <+0xf9>
0x1bef76d8f321    61  488b45f0       REX.W movq rax,[rbp-0x10]
0x1bef76d8f325    65  488b404f       REX.W movq rax,[rax+0x4f]
0x1bef76d8f329    69  8b480c         movl rcx,[rax+0xc]
0x1bef76d8f32c    6c  8b45dc         movl rax,[rbp-0x24]
0x1bef76d8f32f    6f  ba2c000000     movl rdx,0x2c
0x1bef76d8f334    74  0fafc2         imull rax,rdx
0x1bef76d8f337    77  03c8           addl rcx,rax
0x1bef76d8f339    79  488b55f0       REX.W movq rdx,[rbp-0x10]
0x1bef76d8f33d    7d  488b5213       REX.W movq rdx,[rdx+0x13]
0x1bef76d8f341    81  b803000000     movl rax,0x3
0x1bef76d8f346    86  48f7d8         REX.W negq rax
0x1bef76d8f349    89  4803c2         REX.W addq rax,rdx
0x1bef76d8f34c    8c  8bc9           movl rcx,rcx
0x1bef76d8f34e    8e  483bc8         REX.W cmpq rcx,rax
0x1bef76d8f351    91  0f836c000000   jnc 0x1bef76d8f3c3  <+0x103>
0x1bef76d8f357    97  488b45f0       REX.W movq rax,[rbp-0x10]
0x1bef76d8f35b    9b  488b400b       REX.W movq rax,[rax+0xb]
0x1bef76d8f35f    9f  8b1408         movl rdx,[rax+rcx*1]
0x1bef76d8f362    a2  33c0           xorl rax,rax
0x1bef76d8f364    a4  3bd0           cmpl rdx,rax
0x1bef76d8f366    a6  0f9cc2         setll dl
0x1bef76d8f369    a9  0fb6d2         movzxbl rdx,rdx
0x1bef76d8f36c    ac  85d2           testl rdx,rdx
0x1bef76d8f36e    ae  0f840e000000   jz 0x1bef76d8f382  <+0xc2>
0x1bef76d8f374    b4  8b45e0         movl rax,[rbp-0x20]
0x1bef76d8f377    b7  83c001         addl rax,0x1
0x1bef76d8f37a    ba  8945e0         movl [rbp-0x20],rax
0x1bef76d8f37d    bd  e900000000     jmp 0x1bef76d8f382  <+0xc2>
0x1bef76d8f382    c2  8b45dc         movl rax,[rbp-0x24]
0x1bef76d8f385    c5  83c001         addl rax,0x1
0x1bef76d8f388    c8  488b4df0       REX.W movq rcx,[rbp-0x10]
0x1bef76d8f38c    cc  488b494f       REX.W movq rcx,[rcx+0x4f]
0x1bef76d8f390    d0  8b5108         movl rdx,[rcx+0x8]
0x1bef76d8f393    d3  3bc2           cmpl rax,rdx
0x1bef76d8f395    d5  0f8308000000   jnc 0x1bef76d8f3a3  <+0xe3>
0x1bef76d8f39b    db  8945dc         movl [rbp-0x24],rax
0x1bef76d8f39e    de  e96dffffff     jmp 0x1bef76d8f310  <+0x50>
0x1bef76d8f3a3    e3  8b4de0         movl rcx,[rbp-0x20]
0x1bef76d8f3a6    e6  8bc1           movl rax,rcx
0x1bef76d8f3a8    e8  488be5         REX.W movq rsp,rbp
0x1bef76d8f3ab    eb  5d             pop rbp
0x1bef76d8f3ac    ec  c3             retl
0x1bef76d8f3ad    ed  50             push rax
0x1bef76d8f3ae    ee  e80dfeffff     call 0x1bef76d8f1c0     ;; wasm stub: 
WasmStackGuard
0x1bef76d8f3b3    f3  58             pop rax
0x1bef76d8f3b4    f4  e939ffffff     jmp 0x1bef76d8f2f2  <+0x32>
0x1bef76d8f3b9    f9  e802feffff     call 0x1bef76d8f1c0     ;; wasm stub: 
WasmStackGuard
0x1bef76d8f3be    fe  e95effffff     jmp 0x1bef76d8f321  <+0x61>
0x1bef76d8f3c3   103  e888fcffff     call 0x1bef76d8f050     ;; wasm stub: 
ThrowWasmTrapMemOutOfBounds



TurboFan:
0x1bef76d8f3e0     0  55             push rbp
0x1bef76d8f3e1     1  4889e5         REX.W movq rbp,rsp
0x1bef76d8f3e4     4  6a0a           push 0xa
0x1bef76d8f3e6     6  56             push rsi
0x1bef76d8f3e7     7  4883ec28       REX.W subq rsp,0x28
0x1bef76d8f3eb     b  488b5e4f       REX.W movq rbx,[rsi+0x4f]
0x1bef76d8f3ef     f  488b560b       REX.W movq rdx,[rsi+0xb]
0x1bef76d8f3f3    13  488b4e13       REX.W movq rcx,[rsi+0x13]
0x1bef76d8f3f7    17  4883e903       REX.W subq rcx,0x3
0x1bef76d8f3fb    1b  33ff           xorl rdi,rdi
0x1bef76d8f3fd    1d  4c8bc7         REX.W movq r8,rdi
0x1bef76d8f400    20  4c8b4e23       REX.W movq r9,[rsi+0x23]
0x1bef76d8f404    24  493b21         REX.W cmpq rsp,[r9]
0x1bef76d8f407    27  0f8633000000   jna 0x1bef76d8f440  <+0x60>
0x1bef76d8f40d    2d  446bcf2c       imull r9,rdi,0x2c
0x1bef76d8f411    31  448b5b0c       movl r11,[rbx+0xc]
0x1bef76d8f415    35  4503cb         addl r9,r11
0x1bef76d8f418    38  4c3bc9         REX.W cmpq r9,rcx
0x1bef76d8f41b    3b  0f8352000000   jnc 0x1bef76d8f473  <+0x93>
0x1bef76d8f421    41  42833c0a00     cmpl [rdx+r9*1],0x0
0x1bef76d8f426    46  0f8d04000000   jge 0x1bef76d8f430  <+0x50>
0x1bef76d8f42c    4c  4183c001       addl r8,0x1
0x1bef76d8f430    50  83c701         addl rdi,0x1
0x1bef76d8f433    53  397b08         cmpl [rbx+0x8],rdi
0x1bef76d8f436    56  77c8           ja 0x1bef76d8f400  <+0x20>
0x1bef76d8f438    58  498bc0         REX.W movq rax,r8
0x1bef76d8f43b    5b  488be5         REX.W movq rsp,rbp
0x1bef76d8f43e    5e  5d             pop rbp
0x1bef76d8f43f    5f  c3             retl
0x1bef76d8f440    60  48895de8       REX.W movq [rbp-0x18],rbx
0x1bef76d8f444    64  48897de0       REX.W movq [rbp-0x20],rdi
0x1bef76d8f448    68  4c8945d8       REX.W movq [rbp-0x28],r8
0x1bef76d8f44c    6c  488955d0       REX.W movq [rbp-0x30],rdx
0x1bef76d8f450    70  48894dc8       REX.W movq [rbp-0x38],rcx
0x1bef76d8f454    74  e867fdffff     call 0x1bef76d8f1c0     ;; wasm stub: 
WasmStackGuard
0x1bef76d8f459    79  488b5de8       REX.W movq rbx,[rbp-0x18]
0x1bef76d8f45d    7d  488b7de0       REX.W movq rdi,[rbp-0x20]
0x1bef76d8f461    81  4c8b45d8       REX.W movq r8,[rbp-0x28]
0x1bef76d8f465    85  488b55d0       REX.W movq rdx,[rbp-0x30]
0x1bef76d8f469    89  488b4dc8       REX.W movq rcx,[rbp-0x38]
0x1bef76d8f46d    8d  488b75f0       REX.W movq rsi,[rbp-0x10]
0x1bef76d8f471    91  eb9a           jmp 0x1bef76d8f40d  <+0x2d>
0x1bef76d8f473    93  e8d8fbffff     call 0x1bef76d8f050     ;; wasm stub: 
ThrowWasmTrapMemOutOfBounds
0x1bef76d8f478    98  90             nop
0x1bef76d8f479    99  0f1f00         nop



What further information can I provide?

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/4cea2bd7-c5de-4aa5-b37a-ce2b46c7a450%40googlegroups.com.

Reply via email to