[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/+/3823127 Reviewed-by: Jakob 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}
This commit is contained in:
parent
b14e3cd4d7
commit
ea62649739
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user