Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: runtime/vm/intermediate_language_x64.cc

Issue 2904543002: Fix misoptimization of 'is' test (Closed)
Patch Set: Remove inadvertent change Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/intermediate_language_x64.cc
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 8f22f334899c7eff30a60b316c5d44a5b68c12b0..8796e59038ed86bf3e4b772c5a93afe1f3a1dddd 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -686,6 +686,15 @@ Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
}
// No match found, deoptimize or false.
if (deopt == NULL) {
+#ifdef DEBUG
Vyacheslav Egorov (Google) 2017/05/23 16:00:31 I think this needs to go to constructor.
erikcorry 2017/05/24 13:37:15 Done.
+ // The entry for Smi can be special, but all other entries have
+ // to match in the no-deopt case.
+ for (intptr_t i = 4; i < data.length(); i += 2) {
+ ASSERT(data[i + 1] == data[3]);
+ }
+#endif
+ // If the cid is not in the list, jump to the opposite label from the cids
Vyacheslav Egorov (Google) 2017/05/23 16:00:31 Please add a comment to the instruction in the int
erikcorry 2017/05/24 13:37:15 Done.
+ // that are in the list.
Label* target = result ? labels.false_label : labels.true_label;
if (target != labels.fall_through) {
__ jmp(target);

Powered by Google App Engine
This is Rietveld 408576698