]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/runtime/mksizeclasses.go
runtime: implement Pinner API for object pinning
[gostls13.git] / src / runtime / mksizeclasses.go
index 64ed84432923081e04e2be0ee429cb612b80154c..156e61315fa43923e7192843c539dea30a1039ad 100644 (file)
@@ -277,6 +277,17 @@ func printComment(w io.Writer, classes []class) {
        fmt.Fprintf(w, "\n")
 }
 
+func maxObjsPerSpan(classes []class) int {
+       max := 0
+       for _, c := range classes[1:] {
+               n := c.npages * pageSize / c.size
+               if n > max {
+                       max = n
+               }
+       }
+       return max
+}
+
 func printClasses(w io.Writer, classes []class) {
        fmt.Fprintln(w, "const (")
        fmt.Fprintf(w, "_MaxSmallSize = %d\n", maxSmallSize)
@@ -285,6 +296,7 @@ func printClasses(w io.Writer, classes []class) {
        fmt.Fprintf(w, "largeSizeDiv = %d\n", largeSizeDiv)
        fmt.Fprintf(w, "_NumSizeClasses = %d\n", len(classes))
        fmt.Fprintf(w, "_PageShift = %d\n", pageShift)
+       fmt.Fprintf(w, "maxObjsPerSpan = %d\n", maxObjsPerSpan(classes))
        fmt.Fprintln(w, ")")
 
        fmt.Fprint(w, "var class_to_size = [_NumSizeClasses]uint16 {")