I made a new snapshot that will become the 0.12 release if no showstoppers are found. Based on the Eclipse inlining mess I decided to measure how much of a performance hit it is to disable inlining for all non-leaf methods and I found it to be very small for the benchmarks I tried. This combined with the fact that inlining would need to be disabled (for many methods) in the future to support the Java security model, I decided to go ahead and do that already. This is the first IKVM version that actually supports running Eclipse 3.0 and using it to develop Java code (even if it is horribly slow to get warmed up).
I've also disabled dynamic binding in ikvmc compilation, because it doesn't really work. The problem is that package access doesn't work across assemblies, so any package accessible types/members in statically compiled code cannot be accessed by dynamically loaded classes. I may re-enable this functionality at some point in the future, by combining it with an option to make all package accessible types/members public.
For dynamically compiled code, dynamic binding continues to work (to support scenarios were the more eager loading of classes by IKVM would otherwise cause problems).
- Integrated GNU Classpath 0.14 release.
- Added ToString to ClassLoaderWrapper, to enable efficient tracing.
- Added support for HideFromJava attribute to map.xml parser.
- Added JNI trace switch.
- Added extensive tracing to JNI code.
- Added JVM.EnableReflectionOnMethodsWithUnloadableTypeParameters HACK to allow ikvm.exe to do reflection on main class that has unloadable types in method parameters.
- Added JVM.DisableDynamicBinding to disable dynamic binding when compiling with ikvmc.
- Cleaned up ikvmc warning/error messages.
- Added TypeWrapper.EnsureLoadable() to consistently handle unloadable types.
- Added generation of warning messages (in ikvmc scenario) to UnloadableTypeWrapper.
- Changed JNI method ptr field name to get more consistent JNI trace messages.
- Fixed JNI bug that caused JNI_GetCreatedJavaVMs not to work if the JVM wasn't started with JNI_CreateJavaVM.
- Added exception mapping methods __<map>() to java.lang.Throwable (not visible from Java and most other CLR languages, but used internally by IKVM).
- java.lang.ExceptionHelper is no longer public.
- Disabled method inlining for non-leaf methods.