8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 83861fb commit 456d250Copy full SHA for 456d250
common.gypi
@@ -39,7 +39,7 @@
39
40
# Reset this number to 0 on major V8 upgrades.
41
# Increment by one for each non-official patch applied to deps/v8.
42
- 'v8_embedder_string': '-node.21',
+ 'v8_embedder_string': '-node.22',
43
44
##### V8 defaults for Node.js #####
45
deps/v8/src/ic/accessor-assembler.cc
@@ -1053,8 +1053,7 @@ void AccessorAssembler::HandleStoreICHandlerCase(
1053
{
1054
Comment("store_interceptor");
1055
TailCallRuntime(Runtime::kStorePropertyWithInterceptor, p->context(),
1056
- p->value(), p->slot(), p->vector(), p->receiver(),
1057
- p->name());
+ p->value(), p->receiver(), p->name());
1058
}
1059
1060
BIND(&if_slow);
@@ -1516,8 +1515,7 @@ void AccessorAssembler::HandleStoreICProtoHandler(
1516
1515
1517
1518
Label if_add_normal(this), if_store_global_proxy(this), if_api_setter(this),
1519
- if_accessor(this), if_native_data_property(this), if_slow(this),
1520
- if_interceptor(this);
+ if_accessor(this), if_native_data_property(this), if_slow(this);
1521
1522
CSA_ASSERT(this, TaggedIsSmi(smi_handler));
1523
TNode<Int32T> handler_word = SmiToInt32(CAST(smi_handler));
@@ -1547,9 +1545,6 @@ void AccessorAssembler::HandleStoreICProtoHandler(
1547
1545
GotoIf(Word32Equal(handler_kind, Int32Constant(StoreHandler::kSlow)),
1548
1546
&if_slow);
1549
1550
- GotoIf(Word32Equal(handler_kind, Int32Constant(StoreHandler::kInterceptor)),
1551
- &if_interceptor);
1552
-
1553
GotoIf(
1554
Word32Equal(handler_kind,
1555
Int32Constant(StoreHandler::kApiSetterHolderIsPrototype)),
@@ -1574,14 +1569,6 @@ void AccessorAssembler::HandleStoreICProtoHandler(
1574
1569
1575
1570
1576
1571
1577
- BIND(&if_interceptor);
1578
- {
1579
- Comment("store_interceptor");
1580
- TailCallRuntime(Runtime::kStorePropertyWithInterceptor, p->context(),
1581
1582
1583
- }
1584
1585
1572
BIND(&if_add_normal);
1586
1573
1587
// This is a case of "transitioning store" to a dictionary mode object
deps/v8/src/ic/ic.cc
@@ -1308,8 +1308,7 @@ bool StoreIC::LookupForWrite(LookupIterator* it, Handle<Object> value,
1308
case LookupIterator::INTERCEPTOR: {
1309
Handle<JSObject> holder = it->GetHolder<JSObject>();
1310
InterceptorInfo info = holder->GetNamedInterceptor();
1311
- if ((it->HolderIsReceiverOrHiddenPrototype() &&
1312
- !info.non_masking()) ||
+ if (it->HolderIsReceiverOrHiddenPrototype() ||
1313
!info.getter().IsUndefined(isolate()) ||
1314
!info.query().IsUndefined(isolate())) {
1315
return true;
@@ -2718,23 +2717,20 @@ RUNTIME_FUNCTION(Runtime_LoadPropertyWithInterceptor) {
2718
2717
2719
RUNTIME_FUNCTION(Runtime_StorePropertyWithInterceptor) {
2720
HandleScope scope(isolate);
2721
- DCHECK_EQ(5, args.length());
+ DCHECK_EQ(3, args.length());
2722
// Runtime functions don't follow the IC's calling convention.
2723
Handle<Object> value = args.at(0);
2724
- Handle<Smi> slot = args.at<Smi>(1);
2725
- Handle<FeedbackVector> vector = args.at<FeedbackVector>(2);
2726
- Handle<JSObject> receiver = args.at<JSObject>(3);
2727
- Handle<Name> name = args.at<Name>(4);
2728
- FeedbackSlot vector_slot = FeedbackVector::ToSlot(slot->value());
+ Handle<JSObject> receiver = args.at<JSObject>(1);
+ Handle<Name> name = args.at<Name>(2);
2729
2730
// TODO(ishell): Cache interceptor_holder in the store handler like we do
2731
// for LoadHandler::kInterceptor case.
2732
Handle<JSObject> interceptor_holder = receiver;
2733
- if (receiver->IsJSGlobalProxy()) {
2734
- FeedbackSlotKind kind = vector->GetKind(vector_slot);
2735
- if (IsStoreGlobalICKind(kind)) {
2736
- interceptor_holder = Handle<JSObject>::cast(isolate->global_object());
2737
+ if (receiver->IsJSGlobalProxy() &&
+ (!receiver->HasNamedInterceptor() ||
+ receiver->GetNamedInterceptor().non_masking())) {
+ interceptor_holder =
+ handle(JSObject::cast(receiver->map().prototype()), isolate);
2738
2739
DCHECK(interceptor_holder->HasNamedInterceptor());
2740
Handle<InterceptorInfo> interceptor(interceptor_holder->GetNamedInterceptor(),