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

Unified Diff: runtime/vm/flow_graph_compiler_x64.cc

Issue 12260008: Reapply r18377 it was reverted due to the unrelated bug it surfaced. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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/flow_graph_compiler_x64.cc
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index 76e976e4666ab1cd9e16afb7a7a254b912776273..2930ea4ad88aa723829e8ac97c1a31fdf673b86a 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -23,7 +23,7 @@ DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization.");
DECLARE_FLAG(int, optimization_counter_threshold);
DECLARE_FLAG(bool, print_ast);
DECLARE_FLAG(bool, print_scopes);
-DECLARE_FLAG(bool, use_sse41);
+DECLARE_FLAG(bool, eliminate_type_checks);
FlowGraphCompiler::~FlowGraphCompiler() {
@@ -561,6 +561,13 @@ void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos,
__ cmpq(RAX, raw_null);
__ j(EQUAL, &is_assignable);
+ if (!FLAG_eliminate_type_checks) {
+ // If type checks are not eliminated during the graph building then
+ // a transition sentinel can be seen here.
+ __ CompareObject(RAX, Object::transition_sentinel());
+ __ j(EQUAL, &is_assignable);
+ }
+
// Generate throw new TypeError() if the type is malformed.
if (dst_type.IsMalformed()) {
const Error& error = Error::Handle(dst_type.malformed_error());

Powered by Google App Engine
This is Rietveld 408576698