Chromium Code Reviews| 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)); |
|
siva
2013/06/19 23:07:15
ZoneHandle not needed?
srdjan
2013/06/20 00:12:34
Done.
|
| 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())); |
|
siva
2013/06/19 23:07:15
ZoneHandle not needed and Object::null_array()
srdjan
2013/06/20 00:12:34
Done.
|
| 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(), |