Commit-Queue | +1 |
std::optional<Tagged<Object>> maybe_properties,
Not sure this is the preferred style for this.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Code-Review | +1 |
Not sure this is the preferred style for this.
this is good
if (V8_LIKELY(!maybe_properties.has_value())) {
the implicit skipping of the write barrier is that expensive? The faster RO check doesn't help?
if (new_js_object_type != NewJSObjectType::kNoEmbedderFieldsAndNoApiWrapper) {
// embedder data slots need to be initialized separately
if (MayHaveEmbedderFields(map)) {
how about merging these two `ifs`? that way we keep the DCHECK in the `else` and don't need the `DCHECK_IMPLIES` above.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/131d7e64510000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/speedometer3 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/111d7e64510000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Commit-Queue | +1 |
if (V8_LIKELY(!maybe_properties.has_value())) {
the implicit skipping of the write barrier is that expensive? The faster RO check doesn't help?
The way the barrier is set up right now gets at least the IsMarking() flag upfront, which is totally unnecessary. I actually have started some work in this area (https://chromium-review.googlesource.com/c/v8/v8/+/6895242) but it's unclear how the end structure will look like as the barrier could just always look at "pointer from/to here are interesting" which will include RO (but require the page load).
if (new_js_object_type != NewJSObjectType::kNoEmbedderFieldsAndNoApiWrapper) {
// embedder data slots need to be initialized separately
if (MayHaveEmbedderFields(map)) {
how about merging these two `ifs`? that way we keep the DCHECK in the `else` and don't need the `DCHECK_IMPLIES` above.
I also wantto check that we never pass `kNoEmbedderFieldsAndNoApiWrapper` when there could be an embeddeder field which is different from `GetEmbedderFieldCount() == 0`.
Unfortunately (historic reasons...) we can have `MayHaveEmbedderFields(map) == true && GetEmbedderFieldCount(map) == 0` due to stuff being dependend on GN args.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Code-Review | +1 |
if (V8_LIKELY(!maybe_properties.has_value())) {
Michael Lippautzthe implicit skipping of the write barrier is that expensive? The faster RO check doesn't help?
The way the barrier is set up right now gets at least the IsMarking() flag upfront, which is totally unnecessary. I actually have started some work in this area (https://chromium-review.googlesource.com/c/v8/v8/+/6895242) but it's unclear how the end structure will look like as the barrier could just always look at "pointer from/to here are interesting" which will include RO (but require the page load).
Acknowledged
if (new_js_object_type != NewJSObjectType::kNoEmbedderFieldsAndNoApiWrapper) {
// embedder data slots need to be initialized separately
if (MayHaveEmbedderFields(map)) {
Michael Lippautzhow about merging these two `ifs`? that way we keep the DCHECK in the `else` and don't need the `DCHECK_IMPLIES` above.
I also wantto check that we never pass `kNoEmbedderFieldsAndNoApiWrapper` when there could be an embeddeder field which is different from `GetEmbedderFieldCount() == 0`.
Unfortunately (historic reasons...) we can have `MayHaveEmbedderFields(map) == true && GetEmbedderFieldCount(map) == 0` due to stuff being dependend on GN args.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/speedometer3 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/145b7e64510000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/125b7e64510000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/speedometer3 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/12c96f39910000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/1558a739910000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/1174bf39910000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Commit-Queue | +1 |
Removing +1, here's the delta: https://chromium-review.googlesource.com/c/v8/v8/+/6915239/6..11
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Code-Review | +1 |
FillMemoryTaggedUntil(size, filler_map);
if you want to optimize this further, you could probably use static roots here instead of reading off the roots.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/10c188b9910000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
FillMemoryTaggedUntil(size, filler_map);
if you want to optimize this further, you could probably use static roots here instead of reading off the roots.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/jetstream2 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/116588b9910000
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Code-Review | +1 |
void MemsetTagged(Tagged_t* start, Tagged<MaybeObject> value, size_t count) {
nit: this could call the Tagged_t overload now.
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Commit-Queue | +2 |
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Commit-Queue | +2 |
void MemsetTagged(Tagged_t* start, Tagged<MaybeObject> value, size_t count) {
nit: this could call the Tagged_t overload now.
Done
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
14 is the latest approved patch-set.
The change was submitted with unreviewed changes in the following files:
```
The name of the file: src/objects/slots-inl.h
Insertions: 2, Deletions: 3.
@@ -493,12 +493,11 @@
void MemsetTagged(Tagged_t* start, Tagged<MaybeObject> value, size_t count) {
#ifdef V8_COMPRESS_POINTERS
- // CompressAny since many callers pass values which are not valid objects.
Tagged_t raw_value = V8HeapCompressionScheme::CompressAny(value.ptr());
- MemsetUint32(start, raw_value, count);
+ MemsetTagged(start, raw_value, count);
#else
Address raw_value = value.ptr();
- MemsetPointer(start, raw_value, count);
+ MemsetTagged(start, raw_value, count);
#endif
}
```
[runtime] Optimize JSObject creation from JSON builder
Add a fast path that avoids
- the embedder field check
- the write barrier for the properties in case we set the empty array
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |