mirror of
https://github.com/golang/go.git
synced 2025-05-29 03:11:26 +00:00
The existing implementation uses loops to implement bulk memory operations such as memcpy and memclr. Now that bulk memory operations have been standardized and are implemented in all major browsers and engines (see https://webassembly.org/roadmap/), we should use them to improve performance. Updates #28360 Change-Id: I28df0e0350287d5e7e1d1c09a4064ea1054e7575 Reviewed-on: https://go-review.googlesource.com/c/go/+/444935 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Richard Musiol <neelance@gmail.com> Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Richard Musiol <neelance@gmail.com> Reviewed-by: Richard Musiol <neelance@gmail.com>
21 lines
485 B
ArmAsm
21 lines
485 B
ArmAsm
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
#include "textflag.h"
|
|
|
|
// See memclrNoHeapPointers Go doc for important implementation constraints.
|
|
|
|
// func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
|
|
TEXT runtime·memclrNoHeapPointers(SB), NOSPLIT, $0-16
|
|
MOVD ptr+0(FP), R0
|
|
MOVD n+8(FP), R1
|
|
|
|
Get R0
|
|
I32WrapI64
|
|
I32Const $0
|
|
Get R1
|
|
I32WrapI64
|
|
MemoryFill
|
|
RET
|