Skip to content

Improve performance via update ObjectStructure and gc - #1676

Merged
bbrto21 merged 3 commits into
Samsung:masterfrom
ksh8281:dev
Sep 21, 2026
Merged

bbrto21 merged 3 commits into
Samsung:masterfrom
ksh8281:dev

Conversation

@ksh8281

@ksh8281 ksh8281 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

No description provided.

hasNonAtomicPropertyName was set when the key had an atomic string
instead of when it lacked one, so ObjectStructureWithoutTransition's
"has non-atomic names" flag never reflected reality for objects built
via this constructor, forcing lookups onto the slower comparison path
regardless of the actual key set.

Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
…table

PropertyNameMapWithCache previously wrapped a tree-based PropertyNameMap
storing a full copy of every key alongside its index, plus a one-entry
front cache for the last lookup. Replace it with a flat open-addressing
table of bare property indices (sized to 1/2/4 bytes depending on the
structure's property count) built directly over the existing
ObjectStructureItemVector, plus a bounded dense region for small array
indices. The bucket storage holds only integers, so it is GC_MALLOC_ATOMIC
and not scanned, and there is no second copy of the keys to keep in sync.

Since this cache is now cheaper to build and rebuild, lower
ESCARGOT_OBJECT_STRUCTURE_ACCESS_CACHE_BUILD_MIN_SIZE from 512 to 64 so
more structures take advantage of it sooner; tuned empirically, re-measure
if a better value is found.

Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
The checkout had drifted to a later commit on icu's main branch,
mismatching the release-78.1 tag documented in .gitmodules and
build/VendoredICU.cmake as the pin matching CI's Linux ICU version.

Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
@bbrto21
bbrto21 merged commit c75f9ad into Samsung:master Sep 21, 2026
55 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants