Skip to content

Commit 57d0468

Browse files
committed
deps: V8: cherry-pick a1efa5343880
Original commit message: Merged: [runtime] Set instance prototypes directly on maps Bug: chromium:1452137 (cherry picked from commit c7c447735f762f6d6d0878e229371797845ef4ab) Change-Id: I611c41f942e2e51f3c4b4f1d119c18410617188e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4637888 Commit-Queue: Igor Sheludko <ishell@chromium.org> Auto-Submit: Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/branch-heads/11.4@{nodejs#47} Cr-Branched-From: 8a8a1e7086dacc426965d3875914efa66663c431-refs/heads/11.4.183@{#1} Cr-Branched-From: 5483d8e816e0bbce865cbbc3fa0ab357e6330bab-refs/heads/main@{#87241} Refs: v8/v8@a1efa53
1 parent 6b599a3 commit 57d0468

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.19',
39+
'v8_embedder_string': '-node.20',
4040

4141
##### V8 defaults for Node.js #####
4242

deps/v8/src/objects/js-function.cc

+6
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,10 @@ void SetInstancePrototype(Isolate* isolate, Handle<JSFunction> function,
676676
// At that point, a new initial map is created and the prototype is put
677677
// into the initial map where it belongs.
678678
function->set_prototype_or_initial_map(*value, kReleaseStore);
679+
if (value->IsJSObjectThatCanBeTrackedAsPrototype()) {
680+
// Optimize as prototype to detach it from its transition tree.
681+
JSObject::OptimizeAsPrototype(Handle<JSObject>::cast(value));
682+
}
679683
} else {
680684
Handle<Map> new_map =
681685
Map::Copy(isolate, initial_map, "SetInstancePrototype");
@@ -801,8 +805,10 @@ void JSFunction::EnsureHasInitialMap(Handle<JSFunction> function) {
801805
Handle<HeapObject> prototype;
802806
if (function->has_instance_prototype()) {
803807
prototype = handle(function->instance_prototype(), isolate);
808+
map->set_prototype(*prototype);
804809
} else {
805810
prototype = isolate->factory()->NewFunctionPrototype(function);
811+
Map::SetPrototype(isolate, map, prototype);
806812
}
807813
DCHECK(map->has_fast_object_elements());
808814

0 commit comments

Comments
 (0)