MIPS: Fix patching the receiver (global object -> global proxy) after the interceptor.
Port r18286 (f6277add) Original commit message: This is a temporary fix that will be replaced by loading the proxy from the target function. BUG= R=gergely@homejinni.com Review URL: https://codereview.chromium.org/103453003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
4b9730b1b3
commit
6b65e909e0
@ -1007,7 +1007,7 @@ class CallInterceptorCompiler BASE_EMBEDDED {
|
|||||||
// holder haven't changed and thus we can use cached constant function.
|
// holder haven't changed and thus we can use cached constant function.
|
||||||
if (*interceptor_holder != lookup->holder()) {
|
if (*interceptor_holder != lookup->holder()) {
|
||||||
stub_compiler_->CheckPrototypes(
|
stub_compiler_->CheckPrototypes(
|
||||||
IC::CurrentTypeOf(interceptor_holder, masm->isolate()), receiver,
|
IC::CurrentTypeOf(interceptor_holder, masm->isolate()), holder,
|
||||||
handle(lookup->holder()), scratch1, scratch2, scratch3,
|
handle(lookup->holder()), scratch1, scratch2, scratch3,
|
||||||
name, depth2, miss);
|
name, depth2, miss);
|
||||||
} else {
|
} else {
|
||||||
@ -1024,7 +1024,7 @@ class CallInterceptorCompiler BASE_EMBEDDED {
|
|||||||
masm, optimization, arguments_.immediate(), false);
|
masm, optimization, arguments_.immediate(), false);
|
||||||
} else {
|
} else {
|
||||||
Handle<JSFunction> function = optimization.constant_function();
|
Handle<JSFunction> function = optimization.constant_function();
|
||||||
stub_compiler_->GenerateJumpFunctionIgnoreReceiver(function);
|
stub_compiler_->GenerateJumpFunction(object, function);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deferred code for fast API call case---clean preallocated space.
|
// Deferred code for fast API call case---clean preallocated space.
|
||||||
@ -1083,7 +1083,7 @@ class CallInterceptorCompiler BASE_EMBEDDED {
|
|||||||
masm, receiver, holder, name_, holder_obj,
|
masm, receiver, holder, name_, holder_obj,
|
||||||
IC::kLoadPropertyWithInterceptorOnly);
|
IC::kLoadPropertyWithInterceptorOnly);
|
||||||
__ pop(name_); // Restore the name.
|
__ pop(name_); // Restore the name.
|
||||||
__ pop(receiver); // Restore the holder.
|
__ pop(holder); // Restore the 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);
|
||||||
|
Loading…
Reference in New Issue
Block a user