[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 =