libv8 6.0.286.44.0beta1 → 6.0.286.54.0beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -2
- data/ext/libv8/location.rb +1 -1
- data/ext/libv8/paths.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/patches/0001-Build-a-standalone-static-library.patch +1 -1
- data/patches/0002-Don-t-compile-unnecessary-stuff.patch +9 -11
- data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +1 -1
- data/patches/0004-Do-not-embed-debug-symbols-in-macOS-libraries.patch +1 -1
- data/patches/0005-Fix-GCC-7-build-errors.patch +1 -1
- data/spec/location_spec.rb +1 -1
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/win_tools.bat +1 -1
- data/vendor/depot_tools/cipd +2 -3
- data/vendor/depot_tools/cipd.ps1 +2 -6
- data/vendor/depot_tools/cipd_bin_setup.bat +1 -1
- data/vendor/depot_tools/cipd_bin_setup.sh +3 -1
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cpplint.py +0 -31
- data/vendor/depot_tools/gclient.py +162 -88
- data/vendor/depot_tools/gclient_utils.py +5 -0
- data/vendor/depot_tools/gerrit_client.py +0 -0
- data/vendor/depot_tools/gerrit_util.py +2 -2
- data/vendor/depot_tools/git_cl.py +25 -12
- data/vendor/depot_tools/infra/config/recipes.cfg +2 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/led.bat +1 -1
- data/vendor/depot_tools/my_activity.py +26 -16
- data/vendor/depot_tools/presubmit_canned_checks.py +1 -1
- data/vendor/depot_tools/presubmit_support.py +15 -4
- data/vendor/depot_tools/recipes/README.recipes.md +21 -14
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +18 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_empty_revision.json +156 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +27 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +11 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +8 -9
- data/vendor/depot_tools/recipes/recipes.py +2 -2
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +162 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +53 -0
- data/vendor/depot_tools/update_depot_tools +13 -7
- data/vendor/depot_tools/update_depot_tools.bat +7 -2
- data/vendor/depot_tools/vpython +1 -1
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +7 -3
- data/vendor/v8/AUTHORS +1 -0
- data/vendor/v8/codereview.settings +2 -4
- data/vendor/v8/include/v8-version.h +1 -1
- data/vendor/v8/src/builtins/builtins-array-gen.cc +1 -0
- data/vendor/v8/src/compiler/escape-analysis.cc +1 -4
- data/vendor/v8/src/compiler/load-elimination.cc +1 -1
- data/vendor/v8/src/d8.cc +1 -0
- data/vendor/v8/src/map-updater.cc +39 -2
- data/vendor/v8/src/map-updater.h +9 -2
- data/vendor/v8/src/objects-debug.cc +7 -1
- data/vendor/v8/src/objects.cc +33 -6
- data/vendor/v8/src/objects.h +0 -1
- data/vendor/v8/src/objects/map-inl.h +15 -0
- data/vendor/v8/src/objects/map.h +6 -0
- data/vendor/v8/src/v8.gyp +7 -0
- data/vendor/v8/src/wasm/wasm-module.cc +10 -8
- data/vendor/v8/tools/run-tests.py +1 -1
- metadata +6 -5
- data/vendor/depot_tools/win_toolchain/7z/7z.dll +0 -0
- data/vendor/depot_tools/win_toolchain/7z/7z.exe +0 -0
- data/vendor/depot_tools/win_toolchain/7z/LICENSE +0 -57
@@ -11,7 +11,7 @@
|
|
11
11
|
#define V8_MAJOR_VERSION 6
|
12
12
|
#define V8_MINOR_VERSION 0
|
13
13
|
#define V8_BUILD_NUMBER 286
|
14
|
-
#define V8_PATCH_LEVEL
|
14
|
+
#define V8_PATCH_LEVEL 54
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|
@@ -117,6 +117,7 @@ class ArrayBuiltinCodeStubAssembler : public CodeStubAssembler {
|
|
117
117
|
|
118
118
|
BIND(&fast);
|
119
119
|
{
|
120
|
+
GotoIf(SmiNotEqual(LoadJSArrayLength(a()), to_.value()), &runtime);
|
120
121
|
kind = EnsureArrayPushable(a(), &runtime);
|
121
122
|
GotoIf(IsElementsKindGreaterThan(kind, FAST_HOLEY_SMI_ELEMENTS),
|
122
123
|
&object_push_pre);
|
@@ -438,19 +438,16 @@ bool VirtualObject::MergeFields(size_t i, Node* at, MergeCache* cache,
|
|
438
438
|
int value_input_count = static_cast<int>(cache->fields().size());
|
439
439
|
Node* rep = GetField(i);
|
440
440
|
if (!rep || !IsCreatedPhi(i)) {
|
441
|
-
Type* phi_type = Type::None();
|
442
441
|
for (Node* input : cache->fields()) {
|
443
442
|
CHECK_NOT_NULL(input);
|
444
443
|
CHECK(!input->IsDead());
|
445
|
-
Type* input_type = NodeProperties::GetType(input);
|
446
|
-
phi_type = Type::Union(phi_type, input_type, graph->zone());
|
447
444
|
}
|
448
445
|
Node* control = NodeProperties::GetControlInput(at);
|
449
446
|
cache->fields().push_back(control);
|
450
447
|
Node* phi = graph->NewNode(
|
451
448
|
common->Phi(MachineRepresentation::kTagged, value_input_count),
|
452
449
|
value_input_count + 1, &cache->fields().front());
|
453
|
-
NodeProperties::SetType(phi,
|
450
|
+
NodeProperties::SetType(phi, Type::Any());
|
454
451
|
SetField(i, phi, true);
|
455
452
|
|
456
453
|
#ifdef DEBUG
|
@@ -142,7 +142,7 @@ bool IsCompatibleCheck(Node const* a, Node const* b) {
|
|
142
142
|
|
143
143
|
Node* LoadElimination::AbstractChecks::Lookup(Node* node) const {
|
144
144
|
for (Node* const check : nodes_) {
|
145
|
-
if (check && IsCompatibleCheck(check, node)) {
|
145
|
+
if (check && !check->IsDead() && IsCompatibleCheck(check, node)) {
|
146
146
|
return check;
|
147
147
|
}
|
148
148
|
}
|
data/vendor/v8/src/d8.cc
CHANGED
@@ -135,6 +135,7 @@ class ShellArrayBufferAllocator : public ArrayBufferAllocatorBase {
|
|
135
135
|
return malloc(length);
|
136
136
|
#endif
|
137
137
|
}
|
138
|
+
using ArrayBufferAllocatorBase::Free;
|
138
139
|
void Free(void* data, size_t length) override {
|
139
140
|
#if USE_VM
|
140
141
|
if (RoundToPageSize(&length)) {
|
@@ -123,6 +123,9 @@ Handle<Map> MapUpdater::ReconfigureToDataField(int descriptor,
|
|
123
123
|
new_field_type_ = field_type;
|
124
124
|
}
|
125
125
|
|
126
|
+
GeneralizeIfTransitionableFastElementsKind(
|
127
|
+
&new_constness_, &new_representation_, &new_field_type_);
|
128
|
+
|
126
129
|
if (TryRecofigureToDataFieldInplace() == kEnd) return result_map_;
|
127
130
|
if (FindRootMap() == kEnd) return result_map_;
|
128
131
|
if (FindTargetMap() == kEnd) return result_map_;
|
@@ -134,6 +137,8 @@ Handle<Map> MapUpdater::ReconfigureToDataField(int descriptor,
|
|
134
137
|
Handle<Map> MapUpdater::ReconfigureElementsKind(ElementsKind elements_kind) {
|
135
138
|
DCHECK_EQ(kInitialized, state_);
|
136
139
|
new_elements_kind_ = elements_kind;
|
140
|
+
is_transitionable_fast_elements_kind_ =
|
141
|
+
IsTransitionableFastElementsKind(new_elements_kind_);
|
137
142
|
|
138
143
|
if (FindRootMap() == kEnd) return result_map_;
|
139
144
|
if (FindTargetMap() == kEnd) return result_map_;
|
@@ -153,6 +158,28 @@ Handle<Map> MapUpdater::Update() {
|
|
153
158
|
return result_map_;
|
154
159
|
}
|
155
160
|
|
161
|
+
void MapUpdater::GeneralizeIfTransitionableFastElementsKind(
|
162
|
+
PropertyConstness* constness, Representation* representation,
|
163
|
+
Handle<FieldType>* field_type) {
|
164
|
+
DCHECK_EQ(is_transitionable_fast_elements_kind_,
|
165
|
+
IsTransitionableFastElementsKind(new_elements_kind_));
|
166
|
+
if (is_transitionable_fast_elements_kind_ &&
|
167
|
+
Map::IsInplaceGeneralizableField(*constness, *representation,
|
168
|
+
**field_type)) {
|
169
|
+
// We don't support propagation of field generalization through elements
|
170
|
+
// kind transitions because they are inserted into the transition tree
|
171
|
+
// before field transitions. In order to avoid complexity of handling
|
172
|
+
// such a case we ensure that all maps with transitionable elements kinds
|
173
|
+
// do not have fields that can be generalized in-place (without creation
|
174
|
+
// of a new map).
|
175
|
+
if (FLAG_track_constant_fields && FLAG_modify_map_inplace) {
|
176
|
+
*constness = kMutable;
|
177
|
+
}
|
178
|
+
DCHECK(representation->IsHeapObject());
|
179
|
+
*field_type = FieldType::Any(isolate_);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
156
183
|
void MapUpdater::GeneralizeField(Handle<Map> map, int modify_index,
|
157
184
|
PropertyConstness new_constness,
|
158
185
|
Representation new_representation,
|
@@ -489,6 +516,9 @@ Handle<DescriptorArray> MapUpdater::BuildDescriptorArray() {
|
|
489
516
|
old_details.representation(), old_field_type, next_representation,
|
490
517
|
target_field_type, isolate_);
|
491
518
|
|
519
|
+
GeneralizeIfTransitionableFastElementsKind(
|
520
|
+
&next_constness, &next_representation, &next_field_type);
|
521
|
+
|
492
522
|
Handle<Object> wrapped_type(Map::WrapFieldType(next_field_type));
|
493
523
|
Descriptor d;
|
494
524
|
if (next_kind == kData) {
|
@@ -532,10 +562,17 @@ Handle<DescriptorArray> MapUpdater::BuildDescriptorArray() {
|
|
532
562
|
|
533
563
|
Descriptor d;
|
534
564
|
if (next_location == kField) {
|
535
|
-
Handle<FieldType>
|
565
|
+
Handle<FieldType> next_field_type =
|
536
566
|
GetOrComputeFieldType(i, old_details.location(), next_representation);
|
537
567
|
|
538
|
-
|
568
|
+
// If the |new_elements_kind_| is still transitionable then the old map's
|
569
|
+
// elements kind is also transitionable and therefore the old descriptors
|
570
|
+
// array must already have non in-place generalizable fields.
|
571
|
+
CHECK_IMPLIES(is_transitionable_fast_elements_kind_,
|
572
|
+
!Map::IsInplaceGeneralizableField(
|
573
|
+
next_constness, next_representation, *next_field_type));
|
574
|
+
|
575
|
+
Handle<Object> wrapped_type(Map::WrapFieldType(next_field_type));
|
539
576
|
Descriptor d;
|
540
577
|
if (next_kind == kData) {
|
541
578
|
DCHECK_IMPLIES(!FLAG_track_constant_fields, next_constness == kMutable);
|
data/vendor/v8/src/map-updater.h
CHANGED
@@ -49,7 +49,9 @@ class MapUpdater {
|
|
49
49
|
old_map_(old_map),
|
50
50
|
old_descriptors_(old_map->instance_descriptors(), isolate_),
|
51
51
|
old_nof_(old_map_->NumberOfOwnDescriptors()),
|
52
|
-
new_elements_kind_(old_map_->elements_kind())
|
52
|
+
new_elements_kind_(old_map_->elements_kind()),
|
53
|
+
is_transitionable_fast_elements_kind_(
|
54
|
+
IsTransitionableFastElementsKind(new_elements_kind_)) {
|
53
55
|
// We shouldn't try to update remote objects.
|
54
56
|
DCHECK(!old_map->FindRootMap()->GetConstructor()->IsFunctionTemplateInfo());
|
55
57
|
}
|
@@ -146,6 +148,10 @@ class MapUpdater {
|
|
146
148
|
Handle<DescriptorArray> descriptors, int descriptor,
|
147
149
|
PropertyLocation location, Representation representation);
|
148
150
|
|
151
|
+
inline void GeneralizeIfTransitionableFastElementsKind(
|
152
|
+
PropertyConstness* constness, Representation* representation,
|
153
|
+
Handle<FieldType>* field_type);
|
154
|
+
|
149
155
|
void GeneralizeField(Handle<Map> map, int modify_index,
|
150
156
|
PropertyConstness new_constness,
|
151
157
|
Representation new_representation,
|
@@ -161,8 +167,9 @@ class MapUpdater {
|
|
161
167
|
|
162
168
|
State state_ = kInitialized;
|
163
169
|
ElementsKind new_elements_kind_;
|
170
|
+
bool is_transitionable_fast_elements_kind_;
|
164
171
|
|
165
|
-
// If |modified_descriptor_| is not equal to -1
|
172
|
+
// If |modified_descriptor_| is not equal to -1 then the fields below form
|
166
173
|
// an "update" of the |old_map_|'s descriptors.
|
167
174
|
int modified_descriptor_ = -1;
|
168
175
|
PropertyKind new_kind_ = kData;
|
@@ -349,11 +349,14 @@ void JSObject::JSObjectVerify() {
|
|
349
349
|
}
|
350
350
|
DescriptorArray* descriptors = map()->instance_descriptors();
|
351
351
|
Isolate* isolate = GetIsolate();
|
352
|
+
bool is_transitionable_fast_elements_kind =
|
353
|
+
IsTransitionableFastElementsKind(map()->elements_kind());
|
354
|
+
|
352
355
|
for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) {
|
353
356
|
PropertyDetails details = descriptors->GetDetails(i);
|
354
357
|
if (details.location() == kField) {
|
355
358
|
DCHECK_EQ(kData, details.kind());
|
356
|
-
Representation r =
|
359
|
+
Representation r = details.representation();
|
357
360
|
FieldIndex index = FieldIndex::ForDescriptor(map(), i);
|
358
361
|
if (IsUnboxedDoubleField(index)) {
|
359
362
|
DCHECK(r.IsDouble());
|
@@ -376,6 +379,9 @@ void JSObject::JSObjectVerify() {
|
|
376
379
|
CHECK(!field_type->NowStable() || field_type->NowContains(value) ||
|
377
380
|
(!FLAG_use_allocation_folding && value->IsUndefined(isolate)));
|
378
381
|
}
|
382
|
+
CHECK_IMPLIES(is_transitionable_fast_elements_kind,
|
383
|
+
!Map::IsInplaceGeneralizableField(details.constness(), r,
|
384
|
+
field_type));
|
379
385
|
}
|
380
386
|
}
|
381
387
|
}
|
data/vendor/v8/src/objects.cc
CHANGED
@@ -3289,6 +3289,16 @@ MaybeHandle<Map> Map::CopyWithField(Handle<Map> map, Handle<Name> name,
|
|
3289
3289
|
if (map->instance_type() == JS_CONTEXT_EXTENSION_OBJECT_TYPE) {
|
3290
3290
|
representation = Representation::Tagged();
|
3291
3291
|
type = FieldType::Any(isolate);
|
3292
|
+
} else if (IsTransitionableFastElementsKind(map->elements_kind()) &&
|
3293
|
+
IsInplaceGeneralizableField(constness, representation, *type)) {
|
3294
|
+
// We don't support propagation of field generalization through elements
|
3295
|
+
// kind transitions because they are inserted into the transition tree
|
3296
|
+
// before field transitions. In order to avoid complexity of handling
|
3297
|
+
// such a case we ensure that all maps with transitionable elements kinds
|
3298
|
+
// do not have fields that can be generalized in-place (without creation
|
3299
|
+
// of a new map).
|
3300
|
+
DCHECK(representation.IsHeapObject());
|
3301
|
+
type = FieldType::Any(isolate);
|
3292
3302
|
}
|
3293
3303
|
|
3294
3304
|
Handle<Object> wrapped_type(WrapFieldType(type));
|
@@ -3935,7 +3945,6 @@ Handle<Map> Map::CopyGeneralizeAllFields(Handle<Map> map,
|
|
3935
3945
|
return new_map;
|
3936
3946
|
}
|
3937
3947
|
|
3938
|
-
|
3939
3948
|
void Map::DeprecateTransitionTree() {
|
3940
3949
|
if (is_deprecated()) return;
|
3941
3950
|
Object* transitions = raw_transitions();
|
@@ -4078,7 +4087,6 @@ Handle<FieldType> Map::GeneralizeFieldType(Representation rep1,
|
|
4078
4087
|
return FieldType::Any(isolate);
|
4079
4088
|
}
|
4080
4089
|
|
4081
|
-
|
4082
4090
|
// static
|
4083
4091
|
void Map::GeneralizeField(Handle<Map> map, int modify_index,
|
4084
4092
|
PropertyConstness new_constness,
|
@@ -4112,8 +4120,8 @@ void Map::GeneralizeField(Handle<Map> map, int modify_index,
|
|
4112
4120
|
|
4113
4121
|
// Determine the field owner.
|
4114
4122
|
Handle<Map> field_owner(map->FindFieldOwner(modify_index), isolate);
|
4115
|
-
Handle<DescriptorArray> descriptors(
|
4116
|
-
|
4123
|
+
Handle<DescriptorArray> descriptors(field_owner->instance_descriptors(),
|
4124
|
+
isolate);
|
4117
4125
|
DCHECK_EQ(*old_field_type, descriptors->GetFieldType(modify_index));
|
4118
4126
|
|
4119
4127
|
new_field_type =
|
@@ -4860,7 +4868,7 @@ Map* Map::FindElementsKindTransitionedMap(MapHandles const& candidates) {
|
|
4860
4868
|
if (IsTransitionableFastElementsKind(kind)) {
|
4861
4869
|
// Check the state of the root map.
|
4862
4870
|
Map* root_map = FindRootMap();
|
4863
|
-
if (!
|
4871
|
+
if (!EquivalentToForElementsKindTransition(root_map)) return nullptr;
|
4864
4872
|
root_map = root_map->LookupElementsTransitionMap(kind);
|
4865
4873
|
DCHECK_NOT_NULL(root_map);
|
4866
4874
|
// Starting from the next existing elements kind transition try to
|
@@ -12048,7 +12056,7 @@ bool Map::EquivalentToForTransition(Map* other) {
|
|
12048
12056
|
if (!CheckEquivalent(this, other)) return false;
|
12049
12057
|
if (instance_type() == JS_FUNCTION_TYPE) {
|
12050
12058
|
// JSFunctions require more checks to ensure that sloppy function is
|
12051
|
-
// not
|
12059
|
+
// not equivalent to strict function.
|
12052
12060
|
int nof = Min(NumberOfOwnDescriptors(), other->NumberOfOwnDescriptors());
|
12053
12061
|
return instance_descriptors()->IsEqualUpTo(other->instance_descriptors(),
|
12054
12062
|
nof);
|
@@ -12056,6 +12064,25 @@ bool Map::EquivalentToForTransition(Map* other) {
|
|
12056
12064
|
return true;
|
12057
12065
|
}
|
12058
12066
|
|
12067
|
+
bool Map::EquivalentToForElementsKindTransition(Map* other) {
|
12068
|
+
if (!EquivalentToForTransition(other)) return false;
|
12069
|
+
#ifdef DEBUG
|
12070
|
+
// Ensure that we don't try to generate elements kind transitions from maps
|
12071
|
+
// with fields that may be generalized in-place. This must already be handled
|
12072
|
+
// during addition of a new field.
|
12073
|
+
DescriptorArray* descriptors = instance_descriptors();
|
12074
|
+
int nof = NumberOfOwnDescriptors();
|
12075
|
+
for (int i = 0; i < nof; i++) {
|
12076
|
+
PropertyDetails details = descriptors->GetDetails(i);
|
12077
|
+
if (details.location() == kField) {
|
12078
|
+
DCHECK(!IsInplaceGeneralizableField(details.constness(),
|
12079
|
+
details.representation(),
|
12080
|
+
descriptors->GetFieldType(i)));
|
12081
|
+
}
|
12082
|
+
}
|
12083
|
+
#endif
|
12084
|
+
return true;
|
12085
|
+
}
|
12059
12086
|
|
12060
12087
|
bool Map::EquivalentToForNormalization(Map* other,
|
12061
12088
|
PropertyNormalizationMode mode) {
|
data/vendor/v8/src/objects.h
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
#ifndef V8_OBJECTS_MAP_INL_H_
|
6
6
|
#define V8_OBJECTS_MAP_INL_H_
|
7
7
|
|
8
|
+
#include "src/field-type.h"
|
8
9
|
#include "src/objects/map.h"
|
9
10
|
|
10
11
|
// Has to be the last include (doesn't have include guards):
|
@@ -27,6 +28,20 @@ InterceptorInfo* Map::GetIndexedInterceptor() {
|
|
27
28
|
return InterceptorInfo::cast(info->indexed_property_handler());
|
28
29
|
}
|
29
30
|
|
31
|
+
bool Map::IsInplaceGeneralizableField(PropertyConstness constness,
|
32
|
+
Representation representation,
|
33
|
+
FieldType* field_type) {
|
34
|
+
if (FLAG_track_constant_fields && FLAG_modify_map_inplace &&
|
35
|
+
(constness == kConst)) {
|
36
|
+
// kConst -> kMutable field generalization may happen in-place.
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
if (representation.IsHeapObject() && !field_type->IsAny()) {
|
40
|
+
return true;
|
41
|
+
}
|
42
|
+
return false;
|
43
|
+
}
|
44
|
+
|
30
45
|
int NormalizedMapCache::GetIndex(Handle<Map> map) {
|
31
46
|
return map->Hash() % NormalizedMapCache::kEntries;
|
32
47
|
}
|
data/vendor/v8/src/objects/map.h
CHANGED
@@ -290,6 +290,11 @@ class Map : public HeapObject {
|
|
290
290
|
PropertyConstness new_constness,
|
291
291
|
Representation new_representation,
|
292
292
|
Handle<FieldType> new_field_type);
|
293
|
+
// Returns true if |descriptor|'th property is a field that may be generalized
|
294
|
+
// by just updating current map.
|
295
|
+
static inline bool IsInplaceGeneralizableField(PropertyConstness constness,
|
296
|
+
Representation representation,
|
297
|
+
FieldType* field_type);
|
293
298
|
|
294
299
|
static Handle<Map> ReconfigureProperty(Handle<Map> map, int modify_index,
|
295
300
|
PropertyKind new_kind,
|
@@ -719,6 +724,7 @@ class Map : public HeapObject {
|
|
719
724
|
Handle<Name> name, SimpleTransitionFlag flag);
|
720
725
|
|
721
726
|
bool EquivalentToForTransition(Map* other);
|
727
|
+
bool EquivalentToForElementsKindTransition(Map* other);
|
722
728
|
static Handle<Map> RawCopy(Handle<Map> map, int instance_size);
|
723
729
|
static Handle<Map> ShareDescriptor(Handle<Map> map,
|
724
730
|
Handle<DescriptorArray> descriptors,
|
data/vendor/v8/src/v8.gyp
CHANGED
@@ -1904,6 +1904,13 @@
|
|
1904
1904
|
# limit. This breaks it into multiple pieces to avoid the limit.
|
1905
1905
|
# See http://crbug.com/485155.
|
1906
1906
|
'msvs_shard': 4,
|
1907
|
+
# This will prevent V8's .cc files conflicting with the inspector's
|
1908
|
+
# .cpp files in the same shard.
|
1909
|
+
'msvs_settings': {
|
1910
|
+
'VCCLCompilerTool': {
|
1911
|
+
'ObjectFile':'$(IntDir)%(Extension)\\',
|
1912
|
+
},
|
1913
|
+
},
|
1907
1914
|
}],
|
1908
1915
|
['component=="shared_library"', {
|
1909
1916
|
'defines': [
|
@@ -2775,16 +2775,16 @@ class AsyncCompileJob {
|
|
2775
2775
|
|
2776
2776
|
// A closure to run a compilation step (either as foreground or background
|
2777
2777
|
// task) and schedule the next step(s), if any.
|
2778
|
-
template <TaskType task_type>
|
2779
2778
|
class CompileTask : NON_EXPORTED_BASE(public v8::Task) {
|
2780
2779
|
public:
|
2781
|
-
constexpr static TaskType type = task_type;
|
2782
2780
|
AsyncCompileJob* job_ = nullptr;
|
2783
2781
|
CompileTask() {}
|
2784
2782
|
void Run() override = 0; // Force sub-classes to override Run().
|
2785
2783
|
};
|
2786
2784
|
|
2787
|
-
class
|
2785
|
+
class AsyncCompileTask : public CompileTask {};
|
2786
|
+
|
2787
|
+
class SyncCompileTask : public CompileTask {
|
2788
2788
|
public:
|
2789
2789
|
void Run() final {
|
2790
2790
|
SaveContext saved_context(job_->isolate_);
|
@@ -2798,7 +2798,8 @@ class AsyncCompileJob {
|
|
2798
2798
|
|
2799
2799
|
template <typename Task, typename... Args>
|
2800
2800
|
void DoSync(Args&&... args) {
|
2801
|
-
static_assert(
|
2801
|
+
static_assert(std::is_base_of<SyncCompileTask, Task>::value,
|
2802
|
+
"Scheduled type must be sync");
|
2802
2803
|
Task* task = new Task(std::forward<Args>(args)...);
|
2803
2804
|
task->job_ = this;
|
2804
2805
|
V8::GetCurrentPlatform()->CallOnForegroundThread(
|
@@ -2807,7 +2808,8 @@ class AsyncCompileJob {
|
|
2807
2808
|
|
2808
2809
|
template <typename Task, typename... Args>
|
2809
2810
|
void DoAsync(Args&&... args) {
|
2810
|
-
static_assert(
|
2811
|
+
static_assert(std::is_base_of<AsyncCompileTask, Task>::value,
|
2812
|
+
"Scheduled type must be async");
|
2811
2813
|
Task* task = new Task(std::forward<Args>(args)...);
|
2812
2814
|
task->job_ = this;
|
2813
2815
|
V8::GetCurrentPlatform()->CallOnBackgroundThread(
|
@@ -2817,7 +2819,7 @@ class AsyncCompileJob {
|
|
2817
2819
|
//==========================================================================
|
2818
2820
|
// Step 1: (async) Decode the module.
|
2819
2821
|
//==========================================================================
|
2820
|
-
class DecodeModule : public
|
2822
|
+
class DecodeModule : public AsyncCompileTask {
|
2821
2823
|
void Run() override {
|
2822
2824
|
ModuleResult result;
|
2823
2825
|
{
|
@@ -2958,7 +2960,7 @@ class AsyncCompileJob {
|
|
2958
2960
|
//==========================================================================
|
2959
2961
|
// Step 3 (async x K tasks): Execute compilation units.
|
2960
2962
|
//==========================================================================
|
2961
|
-
class ExecuteCompilationUnits : public
|
2963
|
+
class ExecuteCompilationUnits : public AsyncCompileTask {
|
2962
2964
|
void Run() override {
|
2963
2965
|
TRACE_COMPILE("(3) Compiling...\n");
|
2964
2966
|
for (;;) {
|
@@ -3011,7 +3013,7 @@ class AsyncCompileJob {
|
|
3011
3013
|
//==========================================================================
|
3012
3014
|
// Step 4b (async): Wait for all background tasks to finish.
|
3013
3015
|
//==========================================================================
|
3014
|
-
class WaitForBackgroundTasks : public
|
3016
|
+
class WaitForBackgroundTasks : public AsyncCompileTask {
|
3015
3017
|
public:
|
3016
3018
|
explicit WaitForBackgroundTasks(ErrorThrower thrower)
|
3017
3019
|
: thrower_(std::move(thrower)) {}
|
@@ -787,7 +787,7 @@ def Execute(arch, mode, args, options, suites):
|
|
787
787
|
simulator_run = not options.dont_skip_simulator_slow_tests and \
|
788
788
|
arch in ['arm64', 'arm', 'mipsel', 'mips', 'mips64', 'mips64el', \
|
789
789
|
'ppc', 'ppc64', 's390', 's390x'] and \
|
790
|
-
ARCH_GUESS and arch != ARCH_GUESS
|
790
|
+
bool(ARCH_GUESS) and arch != ARCH_GUESS
|
791
791
|
# Find available test suites and read test cases from them.
|
792
792
|
variables = {
|
793
793
|
"arch": arch,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libv8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.286.
|
4
|
+
version: 6.0.286.54.0beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Lowell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -417,6 +417,7 @@ files:
|
|
417
417
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py
|
418
418
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/api.py
|
419
419
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json
|
420
|
+
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json
|
420
421
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json
|
421
422
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json
|
422
423
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json
|
@@ -432,6 +433,7 @@ files:
|
|
432
433
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/trychange_oauth2_json.json
|
433
434
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/trychange_oauth2_json_win.json
|
434
435
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob.json
|
436
|
+
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_empty_revision.json
|
435
437
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json
|
436
438
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json
|
437
439
|
- vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json
|
@@ -572,6 +574,8 @@ files:
|
|
572
574
|
- vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json
|
573
575
|
- vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py
|
574
576
|
- vendor/depot_tools/recipes/recipes.py
|
577
|
+
- vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json
|
578
|
+
- vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py
|
575
579
|
- vendor/depot_tools/repo
|
576
580
|
- vendor/depot_tools/rietveld.py
|
577
581
|
- vendor/depot_tools/roll-dep
|
@@ -982,9 +986,6 @@ files:
|
|
982
986
|
- vendor/depot_tools/vpython.bat
|
983
987
|
- vendor/depot_tools/watchlists.py
|
984
988
|
- vendor/depot_tools/weekly
|
985
|
-
- vendor/depot_tools/win_toolchain/7z/7z.dll
|
986
|
-
- vendor/depot_tools/win_toolchain/7z/7z.exe
|
987
|
-
- vendor/depot_tools/win_toolchain/7z/LICENSE
|
988
989
|
- vendor/depot_tools/win_toolchain/OWNERS
|
989
990
|
- vendor/depot_tools/win_toolchain/README.md
|
990
991
|
- vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py
|