| Index: runtime/vm/intermediate_language_mips.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_mips.cc (revision 42124)
|
| +++ runtime/vm/intermediate_language_mips.cc (working copy)
|
| @@ -24,6 +24,8 @@
|
| namespace dart {
|
|
|
| DECLARE_FLAG(bool, emit_edge_counters);
|
| +DECLARE_FLAG(bool, enable_asserts);
|
| +DECLARE_FLAG(bool, enable_type_checks);
|
| DECLARE_FLAG(int, optimization_counter_threshold);
|
| DECLARE_FLAG(bool, propagate_ic_data);
|
| DECLARE_FLAG(bool, use_osr);
|
| @@ -399,9 +401,15 @@
|
| // Call the runtime if the object is not bool::true or bool::false.
|
| ASSERT(locs->always_calls());
|
| Label done;
|
| - __ BranchEqual(reg, Bool::True(), &done);
|
| - __ BranchEqual(reg, Bool::False(), &done);
|
|
|
| + if (FLAG_enable_type_checks) {
|
| + __ BranchEqual(reg, Bool::True(), &done);
|
| + __ BranchEqual(reg, Bool::False(), &done);
|
| + } else {
|
| + ASSERT(FLAG_enable_asserts);
|
| + __ BranchNotEqual(reg, Object::null_instance(), &done);
|
| + }
|
| +
|
| __ Push(reg); // Push the source object.
|
| compiler->GenerateRuntimeCall(token_pos,
|
| deopt_id,
|
|
|