Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: patch V8 to 8.1.307.26 #32521

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.11',
'v8_embedder_string': '-node.12',

##### V8 defaults for Node.js #####

Expand Down
2 changes: 1 addition & 1 deletion deps/v8/include/v8-version.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 8
#define V8_MINOR_VERSION 1
#define V8_BUILD_NUMBER 307
#define V8_PATCH_LEVEL 20
#define V8_PATCH_LEVEL 26

// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Expand Down
10 changes: 10 additions & 0 deletions deps/v8/infra/mb/mb_config.pyl
Original file line number Diff line number Diff line change
Expand Up @@ -164,24 +164,34 @@
'V8 Linux - s390x - sim': 'release_simulate_s390x',
},
'client.v8.branches': {
'V8 Linux - previous branch': 'release_x86',
'V8 Linux - previous branch - debug': 'debug_x86',
'V8 Linux - beta branch': 'release_x86',
'V8 Linux - beta branch - debug': 'debug_x86',
'V8 Linux - stable branch': 'release_x86',
'V8 Linux - stable branch - debug': 'debug_x86',
'V8 Linux64 - previous branch': 'release_x64',
'V8 Linux64 - previous branch - debug': 'debug_x64',
'V8 Linux64 - beta branch': 'release_x64',
'V8 Linux64 - beta branch - debug': 'debug_x64',
'V8 Linux64 - stable branch': 'release_x64',
'V8 Linux64 - stable branch - debug': 'debug_x64',
'V8 arm - sim - previous branch': 'release_simulate_arm',
'V8 arm - sim - previous branch - debug': 'debug_simulate_arm',
'V8 arm - sim - beta branch': 'release_simulate_arm',
'V8 arm - sim - beta branch - debug': 'debug_simulate_arm',
'V8 arm - sim - stable branch': 'release_simulate_arm',
'V8 arm - sim - stable branch - debug': 'debug_simulate_arm',
'V8 mips64el - sim - previous branch': 'release_simulate_mips64el',
'V8 mips64el - sim - beta branch': 'release_simulate_mips64el',
'V8 mips64el - sim - stable branch': 'release_simulate_mips64el',
'V8 mipsel - sim - previous branch': 'release_simulate_mipsel',
'V8 mipsel - sim - beta branch': 'release_simulate_mipsel',
'V8 mipsel - sim - stable branch': 'release_simulate_mipsel',
'V8 ppc64 - sim - previous branch': 'release_simulate_ppc64',
'V8 ppc64 - sim - beta branch': 'release_simulate_ppc64',
'V8 ppc64 - sim - stable branch': 'release_simulate_ppc64',
'V8 s390x - sim - previous branch': 'release_simulate_s390x',
'V8 s390x - sim - beta branch': 'release_simulate_s390x',
'V8 s390x - sim - stable branch': 'release_simulate_s390x',
},
Expand Down
92 changes: 92 additions & 0 deletions deps/v8/infra/testing/builders.pyl
Original file line number Diff line number Diff line change
Expand Up @@ -1686,6 +1686,26 @@
{'name': 'v8testing', 'shards': 3},
],
},
'V8 Linux - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla'},
{'name': 'test262', 'variant': 'default'},
{'name': 'v8testing'},
],
},
'V8 Linux - previous branch - debug': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla'},
{'name': 'test262', 'variant': 'default'},
{'name': 'v8testing', 'shards': 3},
],
},
'V8 Linux64 - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand Down Expand Up @@ -1726,6 +1746,26 @@
{'name': 'v8testing', 'shards': 3},
],
},
'V8 Linux64 - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla'},
{'name': 'test262', 'variant': 'default'},
{'name': 'v8testing'},
],
},
'V8 Linux64 - previous branch - debug': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla'},
{'name': 'test262', 'variant': 'default'},
{'name': 'v8testing', 'shards': 3},
],
},
'V8 arm - sim - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand Down Expand Up @@ -1766,6 +1806,26 @@
{'name': 'v8testing', 'shards': 10},
],
},
'V8 arm - sim - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla'},
{'name': 'test262', 'variant': 'default'},
{'name': 'v8testing', 'shards': 4},
],
},
'V8 arm - sim - previous branch - debug': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'mozilla', 'shards': 2},
{'name': 'test262', 'variant': 'default', 'shards': 2},
{'name': 'v8testing', 'shards': 10},
],
},
'V8 mips64el - sim - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand All @@ -1782,6 +1842,14 @@
{'name': 'unittests'},
],
},
'V8 mips64el - sim - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'unittests'},
],
},
'V8 mipsel - sim - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand All @@ -1798,6 +1866,14 @@
{'name': 'v8testing', 'shards': 4},
],
},
'V8 mipsel - sim - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'v8testing', 'shards': 4},
],
},
'V8 ppc64 - sim - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand All @@ -1814,6 +1890,14 @@
{'name': 'unittests'},
],
},
'V8 ppc64 - sim - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'unittests'},
],
},
'V8 s390x - sim - beta branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
Expand All @@ -1830,4 +1914,12 @@
{'name': 'unittests'},
],
},
'V8 s390x - sim - previous branch': {
'swarming_dimensions': {
'os': 'Ubuntu-16.04',
},
'tests': [
{'name': 'unittests'},
],
},
}
75 changes: 35 additions & 40 deletions deps/v8/src/builtins/builtins-intl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -265,13 +265,11 @@ Object LegacyFormatConstructor(BuiltinArguments args, Isolate* isolate,

// [[Construct]]
Handle<JSFunction> target = args.target();

Handle<Object> locales = args.atOrUndefined(isolate, 1);
Handle<Object> options = args.atOrUndefined(isolate, 2);

// 2. Let format be ? OrdinaryCreateFromConstructor(newTarget,
// "%<T>Prototype%", ...).

Handle<Map> map;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, map, JSFunction::GetDerivedMap(isolate, target, new_target));
Expand All @@ -281,45 +279,42 @@ Object LegacyFormatConstructor(BuiltinArguments args, Isolate* isolate,
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, format, T::New(isolate, map, locales, options, method));
// 4. Let this be the this value.
Handle<Object> receiver = args.receiver();

// 5. If NewTarget is undefined and ? InstanceofOperator(this, %<T>%)
// is true, then
//
// Look up the intrinsic value that has been stored on the context.
// Call the instanceof function
Handle<Object> is_instance_of_obj;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, is_instance_of_obj,
Object::InstanceOf(isolate, receiver, constructor));

// Get the boolean value of the result
bool is_instance_of = is_instance_of_obj->BooleanValue(isolate);

if (args.new_target()->IsUndefined(isolate) && is_instance_of) {
if (!receiver->IsJSReceiver()) {
THROW_NEW_ERROR_RETURN_FAILURE(
isolate,
NewTypeError(MessageTemplate::kIncompatibleMethodReceiver,
isolate->factory()->NewStringFromAsciiChecked(method),
receiver));
if (args.new_target()->IsUndefined(isolate)) {
Handle<Object> receiver = args.receiver();

// 5. If NewTarget is undefined and ? InstanceofOperator(this, %<T>%)
// is true, then Look up the intrinsic value that has been stored on
// the context.
Handle<Object> is_instance_of_obj;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, is_instance_of_obj,
Object::InstanceOf(isolate, receiver, constructor));

if (is_instance_of_obj->BooleanValue(isolate)) {
if (!receiver->IsJSReceiver()) {
THROW_NEW_ERROR_RETURN_FAILURE(
isolate,
NewTypeError(MessageTemplate::kIncompatibleMethodReceiver,
isolate->factory()->NewStringFromAsciiChecked(method),
receiver));
}
Handle<JSReceiver> rec = Handle<JSReceiver>::cast(receiver);
// a. Perform ? DefinePropertyOrThrow(this,
// %Intl%.[[FallbackSymbol]], PropertyDescriptor{ [[Value]]: format,
// [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }).
PropertyDescriptor desc;
desc.set_value(format);
desc.set_writable(false);
desc.set_enumerable(false);
desc.set_configurable(false);
Maybe<bool> success = JSReceiver::DefineOwnProperty(
isolate, rec, isolate->factory()->intl_fallback_symbol(), &desc,
Just(kThrowOnError));
MAYBE_RETURN(success, ReadOnlyRoots(isolate).exception());
CHECK(success.FromJust());
// b. b. Return this.
return *receiver;
}
Handle<JSReceiver> rec = Handle<JSReceiver>::cast(receiver);
// a. Perform ? DefinePropertyOrThrow(this,
// %Intl%.[[FallbackSymbol]], PropertyDescriptor{ [[Value]]: format,
// [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }).
PropertyDescriptor desc;
desc.set_value(format);
desc.set_writable(false);
desc.set_enumerable(false);
desc.set_configurable(false);
Maybe<bool> success = JSReceiver::DefineOwnProperty(
isolate, rec, isolate->factory()->intl_fallback_symbol(), &desc,
Just(kThrowOnError));
MAYBE_RETURN(success, ReadOnlyRoots(isolate).exception());
CHECK(success.FromJust());
// b. b. Return this.
return *receiver;
}
// 6. Return format.
return *format;
Expand Down
35 changes: 21 additions & 14 deletions deps/v8/src/compiler/simd-scalar-lowering.cc
Original file line number Diff line number Diff line change
Expand Up @@ -909,29 +909,36 @@ void SimdScalarLowering::LowerNode(Node* node) {
}
case IrOpcode::kParameter: {
DCHECK_EQ(1, node->InputCount());
int param_count = static_cast<int>(signature()->parameter_count());
// Only exchange the node if the parameter count actually changed. We do
// not even have to do the default lowering because the the start node,
// not even have to do the default lowering because the start node,
// the only input of a parameter node, only changes if the parameter count
// changes.
if (GetParameterCountAfterLowering() !=
static_cast<int>(signature()->parameter_count())) {
if (GetParameterCountAfterLowering() != param_count) {
int old_index = ParameterIndexOf(node->op());
// Parameter index 0 is the instance parameter, we will use old_index to
// index into the function signature, so we need to decrease it by 1.
--old_index;
int new_index =
GetParameterIndexAfterLoweringSimd128(signature(), old_index);
if (old_index == new_index) {
NodeProperties::ChangeOp(node, common()->Parameter(new_index));
// Similarly, the index into function signature needs to account for the
// instance parameter, so increase it by 1.
++new_index;
NodeProperties::ChangeOp(node, common()->Parameter(new_index));

if (old_index < 0) {
break;
}

DCHECK(old_index < param_count);

if (signature()->GetParam(old_index) ==
MachineRepresentation::kSimd128) {
Node* new_node[kNumLanes32];
for (int i = 0; i < kNumLanes32; ++i) {
new_node[i] = nullptr;
}
new_node[0] = node;
if (signature()->GetParam(old_index) ==
MachineRepresentation::kSimd128) {
for (int i = 1; i < kNumLanes32; ++i) {
new_node[i] = graph()->NewNode(common()->Parameter(new_index + i),
graph()->start());
}
for (int i = 1; i < kNumLanes32; ++i) {
new_node[i] = graph()->NewNode(common()->Parameter(new_index + i),
graph()->start());
}
ReplaceNode(node, new_node, kNumLanes32);
}
Expand Down
5 changes: 5 additions & 0 deletions deps/v8/src/compiler/wasm-compiler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6932,6 +6932,11 @@ wasm::WasmCompilationResult ExecuteTurbofanWasmCompilation(
call_descriptor = GetI32WasmCallDescriptor(&zone, call_descriptor);
}

if (ContainsSimd(func_body.sig) &&
(!CpuFeatures::SupportsWasmSimd128() || env->lower_simd)) {
call_descriptor = GetI32WasmCallDescriptorForSimd(&zone, call_descriptor);
}

Pipeline::GenerateCodeForWasmFunction(
&info, wasm_engine, mcgraph, call_descriptor, source_positions,
node_origins, func_body, env->module, func_index);
Expand Down
17 changes: 11 additions & 6 deletions deps/v8/src/objects/objects.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7220,10 +7220,9 @@ int BaseNameDictionary<Derived, Shape>::NextEnumerationIndex(
// Check whether the next enumeration index is valid.
if (!PropertyDetails::IsValidIndex(index)) {
// If not, we generate new indices for the properties.
int length = dictionary->NumberOfElements();

Handle<FixedArray> iteration_order = IterationIndices(isolate, dictionary);
DCHECK_EQ(length, iteration_order->length());
int length = iteration_order->length();
DCHECK_LE(length, dictionary->NumberOfElements());

// Iterate over the dictionary using the enumeration order and update
// the dictionary with new enumeration indices.
Expand Down Expand Up @@ -7467,8 +7466,8 @@ void BaseNameDictionary<Derived, Shape>::CopyEnumKeysTo(
template <typename Derived, typename Shape>
Handle<FixedArray> BaseNameDictionary<Derived, Shape>::IterationIndices(
Isolate* isolate, Handle<Derived> dictionary) {
int length = dictionary->NumberOfElements();
Handle<FixedArray> array = isolate->factory()->NewFixedArray(length);
Handle<FixedArray> array =
isolate->factory()->NewFixedArray(dictionary->NumberOfElements());
ReadOnlyRoots roots(isolate);
int array_size = 0;
{
Expand All @@ -7480,7 +7479,13 @@ Handle<FixedArray> BaseNameDictionary<Derived, Shape>::IterationIndices(
array->set(array_size++, Smi::FromInt(i.as_int()));
}

DCHECK_EQ(array_size, length);
// The global dictionary doesn't track its deletion count, so we may iterate
// fewer entries than the count of elements claimed by the dictionary.
if (std::is_same<Derived, GlobalDictionary>::value) {
DCHECK_LE(array_size, dictionary->NumberOfElements());
} else {
DCHECK_EQ(array_size, dictionary->NumberOfElements());
}

EnumIndexComparator<Derived> cmp(raw_dictionary);
// Use AtomicSlot wrapper to ensure that std::sort uses atomic load and
Expand Down
Loading