[runtime] Closure Creation from SetPrototypeProperties should be deferred to first call [v8/v8 : main]

0 views
Skip to first unread message

Raphael Herouart (Gerrit)

unread,
Nov 12, 2025, 8:59:32 AMNov 12
to AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
Attention needed from Raphael Herouart

Message from Raphael Herouart

Set Ready For Review

Open in Gerrit

Related details

Attention is currently required from:
  • Raphael Herouart
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: v8/v8
Gerrit-Branch: main
Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
Gerrit-Change-Number: 7026131
Gerrit-PatchSet: 30
Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
Gerrit-CC: Hannes Payer <hpa...@chromium.org>
Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
Gerrit-Comment-Date: Wed, 12 Nov 2025 13:59:28 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Igor Sheludko (Gerrit)

unread,
Nov 14, 2025, 11:59:50 AMNov 14
to Raphael Herouart, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
Attention needed from Raphael Herouart

Igor Sheludko added 17 comments

Patchset-level comments
File-level comment, Patchset 31 (Latest):
Igor Sheludko . resolved

some comments

File src/ic/accessor-assembler.cc
Line 3002, Patchset 31 (Latest): BIND(&if_smi);
Igor Sheludko . unresolved

Could you please introduce a helper function for unwrapping SFIs?

I'd be fine with landing this unwrapping CL behind a build flag just to be able to move forward. Otherwise I'm afraid doing this for EVERY load will be too expensive (note that this code is used for loading properties from regular objects too) and you'd have to deal with tons of JS2/SP3 regressions once you land it.

Actually, could you please run JS2/SP3 pinpoint jobs on this CL?

I think a better way would be to introduce a new field representation for not yet instantiated functions and call runtime to instantiate the function and update the representation in the map once we load from it. See how we deal with double representations in these functions.

Note, that we don't even need to bailout from the lookup - we already did the major part of the job, we know the holder, the property/dictionary index, etc - we just need to instantiate the function, update the map/object and return it.

Line 3054, Patchset 31 (Latest): }
Igor Sheludko . unresolved

Ditto: helper function.

File src/objects/js-objects.cc
Line 4959, Patchset 31 (Latest): TryCast<PrototypeSharedClosureInfo>(
Igor Sheludko . unresolved

Why is this cast necessary given that the getter returns the right type?

Line 4966, Patchset 31 (Latest): if (has_closure_infos) {
Igor Sheludko . unresolved

Leftover.

Line 4971, Patchset 31 (Latest): if (has_closure_infos) {
Igor Sheludko . unresolved

We can check `!closure_info.is_null()` instead.

File src/objects/map-inl.h
Line 640, Patchset 31 (Latest): prototype_shared_closure_info();
Igor Sheludko . unresolved

This should be `prototype_info()` because its return type covers all possible types, while `prototype_shared_closure_info()` will crash if there will be something else (for example, Smi).

Line 632, Patchset 31 (Latest): if (is_prototype_map()) {
Igor Sheludko . unresolved

Nit: it would be nicer to avoid a lot of block nesting and just return if it's not a prototype map.

Line 98, Patchset 31 (Latest): TaggedField<PrototypeSharedClosureInfo,
Igor Sheludko . unresolved

I'm afraid that this field load might fail to perform the cast if the field contains something else. Given that there's no simple way of checking `has_prototype_closure_info()` we should always use `TryGetPrototypeSharedClosureInfo()`.

Please consider extending the type for `prototype_info` getter with `PrototypeSharedClosureInfo`.

File src/objects/map.cc
Line 2422, Patchset 31 (Latest): TryCast<PrototypeSharedClosureInfo>(maybe_proto_shared_closure_info,
Igor Sheludko . unresolved

Ditto: why is this cast necessary?

File src/objects/objects.cc
Line 1289, Patchset 31 (Latest): DirectHandle<Object> receiver_obj = it->GetHolder<Object>();
Igor Sheludko . unresolved
Receiver is not correct - it's holder (this read could have been triggered via some random receiver containing our prototype in the prototype chain).
And with given iterator state it's guaranteed to be `JSObject`:
```
DirectHandle<JSObject> holder = it->GetHolder<JSObject>();
```

Please extract this SFI handling to a helper function.

Line 1313, Patchset 31 (Latest): *Runtime::SetObjectProperty(
it->isolate(), Cast<JSAny>(receiver), it->GetName(), val,
StoreOrigin::kNamed)
.ToHandleChecked(),
Igor Sheludko . unresolved

This is an overkill. Ideally it would be nice if we could reuse the existing lookup iterator because it's already known everything about the property we've just loaded - we just need a version of `Object::SetDataProperty` (which is called at the bottom of `Runtime::SetObjectProperty(..)`) that does the store to the holder instead of receiver.

At least you can try this:
```
LookupIterator it2(isolate, holder, it->GetName(), LookupIterator::OWN_SKIP_INTERCEPTOR);
DCHECK_EQ(it2.state(), LookupIterator::DATA);
bool result = Object::SetProperty(&it2, val, StoreOrigin::kNamed).ToChecked();
CHECK(result); // This store must not throw and must not fail.
return val;
```
Line 1320, Patchset 31 (Latest): // there should be a closure info for it
Igor Sheludko . unresolved

`.` at the end.

File src/objects/prototype-info.tq
Line 13, Patchset 31 (Latest): // Context in which closure(s) where defined
Igor Sheludko . unresolved

Please end comments with `.`.

Line 45, Patchset 31 (Latest): prototype_shared_closure_info: PrototypeSharedClosureInfo|Undefined;
Igor Sheludko . unresolved

I wonder, how common is the case when we'd have just a `PrototypeSharedClosureInfo` object? I mean it'd be way simpler to just add context/feedback cell array here instead of dealing with all the transitions between different modes.

File src/objects/shared-function-info.tq
Line 119, Patchset 31 (Latest): feedeback_slot: uint16;
Igor Sheludko . unresolved

Here and elsewhere: typo.

File src/runtime/runtime-literals.cc
Line 614, Patchset 31 (Latest): shared->set_feedeback_slot(current_slot);
Igor Sheludko . unresolved

We need a fallback mechanism against overflowing the `feedback_slot` field.

Open in Gerrit

Related details

Attention is currently required from:
  • Raphael Herouart
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 31
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
    Gerrit-Comment-Date: Fri, 14 Nov 2025 16:59:44 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Igor Sheludko (Gerrit)

    unread,
    Nov 14, 2025, 4:16:36 PMNov 14
    to Raphael Herouart, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Raphael Herouart

    Igor Sheludko added 1 comment

    File src/heap/factory.cc
    Line 393, Patchset 31 (Latest): Tagged<Context> ctx, Tagged<ClosureFeedbackCellArray> feedback_array) {
    Igor Sheludko . unresolved

    These must be passed here as handles, otherwise if GC happens during allocation of a new object then these raw pointers might become stale.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Raphael Herouart
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 31
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
    Gerrit-Comment-Date: Fri, 14 Nov 2025 21:16:30 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Nov 20, 2025, 5:23:58 AMNov 20
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Raphael Herouart

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m4-mini-perf/jetstream2 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/111a6502310000

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Raphael Herouart
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 32
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
    Gerrit-Comment-Date: Thu, 20 Nov 2025 10:23:55 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Nov 20, 2025, 5:27:28 AMNov 20
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Raphael Herouart

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m1_mini_2020-perf/jetstream2 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/130b7b6a310000

    Gerrit-Comment-Date: Thu, 20 Nov 2025 10:27:25 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Nov 20, 2025, 6:18:54 AMNov 20
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Raphael Herouart

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m4-mini-perf/jetstream2 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/10632e86310000

    Gerrit-Comment-Date: Thu, 20 Nov 2025 11:18:50 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Nov 27, 2025, 8:27:09 AMNov 27
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 1 comment

    File src/objects/prototype-info.tq
    Line 45, Patchset 31: prototype_shared_closure_info: PrototypeSharedClosureInfo|Undefined;
    Igor Sheludko . unresolved

    I wonder, how common is the case when we'd have just a `PrototypeSharedClosureInfo` object? I mean it'd be way simpler to just add context/feedback cell array here instead of dealing with all the transitions between different modes.

    Raphael Herouart

    @ish...@chromium.org You mean having the PrototypeSharedClosureInfo stored in the PrototypeInfo slot?

    Likely the most common case. At setup time the prototype_info does not exist, object is in slow mode. It is actually made fast at first access.

    In most of my unittests this is the case I am in.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 38
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Comment-Date: Thu, 27 Nov 2025 13:27:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Igor Sheludko <ish...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    Igor Sheludko (Gerrit)

    unread,
    Nov 27, 2025, 8:30:24 AMNov 27
    to Raphael Herouart, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Raphael Herouart

    Igor Sheludko added 1 comment

    File src/objects/prototype-info.tq
    Line 45, Patchset 31: prototype_shared_closure_info: PrototypeSharedClosureInfo|Undefined;
    Igor Sheludko . resolved

    I wonder, how common is the case when we'd have just a `PrototypeSharedClosureInfo` object? I mean it'd be way simpler to just add context/feedback cell array here instead of dealing with all the transitions between different modes.

    Raphael Herouart

    @ish...@chromium.org You mean having the PrototypeSharedClosureInfo stored in the PrototypeInfo slot?

    Likely the most common case. At setup time the prototype_info does not exist, object is in slow mode. It is actually made fast at first access.

    In most of my unittests this is the case I am in.

    Igor Sheludko

    Ah, right. If those constructors are not going to be called then it's not necessary to create PrototypeInfo objects.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Raphael Herouart
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 38
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
    Gerrit-Comment-Date: Thu, 27 Nov 2025 13:30:19 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Igor Sheludko <ish...@chromium.org>
    Comment-In-Reply-To: Raphael Herouart <rher...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Dec 1, 2025, 7:08:41 AMDec 1
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 2 comments

    File src/heap/factory.cc
    Line 393, Patchset 31: Tagged<Context> ctx, Tagged<ClosureFeedbackCellArray> feedback_array) {
    Igor Sheludko . resolved

    These must be passed here as handles, otherwise if GC happens during allocation of a new object then these raw pointers might become stale.

    Raphael Herouart

    Done

    File src/ic/accessor-assembler.cc
    Line 3054, Patchset 31: }
    Igor Sheludko . resolved

    Ditto: helper function.

    Raphael Herouart

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 40
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Comment-Date: Mon, 01 Dec 2025 12:08:36 +0000
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Dec 1, 2025, 7:58:58 AMDec 1
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 10 comments

    File src/objects/js-objects.cc
    Line 4959, Patchset 31: TryCast<PrototypeSharedClosureInfo>(
    Igor Sheludko . resolved

    Why is this cast necessary given that the getter returns the right type?

    Raphael Herouart

    Done

    Line 4966, Patchset 31: if (has_closure_infos) {
    Igor Sheludko . resolved

    Leftover.

    Raphael Herouart

    Done

    Line 4971, Patchset 31: if (has_closure_infos) {
    Igor Sheludko . resolved

    We can check `!closure_info.is_null()` instead.

    Raphael Herouart

    Done

    File src/objects/map-inl.h
    Line 640, Patchset 31: prototype_shared_closure_info();
    Igor Sheludko . resolved

    This should be `prototype_info()` because its return type covers all possible types, while `prototype_shared_closure_info()` will crash if there will be something else (for example, Smi).

    Raphael Herouart

    Done

    Line 632, Patchset 31: if (is_prototype_map()) {
    Igor Sheludko . resolved

    Nit: it would be nicer to avoid a lot of block nesting and just return if it's not a prototype map.

    Raphael Herouart

    Done

    File src/objects/map.cc
    Line 2422, Patchset 31: TryCast<PrototypeSharedClosureInfo>(maybe_proto_shared_closure_info,
    Igor Sheludko . resolved

    Ditto: why is this cast necessary?

    Raphael Herouart

    Done

    File src/objects/objects.cc
    Line 1289, Patchset 31: DirectHandle<Object> receiver_obj = it->GetHolder<Object>();
    Igor Sheludko . resolved
    Receiver is not correct - it's holder (this read could have been triggered via some random receiver containing our prototype in the prototype chain).
    And with given iterator state it's guaranteed to be `JSObject`:
    ```
    DirectHandle<JSObject> holder = it->GetHolder<JSObject>();
    ```

    Please extract this SFI handling to a helper function.

    Raphael Herouart

    Done

    Line 1320, Patchset 31: // there should be a closure info for it
    Igor Sheludko . resolved

    `.` at the end.

    Raphael Herouart

    Done

    File src/objects/prototype-info.tq
    Line 13, Patchset 31: // Context in which closure(s) where defined
    Igor Sheludko . resolved

    Please end comments with `.`.

    Raphael Herouart

    Done

    File src/objects/shared-function-info.tq
    Line 119, Patchset 31: feedeback_slot: uint16;
    Igor Sheludko . resolved

    Here and elsewhere: typo.

    Raphael Herouart

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 43
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Comment-Date: Mon, 01 Dec 2025 12:58:52 +0000
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Dec 2, 2025, 5:32:50 AMDec 2
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 3 comments

    File src/objects/map-inl.h
    Line 98, Patchset 31: TaggedField<PrototypeSharedClosureInfo,
    Igor Sheludko . resolved

    I'm afraid that this field load might fail to perform the cast if the field contains something else. Given that there's no simple way of checking `has_prototype_closure_info()` we should always use `TryGetPrototypeSharedClosureInfo()`.

    Please consider extending the type for `prototype_info` getter with `PrototypeSharedClosureInfo`.

    Raphael Herouart

    Done

    File src/objects/objects.cc
    Line 1313, Patchset 31: *Runtime::SetObjectProperty(

    it->isolate(), Cast<JSAny>(receiver), it->GetName(), val,
    StoreOrigin::kNamed)
    .ToHandleChecked(),
    Igor Sheludko . resolved

    This is an overkill. Ideally it would be nice if we could reuse the existing lookup iterator because it's already known everything about the property we've just loaded - we just need a version of `Object::SetDataProperty` (which is called at the bottom of `Runtime::SetObjectProperty(..)`) that does the store to the holder instead of receiver.

    At least you can try this:
    ```
    LookupIterator it2(isolate, holder, it->GetName(), LookupIterator::OWN_SKIP_INTERCEPTOR);
    DCHECK_EQ(it2.state(), LookupIterator::DATA);
    bool result = Object::SetProperty(&it2, val, StoreOrigin::kNamed).ToChecked();
    CHECK(result); // This store must not throw and must not fail.
    return val;
    ```
    Raphael Herouart

    Done

    File src/runtime/runtime-literals.cc
    Line 614, Patchset 31: shared->set_feedeback_slot(current_slot);
    Igor Sheludko . resolved

    We need a fallback mechanism against overflowing the `feedback_slot` field.

    Raphael Herouart

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 46
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Comment-Date: Tue, 02 Dec 2025 10:32:44 +0000
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Dec 2, 2025, 6:58:10 AM (14 days ago) Dec 2
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko and Raphael Herouart

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m4-mini-perf/jetstream2 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/1284e916310000

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    • Raphael Herouart
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 46
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
    Gerrit-Comment-Date: Tue, 02 Dec 2025 11:58:05 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Dec 8, 2025, 6:18:28 AM (8 days ago) Dec 8
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m4-mini-perf/jetstream2 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/168999c0b10000

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
    Gerrit-Change-Number: 7026131
    Gerrit-PatchSet: 53
    Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
    Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
    Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
    Gerrit-CC: Hannes Payer <hpa...@chromium.org>
    Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
    Gerrit-Comment-Date: Mon, 08 Dec 2025 11:18:24 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Dec 8, 2025, 9:35:36 AM (8 days ago) Dec 8
    to Raphael Herouart, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Message from chrom...@appspot.gserviceaccount.com

    📍 Job mac-m4-mini-perf/speedometer3 complete.

    See results at: https://pinpoint-dot-chromeperf.appspot.com/job/1463e1cd310000

    Gerrit-Comment-Date: Mon, 08 Dec 2025 14:35:32 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Dec 8, 2025, 9:48:49 AM (8 days ago) Dec 8
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 1 comment

    File src/ic/accessor-assembler.cc
    Igor Sheludko . unresolved

    Could you please introduce a helper function for unwrapping SFIs?

    I'd be fine with landing this unwrapping CL behind a build flag just to be able to move forward. Otherwise I'm afraid doing this for EVERY load will be too expensive (note that this code is used for loading properties from regular objects too) and you'd have to deal with tons of JS2/SP3 regressions once you land it.

    Actually, could you please run JS2/SP3 pinpoint jobs on this CL?

    I think a better way would be to introduce a new field representation for not yet instantiated functions and call runtime to instantiate the function and update the representation in the map once we load from it. See how we deal with double representations in these functions.

    Note, that we don't even need to bailout from the lookup - we already did the major part of the job, we know the holder, the property/dictionary index, etc - we just need to instantiate the function, update the map/object and return it.

    Raphael Herouart
    • As for helper functions.

    Done.

     - As for Perf.

    https://pinpoint-dot-chromeperf.appspot.com/job/1463e1cd310000
    https://pinpoint-dot-chromeperf.appspot.com/job/168999c0b10000

    I cannot see anything particularly bad and yet there is still some debug code to remove from this CL.

     - As for the 2 last paragraphs of your comment

    I am not sure understand 😊 "introduce a new field representation for not yet instantiated functions", but the main point of this optimization is to save some memory. By storing SFI rather than JS functions until needed.

    NOTE: I'll safeguard all this behind a v8_flag so we can move forward.

    Gerrit-Comment-Date: Mon, 08 Dec 2025 14:48:44 +0000
    unsatisfied_requirement
    open
    diffy

    Raphael Herouart (Gerrit)

    unread,
    Dec 9, 2025, 7:17:42 AM (7 days ago) Dec 9
    to chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
    Attention needed from Igor Sheludko

    Raphael Herouart added 1 comment

    File src/ic/accessor-assembler.cc
    Igor Sheludko . resolved

    Could you please introduce a helper function for unwrapping SFIs?

    I'd be fine with landing this unwrapping CL behind a build flag just to be able to move forward. Otherwise I'm afraid doing this for EVERY load will be too expensive (note that this code is used for loading properties from regular objects too) and you'd have to deal with tons of JS2/SP3 regressions once you land it.

    Actually, could you please run JS2/SP3 pinpoint jobs on this CL?

    I think a better way would be to introduce a new field representation for not yet instantiated functions and call runtime to instantiate the function and update the representation in the map once we load from it. See how we deal with double representations in these functions.

    Note, that we don't even need to bailout from the lookup - we already did the major part of the job, we know the holder, the property/dictionary index, etc - we just need to instantiate the function, update the map/object and return it.

    Raphael Herouart
    • As for helper functions.

    Done.

     - As for Perf.

    https://pinpoint-dot-chromeperf.appspot.com/job/1463e1cd310000
    https://pinpoint-dot-chromeperf.appspot.com/job/168999c0b10000

    I cannot see anything particularly bad and yet there is still some debug code to remove from this CL.

     - As for the 2 last paragraphs of your comment

    I am not sure understand 😊 "introduce a new field representation for not yet instantiated functions", but the main point of this optimization is to save some memory. By storing SFI rather than JS functions until needed.

    NOTE: I'll safeguard all this behind a v8_flag so we can move forward.

    Raphael Herouart

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Igor Sheludko
    Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: v8/v8
      Gerrit-Branch: main
      Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
      Gerrit-Change-Number: 7026131
      Gerrit-PatchSet: 55
      Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
      Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
      Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
      Gerrit-CC: Hannes Payer <hpa...@chromium.org>
      Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
      Gerrit-Comment-Date: Tue, 09 Dec 2025 12:17:37 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Igor Sheludko <ish...@chromium.org>
      Comment-In-Reply-To: Raphael Herouart <rher...@chromium.org>
      unsatisfied_requirement
      open
      diffy

      Raphael Herouart (Gerrit)

      unread,
      Dec 9, 2025, 10:13:31 AM (7 days ago) Dec 9
      to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
      Attention needed from Igor Sheludko and Leszek Swirski

      New activity on the change

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Igor Sheludko
      • Leszek Swirski
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: v8/v8
      Gerrit-Branch: main
      Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
      Gerrit-Change-Number: 7026131
      Gerrit-PatchSet: 60
      Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
      Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
      Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
      Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
      Gerrit-CC: Hannes Payer <hpa...@chromium.org>
      Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
      Gerrit-Attention: Leszek Swirski <les...@chromium.org>
      Gerrit-Comment-Date: Tue, 09 Dec 2025 15:13:26 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      Raphael Herouart (Gerrit)

      unread,
      Dec 11, 2025, 3:16:24 AM (5 days ago) Dec 11
      to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
      Attention needed from Igor Sheludko, Leszek Swirski and Raphael Herouart

      Message from Raphael Herouart

      Set Ready For Review

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Igor Sheludko
      • Leszek Swirski
      • Raphael Herouart
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: v8/v8
      Gerrit-Branch: main
      Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
      Gerrit-Change-Number: 7026131
      Gerrit-PatchSet: 63
      Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
      Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
      Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
      Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
      Gerrit-CC: Hannes Payer <hpa...@chromium.org>
      Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
      Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
      Gerrit-Attention: Leszek Swirski <les...@chromium.org>
      Gerrit-Comment-Date: Thu, 11 Dec 2025 08:16:19 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      Leszek Swirski (Gerrit)

      unread,
      Dec 11, 2025, 4:39:41 AM (5 days ago) Dec 11
      to Raphael Herouart, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
      Attention needed from Igor Sheludko and Raphael Herouart

      Leszek Swirski added 2 comments

      File src/flags/flag-definitions.h
      Line 3931, Patchset 63 (Latest):DEFINE_WEAK_IMPLICATION(future, proto_assign_seq_lazy_func_opt)
      Leszek Swirski . unresolved

      let's not do this yet, `future` is for things closer to shipping. Consider instead an implication from `experimental_fuzzing`

      Line 3927, Patchset 63 (Latest):DEFINE_BOOL(proto_assign_seq_lazy_func_opt, false,
      Leszek Swirski . unresolved

      `DEFINE_EXPERIMENTAL_FEATURE(proto_assign_seq_lazy_func_opt,`, otherwise this becomes immediately open to VRP

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Igor Sheludko
      • Raphael Herouart
      Submit Requirements:
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: v8/v8
        Gerrit-Branch: main
        Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
        Gerrit-Change-Number: 7026131
        Gerrit-PatchSet: 63
        Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
        Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
        Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
        Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
        Gerrit-CC: Hannes Payer <hpa...@chromium.org>
        Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
        Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
        Gerrit-Comment-Date: Thu, 11 Dec 2025 09:39:35 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        unsatisfied_requirement
        open
        diffy

        Raphael Herouart (Gerrit)

        unread,
        Dec 11, 2025, 5:02:32 AM (5 days ago) Dec 11
        to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
        Attention needed from Igor Sheludko and Leszek Swirski

        Raphael Herouart added 2 comments

        File src/flags/flag-definitions.h
        Line 3931, Patchset 63:DEFINE_WEAK_IMPLICATION(future, proto_assign_seq_lazy_func_opt)
        Leszek Swirski . resolved

        let's not do this yet, `future` is for things closer to shipping. Consider instead an implication from `experimental_fuzzing`

        Raphael Herouart

        Done

        Line 3927, Patchset 63:DEFINE_BOOL(proto_assign_seq_lazy_func_opt, false,
        Leszek Swirski . resolved

        `DEFINE_EXPERIMENTAL_FEATURE(proto_assign_seq_lazy_func_opt,`, otherwise this becomes immediately open to VRP

        Raphael Herouart

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Igor Sheludko
        • Leszek Swirski
        Submit Requirements:
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: v8/v8
          Gerrit-Branch: main
          Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
          Gerrit-Change-Number: 7026131
          Gerrit-PatchSet: 64
          Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
          Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
          Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
          Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
          Gerrit-CC: Hannes Payer <hpa...@chromium.org>
          Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
          Gerrit-Attention: Leszek Swirski <les...@chromium.org>
          Gerrit-Comment-Date: Thu, 11 Dec 2025 10:02:27 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Leszek Swirski <les...@chromium.org>
          unsatisfied_requirement
          open
          diffy

          Igor Sheludko (Gerrit)

          unread,
          Dec 12, 2025, 4:57:29 AM (4 days ago) Dec 12
          to Raphael Herouart, Leszek Swirski, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
          Attention needed from Leszek Swirski and Raphael Herouart

          Igor Sheludko added 20 comments

          Patchset-level comments
          File-level comment, Patchset 64 (Latest):
          Igor Sheludko . resolved

          mostly nits modulo feedback_slot overflow

          File src/execution/isolate-data.h
          Line 333, Patchset 64 (Latest): // Whether we are using SetPrototypeProperties together with LazyClosures
          Igor Sheludko . unresolved

          ```
          // , basically, the value of --proto_assign_seq_lazy_func_opt flag to be
          // used from builtins.
          ```

          (Please finish comments with `.`).

          File src/heap/factory.h
          Line 192, Patchset 64 (Latest): DirectHandle<Context> ctx,
          Igor Sheludko . unresolved

          Nit here and below: please use full words unless the name is too long (see the code around). So, `context`.

          File src/ic/accessor-assembler.cc
          Line 2905, Patchset 64 (Latest): Label* if_not_lazy_closure, Label* slow, TNode<Object> value) {
          Igor Sheludko . unresolved

          Please consider defining a type `JSAnyOrSharedFunctionInfo`, this would make it clear that this function is applicable for lazy closures case.

          Line 2913, Patchset 64 (Latest): Return(value);
          Igor Sheludko . unresolved

          Using `Return` in the helper limits its usefulness. Did you mean to jump to
          `if_not_lazy_closure`?

          Please either update the name of the helper or consider renaming it to
          `GotoIfLazyClosure(value, if_lazy_closure)` and letting it fall through if it's not the case or to `BranchIfLazyClosure(value, if_blah, if_not_blah)` (see other GotoIf/BranchIf in CSA, the labels are the last arguments).

          File src/objects/js-objects.cc
          Line 5002, Patchset 64 (Latest): closure_info = DirectHandle<PrototypeSharedClosureInfo>(
          Igor Sheludko . unresolved

          Nit: just `direct_handle(`.

          File src/objects/objects.cc
          Line 1294, Patchset 64 (Latest): if (TryCast<SharedFunctionInfo>(value, &shared)) {
          Igor Sheludko . unresolved

          Please consider extracting the body of this `if` to a helper function to simplify the code here.

          Line 1296, Patchset 64 (Latest): Tagged<Map> proto_map = holder->map();
          Igor Sheludko . unresolved

          Nit: good practice is not to leave raw values around in function that can allocate even though you are not using them after allocation. Please replace the two usages with just `holder->map()`.

          Line 1300, Patchset 64 (Latest): Tagged<Context> closure_ctx = closure_info->context();
          Igor Sheludko . unresolved

          Same here: create the handle right away.

          Line 1327, Patchset 64 (Latest): return it->GetDataValue();
          Igor Sheludko . unresolved

          This method is not cheap, this should have been just `return value;`.

          How about restructuring the code like this:
          ```
          DirectHandle<Object> value = it->GetDataValue();
          if (!flag) {
          return value;
          }
          if (lazy_closure_case) {
          ...
          }
          return value;
          ```
          File src/objects/prototype-info.h
          Line 27, Patchset 64 (Latest): class BodyDescriptor;
          Igor Sheludko . unresolved

          Nit: for "Structs" (i.e. all tagged fields objects of fixed size) you can just use `using BodyDescriptor = StructBodyDescriptor;`.

          Please add empty lines before and after this line.

          File src/objects/prototype-info.tq
          Igor Sheludko . unresolved

          `.` at the end.

          File src/objects/shared-function-info.tq
          Line 119, Patchset 64 (Latest): feedback_slot: uint16;
          Igor Sheludko . unresolved

          Please add a comment about this field.

          File src/runtime/runtime-literals.cc
          Line 588, Patchset 64 (Latest):static DirectHandle<Object> InstantiateIfSharedFunctionInfo(
          Igor Sheludko . unresolved

          Nit: Chromium C++ style guide recommends putting such functions into anonymous namespaces instead of using `static` (see, there's one above).

          Line 593, Patchset 64 (Latest): if (!v8_flags.proto_assign_seq_lazy_func_opt) {
          Igor Sheludko . unresolved

          I think the code in this function will be nicer if you return early if the value is not a `SharedFunctionInfo` (there will be less nesting).

          Line 613, Patchset 64 (Latest): auto closure_ctx = closure_info->context();
          Igor Sheludko . unresolved

          This will be a raw `Tagged<Context>` value in a function that can allocate. Please "inline" it into the use place instead.

          Line 616, Patchset 64 (Latest): // set up. We can only take the lazy closure path it the context
          Igor Sheludko . unresolved

          Typo: `if`.

          Line 620, Patchset 64 (Latest): DCHECK(base::IsInRange(current_slot, 0, kMaxUInt16));
          Igor Sheludko . unresolved

          Is there a limit somewhere that guarantees this assumption?

          Line 639, Patchset 64 (Latest): DCHECK(base::IsInRange(current_slot, 0, kMaxUInt16));
          Igor Sheludko . unresolved

          Ditto.

          File test/mjsunit/opt-proto-seq/proto-seq-opt-function-fast-path.js
          Line 52, Patchset 46:// assert_test_function_fast_path(test_function_fast_path());
          Igor Sheludko . unresolved

          Are these lines still causing issues?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Leszek Swirski
          • Raphael Herouart
          Submit Requirements:
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: v8/v8
            Gerrit-Branch: main
            Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
            Gerrit-Change-Number: 7026131
            Gerrit-PatchSet: 64
            Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
            Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
            Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
            Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
            Gerrit-CC: Hannes Payer <hpa...@chromium.org>
            Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
            Gerrit-Attention: Leszek Swirski <les...@chromium.org>
            Gerrit-Comment-Date: Fri, 12 Dec 2025 09:57:22 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            unsatisfied_requirement
            open
            diffy

            Raphael Herouart (Gerrit)

            unread,
            Dec 15, 2025, 4:01:36 AM (yesterday) Dec 15
            to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
            Attention needed from Igor Sheludko and Leszek Swirski

            Raphael Herouart added 1 comment

            File test/mjsunit/opt-proto-seq/proto-seq-opt-function-fast-path.js
            Line 52, Patchset 46:// assert_test_function_fast_path(test_function_fast_path());
            Igor Sheludko . resolved

            Are these lines still causing issues?

            Raphael Herouart

            Done

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Igor Sheludko
            • Leszek Swirski
            Submit Requirements:
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: v8/v8
            Gerrit-Branch: main
            Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
            Gerrit-Change-Number: 7026131
            Gerrit-PatchSet: 65
            Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
            Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
            Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
            Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
            Gerrit-CC: Hannes Payer <hpa...@chromium.org>
            Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
            Gerrit-Attention: Leszek Swirski <les...@chromium.org>
            Gerrit-Comment-Date: Mon, 15 Dec 2025 09:01:30 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Igor Sheludko <ish...@chromium.org>
            unsatisfied_requirement
            open
            diffy

            Raphael Herouart (Gerrit)

            unread,
            Dec 15, 2025, 5:28:16 AM (yesterday) Dec 15
            to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
            Attention needed from Igor Sheludko and Leszek Swirski

            Raphael Herouart added 17 comments

            File src/execution/isolate-data.h
            Line 333, Patchset 64: // Whether we are using SetPrototypeProperties together with LazyClosures
            Igor Sheludko . resolved

            ```
            // , basically, the value of --proto_assign_seq_lazy_func_opt flag to be
            // used from builtins.
            ```

            (Please finish comments with `.`).

            Raphael Herouart

            Done

            File src/heap/factory.h
            Line 192, Patchset 64: DirectHandle<Context> ctx,
            Igor Sheludko . resolved

            Nit here and below: please use full words unless the name is too long (see the code around). So, `context`.

            Raphael Herouart

            Done

            File src/ic/accessor-assembler.cc
            Line 2905, Patchset 64: Label* if_not_lazy_closure, Label* slow, TNode<Object> value) {
            Igor Sheludko . resolved

            Please consider defining a type `JSAnyOrSharedFunctionInfo`, this would make it clear that this function is applicable for lazy closures case.

            Raphael Herouart

            Done

            Line 2913, Patchset 64: Return(value);
            Igor Sheludko . resolved

            Using `Return` in the helper limits its usefulness. Did you mean to jump to
            `if_not_lazy_closure`?

            Please either update the name of the helper or consider renaming it to
            `GotoIfLazyClosure(value, if_lazy_closure)` and letting it fall through if it's not the case or to `BranchIfLazyClosure(value, if_blah, if_not_blah)` (see other GotoIf/BranchIf in CSA, the labels are the last arguments).

            Raphael Herouart

            Done

            File src/objects/js-objects.cc
            Line 5002, Patchset 64: closure_info = DirectHandle<PrototypeSharedClosureInfo>(
            Igor Sheludko . resolved

            Nit: just `direct_handle(`.

            Raphael Herouart

            Done

            File src/objects/objects.cc
            Line 1294, Patchset 64: if (TryCast<SharedFunctionInfo>(value, &shared)) {
            Igor Sheludko . resolved

            Please consider extracting the body of this `if` to a helper function to simplify the code here.

            Raphael Herouart

            Done

            Line 1296, Patchset 64: Tagged<Map> proto_map = holder->map();
            Igor Sheludko . resolved

            Nit: good practice is not to leave raw values around in function that can allocate even though you are not using them after allocation. Please replace the two usages with just `holder->map()`.

            Raphael Herouart

            Done

            Line 1300, Patchset 64: Tagged<Context> closure_ctx = closure_info->context();
            Igor Sheludko . resolved

            Same here: create the handle right away.

            Raphael Herouart

            Done

            Line 1327, Patchset 64: return it->GetDataValue();
            Igor Sheludko . resolved

            This method is not cheap, this should have been just `return value;`.

            How about restructuring the code like this:
            ```
            DirectHandle<Object> value = it->GetDataValue();
            if (!flag) {
            return value;
            }
            if (lazy_closure_case) {
            ...
            }
            return value;
            ```
            Raphael Herouart

            Done

            File src/objects/prototype-info.tq
            Line 44, Patchset 64: // of closures
            Igor Sheludko . resolved

            `.` at the end.

            Raphael Herouart

            Done

            File src/objects/shared-function-info.tq
            Line 119, Patchset 64: feedback_slot: uint16;
            Igor Sheludko . resolved

            Please add a comment about this field.

            Raphael Herouart

            Done

            File src/runtime/runtime-literals.cc
            Line 588, Patchset 64:static DirectHandle<Object> InstantiateIfSharedFunctionInfo(
            Igor Sheludko . resolved

            Nit: Chromium C++ style guide recommends putting such functions into anonymous namespaces instead of using `static` (see, there's one above).

            Raphael Herouart

            Done

            Line 593, Patchset 64: if (!v8_flags.proto_assign_seq_lazy_func_opt) {
            Igor Sheludko . resolved

            I think the code in this function will be nicer if you return early if the value is not a `SharedFunctionInfo` (there will be less nesting).

            Raphael Herouart

            Done

            Line 613, Patchset 64: auto closure_ctx = closure_info->context();
            Igor Sheludko . resolved

            This will be a raw `Tagged<Context>` value in a function that can allocate. Please "inline" it into the use place instead.

            Raphael Herouart

            Done

            Line 616, Patchset 64: // set up. We can only take the lazy closure path it the context
            Igor Sheludko . resolved

            Typo: `if`.

            Raphael Herouart

            Done

            Line 620, Patchset 64: DCHECK(base::IsInRange(current_slot, 0, kMaxUInt16));
            Igor Sheludko . resolved

            Is there a limit somewhere that guarantees this assumption?

            Raphael Herouart

            Done

            Line 639, Patchset 64: DCHECK(base::IsInRange(current_slot, 0, kMaxUInt16));
            Igor Sheludko . resolved

            Ditto.

            Raphael Herouart

            Done

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Igor Sheludko
            • Leszek Swirski
            Submit Requirements:
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: v8/v8
            Gerrit-Branch: main
            Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
            Gerrit-Change-Number: 7026131
            Gerrit-PatchSet: 67
            Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
            Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
            Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
            Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
            Gerrit-CC: Hannes Payer <hpa...@chromium.org>
            Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
            Gerrit-Attention: Leszek Swirski <les...@chromium.org>
            Gerrit-Comment-Date: Mon, 15 Dec 2025 10:28:11 +0000
            unsatisfied_requirement
            open
            diffy

            Raphael Herouart (Gerrit)

            unread,
            Dec 15, 2025, 5:38:51 AM (yesterday) Dec 15
            to Leszek Swirski, chrom...@appspot.gserviceaccount.com, Igor Sheludko, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
            Attention needed from Igor Sheludko and Leszek Swirski

            Raphael Herouart added 1 comment

            File src/objects/prototype-info.h
            Line 27, Patchset 64: class BodyDescriptor;
            Igor Sheludko . resolved

            Nit: for "Structs" (i.e. all tagged fields objects of fixed size) you can just use `using BodyDescriptor = StructBodyDescriptor;`.

            Please add empty lines before and after this line.

            Raphael Herouart

            Done

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Igor Sheludko
            • Leszek Swirski
            Submit Requirements:
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: v8/v8
              Gerrit-Branch: main
              Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
              Gerrit-Change-Number: 7026131
              Gerrit-PatchSet: 68
              Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
              Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
              Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
              Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
              Gerrit-CC: Hannes Payer <hpa...@chromium.org>
              Gerrit-Attention: Igor Sheludko <ish...@chromium.org>
              Gerrit-Attention: Leszek Swirski <les...@chromium.org>
              Gerrit-Comment-Date: Mon, 15 Dec 2025 10:38:46 +0000
              unsatisfied_requirement
              open
              diffy

              Igor Sheludko (Gerrit)

              unread,
              Dec 15, 2025, 6:24:35 AM (24 hours ago) Dec 15
              to Raphael Herouart, Leszek Swirski, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
              Attention needed from Leszek Swirski and Raphael Herouart

              Igor Sheludko voted and added 3 comments

              Votes added by Igor Sheludko

              Code-Review+1

              3 comments

              Patchset-level comments
              File-level comment, Patchset 68 (Latest):
              Igor Sheludko . resolved

              lgtm with last nits

              File src/ic/accessor-assembler.h
              Line 556, Patchset 68 (Latest): TNode<JSAnyOrSharedFunctionInfo> value);
              Igor Sheludko . unresolved

              Nit: please put the value argument first to be consistent with the other similar functions in CSA.

              File src/runtime/runtime-literals.cc
              Line 593, Patchset 68 (Latest): DirectHandle<SharedFunctionInfo> shared;
              if (!TryCast<SharedFunctionInfo>(value, &shared)) {
              return value;
              }
              Igor Sheludko . unresolved

              This part is common for both `proto_assign_seq_lazy_func_opt` and `!proto_assign_seq_lazy_func_opt` cases. How about moving the above if here?

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Leszek Swirski
              • Raphael Herouart
              Submit Requirements:
                • requirement is not satisfiedCode-Owners
                • requirement satisfiedCode-Review
                • requirement is not satisfiedNo-Unresolved-Comments
                • requirement satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: v8/v8
                Gerrit-Branch: main
                Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                Gerrit-Change-Number: 7026131
                Gerrit-PatchSet: 68
                Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
                Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
                Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
                Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
                Gerrit-CC: Hannes Payer <hpa...@chromium.org>
                Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
                Gerrit-Attention: Leszek Swirski <les...@chromium.org>
                Gerrit-Comment-Date: Mon, 15 Dec 2025 11:24:30 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: Yes
                unsatisfied_requirement
                satisfied_requirement
                open
                diffy

                Raphael Herouart (Gerrit)

                unread,
                Dec 15, 2025, 8:30:15 AM (22 hours ago) Dec 15
                to Igor Sheludko, Leszek Swirski, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
                Attention needed from Leszek Swirski

                Raphael Herouart added 2 comments

                File src/ic/accessor-assembler.h
                Line 556, Patchset 68: TNode<JSAnyOrSharedFunctionInfo> value);
                Igor Sheludko . resolved

                Nit: please put the value argument first to be consistent with the other similar functions in CSA.

                Raphael Herouart

                Done

                File src/runtime/runtime-literals.cc
                Line 593, Patchset 68: DirectHandle<SharedFunctionInfo> shared;

                if (!TryCast<SharedFunctionInfo>(value, &shared)) {
                return value;
                }
                Igor Sheludko . resolved

                This part is common for both `proto_assign_seq_lazy_func_opt` and `!proto_assign_seq_lazy_func_opt` cases. How about moving the above if here?

                Raphael Herouart

                Done

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Leszek Swirski
                Submit Requirements:
                  • requirement is not satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                  Gerrit-Change-Number: 7026131
                  Gerrit-PatchSet: 70
                  Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
                  Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
                  Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
                  Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
                  Gerrit-CC: Hannes Payer <hpa...@chromium.org>
                  Gerrit-Attention: Leszek Swirski <les...@chromium.org>
                  Gerrit-Comment-Date: Mon, 15 Dec 2025 13:30:11 +0000
                  unsatisfied_requirement
                  satisfied_requirement
                  open
                  diffy

                  Leszek Swirski (Gerrit)

                  unread,
                  Dec 15, 2025, 8:34:26 AM (22 hours ago) Dec 15
                  to Raphael Herouart, Igor Sheludko, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com
                  Attention needed from Raphael Herouart

                  Leszek Swirski voted Code-Review+1

                  Code-Review+1
                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Raphael Herouart
                  Submit Requirements:
                  • requirement satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                  Gerrit-Change-Number: 7026131
                  Gerrit-PatchSet: 70
                  Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
                  Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
                  Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
                  Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
                  Gerrit-CC: Hannes Payer <hpa...@chromium.org>
                  Gerrit-Attention: Raphael Herouart <rher...@chromium.org>
                  Gerrit-Comment-Date: Mon, 15 Dec 2025 13:34:21 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  open
                  diffy

                  Raphael Herouart (Gerrit)

                  unread,
                  Dec 15, 2025, 8:34:40 AM (22 hours ago) Dec 15
                  to Leszek Swirski, Igor Sheludko, chrom...@appspot.gserviceaccount.com, AyeAye, V8 LUCI CQ, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com

                  Raphael Herouart voted Commit-Queue+2

                  Commit-Queue+2
                  Open in Gerrit

                  Related details

                  Attention set is empty
                  Submit Requirements:
                  • requirement satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                  Gerrit-Change-Number: 7026131
                  Gerrit-PatchSet: 70
                  Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
                  Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
                  Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
                  Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
                  Gerrit-CC: Hannes Payer <hpa...@chromium.org>
                  Gerrit-Comment-Date: Mon, 15 Dec 2025 13:34:35 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  open
                  diffy

                  V8 LUCI CQ (Gerrit)

                  unread,
                  Dec 15, 2025, 9:08:16 AM (21 hours ago) Dec 15
                  to Raphael Herouart, Leszek Swirski, Igor Sheludko, chrom...@appspot.gserviceaccount.com, AyeAye, Hannes Payer, v8-flag...@chromium.org, cbruni...@chromium.org, mlippau...@chromium.org, v8-re...@googlegroups.com

                  V8 LUCI CQ submitted the change

                  Change information

                  Commit message:
                  [runtime] Closure Creation from SetPrototypeProperties should be deferred to first call

                  This CL defers the creation of closures from `SetPrototypeProperties` to
                  when the function is first called.

                  When `SetPrototypeProperties` is used to assign multiple functions to a
                  prototype, instead of creating a `JSFunction` object for each one, this
                  change stores the `SharedFunctionInfo` directly on the object.

                  The `JSFunction` is only instantiated on the first access.This is a
                  performance optimization controlled by the new flag
                  `proto_assign_seq_lazy_func_opt`.

                  To support this lazy creation, a new `PrototypeSharedClosureInfo` struct
                  is introduced to store the necessary context for when the closure is
                  eventually created. The property access and IC mechanisms have been
                  updated to handle this deferred instantiation.
                  Bug: 449885256
                  Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                  Reviewed-by: Igor Sheludko <ish...@chromium.org>
                  Commit-Queue: Raphael Herouart <rher...@chromium.org>
                  Reviewed-by: Leszek Swirski <les...@chromium.org>
                  Cr-Commit-Position: refs/heads/main@{#104322}
                  Files:
                  • M src/common/globals.h
                  • M src/diagnostics/objects-debug.cc
                  • M src/diagnostics/objects-printer.cc
                  • M src/execution/isolate-data-fields.h
                  • M src/execution/isolate-data.h
                  • M src/execution/isolate.cc
                  • M src/flags/flag-definitions.h
                  • M src/heap/factory-base.cc
                  • M src/heap/factory.cc
                  • M src/heap/factory.h
                  • M src/heap/heap-visitor.h
                  • M src/ic/accessor-assembler.cc
                  • M src/ic/accessor-assembler.h
                  • M src/objects/js-objects.cc
                  • M src/objects/map-inl.h
                  • M src/objects/map.cc
                  • M src/objects/map.h
                  • M src/objects/map.tq
                  • M src/objects/objects-definitions.h
                  • M src/objects/objects.cc
                  • M src/objects/objects.h
                  • M src/objects/prototype-info-inl.h
                  • M src/objects/prototype-info.h
                  • M src/objects/prototype-info.tq
                  • M src/objects/shared-function-info-inl.h
                  • M src/objects/shared-function-info.cc
                  • M src/objects/shared-function-info.h
                  • M src/objects/shared-function-info.tq
                  • M src/objects/transitions-inl.h
                  • M src/objects/transitions.cc
                  • M src/objects/transitions.h
                  • M src/roots/static-roots-intl-nowasm.h
                  • M src/roots/static-roots-intl-wasm.h
                  • M src/roots/static-roots-nointl-nowasm.h
                  • M src/roots/static-roots-nointl-wasm.h
                  • M src/runtime/runtime-literals.cc
                  Change size: XL
                  Delta: 36 files changed, 3572 insertions(+), 3254 deletions(-)
                  Branch: refs/heads/main
                  Submit Requirements:
                  • requirement satisfiedCode-Review: +1 by Igor Sheludko, +1 by Leszek Swirski
                  Open in Gerrit
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: merged
                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ia54b695940c0231e50f18e2509888c19f172968b
                  Gerrit-Change-Number: 7026131
                  Gerrit-PatchSet: 71
                  Gerrit-Owner: Raphael Herouart <rher...@chromium.org>
                  Gerrit-Reviewer: Igor Sheludko <ish...@chromium.org>
                  Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
                  Gerrit-Reviewer: Raphael Herouart <rher...@chromium.org>
                  Gerrit-CC: Hannes Payer <hpa...@chromium.org>
                  open
                  diffy
                  satisfied_requirement
                  Reply all
                  Reply to author
                  Forward
                  0 new messages