[foreign-memaccess+abi] RFR: TestScopedOperations does not work as expected
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Wed Sep 29 21:24:05 UTC 2021
When Julia started to work on the `MemorySegment::overlap` API, she noticed (thanks!) an issue with the TestScopedOperation. Essentially this test checks that calling methods on various objects should be scope-safe - that is, it shouldn't be possible to call certain methods (e.g. MemorySegment::address) if the scope associated with the object is closed, or from a thread other than the owning thread.
The test had a fatal flaw, which was probably introduced when we moved to the `ResourceScope` API. Since the scoped operation creates the desired object (e.g. a segment) and then performs an operation on it, and since that operation is performed _after_ the scope has been closed, as a result, all tests trivially fail as expected, since the object cannot be created in the first place (the scope is closed!!).
The solution is to separate the logic for creating the object from the logic for testing the scoped operation. In fixing the test I realized that the test was running two combinations which didn't make sense (prefixAllocator::allocate, and segment::spliterator, neither of which is scoped), and found a bug in the VaList implementation - for VaList::skip, which was missing a scope check (which this patch also addresses).
-------------
Commit messages:
- Fix TestScopedOperations
Changes: https://git.openjdk.java.net/panama-foreign/pull/587/files
Webrev: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=587&range=00
Stats: 50 lines in 6 files changed: 20 ins; 7 del; 23 mod
Patch: https://git.openjdk.java.net/panama-foreign/pull/587.diff
Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/587/head:pull/587
PR: https://git.openjdk.java.net/panama-foreign/pull/587
More information about the panama-dev
mailing list