deps: patch V8 to 11.8.172.15 · nodejs/node@571f7ef · GitHub
Skip to content

Commit 571f7ef

Browse files
committed
deps: patch V8 to 11.8.172.15
Refs: v8/v8@11.8.172.13...11.8.172.15 PR-URL: #50114 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
1 parent dda33c2 commit 571f7ef

4 files changed

Lines changed: 39 additions & 7 deletions

File tree

deps/v8/include/v8-version.h

Lines changed: 1 addition & 1 deletion

deps/v8/src/compiler/js-call-reducer.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6381,8 +6381,11 @@ Reduction JSCallReducer::ReduceArrayIterator(Node* node,
63816381
}
63826382
}
63836383

6384+
// JSCreateArrayIterator doesn't have control output, so we bypass the old
6385+
// JSCall node on the control chain.
6386+
ReplaceWithValue(node, node, node, control);
6387+
63846388
// Morph the {node} into a JSCreateArrayIterator with the given {kind}.
6385-
RelaxControls(node);
63866389
node->ReplaceInput(0, receiver);
63876390
node->ReplaceInput(1, context);
63886391
node->ReplaceInput(2, effect);

deps/v8/src/ic/ic.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3185,18 +3185,22 @@ bool CanFastCloneObjectWithDifferentMaps(Handle<Map> source_map,
31853185
Handle<Map> target_map,
31863186
Isolate* isolate) {
31873187
DisallowGarbageCollection no_gc;
3188-
// TODO(olivf): Add support for non JS_OBJECT_TYPE source maps. The reason for
3189-
// this restriction is that the IC does not initialize the target object and
3190-
// instead relies on copying the source objects bytes. Thus they need to have
3191-
// the same binary layout.
3188+
// Ensure source and target have identical binary represenation of properties
3189+
// and elements as the IC relies on copying the raw bytes. This also excludes
3190+
// cases with non-enumerable properties or accessors on the source object.
31923191
if (source_map->instance_type() != JS_OBJECT_TYPE ||
31933192
target_map->instance_type() != JS_OBJECT_TYPE ||
31943193
!source_map->OnlyHasSimpleProperties() ||
3195-
!target_map->OnlyHasSimpleProperties()) {
3194+
!target_map->OnlyHasSimpleProperties() ||
3195+
source_map->elements_kind() != target_map->elements_kind() ||
3196+
!source_map->has_fast_elements()) {
31963197
return false;
31973198
}
31983199
// Check that the source inobject properties are big enough to initialize all
31993200
// target slots, but not too big to fit.
3201+
// TODO(olivf): This restriction (and the same restriction on the backing
3202+
// store) could be lifted by properly initializing the target object instead
3203+
// of relying on copying empty slots.
32003204
int source_inobj_properties = source_map->GetInObjectProperties();
32013205
int target_inobj_properties = target_map->GetInObjectProperties();
32023206
int source_used_inobj_properties =
Lines changed: 25 additions & 0 deletions

0 commit comments

Comments
 (0)