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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -2
  3. data/ext/libv8/location.rb +1 -1
  4. data/ext/libv8/paths.rb +1 -1
  5. data/lib/libv8/version.rb +1 -1
  6. data/patches/0001-Build-a-standalone-static-library.patch +1 -1
  7. data/patches/0002-Don-t-compile-unnecessary-stuff.patch +9 -11
  8. data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +1 -1
  9. data/patches/0004-Do-not-embed-debug-symbols-in-macOS-libraries.patch +1 -1
  10. data/patches/0005-Fix-GCC-7-build-errors.patch +1 -1
  11. data/spec/location_spec.rb +1 -1
  12. data/vendor/depot_tools/.gitattributes +1 -1
  13. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  14. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  15. data/vendor/depot_tools/bootstrap/win/win_tools.bat +1 -1
  16. data/vendor/depot_tools/cipd +2 -3
  17. data/vendor/depot_tools/cipd.ps1 +2 -6
  18. data/vendor/depot_tools/cipd_bin_setup.bat +1 -1
  19. data/vendor/depot_tools/cipd_bin_setup.sh +3 -1
  20. data/vendor/depot_tools/cipd_client_version +1 -1
  21. data/vendor/depot_tools/cpplint.py +0 -31
  22. data/vendor/depot_tools/gclient.py +162 -88
  23. data/vendor/depot_tools/gclient_utils.py +5 -0
  24. data/vendor/depot_tools/gerrit_client.py +0 -0
  25. data/vendor/depot_tools/gerrit_util.py +2 -2
  26. data/vendor/depot_tools/git_cl.py +25 -12
  27. data/vendor/depot_tools/infra/config/recipes.cfg +2 -2
  28. data/vendor/depot_tools/led +1 -1
  29. data/vendor/depot_tools/led.bat +1 -1
  30. data/vendor/depot_tools/my_activity.py +26 -16
  31. data/vendor/depot_tools/presubmit_canned_checks.py +1 -1
  32. data/vendor/depot_tools/presubmit_support.py +15 -4
  33. data/vendor/depot_tools/recipes/README.recipes.md +21 -14
  34. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +18 -11
  35. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +29 -0
  36. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_empty_revision.json +156 -0
  37. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +27 -1
  38. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +11 -0
  39. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +8 -9
  40. data/vendor/depot_tools/recipes/recipes.py +2 -2
  41. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +162 -0
  42. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +53 -0
  43. data/vendor/depot_tools/update_depot_tools +13 -7
  44. data/vendor/depot_tools/update_depot_tools.bat +7 -2
  45. data/vendor/depot_tools/vpython +1 -1
  46. data/vendor/depot_tools/vpython.bat +1 -1
  47. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +7 -3
  48. data/vendor/v8/AUTHORS +1 -0
  49. data/vendor/v8/codereview.settings +2 -4
  50. data/vendor/v8/include/v8-version.h +1 -1
  51. data/vendor/v8/src/builtins/builtins-array-gen.cc +1 -0
  52. data/vendor/v8/src/compiler/escape-analysis.cc +1 -4
  53. data/vendor/v8/src/compiler/load-elimination.cc +1 -1
  54. data/vendor/v8/src/d8.cc +1 -0
  55. data/vendor/v8/src/map-updater.cc +39 -2
  56. data/vendor/v8/src/map-updater.h +9 -2
  57. data/vendor/v8/src/objects-debug.cc +7 -1
  58. data/vendor/v8/src/objects.cc +33 -6
  59. data/vendor/v8/src/objects.h +0 -1
  60. data/vendor/v8/src/objects/map-inl.h +15 -0
  61. data/vendor/v8/src/objects/map.h +6 -0
  62. data/vendor/v8/src/v8.gyp +7 -0
  63. data/vendor/v8/src/wasm/wasm-module.cc +10 -8
  64. data/vendor/v8/tools/run-tests.py +1 -1
  65. metadata +6 -5
  66. data/vendor/depot_tools/win_toolchain/7z/7z.dll +0 -0
  67. data/vendor/depot_tools/win_toolchain/7z/7z.exe +0 -0
  68. 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 44
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, phi_type);
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
  }
@@ -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> old_field_type =
565
+ Handle<FieldType> next_field_type =
536
566
  GetOrComputeFieldType(i, old_details.location(), next_representation);
537
567
 
538
- Handle<Object> wrapped_type(Map::WrapFieldType(old_field_type));
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);
@@ -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 them the fields below form
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 = descriptors->GetDetails(i).representation();
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
  }
@@ -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
- field_owner->instance_descriptors(), isolate);
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 (!EquivalentToForTransition(root_map)) return nullptr;
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 equvalent to strict function.
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) {
@@ -249,7 +249,6 @@ enum SimpleTransitionFlag {
249
249
  SPECIAL_TRANSITION
250
250
  };
251
251
 
252
-
253
252
  // Indicates whether we are only interested in the descriptors of a particular
254
253
  // map, or in all descriptors in the descriptor array.
255
254
  enum DescriptorFlag {
@@ -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
  }
@@ -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,
@@ -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 SyncCompileTask : public CompileTask<SYNC> {
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(Task::type == SYNC, "Scheduled type must be sync");
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(Task::type == ASYNC, "Scheduled type must be async");
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 CompileTask<ASYNC> {
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 CompileTask<ASYNC> {
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 CompileTask<ASYNC> {
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.44.0beta1
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-07-27 00:00:00.000000000 Z
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