Version 1.23.0-dev.11.11
Cherry-pick 2a2de1aa2380b1338749bc18c94d953c904f485d into dev
Cherry-pick 9add06fe7f835ec2a95175184cdcaa3d72f7c18d into dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f0e3f7..5a5879c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,5 @@
## 1.23.0
-### Language
-* Allow using URI strings in `part of` declarations to refer to the
- importing library.
- A library part now can declare its library either as:
- `part of name.of.library;` or as `part of "uriReferenceOfLibrary.dart";`.
- This allows libraries with no library declarations (and therefore no name)
- to have parts, and it allows tools to easily find the library of a part file.
-
#### Strong Mode
* Breaking change - it is now a strong mode error if a mixin causes a name
diff --git a/runtime/vm/jit_optimizer.cc b/runtime/vm/jit_optimizer.cc
index 686adc5..e42fa50 100644
--- a/runtime/vm/jit_optimizer.cc
+++ b/runtime/vm/jit_optimizer.cc
@@ -1542,6 +1542,17 @@
const ICData& unary_checks =
ICData::ZoneHandle(Z, instr->ic_data()->AsUnaryClassChecks());
+ const bool is_dense = CheckClassInstr::IsDenseCidRange(unary_checks);
+ const intptr_t number_of_checks = unary_checks.NumberOfChecks();
+ if (op_kind == Token::kEQ &&
+ number_of_checks > FLAG_max_equality_polymorphic_checks && !is_dense &&
+ flow_graph()->InstanceCallNeedsClassCheck(
+ instr, RawFunction::kRegularFunction)) {
+ // Too many checks, it will be megamorphic which needs unary checks.
+ instr->set_ic_data(&unary_checks);
+ return;
+ }
+
if ((op_kind == Token::kASSIGN_INDEX) && TryReplaceWithIndexedOp(instr)) {
return;
}
diff --git a/tools/VERSION b/tools/VERSION
index 11dbf70..79f0a52 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
MINOR 23
PATCH 0
PRERELEASE 11
-PRERELEASE_PATCH 10
+PRERELEASE_PATCH 11