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.
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