Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler_ia32.cc |
| diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc |
| index efb9b7b1d9c88e93f8999f384cbfcf0e15996ace..b39fdbdc8a5d9715ed06a1b758331041154d3ae0 100644 |
| --- a/runtime/vm/flow_graph_compiler_ia32.cc |
| +++ b/runtime/vm/flow_graph_compiler_ia32.cc |
| @@ -24,6 +24,7 @@ DEFINE_FLAG(bool, unbox_mints, true, "Optimize 64-bit integer arithmetic."); |
| DECLARE_FLAG(int, optimization_counter_threshold); |
| DECLARE_FLAG(bool, print_ast); |
| DECLARE_FLAG(bool, print_scopes); |
| +DECLARE_FLAG(bool, eliminate_type_checks); |
| FlowGraphCompiler::~FlowGraphCompiler() { |
| @@ -561,6 +562,16 @@ void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos, |
| __ cmpl(EAX, 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())); |
| + __ cmpl(EAX, 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()); |