[VM/runtime] Do not try to resolve a target through a getter if it is a getter.

Change-Id: I0a6ebee658c70a1573185131847cc6fc356590bb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/158721
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: RĂ©gis Crelier <regis@google.com>
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 0d7ffce..a17e9c6 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -1161,8 +1161,10 @@
     demangled = &String::Handle(
         Function::DemangleDynamicInvocationForwarderName(target_name));
   }
+  const bool is_getter = Field::IsGetterName(*demangled);
   Function& result = Function::Handle();
-  if (!ResolveCallThroughGetter(receiver_class, target_name, *demangled,
+  if (is_getter ||
+      !ResolveCallThroughGetter(receiver_class, target_name, *demangled,
                                 args_descriptor, &result)) {
     ArgumentsDescriptor desc(args_descriptor);
     const Function& target_function =