| Index: runtime/vm/intermediate_language_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_ia32.cc (revision 24193)
|
| +++ runtime/vm/intermediate_language_ia32.cc (working copy)
|
| @@ -108,17 +108,6 @@
|
| }
|
|
|
|
|
| -LocationSummary* ClosureCallInstr::MakeLocationSummary() const {
|
| - const intptr_t kNumInputs = 0;
|
| - const intptr_t kNumTemps = 1;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| - result->set_out(Location::RegisterLocation(EAX));
|
| - result->set_temp(0, Location::RegisterLocation(EDX)); // Arg. descriptor.
|
| - return result;
|
| -}
|
| -
|
| -
|
| LocationSummary* LoadLocalInstr::MakeLocationSummary() const {
|
| const intptr_t kNumInputs = 0;
|
| return LocationSummary::Make(kNumInputs,
|
| @@ -368,8 +357,12 @@
|
| equality_ic_data = original_ic_data.AsUnaryClassChecks();
|
| }
|
| } else {
|
| + const Array& arguments_descriptor =
|
| + Array::ZoneHandle(ArgumentsDescriptor::New(kNumberOfArguments,
|
| + kNoArgumentNames));
|
| equality_ic_data = ICData::New(compiler->parsed_function().function(),
|
| Symbols::EqualOperator(),
|
| + arguments_descriptor,
|
| deopt_id,
|
| kNumArgumentsChecked);
|
| }
|
| @@ -1012,8 +1005,12 @@
|
| relational_ic_data = ic_data()->AsUnaryClassChecks();
|
| }
|
| } else {
|
| + const Array& arguments_descriptor =
|
| + Array::ZoneHandle(ArgumentsDescriptor::New(kNumArguments,
|
| + Array::ZoneHandle()));
|
| relational_ic_data = ICData::New(compiler->parsed_function().function(),
|
| function_name,
|
| + arguments_descriptor,
|
| deopt_id(),
|
| kNumArgsChecked);
|
| }
|
| @@ -4651,6 +4648,17 @@
|
| }
|
|
|
|
|
| +LocationSummary* ClosureCallInstr::MakeLocationSummary() const {
|
| + const intptr_t kNumInputs = 0;
|
| + const intptr_t kNumTemps = 1;
|
| + LocationSummary* result =
|
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + result->set_out(Location::RegisterLocation(EAX));
|
| + result->set_temp(0, Location::RegisterLocation(EDX)); // Arg. descriptor.
|
| + return result;
|
| +}
|
| +
|
| +
|
| void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The arguments to the stub include the closure, as does the arguments
|
| // descriptor.
|
| @@ -4660,6 +4668,7 @@
|
| Array::ZoneHandle(ArgumentsDescriptor::New(argument_count,
|
| argument_names()));
|
| __ LoadObject(temp_reg, arguments_descriptor);
|
| + ASSERT(temp_reg == EDX);
|
| compiler->GenerateDartCall(deopt_id(),
|
| token_pos(),
|
| &StubCode::CallClosureFunctionLabel(),
|
|
|