Skip to content

Commit

Permalink
runtime: make nextFreeFast inlinable
Browse files Browse the repository at this point in the history
https://golang.org/cl/22598 made nextFreeFast inlinable.
But during https://golang.org/cl/63611 it was discovered, that it is no longer inlinable.
Reduce number of statements below inlining threshold to make it inlinable again.
Also update tests, to prevent regressions.
Doesn't reduce readability.

Change-Id: Ia672784dd48ed3b1ab46e390132f1094fe453de5
Reviewed-on: https://go-review.googlesource.com/65030
Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
  • Loading branch information
TocarIP committed Sep 20, 2017
1 parent 55ac5b5 commit 101fbc2
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
12 changes: 8 additions & 4 deletions src/cmd/compile/internal/gc/inl_test.go
Expand Up @@ -8,6 +8,7 @@ import (
"bytes"
"internal/testenv"
"os/exec"
"runtime"
"testing"
)

Expand All @@ -34,10 +35,6 @@ func TestIntendedInlining(t *testing.T) {
"bucketMask",
"fastrand",
"noescape",

// TODO: These were modified at some point to be
// made inlineable, but have since been broken.
// "nextFreeFast",
},
"unicode/utf8": {
"FullRune",
Expand All @@ -47,6 +44,13 @@ func TestIntendedInlining(t *testing.T) {
},
}

if runtime.GOARCH != "386" {
// nextFreeFast calls sys.Ctz64, which on 386 is implemented in asm and is not inlinable.
// We currently don't have midstack inlining so nextFreeFast is also not inlinable on 386.
// So check for it only on non-386 platforms.
want["runtime"] = append(want["runtime"], "nextFreeFast")
}

m := make(map[string]bool)
pkgs := make([]string, 0, len(want))
for pname, fnames := range want {
Expand Down
3 changes: 1 addition & 2 deletions src/runtime/malloc.go
Expand Up @@ -529,9 +529,8 @@ func nextFreeFast(s *mspan) gclinkptr {
}
s.allocCache >>= uint(theBit + 1)
s.freeindex = freeidx
v := gclinkptr(result*s.elemsize + s.base())
s.allocCount++
return v
return gclinkptr(result*s.elemsize + s.base())
}
}
return 0
Expand Down

0 comments on commit 101fbc2

Please sign in to comment.