| Index: runtime/vm/intermediate_language_x64.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_x64.cc (revision 8626)
|
| +++ runtime/vm/intermediate_language_x64.cc (working copy)
|
| @@ -227,10 +227,8 @@
|
|
|
| static void EmitSmiEqualityCompare(FlowGraphCompiler* compiler,
|
| EqualityCompareComp* comp) {
|
| - // TODO(srdjan): Should we always include NULL test (common case)?
|
| Register left = comp->locs()->in(0).reg();
|
| Register right = comp->locs()->in(1).reg();
|
| - Register result = comp->locs()->out().reg();
|
| Register temp = comp->locs()->temp(0).reg();
|
| Label* deopt = compiler->AddDeoptStub(comp->cid(),
|
| comp->token_index(),
|
| @@ -238,6 +236,7 @@
|
| kDeoptSmiCompareSmis,
|
| left,
|
| right);
|
| + // TODO(srdjan): Should we always include NULL test (common case)?
|
| __ movq(temp, left);
|
| __ orq(temp, right);
|
| __ testq(temp, Immediate(kSmiTagMask));
|
| @@ -246,6 +245,7 @@
|
| if (comp->is_fused_with_branch()) {
|
| comp->fused_with_branch()->EmitBranchOnCondition(compiler, EQUAL);
|
| } else {
|
| + Register result = comp->locs()->out().reg();
|
| Label load_true, done;
|
| __ j(EQUAL, &load_true, Assembler::kNearJump);
|
| __ LoadObject(result, compiler->bool_false());
|
| @@ -284,10 +284,14 @@
|
| __ Bind(&non_null_compare);
|
| __ pushq(left);
|
| __ pushq(right);
|
| + compiler->AddCurrentDescriptor(PcDescriptors::kDeopt,
|
| + comp->cid(),
|
| + comp->token_index(),
|
| + comp->try_index());
|
| const String& operator_name = String::ZoneHandle(String::NewSymbol("=="));
|
| const int kNumberOfArguments = 2;
|
| const Array& kNoArgumentNames = Array::Handle();
|
| - const int kNumArgumentsChecked = 1;
|
| + const int kNumArgumentsChecked = 2;
|
|
|
| compiler->GenerateInstanceCall(comp->cid(),
|
| comp->token_index(),
|
|
|