Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Defer dataAddr eval & use mainline store for nullSource OffHeap x86 A…
…rrayStoreCHK 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.
- Loading branch information