| Index: src/ia32/builtins-ia32.cc
 | 
| diff --git a/src/ia32/builtins-ia32.cc b/src/ia32/builtins-ia32.cc
 | 
| index 4666311af68f75f163f320ba7955be5001070a05..62bca6d23b7b4bde2e458345a08fe7733ef4062d 100644
 | 
| --- a/src/ia32/builtins-ia32.cc
 | 
| +++ b/src/ia32/builtins-ia32.cc
 | 
| @@ -74,50 +74,14 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm,
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void Builtins::Generate_JSConstructCall(MacroAssembler* masm) {
 | 
| +static void Generate_JSConstructStubHelper(MacroAssembler* masm,
 | 
| +                                           bool is_api_function,
 | 
| +                                           bool count_constructions) {
 | 
|    // ----------- S t a t e -------------
 | 
|    //  -- eax: number of arguments
 | 
|    //  -- edi: constructor function
 | 
|    // -----------------------------------
 | 
|  
 | 
| -  Label slow, non_function_call;
 | 
| -  // Check that function is not a smi.
 | 
| -  __ JumpIfSmi(edi, &non_function_call);
 | 
| -  // Check that function is a JSFunction.
 | 
| -  __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx);
 | 
| -  __ j(not_equal, &slow);
 | 
| -
 | 
| -  // Jump to the function-specific construct stub.
 | 
| -  __ mov(ebx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
 | 
| -  __ mov(ebx, FieldOperand(ebx, SharedFunctionInfo::kConstructStubOffset));
 | 
| -  __ lea(ebx, FieldOperand(ebx, Code::kHeaderSize));
 | 
| -  __ jmp(ebx);
 | 
| -
 | 
| -  // edi: called object
 | 
| -  // eax: number of arguments
 | 
| -  // ecx: object map
 | 
| -  Label do_call;
 | 
| -  __ bind(&slow);
 | 
| -  __ CmpInstanceType(ecx, JS_FUNCTION_PROXY_TYPE);
 | 
| -  __ j(not_equal, &non_function_call);
 | 
| -  __ GetBuiltinEntry(edx, Builtins::CALL_FUNCTION_PROXY_AS_CONSTRUCTOR);
 | 
| -  __ jmp(&do_call);
 | 
| -
 | 
| -  __ bind(&non_function_call);
 | 
| -  __ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION_AS_CONSTRUCTOR);
 | 
| -  __ bind(&do_call);
 | 
| -  // Set expected number of arguments to zero (not changing eax).
 | 
| -  __ Set(ebx, Immediate(0));
 | 
| -  Handle<Code> arguments_adaptor =
 | 
| -      masm->isolate()->builtins()->ArgumentsAdaptorTrampoline();
 | 
| -  __ SetCallKind(ecx, CALL_AS_METHOD);
 | 
| -  __ jmp(arguments_adaptor, RelocInfo::CODE_TARGET);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -static void Generate_JSConstructStubHelper(MacroAssembler* masm,
 | 
| -                                           bool is_api_function,
 | 
| -                                           bool count_constructions) {
 | 
|    // Should never count constructions for api objects.
 | 
|    ASSERT(!is_api_function || !count_constructions);
 | 
|  
 | 
| @@ -454,8 +418,8 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
 | 
|  
 | 
|      // Invoke the code.
 | 
|      if (is_construct) {
 | 
| -      __ call(masm->isolate()->builtins()->JSConstructCall(),
 | 
| -              RelocInfo::CODE_TARGET);
 | 
| +      CallConstructStub stub(NO_CALL_FUNCTION_FLAGS);
 | 
| +      __ CallStub(&stub);
 | 
|      } else {
 | 
|        ParameterCount actual(eax);
 | 
|        __ InvokeFunction(edi, actual, CALL_FUNCTION,
 | 
| 
 |