reflect: correctly handle direct interface typed receiver in Value.call
A direct interface type's value method takes value receiver now.
Don't pass pointer to the method function.
Change-Id: Ibff5fadbe1cdf9c539dc475edbf728e1dc98e30f
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175798
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/libgo/go/reflect/value.go b/libgo/go/reflect/value.go
index d3a6243..298fbac 100644
--- a/libgo/go/reflect/value.go
+++ b/libgo/go/reflect/value.go
@@ -401,7 +401,7 @@
if v.flag&flagMethod != 0 {
nin++
}
- firstPointer := len(in) > 0 && t.In(0).Kind() != Ptr && v.flag&flagMethodFn != 0
+ firstPointer := len(in) > 0 && ifaceIndir(t.In(0).common()) && v.flag&flagMethodFn != 0
params := make([]unsafe.Pointer, nin)
off := 0
if v.flag&flagMethod != 0 {