| Index: vm/intermediate_language_ia32.cc
 | 
| ===================================================================
 | 
| --- vm/intermediate_language_ia32.cc	(revision 8699)
 | 
| +++ vm/intermediate_language_ia32.cc	(working copy)
 | 
| @@ -480,14 +480,18 @@
 | 
|    // Push the result place holder initialized to NULL.
 | 
|    __ PushObject(Object::ZoneHandle());
 | 
|    // Pass a pointer to the first argument in EAX.
 | 
| -  if (!has_optional_parameters()) {
 | 
| -    __ leal(EAX, Address(EBP, (1 + argument_count()) * kWordSize));
 | 
| +  intptr_t arg_count = argument_count();
 | 
| +  if (is_implicit_native_closure()) {
 | 
| +    arg_count += 1;
 | 
| +  }
 | 
| +  if (!has_optional_parameters() && !is_implicit_native_closure()) {
 | 
| +    __ leal(EAX, Address(EBP, (1 + arg_count) * kWordSize));
 | 
|    } else {
 | 
|      __ leal(EAX,
 | 
|              Address(EBP, ParsedFunction::kFirstLocalSlotIndex * kWordSize));
 | 
|    }
 | 
|    __ movl(ECX, Immediate(reinterpret_cast<uword>(native_c_function())));
 | 
| -  __ movl(EDX, Immediate(argument_count()));
 | 
| +  __ movl(EDX, Immediate(arg_count));
 | 
|    compiler->GenerateCall(token_index(),
 | 
|                           try_index(),
 | 
|                           &StubCode::CallNativeCFunctionLabel(),
 | 
| 
 |