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.

-------------

Commit messages:
 - Address review feedback, pending TODOs
 - Revert "Temporary debug prints (revert this later)"
 - Merge branch 'master' into kcr-marlin-ffm.dev
 - Merge branch 'master' into kcr-marlin-ffm
 - Replace unsafe with off-heap in the names of methods, fields and strings 
(including system properties)
 - Temporary debug prints (revert this later)
 - No need for '--sun-misc-unsafe-memory-access=allow' any more
 - Set used to 0 in dispose and only copy up to 'used' bytes in resize
 - Initial FFM implementation
 - Encapsulate all off-heap access in OffHeapArray

Changes: https://git.openjdk.org/jfx/pull/1814/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1814&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8334137
  Stats: 302 lines in 12 files changed: 73 ins; 99 del; 130 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

Reply via email to