| 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());
|
|
|