# Tuesday, May 25, 2010
« New Development Snapshot | Main | New Development Snapshot »
New Development Snapshot

More bug fixing and rounding out IKVM.Reflection.


  • Fixed resolution of generic type instance names with "fake" type as type argument.
  • Fixed bug in Finalize/finalize special casing for .NET types that caused exception when reflecting on them.
  • Fixed Finalize/finalize special casing for .NET types to also work for java.lang.Throwable derived types.
  • Removed fake core class library types from ikvmstub and added a -bootstrap option to run without dependency on runtime/core class library.
  • Fixed regression introduced when ikvm.runtime.Startup.setProperties() signature was changed. It should also be changed in the executable main stub.
  • Fixed ikvmc/ikvmstub regression introduced with the switch to IKVM.Reflection (not IKVM.Reflection.Emit) in volatile field handling acros assemblies.
  • Fixed several bugs exposed by Google Guice 2.0 test suite (bug #3004682).
  • Fixed AssemblyClassLoader so that it does not claim to be able to load .class resources for dynamically loaded classes.
  • When compiling with the -sharedclassloader option we can't do the "effectively final" optimization, because classes in another assembly can be part of the same package (and hence extend the packge private class).
  • Handle the case where the exception block ends at the end of the method.
  • IKVM.Reflection: Implemented Type.IsAssignableFrom() (minus co-/contravariance).
  • IKVM.Reflection: Implemented custom attribute filtering at the source. Added support for custom attribute sub typing.
  • IKVM.Reflection: Added __GetCustomAttributes() overloads for Assembly and Module for ease of use and consistency.
  • IKVM.Reflection: Added ICustomAttributeProvider interface.

Binaries available here: ikvmbin-0.43.3797.zip

Tuesday, May 25, 2010 6:28:37 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [2]
Tuesday, May 25, 2010 2:05:01 PM (W. Europe Daylight Time, UTC+02:00)
Nice, the Guice fixes also fix all the test failures in the extremely extensive Google Collections test suite.

I did notice one performance issue though:

On my machine


runs in about 8 seconds with 32-bit JDK 1.6.0_16 versus about 71 seconds with ikvm 0.43.3797.

If you're interested in checking it out, the Google Collections source can be checked out as follows:

svn checkout http://google-collections.googlecode.com/svn/trunk/src src

svn checkout http://google-collections.googlecode.com/svn/trunk/lib lib

svn checkout http://google-collections.googlecode.com/svn/trunk/test test

svn checkout http://google-collections.googlecode.com/svn/trunk/testfw testfw
Albert Strasheim
Tuesday, May 25, 2010 3:05:46 PM (W. Europe Daylight Time, UTC+02:00)
Thanks. I can repro the performance difference. I only briefly looked at it, but it may be due to exception handling performance, this test throws a large number of exceptions (about 450K) and that is an area where .NET and ikvm are know to lag substantially behind Java.
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