]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: split non-debugging malloc interface out of debug.go into mem.go
authorRuss Cox <rsc@golang.org>
Fri, 11 Mar 2011 20:09:21 +0000 (15:09 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 11 Mar 2011 20:09:21 +0000 (15:09 -0500)
R=r, dsymonds
CC=golang-dev
https://golang.org/cl/4273045

src/pkg/runtime/Makefile
src/pkg/runtime/debug.go
src/pkg/runtime/mem.go [new file with mode: 0644]

index e4cc0817514cc8003b152a8d0c1e7e339fdda59c..0cdb57ee71885b402642482fe7e8bb9378f28dd2 100644 (file)
@@ -22,6 +22,7 @@ GOFILES=\
        debug.go\
        error.go\
        extern.go\
+       mem.go\
        sig.go\
        softfloat64.go\
        type.go\
index 5117e1a551e25b41eea807155c4a3e9d9c79d264..b2357db303286f4f300cff4c9ecb7f9f1de5e8c8 100644 (file)
@@ -4,8 +4,6 @@
 
 package runtime
 
-import "unsafe"
-
 // Breakpoint() executes a breakpoint trap.
 func Breakpoint()
 
@@ -31,65 +29,6 @@ func Cgocalls() int64
 // Goroutines returns the number of goroutines that currently exist.
 func Goroutines() int32
 
-type MemStatsType struct {
-       // General statistics.
-       // Not locked during update; approximate.
-       Alloc      uint64 // bytes allocated and still in use
-       TotalAlloc uint64 // bytes allocated (even if freed)
-       Sys        uint64 // bytes obtained from system (should be sum of XxxSys below)
-       Lookups    uint64 // number of pointer lookups
-       Mallocs    uint64 // number of mallocs
-       Frees      uint64 // number of frees
-
-       // Main allocation heap statistics.
-       HeapAlloc   uint64 // bytes allocated and still in use
-       HeapSys     uint64 // bytes obtained from system
-       HeapIdle    uint64 // bytes in idle spans
-       HeapInuse   uint64 // bytes in non-idle span
-       HeapObjects uint64 // total number of allocated objects
-
-       // Low-level fixed-size structure allocator statistics.
-       //      Inuse is bytes used now.
-       //      Sys is bytes obtained from system.
-       StackInuse  uint64 // bootstrap stacks
-       StackSys    uint64
-       MSpanInuse  uint64 // mspan structures
-       MSpanSys    uint64
-       MCacheInuse uint64 // mcache structures
-       MCacheSys   uint64
-       BuckHashSys uint64 // profiling bucket hash table
-
-       // Garbage collector statistics.
-       NextGC       uint64
-       PauseTotalNs uint64
-       PauseNs      [256]uint64 // most recent GC pause times
-       NumGC        uint32
-       EnableGC     bool
-       DebugGC      bool
-
-       // Per-size allocation statistics.
-       // Not locked during update; approximate.
-       // 61 is NumSizeClasses in the C code.
-       BySize [61]struct {
-               Size    uint32
-               Mallocs uint64
-               Frees   uint64
-       }
-}
-
-var sizeof_C_MStats int // filled in by malloc.goc
-
-func init() {
-       if sizeof_C_MStats != unsafe.Sizeof(MemStats) {
-               println(sizeof_C_MStats, unsafe.Sizeof(MemStats))
-               panic("MStats vs MemStatsType size mismatch")
-       }
-}
-
-// MemStats holds statistics about the memory system.
-// The statistics are only approximate, as they are not interlocked on update.
-var MemStats MemStatsType
-
 // Alloc allocates a block of the given size.
 // FOR TESTING AND DEBUGGING ONLY.
 func Alloc(uintptr) *byte
@@ -102,9 +41,6 @@ func Free(*byte)
 // FOR TESTING AND DEBUGGING ONLY.
 func Lookup(*byte) (*byte, uintptr)
 
-// GC runs a garbage collection.
-func GC()
-
 // MemProfileRate controls the fraction of memory allocations
 // that are recorded and reported in the memory profile.
 // The profiler aims to sample an average of
diff --git a/src/pkg/runtime/mem.go b/src/pkg/runtime/mem.go
new file mode 100644 (file)
index 0000000..fe505a3
--- /dev/null
@@ -0,0 +1,69 @@
+// Copyright 2009 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.
+
+package runtime
+
+import "unsafe"
+
+type MemStatsType struct {
+       // General statistics.
+       // Not locked during update; approximate.
+       Alloc      uint64 // bytes allocated and still in use
+       TotalAlloc uint64 // bytes allocated (even if freed)
+       Sys        uint64 // bytes obtained from system (should be sum of XxxSys below)
+       Lookups    uint64 // number of pointer lookups
+       Mallocs    uint64 // number of mallocs
+       Frees      uint64 // number of frees
+
+       // Main allocation heap statistics.
+       HeapAlloc   uint64 // bytes allocated and still in use
+       HeapSys     uint64 // bytes obtained from system
+       HeapIdle    uint64 // bytes in idle spans
+       HeapInuse   uint64 // bytes in non-idle span
+       HeapObjects uint64 // total number of allocated objects
+
+       // Low-level fixed-size structure allocator statistics.
+       //      Inuse is bytes used now.
+       //      Sys is bytes obtained from system.
+       StackInuse  uint64 // bootstrap stacks
+       StackSys    uint64
+       MSpanInuse  uint64 // mspan structures
+       MSpanSys    uint64
+       MCacheInuse uint64 // mcache structures
+       MCacheSys   uint64
+       BuckHashSys uint64 // profiling bucket hash table
+
+       // Garbage collector statistics.
+       NextGC       uint64
+       PauseTotalNs uint64
+       PauseNs      [256]uint64 // most recent GC pause times
+       NumGC        uint32
+       EnableGC     bool
+       DebugGC      bool
+
+       // Per-size allocation statistics.
+       // Not locked during update; approximate.
+       // 61 is NumSizeClasses in the C code.
+       BySize [61]struct {
+               Size    uint32
+               Mallocs uint64
+               Frees   uint64
+       }
+}
+
+var sizeof_C_MStats int // filled in by malloc.goc
+
+func init() {
+       if sizeof_C_MStats != unsafe.Sizeof(MemStats) {
+               println(sizeof_C_MStats, unsafe.Sizeof(MemStats))
+               panic("MStats vs MemStatsType size mismatch")
+       }
+}
+
+// MemStats holds statistics about the memory system.
+// The statistics are only approximate, as they are not interlocked on update.
+var MemStats MemStatsType
+
+// GC runs a garbage collection.
+func GC()