More progress on the OpenJDK 8 integration and a couple of unrelated fixes.
I fixed an incompatibility with Mono (and other ECMA compliant tools that parse
custom attributes). When I changed package manifest handling in 7.4 to handle
reading the manifest from the right jar I unknowingly chose a custom attribute
encoding that works on the CLR, but isn't actually ECMA compliant. Mono has
since added support
for this encoding.
Another somewhat interesting change is that I added an (internal only) feature to
make it easier to replace sun.misc.Unsafe.compareAndSet() with
Interlocked.CompareExchange. The trigger was the new reflection data caching in
java.lang.Class. Here's an example of what it looks like:
boolean casReflectionData(Class<?> clazz,
The ikvmc compiler will generate a method body that uses
Interlocked.CompareExchange<T>() to update the reflectionData field in Class.
In other places where I previously used Interlocked methods (e.g.
java.util.concurrent.AtomicReferenceArray) I implemented the method body in
map.xml using MSIL instructions, but here the generic version of CompareExchange
is needed and I didn't want to invent a syntax for instantiating a generic
method in map.xml.
Oracle is working on adding atomic operations to Java and I suggested this
annotation based approach, but it was rejected because "we don't add language
semantics through annotations".
Binaries available here:
I apologize for the lameness of this, but the comment spam was driving me nuts.
In order to be able to post a comment, you need to answer a simple question. Hopefully this question
is easy enough not to annoy serious commenters, but hard enough to keep the spammers away.
Anti-Spam Question: What method on java.lang.System returns an object's original hashcode (i.e. the
one that would be returned by java.lang.Object.hashCode() if it wasn't overridden)? (case is significant)
Powered by: newtelligence dasBlog 2.3.12105.0
© Copyright 2017, Jeroen Frijters