MIPS: Properly restore the receiver after the interceptor call.

Port r18289 (6bc886d3)

BUG=
R=gergely@homejinni.com

Review URL: https://codereview.chromium.org/110943003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18294 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
palfia@homejinni.com 2013-12-10 23:01:40 +00:00
parent 6b65e909e0
commit 925837f0ca

View File

@ -1078,12 +1078,13 @@ class CallInterceptorCompiler BASE_EMBEDDED {
{ {
FrameScope scope(masm, StackFrame::INTERNAL); FrameScope scope(masm, StackFrame::INTERNAL);
__ Push(holder, name_); __ Push(receiver, holder, name_);
CompileCallLoadPropertyWithInterceptor( CompileCallLoadPropertyWithInterceptor(
masm, receiver, holder, name_, holder_obj, masm, receiver, holder, name_, holder_obj,
IC::kLoadPropertyWithInterceptorOnly); IC::kLoadPropertyWithInterceptorOnly);
__ pop(name_); // Restore the name. __ pop(receiver);
__ pop(holder); // Restore the holder. __ pop(name_);
__ pop(holder);
} }
// If interceptor returns no-result sentinel, call the constant function. // If interceptor returns no-result sentinel, call the constant function.
__ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex); __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex);