runtime: clean up and improve reflect.methodValue comments
The runtime no longer hard-codes the offset of
reflect.methodValue.stack, so remove these obsolete comments. Also,
reflect.methodValue and runtime.reflectMethodValue must also agree
with reflect.makeFuncImpl, so update the comments on all three to
mention this.
This was pointed out by Minux on CL 31138.
Change-Id: Ic5ed1beffb65db76aca2977958da35de902e8e58
Reviewed-on: https://go-review.googlesource.com/34590
Reviewed-by: Keith Randall <khr@golang.org>
diff --git a/src/reflect/makefunc.go b/src/reflect/makefunc.go
index a7efeb8..885966d 100644
--- a/src/reflect/makefunc.go
+++ b/src/reflect/makefunc.go
@@ -12,9 +12,12 @@
// makeFuncImpl is the closure value implementing the function
// returned by MakeFunc.
+// The first two words of this type must be kept in sync with
+// methodValue and runtime.reflectMethodValue.
+// Any changes should be reflected in all three.
type makeFuncImpl struct {
code uintptr
- stack *bitVector // stack bitmap for args - offset known to runtime
+ stack *bitVector
typ *funcType
fn func([]Value) []Value
}
@@ -70,11 +73,12 @@
// word in the passed-in argument frame.
func makeFuncStub()
-// This type is partially duplicated as runtime.reflectMethodValue.
-// Any changes should be reflected in both.
+// The first two words of this type must be kept in sync with
+// makeFuncImpl and runtime.reflectMethodValue.
+// Any changes should be reflected in all three.
type methodValue struct {
fn uintptr
- stack *bitVector // stack bitmap for args - offset known to runtime
+ stack *bitVector
method int
rcvr Value
}
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go
index 0049e82..180489f 100644
--- a/src/runtime/traceback.go
+++ b/src/runtime/traceback.go
@@ -546,7 +546,8 @@
return n
}
-// reflectMethodValue is a partial duplicate of reflect.methodValue.
+// reflectMethodValue is a partial duplicate of reflect.makeFuncImpl
+// and reflect.methodValue.
type reflectMethodValue struct {
fn uintptr
stack *bitvector // args bitmap