Chromium Code Reviews| Index: runtime/vm/intermediate_language_x64.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_x64.cc (revision 42124) |
| +++ runtime/vm/intermediate_language_x64.cc (working copy) |
| @@ -23,6 +23,8 @@ |
| namespace dart { |
| DECLARE_FLAG(bool, emit_edge_counters); |
| +DECLARE_FLAG(bool, enable_asserts); |
|
srdjan
2014/12/05 00:49:28
please sort alphabetically (also in other architec
hausner
2014/12/05 20:36:10
They are already in alphabetical order.
|
| +DECLARE_FLAG(bool, enable_type_checks); |
| DECLARE_FLAG(int, optimization_counter_threshold); |
| DECLARE_FLAG(bool, propagate_ic_data); |
| DECLARE_FLAG(bool, throw_on_javascript_int_overflow); |
| @@ -329,11 +331,18 @@ |
| // Call the runtime if the object is not bool::true or bool::false. |
| ASSERT(locs->always_calls()); |
| Label done; |
| - __ CompareObject(reg, Bool::True(), PP); |
| - __ j(EQUAL, &done, Assembler::kNearJump); |
| - __ CompareObject(reg, Bool::False(), PP); |
| - __ j(EQUAL, &done, Assembler::kNearJump); |
| + if (FLAG_enable_type_checks) { |
| + __ CompareObject(reg, Bool::True(), PP); |
| + __ j(EQUAL, &done, Assembler::kNearJump); |
| + __ CompareObject(reg, Bool::False(), PP); |
| + __ j(EQUAL, &done, Assembler::kNearJump); |
| + } else { |
| + ASSERT(FLAG_enable_asserts); |
| + __ CompareObject(reg, Object::null_instance(), PP); |
| + __ j(NOT_EQUAL, &done, Assembler::kNearJump); |
| + } |
| + |
| __ pushq(reg); // Push the source object. |
| compiler->GenerateRuntimeCall(token_pos, |
| deopt_id, |