Chromium Code Reviews| Index: runtime/vm/stub_code_ia32.cc |
| diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc |
| index a0cc04a252f04cbb635304f0a222047ac6196c13..007ee99d644e80a46bcd9dbca07a24e85f10f8c1 100644 |
| --- a/runtime/vm/stub_code_ia32.cc |
| +++ b/runtime/vm/stub_code_ia32.cc |
| @@ -519,7 +519,16 @@ static void GenerateDispatcherCode(Assembler* assembler, |
| __ pushl(EAX); // Receiver. |
| __ pushl(ECX); // ICData/MegamorphicCache. |
| __ pushl(EDX); // Arguments descriptor array. |
| + |
| + // Adjust arguments count. |
| + __ movl(EAX, FieldAddress(EDX, ArgumentsDescriptor::type_args_len_offset())); |
| __ movl(EDX, EDI); |
| + __ cmpl(EAX, Immediate(0)); |
|
Vyacheslav Egorov (Google)
2017/05/13 22:20:14
__ cmpl(FieldAddress(), Immediate(0))
regis
2017/05/18 21:02:13
Done.
|
| + Label args_count_ok; |
| + __ j(EQUAL, &args_count_ok, Assembler::kNearJump); |
| + __ addl(EDX, Immediate(Smi::RawValue(1))); // Include the type arguments. |
| + __ Bind(&args_count_ok); |
| + |
| // EDX: Smi-tagged arguments array length. |
| PushArgumentsArray(assembler); |
| const intptr_t kNumArgs = 4; |
| @@ -1158,7 +1167,15 @@ void StubCode::GenerateCallClosureNoSuchMethodStub(Assembler* assembler) { |
| __ pushl(EAX); // Receiver. |
| __ pushl(EDX); // Arguments descriptor array. |
| + // Adjust arguments count. |
| + __ movl(EAX, FieldAddress(EDX, ArgumentsDescriptor::type_args_len_offset())); |
| __ movl(EDX, EDI); |
| + __ cmpl(EAX, Immediate(0)); |
|
Vyacheslav Egorov (Google)
2017/05/13 22:20:14
ditto
regis
2017/05/18 21:02:13
Done.
|
| + Label args_count_ok; |
| + __ j(EQUAL, &args_count_ok, Assembler::kNearJump); |
| + __ addl(EDX, Immediate(Smi::RawValue(1))); // Include the type arguments. |
| + __ Bind(&args_count_ok); |
| + |
| // EDX: Smi-tagged arguments array length. |
| PushArgumentsArray(assembler); |