mirror of
https://github.com/golang/go
synced 2024-11-06 22:36:15 -07:00
runtime: clarify that itab.hash of dynamic entries is unused
The hash is used in type switches. However, compiler statically generates itab's for all interface/type pairs used in switches (which are added to itabTable in itabsinit). The dynamically-generated itab's never participate in type switches, and thus the hash is irrelevant. Change-Id: I4f6e37be31b8f5605cca7a1806cb04708e948cea Reviewed-on: https://go-review.googlesource.com/c/go/+/202448 Run-TryBot: Dmitry Vyukov <dvyukov@google.com> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
f71bd516b7
commit
61089984a8
@ -66,6 +66,12 @@ func getitab(inter *interfacetype, typ *_type, canfail bool) *itab {
|
||||
m = (*itab)(persistentalloc(unsafe.Sizeof(itab{})+uintptr(len(inter.mhdr)-1)*sys.PtrSize, 0, &memstats.other_sys))
|
||||
m.inter = inter
|
||||
m._type = typ
|
||||
// The hash is used in type switches. However, compiler statically generates itab's
|
||||
// for all interface/type pairs used in switches (which are added to itabTable
|
||||
// in itabsinit). The dynamically-generated itab's never participate in type switches,
|
||||
// and thus the hash is irrelevant.
|
||||
// Note: m.hash is _not_ the hash used for the runtime itabTable hash table.
|
||||
m.hash = 0
|
||||
m.init()
|
||||
itabAdd(m)
|
||||
unlock(&itabLock)
|
||||
@ -233,7 +239,6 @@ imethods:
|
||||
return iname
|
||||
}
|
||||
m.fun[0] = uintptr(fun0)
|
||||
m.hash = typ.hash
|
||||
return ""
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user