aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/slice.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-04-19 19:35:10 -0700
committerKeith Randall <khr@golang.org>2016-04-20 14:02:22 +0000
commit001e8e8070e8ed3a578dbad93cc3f70257e965bd (patch)
tree13300d3f022b1d24571be6c267979e5d8d0c48e5 /src/runtime/slice.go
parent731531980a36f1fa6434c947c54daf8ba530a65f (diff)
downloadgo-001e8e8070e8ed3a578dbad93cc3f70257e965bd.tar.gz
go-001e8e8070e8ed3a578dbad93cc3f70257e965bd.zip
runtime: simplify mallocgc flag argument
mallocgc can calculate noscan itself. The only remaining flag argument is needzero, so we just make that a boolean arg. Fixes #15379 Change-Id: I839a70790b2a0c9dbcee2600052bfbd6c8148e20 Reviewed-on: https://go-review.googlesource.com/22290 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime/slice.go')
-rw-r--r--src/runtime/slice.go11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/runtime/slice.go b/src/runtime/slice.go
index e86c1ce2c8..e15e6c4dc6 100644
--- a/src/runtime/slice.go
+++ b/src/runtime/slice.go
@@ -43,7 +43,6 @@ func makeslice(et *_type, len64, cap64 int64) slice {
// when someone does make([]T, bignumber). 'cap out of range' is true too,
// but since the cap is only being supplied implicitly, saying len is clearer.
// See issue 4085.
-
maxElements := maxSliceCap(et.size)
len := int(len64)
if len64 < 0 || int64(len) != len64 || uintptr(len) > maxElements {
@@ -55,11 +54,7 @@ func makeslice(et *_type, len64, cap64 int64) slice {
panic(errorString("makeslice: cap out of range"))
}
- var flags uint32
- if et.kind&kindNoPointers != 0 {
- flags = flagNoScan
- }
- p := mallocgc(et.size*uintptr(cap), et, flags)
+ p := mallocgc(et.size*uintptr(cap), et, true)
return slice{p, len, cap}
}
@@ -128,12 +123,12 @@ func growslice(et *_type, old slice, cap int) slice {
var p unsafe.Pointer
if et.kind&kindNoPointers != 0 {
- p = rawmem(capmem)
+ p = mallocgc(capmem, nil, false)
memmove(p, old.array, lenmem)
memclr(add(p, lenmem), capmem-lenmem)
} else {
// Note: can't use rawmem (which avoids zeroing of memory), because then GC can scan uninitialized memory.
- p = mallocgc(capmem, et, 0)
+ p = mallocgc(capmem, et, true)
if !writeBarrier.enabled {
memmove(p, old.array, lenmem)
} else {