libv8 6.0.286.44.0beta1 → 6.0.286.54.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|