> 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.
Kevin Rushforth has updated the pull request incrementally with one additional commit since the last revision: Review comments ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1814/files - new: https://git.openjdk.org/jfx/pull/1814/files/973e02f0..e755188e Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1814&range=04 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1814&range=03-04 Stats: 7 lines in 1 file changed: 2 ins; 1 del; 4 mod Patch: https://git.openjdk.org/jfx/pull/1814.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1814/head:pull/1814 PR: https://git.openjdk.org/jfx/pull/1814