Chromium Code Reviews| Index: vm/intermediate_language_x64.cc |
| =================================================================== |
| --- vm/intermediate_language_x64.cc (revision 10446) |
| +++ vm/intermediate_language_x64.cc (working copy) |
| @@ -2005,7 +2005,13 @@ |
| // Otherwise polymorphic dispatch. |
| } |
| // Call. |
| - return Computation::MakeCallSummary(); |
| + const intptr_t kNumInputs = 2; |
| + const intptr_t kNumTemps = 0; |
| + LocationSummary* locs = |
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + locs->set_in(0, Location::RegisterLocation(RAX)); |
| + locs->set_in(1, Location::RegisterLocation(RCX)); |
|
srdjan
2012/08/09 19:56:49
ditto
|
| + return locs; |
| } |
| @@ -2038,6 +2044,10 @@ |
| } |
| // Otherwise polymorphic dispatch? |
| } |
| + Register left = locs()->in(0).reg(); |
| + Register right = locs()->in(1).reg(); |
| + __ pushq(left); |
| + __ pushq(right); |
| // Not equal is always split into '==' and negate, |
| Condition branch_condition = (kind() == Token::kNE) ? NOT_EQUAL : EQUAL; |
| Token::Kind call_kind = (kind() == Token::kNE) ? Token::kEQ : kind(); |
| @@ -2056,8 +2066,7 @@ |
| kNumArguments, |
| Array::ZoneHandle(), // No optional arguments. |
| kNumArgsChecked); |
| - ASSERT(locs()->out().reg() == RAX); |
| - __ CompareObject(locs()->out().reg(), compiler->bool_true()); |
| + __ CompareObject(RAX, compiler->bool_true()); |
| EmitBranchOnCondition(compiler, branch_condition); |
| } |