Skip to content

Commit 78f4837

Browse files
committed
deps: upgrade v8 to 4.1.0.21
PR-URL: #952 Reviewed-By: Fedor Indutny <[email protected]> Reviewed-By: Rod Vagg <[email protected]>
1 parent 739fda1 commit 78f4837

22 files changed

+368
-87
lines changed

deps/v8/include/v8.h

+13-4
Original file line numberDiff line numberDiff line change
@@ -3899,6 +3899,9 @@ class V8_EXPORT FunctionTemplate : public Template {
38993899
};
39003900

39013901

3902+
enum class PropertyHandlerFlags { kNone = 0, kAllCanRead = 1 };
3903+
3904+
39023905
struct NamedPropertyHandlerConfiguration {
39033906
NamedPropertyHandlerConfiguration(
39043907
/** Note: getter is required **/
@@ -3907,20 +3910,23 @@ struct NamedPropertyHandlerConfiguration {
39073910
GenericNamedPropertyQueryCallback query = 0,
39083911
GenericNamedPropertyDeleterCallback deleter = 0,
39093912
GenericNamedPropertyEnumeratorCallback enumerator = 0,
3910-
Handle<Value> data = Handle<Value>())
3913+
Handle<Value> data = Handle<Value>(),
3914+
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
39113915
: getter(getter),
39123916
setter(setter),
39133917
query(query),
39143918
deleter(deleter),
39153919
enumerator(enumerator),
3916-
data(data) {}
3920+
data(data),
3921+
flags(flags) {}
39173922

39183923
GenericNamedPropertyGetterCallback getter;
39193924
GenericNamedPropertySetterCallback setter;
39203925
GenericNamedPropertyQueryCallback query;
39213926
GenericNamedPropertyDeleterCallback deleter;
39223927
GenericNamedPropertyEnumeratorCallback enumerator;
39233928
Handle<Value> data;
3929+
PropertyHandlerFlags flags;
39243930
};
39253931

39263932

@@ -3932,20 +3938,23 @@ struct IndexedPropertyHandlerConfiguration {
39323938
IndexedPropertyQueryCallback query = 0,
39333939
IndexedPropertyDeleterCallback deleter = 0,
39343940
IndexedPropertyEnumeratorCallback enumerator = 0,
3935-
Handle<Value> data = Handle<Value>())
3941+
Handle<Value> data = Handle<Value>(),
3942+
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
39363943
: getter(getter),
39373944
setter(setter),
39383945
query(query),
39393946
deleter(deleter),
39403947
enumerator(enumerator),
3941-
data(data) {}
3948+
data(data),
3949+
flags(flags) {}
39423950

39433951
IndexedPropertyGetterCallback getter;
39443952
IndexedPropertySetterCallback setter;
39453953
IndexedPropertyQueryCallback query;
39463954
IndexedPropertyDeleterCallback deleter;
39473955
IndexedPropertyEnumeratorCallback enumerator;
39483956
Handle<Value> data;
3957+
PropertyHandlerFlags flags;
39493958
};
39503959

39513960

deps/v8/src/api.cc

+17-18
Original file line numberDiff line numberDiff line change
@@ -1306,23 +1306,19 @@ void ObjectTemplate::SetAccessor(v8::Handle<Name> name,
13061306

13071307
template <typename Getter, typename Setter, typename Query, typename Deleter,
13081308
typename Enumerator>
1309-
static void ObjectTemplateSetNamedPropertyHandler(ObjectTemplate* templ,
1310-
Getter getter, Setter setter,
1311-
Query query, Deleter remover,
1312-
Enumerator enumerator,
1313-
Handle<Value> data,
1314-
bool can_intercept_symbols) {
1309+
static void ObjectTemplateSetNamedPropertyHandler(
1310+
ObjectTemplate* templ, Getter getter, Setter setter, Query query,
1311+
Deleter remover, Enumerator enumerator, Handle<Value> data,
1312+
bool can_intercept_symbols, PropertyHandlerFlags flags) {
13151313
i::Isolate* isolate = Utils::OpenHandle(templ)->GetIsolate();
13161314
ENTER_V8(isolate);
13171315
i::HandleScope scope(isolate);
13181316
EnsureConstructor(isolate, templ);
13191317
i::FunctionTemplateInfo* constructor =
13201318
i::FunctionTemplateInfo::cast(Utils::OpenHandle(templ)->constructor());
13211319
i::Handle<i::FunctionTemplateInfo> cons(constructor);
1322-
i::Handle<i::Struct> struct_obj =
1323-
isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE);
1324-
i::Handle<i::InterceptorInfo> obj =
1325-
i::Handle<i::InterceptorInfo>::cast(struct_obj);
1320+
auto obj = i::Handle<i::InterceptorInfo>::cast(
1321+
isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE));
13261322

13271323
if (getter != 0) SET_FIELD_WRAPPED(obj, set_getter, getter);
13281324
if (setter != 0) SET_FIELD_WRAPPED(obj, set_setter, setter);
@@ -1331,6 +1327,8 @@ static void ObjectTemplateSetNamedPropertyHandler(ObjectTemplate* templ,
13311327
if (enumerator != 0) SET_FIELD_WRAPPED(obj, set_enumerator, enumerator);
13321328
obj->set_flags(0);
13331329
obj->set_can_intercept_symbols(can_intercept_symbols);
1330+
obj->set_all_can_read(static_cast<int>(flags) &
1331+
static_cast<int>(PropertyHandlerFlags::kAllCanRead));
13341332

13351333
if (data.IsEmpty()) {
13361334
data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
@@ -1345,15 +1343,16 @@ void ObjectTemplate::SetNamedPropertyHandler(
13451343
NamedPropertyQueryCallback query, NamedPropertyDeleterCallback remover,
13461344
NamedPropertyEnumeratorCallback enumerator, Handle<Value> data) {
13471345
ObjectTemplateSetNamedPropertyHandler(this, getter, setter, query, remover,
1348-
enumerator, data, false);
1346+
enumerator, data, false,
1347+
PropertyHandlerFlags::kNone);
13491348
}
13501349

13511350

13521351
void ObjectTemplate::SetHandler(
13531352
const NamedPropertyHandlerConfiguration& config) {
1354-
ObjectTemplateSetNamedPropertyHandler(this, config.getter, config.setter,
1355-
config.query, config.deleter,
1356-
config.enumerator, config.data, true);
1353+
ObjectTemplateSetNamedPropertyHandler(
1354+
this, config.getter, config.setter, config.query, config.deleter,
1355+
config.enumerator, config.data, true, config.flags);
13571356
}
13581357

13591358

@@ -1409,10 +1408,8 @@ void ObjectTemplate::SetHandler(
14091408
i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast(
14101409
Utils::OpenHandle(this)->constructor());
14111410
i::Handle<i::FunctionTemplateInfo> cons(constructor);
1412-
i::Handle<i::Struct> struct_obj =
1413-
isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE);
1414-
i::Handle<i::InterceptorInfo> obj =
1415-
i::Handle<i::InterceptorInfo>::cast(struct_obj);
1411+
auto obj = i::Handle<i::InterceptorInfo>::cast(
1412+
isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE));
14161413

14171414
if (config.getter != 0) SET_FIELD_WRAPPED(obj, set_getter, config.getter);
14181415
if (config.setter != 0) SET_FIELD_WRAPPED(obj, set_setter, config.setter);
@@ -1422,6 +1419,8 @@ void ObjectTemplate::SetHandler(
14221419
SET_FIELD_WRAPPED(obj, set_enumerator, config.enumerator);
14231420
}
14241421
obj->set_flags(0);
1422+
obj->set_all_can_read(static_cast<int>(config.flags) &
1423+
static_cast<int>(PropertyHandlerFlags::kAllCanRead));
14251424

14261425
v8::Local<v8::Value> data = config.data;
14271426
if (data.IsEmpty()) {

deps/v8/src/flags.cc

+1
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,7 @@ uint32_t FlagList::Hash() {
556556
for (size_t i = 0; i < num_flags; ++i) {
557557
Flag* current = &flags[i];
558558
if (!current->IsDefault()) {
559+
modified_args_as_string << i;
559560
modified_args_as_string << *current;
560561
}
561562
}

deps/v8/src/generator.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ function SetUpGenerators() {
9797
%AddNamedProperty(GeneratorObjectPrototype, symbolIterator,
9898
GeneratorObjectIterator, DONT_ENUM | DONT_DELETE | READ_ONLY);
9999
%AddNamedProperty(GeneratorObjectPrototype, "constructor",
100-
GeneratorFunctionPrototype, DONT_ENUM | DONT_DELETE | READ_ONLY);
100+
GeneratorFunctionPrototype, DONT_ENUM | READ_ONLY);
101101
%AddNamedProperty(GeneratorObjectPrototype,
102102
symbolToStringTag, "Generator", DONT_ENUM | READ_ONLY);
103103
%InternalSetPrototype(GeneratorFunctionPrototype, $Function.prototype);
104104
%AddNamedProperty(GeneratorFunctionPrototype,
105105
symbolToStringTag, "GeneratorFunction", DONT_ENUM | READ_ONLY);
106106
%SetCode(GeneratorFunctionPrototype, GeneratorFunctionPrototypeConstructor);
107107
%AddNamedProperty(GeneratorFunctionPrototype, "constructor",
108-
GeneratorFunction, DONT_ENUM | DONT_DELETE | READ_ONLY);
108+
GeneratorFunction, DONT_ENUM | READ_ONLY);
109109
%InternalSetPrototype(GeneratorFunction, $Function);
110110
%SetCode(GeneratorFunction, GeneratorFunctionConstructor);
111111
}

deps/v8/src/globals.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ namespace internal {
8484

8585
// Determine whether double field unboxing feature is enabled.
8686
#if (V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64)
87-
#define V8_DOUBLE_FIELDS_UNBOXING 1
87+
#define V8_DOUBLE_FIELDS_UNBOXING 0
8888
#else
8989
#define V8_DOUBLE_FIELDS_UNBOXING 0
9090
#endif

deps/v8/src/heap/mark-compact.cc

+5
Original file line numberDiff line numberDiff line change
@@ -3052,6 +3052,11 @@ void MarkCompactCollector::EvacuatePages() {
30523052
// have an emergency page and the space still has room for that.
30533053
if (space->HasEmergencyMemory() && space->CanExpand()) {
30543054
EvacuateLiveObjectsFromPage(p);
3055+
// Unlink the page from the list of pages here. We must not iterate
3056+
// over that page later (e.g. when scan on scavenge pages are
3057+
// processed). The page itself will be freed later and is still
3058+
// reachable from the evacuation candidates list.
3059+
p->Unlink();
30553060
} else {
30563061
// Without room for expansion evacuation is not guaranteed to succeed.
30573062
// Pessimistically abandon unevacuated pages.

deps/v8/src/heap/spaces.cc

+6-1
Original file line numberDiff line numberDiff line change
@@ -1142,7 +1142,12 @@ void PagedSpace::ReleasePage(Page* page) {
11421142
allocation_info_.set_limit(NULL);
11431143
}
11441144

1145-
page->Unlink();
1145+
// If page is still in a list, unlink it from that list.
1146+
if (page->next_chunk() != NULL) {
1147+
DCHECK(page->prev_chunk() != NULL);
1148+
page->Unlink();
1149+
}
1150+
11461151
if (page->IsFlagSet(MemoryChunk::CONTAINS_ONLY_DATA)) {
11471152
heap()->isolate()->memory_allocator()->Free(page);
11481153
} else {

deps/v8/src/ic/ic.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -2924,7 +2924,7 @@ RUNTIME_FUNCTION(LoadElementWithInterceptor) {
29242924
Handle<Object> result;
29252925
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
29262926
isolate, result,
2927-
JSObject::GetElementWithInterceptor(receiver, receiver, index));
2927+
JSObject::GetElementWithInterceptor(receiver, receiver, index, true));
29282928
return *result;
29292929
}
29302930

deps/v8/src/objects-inl.h

+1
Original file line numberDiff line numberDiff line change
@@ -5517,6 +5517,7 @@ ACCESSORS(InterceptorInfo, data, Object, kDataOffset)
55175517
SMI_ACCESSORS(InterceptorInfo, flags, kFlagsOffset)
55185518
BOOL_ACCESSORS(InterceptorInfo, flags, can_intercept_symbols,
55195519
kCanInterceptSymbolsBit)
5520+
BOOL_ACCESSORS(InterceptorInfo, flags, all_can_read, kAllCanReadBit)
55205521

55215522
ACCESSORS(CallHandlerInfo, callback, Object, kCallbackOffset)
55225523
ACCESSORS(CallHandlerInfo, data, Object, kDataOffset)

0 commit comments

Comments
 (0)