The latest round of changes to the JEP and draft implementation are now available for review:
JEP: http://openjdk.java.net/jeps/8207851 webrev: http://cr.openjdk.java.net/~adinn/pmem/webrev.05/ Latest Changes: After a very helpful discussion with Alan at FOSDEM I borrowed some hints from him and adjusted the JEP and the latest implementation to address concerns about adding more cruft to the current JDK APIs. The latest solution removes the extra MapMode enum values for SYNC mappings. Instead it makes the enum constructor for MapMode public, allowing JDK-internal FileChannel code to add some extra, extended MapMode tags that are recognized by FileChannel.map. An API class in package jdk.unsupported makes these enum values available for clients that want to perform SYNC maps. This minimizes yet further the changes to JDK public APIs. Thanks are very much due to Alan for explaining how to tease out the dependencies here. I also followed up Vladimir's suggestion regarding the implementation and initialised static long field Unsafe.CACHE_LINE_FLUSH_SIZE by injecting a value during JVM initialization rather than haing Unsafe call out via a native at clinit. I actually added a separate package-public class UnsafeConstants to own the static field and ran the initialize_class call and the do_local_static_fields fixup of static values on that class rather than on Unsafe. This should make it easy to add a follow up patch which injects some of the other static constants in Unsafe that are currently being accessed via native callouts (e.g. the page size). I believe I have also cleaned up the last few remaining issues in previous reviews -- especially: all uses of Persistent have now been replaced with Sync (apart from one comment where I am describing the behaviour of the NVRAM memory) regards, Andrew Dinn ----------- Senior Principal Software Engineer Red Hat UK Ltd Registered in England and Wales under Company Registration No. 03798903 Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander