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

More bug fixing and rounding out IKVM.Reflection.

Changes:

  • 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, 25 May 2010 06:28:37 (W. Europe Daylight Time, UTC+02:00)  #    Comments [2]
Tuesday, 25 May 2010 14:05:01 (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

com.google.common.collect.testing.OpenJdk6ListTests

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, 25 May 2010 15:05:46 (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.
Name
E-mail
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)

Answer:  
Comment (HTML not allowed)  

Live Comment Preview