mirror of
https://github.com/golang/go
synced 2025-05-14 04:42:13 +00:00
runtime: mark arenaIdx.l1 and arenaIdx.l2 methods as nosplit
Mark the "l1" and "l2" methods on "arenaIdx" with //go:nosplit, since these methods are called from a nosplit context (for example, from "spanOf"). Fixes #56044. Updates #21314. Change-Id: I48c7aa756b59a13162c89ef21066f83371ae50f1 Reviewed-on: https://go-review.googlesource.com/c/go/+/441859 Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
@ -576,6 +576,12 @@ func arenaBase(i arenaIdx) uintptr {
|
||||
|
||||
type arenaIdx uint
|
||||
|
||||
// l1 returns the "l1" portion of an arenaIdx.
|
||||
//
|
||||
// Marked nosplit because it's called by spanOf and other nosplit
|
||||
// functions.
|
||||
//
|
||||
//go:nosplit
|
||||
func (i arenaIdx) l1() uint {
|
||||
if arenaL1Bits == 0 {
|
||||
// Let the compiler optimize this away if there's no
|
||||
@ -586,6 +592,12 @@ func (i arenaIdx) l1() uint {
|
||||
}
|
||||
}
|
||||
|
||||
// l2 returns the "l2" portion of an arenaIdx.
|
||||
//
|
||||
// Marked nosplit because it's called by spanOf and other nosplit funcs.
|
||||
// functions.
|
||||
//
|
||||
//go:nosplit
|
||||
func (i arenaIdx) l2() uint {
|
||||
if arenaL1Bits == 0 {
|
||||
return uint(i)
|
||||
|
Reference in New Issue
Block a user