Commit ea626497 authored by Clemens Backes's avatar Clemens Backes Committed by V8 LUCI CQ

[wasm] Speed up WasmStringConcat builtin

Tail call the StringAdd_CheckNone builtin. This also avoids the need to
create a frame.

X64 code before:
     0  55                   push rbp
     1  4889e5               REX.W movq rbp,rsp
     4  6a20                 push 0x20
     6  488b5500             REX.W movq rdx,[rbp+0x0]
     a  488b52f0             REX.W movq rdx,[rdx-0x10]
     e  8bb2c7000000         movl rsi,[rdx+0xc7]
    14  4903f6               REX.W addq rsi,r14
    17  e8a402f3ff           call 0x7f2effeb5a80 (StringAdd_CheckNone)
    1c  488be5               REX.W movq rsp,rbp
    1f  5d                   pop rbp
    20  c3                   retl

X64 code after:
     0  488bd5               REX.W movq rdx,rbp
     3  488b52f0             REX.W movq rdx,[rdx-0x10]
     7  8bb2c7000000         movl rsi,[rdx+0xc7]
     d  4903f6               REX.W addq rsi,r14
    10  e9ab02f3ff           jmp 0x7fed7feb5a80 (StringAdd_CheckNone)

R=jkummerow@chromium.org

Bug: v8:12868
Change-Id: Ie722fb57abcd649d2586aad2c4aca55ff218fe43
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3823127Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82340}
parent b14e3cd4
......@@ -922,7 +922,7 @@ builtin WasmStringEncodeWtf16Array(
}
builtin WasmStringConcat(a: String, b: String): String {
const context = LoadContextFromFrame();
return a + b;
tail StringAdd_CheckNone(a, b);
}
builtin WasmStringEqual(a: String, b: String): int32 {
if (TaggedEqual(a, b)) return 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment