mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/gc, runtime: change growslice to use int instead of int64
Gc already calculates n as an int, so converting to int64 to call growslice doesn't serve any purpose except to emit slightly larger code on 32-bit platforms. Passing n as an int shrinks godoc's text segment by 8kB (9472633 => 9464133) when building for ARM. Change-Id: Ief9492c21d01afcb624d3f2a484df741450b788d Reviewed-on: https://go-review.googlesource.com/6231 Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3d0397a4f4
commit
81d4072eb0
4 changed files with 9 additions and 12 deletions
|
|
@ -33,16 +33,13 @@ func makeslice(t *slicetype, len64 int64, cap64 int64) sliceStruct {
|
|||
return sliceStruct{p, len, cap}
|
||||
}
|
||||
|
||||
// TODO: take uintptr instead of int64?
|
||||
func growslice(t *slicetype, old sliceStruct, n int64) sliceStruct {
|
||||
func growslice(t *slicetype, old sliceStruct, n int) sliceStruct {
|
||||
if n < 1 {
|
||||
panic(errorString("growslice: invalid n"))
|
||||
}
|
||||
|
||||
cap64 := int64(old.cap) + n
|
||||
cap := int(cap64)
|
||||
|
||||
if int64(cap) != cap64 || cap < old.cap || t.elem.size > 0 && uintptr(cap) > _MaxMem/uintptr(t.elem.size) {
|
||||
cap := old.cap + n
|
||||
if cap < old.cap || t.elem.size > 0 && uintptr(cap) > _MaxMem/uintptr(t.elem.size) {
|
||||
panic(errorString("growslice: cap out of range"))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue