You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Defer dataAddr eval & use mainline store for nullSource OffHeap x86 ArrayStoreCHK
ArrayStoreCHK in x86 uses null check and OOL store path for nullSource
stores, evaluating the destination address early to be used in either
the mainline or OOL store paths. For OffHeap evaluating the destination
address includes loading the dataAddr pointer, where having it alive
across GC point (OOL ArrayTypeCheck) will cause a crash [1].
To defer the evaluation and loading the dataAddr into a register, this
consolidate the store paths for null and non-null stores and defers the
destination address evaluation till before the store happens for OffHeap.
Side-effect of this is null stores performing a wrtbar/card-marking even
thought it's not necessary but opted for instead of a second null check.
[1]
Reason of crashing is evaluating the dataAddr pointer into a collectable
register. A long-term solution is fixing that without the impact of
setting every dataAddr as an internal-pointer.
0 commit comments