summaryrefslogtreecommitdiff
path: root/deps/v8/src/ic/ic.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ic/ic.cc')
-rw-r--r--deps/v8/src/ic/ic.cc22
1 files changed, 9 insertions, 13 deletions
diff --git a/deps/v8/src/ic/ic.cc b/deps/v8/src/ic/ic.cc
index 4ac5fd7abe..1b481cd817 100644
--- a/deps/v8/src/ic/ic.cc
+++ b/deps/v8/src/ic/ic.cc
@@ -1308,8 +1308,7 @@ bool StoreIC::LookupForWrite(LookupIterator* it, Handle<Object> value,
case LookupIterator::INTERCEPTOR: {
Handle<JSObject> holder = it->GetHolder<JSObject>();
InterceptorInfo info = holder->GetNamedInterceptor();
- if ((it->HolderIsReceiverOrHiddenPrototype() &&
- !info.non_masking()) ||
+ if (it->HolderIsReceiverOrHiddenPrototype() ||
!info.getter().IsUndefined(isolate()) ||
!info.query().IsUndefined(isolate())) {
return true;
@@ -2718,23 +2717,20 @@ RUNTIME_FUNCTION(Runtime_LoadPropertyWithInterceptor) {
RUNTIME_FUNCTION(Runtime_StorePropertyWithInterceptor) {
HandleScope scope(isolate);
- DCHECK_EQ(5, args.length());
+ DCHECK_EQ(3, args.length());
// Runtime functions don't follow the IC's calling convention.
Handle<Object> value = args.at(0);
- Handle<Smi> slot = args.at<Smi>(1);
- Handle<FeedbackVector> vector = args.at<FeedbackVector>(2);
- Handle<JSObject> receiver = args.at<JSObject>(3);
- Handle<Name> name = args.at<Name>(4);
- FeedbackSlot vector_slot = FeedbackVector::ToSlot(slot->value());
+ Handle<JSObject> receiver = args.at<JSObject>(1);
+ Handle<Name> name = args.at<Name>(2);
// TODO(ishell): Cache interceptor_holder in the store handler like we do
// for LoadHandler::kInterceptor case.
Handle<JSObject> interceptor_holder = receiver;
- if (receiver->IsJSGlobalProxy()) {
- FeedbackSlotKind kind = vector->GetKind(vector_slot);
- if (IsStoreGlobalICKind(kind)) {
- interceptor_holder = Handle<JSObject>::cast(isolate->global_object());
- }
+ if (receiver->IsJSGlobalProxy() &&
+ (!receiver->HasNamedInterceptor() ||
+ receiver->GetNamedInterceptor().non_masking())) {
+ interceptor_holder =
+ handle(JSObject::cast(receiver->map().prototype()), isolate);
}
DCHECK(interceptor_holder->HasNamedInterceptor());
Handle<InterceptorInfo> interceptor(interceptor_holder->GetNamedInterceptor(),