On Wed, 21 May 2025 15:46:36 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
>> PR to replace the use of sun.misc.Unsafe memory access methods in the Marlin >> rasterizer with FFM. >> >> I broke this up into the following commits. The bulk of the work is in the >> first two: >> >> 1. Encapsulate all off-heap access in OffHeapArray -- All of the memory >> allocation and management was already done in the OffHeapArray class, but >> the users of OffHeapArray, primarily Renderer and RendererNoAA, called >> Unsafe methods directly. I encapsulated all of the calls to Unsafe in >> OffHeapArray. The main impact on calling code is that the base address is no >> longer accessible or needed. Instead, the `(put|get)(Byte|Int)` methods take >> only an offset. This commit was straight refactoring with no behavioral >> changes. >> 2. Initial FFM implementation -- I changed the memory management and access >> methods to use FFM. Each OffHeap array uses a shared Arena to manage the >> single memory segment allocated at construction time. The resize method >> creates a new Arena and memory segment, copying the data from the old and >> then closing it >> 3. Set `used` to 0 in `dispose()` -- While testing and instrumenting the >> code, I discovered that the Renderer dispose methods resize the edges array >> back to the default size without clearing the "used" field. The used field >> will be cleared before the next time it is accessed, but clearing it in >> dispose allows optimizing resize to not copy any data. >> 4. Remove '--sun-misc-unsafe-memory-access=allow' from test and app >> execution, since it is no longer needed. This also enables `-Werror` for the >> `javafx.graphics` module. >> 5. ~~Temporary debug prints that will be removed before making this "rfr"~~ >> >> Additional commits address review comments. > > modules/javafx.graphics/src/main/java/com/sun/marlin/MaskMarlinAlphaConsumer.java > line 110: > >> 108: >> 109: for (int i = 0; i < _ALPHA_MAP.length; i++) { >> 110: ALPHA_MAP_UNSAFE.putByte(i, _ALPHA_MAP[i]); > > I know you are trying to keep the diffs to a minimum, but since there is no > more Unsafe, can we replace the "UNSAFE" with something more meaningful? Thanks for the reminder. I actually do want to change this. I had originally put a "FIXME" comment to do that, but removed it during the cleanup prior to the draft PR. My thought was to use something like "OFF_HEAP" rather than a bake the implementation of the off-heap memory into the name. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1814#discussion_r2100676862