| Index: runtime/vm/intermediate_language_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_ia32.cc (revision 11303)
|
| +++ runtime/vm/intermediate_language_ia32.cc (working copy)
|
| @@ -439,7 +439,6 @@
|
| Token::Kind kind,
|
| BranchInstr* branch,
|
| intptr_t deopt_id,
|
| - intptr_t token_pos,
|
| intptr_t try_index) {
|
| ASSERT((kind == Token::kEQ) || (kind == Token::kNE));
|
| Register left = locs.in(0).reg();
|
| @@ -541,7 +540,6 @@
|
| Token::Kind kind,
|
| BranchInstr* branch,
|
| intptr_t deopt_id,
|
| - intptr_t token_pos,
|
| intptr_t try_index) {
|
| Register left = locs.in(0).reg();
|
| Register right = locs.in(1).reg();
|
| @@ -598,7 +596,6 @@
|
| Token::Kind kind,
|
| BranchInstr* branch,
|
| intptr_t deopt_id,
|
| - intptr_t token_pos,
|
| intptr_t try_index) {
|
| Register left = locs.in(0).reg();
|
| Register right = locs.in(1).reg();
|
| @@ -625,20 +622,20 @@
|
| if (receiver_class_id() == kSmiCid) {
|
| // Deoptimizes if both arguments not Smi.
|
| EmitSmiComparisonOp(compiler, *locs(), kind(), NULL, // No branch.
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| if (receiver_class_id() == kDoubleCid) {
|
| // Deoptimizes if both arguments are Smi, or if none is Double or Smi.
|
| EmitDoubleComparisonOp(compiler, *locs(), kind(), NULL, // No branch.
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| const bool is_checked_strict_equal =
|
| HasICData() && ic_data()->AllTargetsHaveSameOwner(kInstanceCid);
|
| if (is_checked_strict_equal) {
|
| EmitCheckedStrictEqual(compiler, *ic_data(), *locs(), kind(), NULL,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
|
| @@ -686,12 +683,12 @@
|
| void RelationalOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (operands_class_id() == kSmiCid) {
|
| EmitSmiComparisonOp(compiler, *locs(), kind(), NULL,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| if (operands_class_id() == kDoubleCid) {
|
| EmitDoubleComparisonOp(compiler, *locs(), kind(), NULL,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
|
|
| @@ -2022,15 +2019,6 @@
|
|
|
|
|
| LocationSummary* BranchInstr::MakeLocationSummary() const {
|
| - if ((kind() == Token::kEQ_STRICT) || (kind() == Token::kNE_STRICT)) {
|
| - const int kNumInputs = 2;
|
| - const int kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| - locs->set_in(0, Location::RequiresRegister());
|
| - locs->set_in(1, Location::RequiresRegister());
|
| - return locs;
|
| - }
|
| if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
|
| if (ICDataWithBothClassIds(*ic_data(), kSmiCid) ||
|
| ICDataWithBothClassIds(*ic_data(), kDoubleCid) ||
|
| @@ -2068,29 +2056,21 @@
|
|
|
|
|
| void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - if ((kind() == Token::kEQ_STRICT) || (kind() == Token::kNE_STRICT)) {
|
| - Register left = locs()->in(0).reg();
|
| - Register right = locs()->in(1).reg();
|
| - __ cmpl(left, right);
|
| - Condition cond = (kind() == Token::kEQ_STRICT) ? EQUAL : NOT_EQUAL;
|
| - EmitBranchOnCondition(compiler, cond);
|
| - return;
|
| - }
|
| // Relational or equality.
|
| if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
|
| if (ICDataWithBothClassIds(*ic_data(), kSmiCid)) {
|
| EmitSmiComparisonOp(compiler, *locs(), kind(), this,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| if (ICDataWithBothClassIds(*ic_data(), kDoubleCid)) {
|
| EmitDoubleComparisonOp(compiler, *locs(), kind(), this,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
| if (IsCheckedStrictEquals(*ic_data(), kind())) {
|
| EmitCheckedStrictEqual(compiler, *ic_data(), *locs(), kind(), this,
|
| - deopt_id(), token_pos(), try_index());
|
| + deopt_id(), try_index());
|
| return;
|
| }
|
|
|
| @@ -2137,6 +2117,27 @@
|
| }
|
|
|
|
|
| +LocationSummary* StrictCompareAndBranchInstr::MakeLocationSummary() const {
|
| + const int kNumInputs = 2;
|
| + const int kNumTemps = 0;
|
| + LocationSummary* locs =
|
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + locs->set_in(0, Location::RequiresRegister());
|
| + locs->set_in(1, Location::RequiresRegister());
|
| + return locs;
|
| +}
|
| +
|
| +
|
| +void StrictCompareAndBranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| + Register left = locs()->in(0).reg();
|
| + Register right = locs()->in(1).reg();
|
| + __ cmpl(left, right);
|
| + Condition cond = (kind() == Token::kEQ_STRICT) ? EQUAL : NOT_EQUAL;
|
| + EmitBranchOnCondition(compiler, cond);
|
| + return;
|
| +}
|
| +
|
| +
|
| LocationSummary* CheckClassComp::MakeLocationSummary() const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
|
|