Chromium Code Reviews| 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..c775c6a4d9259922ecec77fe464129205c612a81 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,16 @@ 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. |
| + const Immediate& raw_transition_sentinel = |
| + Immediate(reinterpret_cast<intptr_t>( |
| + Object::transition_sentinel().raw())); |
| + __ cmpq(RAX, raw_transition_sentinel); |
|
srdjan
2013/02/11 20:54:31
__ CompareObject instead?
Vyacheslav Egorov (Google)
2013/02/18 14:05:22
Done.
|
| + __ 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()); |