Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index f4f3b2bed3430fba38796b61d2ede5d775c114b6..9efedc67325065b134dffb12e4a17e4cc99c0421 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -740,7 +740,7 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
// holder haven't changed and thus we can use cached constant function. |
if (*interceptor_holder != lookup->holder()) { |
stub_compiler_->CheckPrototypes( |
- IC::CurrentTypeOf(interceptor_holder, masm->isolate()), receiver, |
+ IC::CurrentTypeOf(interceptor_holder, masm->isolate()), holder, |
handle(lookup->holder()), scratch1, scratch2, scratch3, |
name, depth2, miss); |
} else { |
@@ -756,7 +756,7 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
GenerateFastApiCall(masm, optimization, arguments_.immediate()); |
} else { |
Handle<JSFunction> fun = optimization.constant_function(); |
- stub_compiler_->GenerateJumpFunctionIgnoreReceiver(fun); |
+ stub_compiler_->GenerateJumpFunction(object, fun); |
} |
// Deferred code for fast API call case---clean preallocated space. |
@@ -808,15 +808,17 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
Label* interceptor_succeeded) { |
{ |
FrameScope scope(masm, StackFrame::INTERNAL); |
- __ push(holder); // Save the holder. |
- __ push(name_); // Save the name. |
+ __ push(receiver); |
+ __ push(holder); |
+ __ push(name_); |
CompileCallLoadPropertyWithInterceptor( |
masm, receiver, holder, name_, holder_obj, |
IC::kLoadPropertyWithInterceptorOnly); |
- __ pop(name_); // Restore the name. |
- __ pop(receiver); // Restore the holder. |
+ __ pop(name_); |
+ __ pop(holder); |
+ __ pop(receiver); |
// Leave the internal frame. |
} |