mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.cc] runtime: convert memory allocator and garbage collector to Go
The conversion was done with an automated tool and then modified only as necessary to make it compile and run. [This CL is part of the removal of C code from package runtime. See golang.org/s/dev.cc for an overview.] LGTM=r R=r CC=austin, dvyukov, golang-codereviews, iant, khr https://golang.org/cl/167540043
This commit is contained in:
parent
d98553a727
commit
1e2d2f0947
30 changed files with 4923 additions and 5691 deletions
|
|
@ -22,11 +22,11 @@ func makeslice(t *slicetype, len64 int64, cap64 int64) sliceStruct {
|
|||
// but since the cap is only being supplied implicitly, saying len is clearer.
|
||||
// See issue 4085.
|
||||
len := int(len64)
|
||||
if len64 < 0 || int64(len) != len64 || t.elem.size > 0 && uintptr(len) > maxmem/uintptr(t.elem.size) {
|
||||
if len64 < 0 || int64(len) != len64 || t.elem.size > 0 && uintptr(len) > _MaxMem/uintptr(t.elem.size) {
|
||||
panic(errorString("makeslice: len out of range"))
|
||||
}
|
||||
cap := int(cap64)
|
||||
if cap < len || int64(cap) != cap64 || t.elem.size > 0 && uintptr(cap) > maxmem/uintptr(t.elem.size) {
|
||||
if cap < len || int64(cap) != cap64 || t.elem.size > 0 && uintptr(cap) > _MaxMem/uintptr(t.elem.size) {
|
||||
panic(errorString("makeslice: cap out of range"))
|
||||
}
|
||||
p := newarray(t.elem, uintptr(cap))
|
||||
|
|
@ -42,7 +42,7 @@ func growslice(t *slicetype, old sliceStruct, n int64) sliceStruct {
|
|||
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) {
|
||||
if int64(cap) != cap64 || cap < old.cap || t.elem.size > 0 && uintptr(cap) > _MaxMem/uintptr(t.elem.size) {
|
||||
panic(errorString("growslice: cap out of range"))
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ func growslice(t *slicetype, old sliceStruct, n int64) sliceStruct {
|
|||
}
|
||||
}
|
||||
|
||||
if uintptr(newcap) >= maxmem/uintptr(et.size) {
|
||||
if uintptr(newcap) >= _MaxMem/uintptr(et.size) {
|
||||
panic(errorString("growslice: cap out of range"))
|
||||
}
|
||||
lenmem := uintptr(old.len) * uintptr(et.size)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue