reflect: fix methodValueCall code pointer mismatch in Value.Pointer

This is the port of CL 356809 for Value.Pointer to fix the mismatch of
methodValueCall code pointer.

Change-Id: I080ac41b94b44d878cd5896207a76a28c57fd48b
Reviewed-on: https://go-review.googlesource.com/c/go/+/356950
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go
index 91aac9c..fcd0e15 100644
--- a/src/reflect/all_test.go
+++ b/src/reflect/all_test.go
@@ -7724,9 +7724,12 @@
 }
 
 func TestMethodCallValueCodePtr(t *testing.T) {
-	p := ValueOf(Point{}).Method(1).UnsafePointer()
+	m := ValueOf(Point{}).Method(1)
 	want := MethodValueCallCodePtr()
-	if got := uintptr(p); got != want {
+	if got := uintptr(m.UnsafePointer()); got != want {
+		t.Errorf("methodValueCall code pointer mismatched, want: %v, got: %v", want, got)
+	}
+	if got := m.Pointer(); got != want {
 		t.Errorf("methodValueCall code pointer mismatched, want: %v, got: %v", want, got)
 	}
 }
diff --git a/src/reflect/value.go b/src/reflect/value.go
index 63faa04..7bb8ae5 100644
--- a/src/reflect/value.go
+++ b/src/reflect/value.go
@@ -1957,8 +1957,7 @@
 			// created via reflect have the same underlying code pointer,
 			// so their Pointers are equal. The function used here must
 			// match the one used in makeMethodValue.
-			f := methodValueCall
-			return **(**uintptr)(unsafe.Pointer(&f))
+			return methodValueCallCodePtr()
 		}
 		p := v.pointer()
 		// Non-nil func value points at data block.