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 {