# Monday, 11 February 2013
« Fixing a Long Standing Limitation | Main | New Development Snapshot »
New Development Snapshot

The recent architectural change makes it possible for the static compiler to use dynamic binding when it encounters a missing type. This in turn makes the dynamic binding support more important, so I've been fixing a lot of bugs in this area.

Currently, ikvmc will still emit code that statically throws a NoClassDefFoundError when accessing missing types, but in the future the default will change to generate dynamic binding code in this case.


  • Fixed a bug with Graphics.setComposite(x). This fixes most paint artefacts of Nimbus L&F.
  • Fixed a NPE in constructor of BufferedImage.
  • Fixed TexturePaint bugs.
  • Enable ldc to work for unloadable types in dynamic mode.
  • Changed dynamic bytecode helper methods to be CallerID based instead of trusting the caller to provide the right context type handle.
  • Use sun.launcher.LauncherHelper to make the launcher more consistent with Java.
  • Implemented package access checks in dynamic mode.
  • Fixed reflection handling of unloadable types.
  • Added CodeGenOptions.DisableDynamicBinding to disable dynamic binding, instead of conditional compilation.
  • Bug fix. Dynamic method invocations should unwrap InvocationTargetException.
  • Bug fix. Dynamic instantiation should throw InstantiationError when trying to instantiate an abstract class.
  • Bug fix. Dynamic invokespecial (that isn't a new) should fail verification.
  • Bug fix. Dynamic method lookup should also look in base classes (for non-constructor methods).
  • Bug fix. When dynamically calling a non-constructor instance method, the receiver object should be of the correct type.
  • Added support for setPaint with custom Paint implementation.
  • Added support for dynamic (non-loadable type) annotations in statically compiled code.
  • Have ikvmc record inner classes even if they can't be loaded.
  • Have ikvmc record the outer class even if it is not loadable.
  • Bug fix. If the runtime tries to load a class from an assembly with a custom assembly class loader, the custom assembly class loader should be called. Previously it would only be called if the Java class loader had been instantiated.
  • Bug fix. We should emit miranda methods for non-abstract classes too.
  • Bug fix. Mark "missing" interface methods so that subclasses (that are compiled separately) know that the base class is incomplete.
  • Allow dynamic assemblies injected into assembly class loaders to be (debug dump) saved.
  • Changed the build system to automatically scan all sources files for copyright statements and validate that all GPL licensed files include the Classpath exception.
  • Removed resource compiler dependency from JVM.DLL build.
  • Bug fix. Custom assembly class loader was made visible to other threads while it was still being constructed.
  • Stop considering ACC_SUPER when linking invokespecial (unless compatibility switch is set). This change matches the security change in Java 7u13.
  • Improved ldc MethodType: Use nested type with class constructor to create values with statically know signatures (like ldc MethodHandle).
  • Improved ldc MethodType: Use caching for dynamicallly constructed MethodType values but retry on failure.
  • Fixed dynamic dispatch class loading exception handling to wrap non-java.lang.Error exceptions in NoClassDefFoundError.
  • Added support for dynamic ldc MethodHandle.
  • Added support for dynamically linking the boostrap method of an invokedynamic.
  • IKVM.Reflection: Expose the Name and __ModuleHash for missing external Modules.
  • IKVM.Reflection: Regression fix. The AssemblyNames returned by Module.__GetReferencedAssemblies() didn't have the ContentType set for windowruntime assembly references.
  • IKVM.Reflection: Added new public API Module.__ResolveTypeSpecCustomModifiers() to resolve the (useless) custom modifiers that can be put on TypeSpecs.
  • IKVM.Reflection: Added another overload of the public API Module.__GetSectionInfo() that returns more information about the section.
  • IKVM.Reflection: Bug fix. The OriginalFilename in the version info resource should only include the filename, not the path.

Binaries available here: ikvmbin-7.3.4790.zip

Monday, 11 February 2013 13:02:04 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]
Home page

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)

Comment (HTML not allowed)  

Live Comment Preview