[VM] Ensure we handle devirtualized calls inside ApplyClassIds() as well

After recent changes to pragmas, TFA devirtualizes more calls, which has
regressed a Prime

This gets rid of the 5% regression in PrimeNumber/PrimeNumberTyped in
dart-aot (which 0ef66e0f5 introduced). Furthermore it improves MD5/SHA
by double digits percent.

Change-Id: Ia4d1fb62512495dec7111efc53c4d7a4de5ef3af
Reviewed-on: https://dart-review.googlesource.com/c/85398
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
This commit is contained in:
Martin Kustermann
2018-11-28 09:21:00 +00:00
committed by commit-bot@chromium.org
parent e25c744138
commit 4aff8f93fb
+4
View File
@@ -187,6 +187,10 @@ void CallSpecializer::ApplyClassIds() {
VisitInstanceCall(call);
}
}
} else if (auto static_call = instr->AsStaticCall()) {
// If TFA devirtualized instance calls to static calls we also want to
// process them here.
VisitStaticCall(static_call);
} else if (instr->IsPolymorphicInstanceCall()) {
SpecializePolymorphicInstanceCall(instr->AsPolymorphicInstanceCall());
}