2007-07-22 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / ChangeLog
index 044af6984afb94ee60a1dd252c8f13273e8a0f26..9e8ec539d1c8757e61ff7bb6ff67bc4fb4361fa8 100644 (file)
@@ -1,3 +1,431 @@
+2007-07-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * loader.c (mono_method_get_param_token): Make this work on generic methods.
+       Return 0x8000000 for return parameters. Fixes #82161.
+
+2007-07-21  Marek Habersack  <grendello@gmail.com>
+
+       * appdomain.c (get_shadow_assembly_location): append the current
+       ticks value to the path. Avoids overwriting the same assemblies by
+       several threads at the same time.
+
+2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
+       and Raja R Harinath  <rharinath@novell.com>
+
+       * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
+       Simplify slightly.
+       (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
+       property for testing if a method is a generic method definition.
+
+2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
+
+2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: used function from private branch, reverted to the one in class.h 
+
+2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: a typo slipped in and the code wont compile
+
+2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
+       disabled box instruction as it is doing the wrong thing
+       improved stack dump messages, now it is easier to debug type related issues
+
+
+2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
+
+       * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
+
+2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
+       TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
+       grouped with class and valuetype. This change will simply 
+       the code as it should be handled just like unmanaged pointers.
+
+2007-07-19  Mark Probst  <mark.probst@gmail.com>
+
+       * class.c (concat_two_strings_with_zero): Fixed a silly bug.
+
+2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: several stack merge issues fixed, reference comparisons now
+       check the type size. strict type check now works correctly.
+       added more uses of IS_MANAGED_POINTER macro.
+       fixed issues pointed by running the test suite against .net.
+       
+
+2007-07-19  Mark Probst  <mark.probst@gmail.com>
+
+       * class.c, loader.c, class-internals.h: Removed the
+       MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
+       defines.
+
+       * icall.c: Better error checking in some internal reflection
+       methods.
+
+2007-07-18  William Holmes  <billholmes54@gmail.com>
+
+        * filewatcher.c : removed unused variable 'filename' in 
+         ves_icall_System_IO_FSW_SupportsFSW
+
+Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
+       obsolete, removed.
+
+2007-07-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
+       
+       * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
+
+2007-07-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
+       Implement generics support.
+       (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
+
+       * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
+       type_args and method_args arguments.
+       (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
+       (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
+       (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
+
+2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * reflection.c: patch from Thong Nguyen to fix atribute resolution.
+         It adds a rootimage parameter to mono_reflection_get_type_internal,
+         adds new function mono_reflection_get_type_with_rootimage and use
+         the rootimage to resolve the types instead of the current image
+
+2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
+
+       * culture-info-table.h: Forgot to update after r78304.
+
+2007-07-13  Raja R Harinath  <rharinath@novell.com>
+
+       * class.c (mono_class_is_open_constructed_type)
+       <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
+
+2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * class.c (mono_bounded_array_class_get):  method fails if used with
+       an incomplete TypeBuilder enum (no basetype field), fixed it by 
+       avoiding calculating the size for such array as it cannot be instantiated.
+       Fix bug #82015
+
+2007-07-12  Raja R Harinath  <rharinath@novell.com>
+
+       * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
+       field.
+       * metadata.c, reflection.c: Update to changes.
+
+2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
+       mono_class_is_valid_enum, they are used to valide a enum when loading.
+       * reflection.c: used new functions to throw TypeLoadException when and
+       invalid enum is build with TypeBuilder. Fixes #82018
+  
+Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * object.c: forgot commit of mono_class_setup_methods () to access
+       iface->methods.
+       * object-internals.h: added a few more handy fields to
+       MonoIMTCheckItem.
+
+2007-07-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * object.c (build_imt): Call mono_class_setup_methods () before accessing 
+       iface->methods.
+
+Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * class-internals.h, object-internals.h, object.c: IMT-based
+       interface invocation core from Massimiliano Mantione
+       (massi@ximian.com) with a reworked arch-specific interface,
+       bsearch implementation and a few bugfixes and memory savings by me.
+
+2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * class.c (mono_class_create_from_typedef): mono would segfault if 
+       an enum did not have a __value field. It now throws a TypeLoadException
+       for such cases. Fix bug #82022
+
+2007-07-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
+
+2007-07-09  Mark Probst  <mark.probst@gmail.com>
+
+       * class.c (mono_class_init): If a class is already inited but has
+       an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
+
+2007-07-09  Mark Probst  <mark.probst@gmail.com>
+
+       * class.c: Properly handle the case of an unimplemented interface
+       method.  Fixes: 81673.
+
+Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * class-internals.h, object.c: cleanup patch from massi: use
+       MonoVTable->interface_bitmap since the vtable interfaces offset array
+       is going away.
+
+2007-07-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
+       GetMDStreamVersion icall instead.
+
+Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
+       not use mono_dl_build_path() with a full library name: makes
+       fallbacks to libgaim and libfam work.
+
+2007-07-06  William Holmes  <billholmes54@gmail.com>
+
+       * assembly.c: Added a continue statement in probe_for_partial_name when
+        parse_assembly_directory_name fails.  Fixes : 82002
+
+2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
+       and added a verification  for TYPEDBYREF.
+       * verify.c (verify_stack_type_compatibility): fix handling of byref types,
+       make native int interchangeable with int32 and some small cleanup and formating.
+       * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
+       handle byref of byref.
+       * verify.c (push_local): handle byref of byref.
+       * verify.c (do_binop): invalid mix of values is unverifiable
+       * verify.c (do_invoke_method): fixed the handling of bad params on stack and
+       added visibility checks
+       * verify.c (field related method): added visibility checks
+       * verify.c (do_push_field): cannot take the address of a temporary valuetype field
+
+2007-07-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
+       string.
+
+2007-07-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * profiler.c (mono_profiler_load): Fix an off-by-one error.
+
+       * marshal.c (emit_marshal_string): When returning a string from managed code,
+       allways make a copy even for unicode strings. Fixes #81990.
+
+Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
+       of byref generic inst types (bug #81997).
+
+2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
+       * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
+
+2007-07-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * marshal.c (emit_marshal_string): Add support for unicode strings in
+       MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
+
+2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * verify.c: field load/store are now verified, missing only access checks now
+
+2007-06-28  Martin Baulig  <martin@ximian.com>
+
+       * mono-debug.c (mono_debug_debugger_version): New public variable.
+
+2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * locales.c: When constructing DateTimeFormat or NumberFormat for
+       MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
+       MonoCultureInfo contructed from the current locale is always
+       read-only and has UseUserOverride set to true. All MonoCultureInfo
+       instances returned for GetCultures have both IsReadOnly and
+       UseUserOverride set to true. Fixes part of bug #81930.
+
+2007-06-22  Jonathan Chambers  <joncham@gmail.com>
+
+       * icall-def.h: Update System.__ComObject icalls
+       * marshal.c: Avoid managed transition (and object creation)
+       when looking up COM interface in RCW.
+       * marshal.h: Ditto.
+       
+       Code is contributed under MIT/X11 license.
+
+2007-06-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
+       to avoid crashes during assembly unloading.
+
+2007-06-22  Raja R Harinath  <rharinath@novell.com>
+
+       Fix MethodInfo.IsGenericMethodDefinition
+       * reflection.c (mono_reflection_bind_generic_method_parameters):
+       Rearrange code to ensure we always uses a generic method definition.
+       * class.c (mono_class_inflate_generic_method_full): Set
+       'generic_container' field only for generic method definitions.
+       * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
+       Use presense of 'generic_container' field as indication of being a
+       generic method definition.
+
+2007-06-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
+
+       * object-internals.h: Reflect changes in the layout of the managed Delegate
+       class.
+       
+       * object-internals.h reflection.c icall-def.h: Applied patch from Robert
+       Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
+       runtime memory used by the dynamic method. Fixes #77146.
+
+2007-06-21  Dick Porter  <dick@ximian.com>
+
+       * file-io.h: 
+       * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
+       from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
+       81767.
+
+2007-06-21  Raja R Harinath  <rharinath@novell.com>
+
+       * reflection.c (method_encode_methodspec): Add a tripwire.
+       * class.c (inflate_generic_type): The fully open generic type is
+       not the same as the generic type definition.
+
+2007-06-21  Martin Baulig  <martin@ximian.com>
+
+       * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
+
+       * mono-debug-debugger.h
+       (MonoDebuggerBreakpointInfo): Removed.
+       (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
+       (mono_debugger_remove_breakpoint): Likewise.
+       (mono_debugger_breakpoint_callback): Likewise.
+       (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
+
+2007-06-21  Raja R Harinath  <rharinath@novell.com>
+
+       * metadata.c (mono_metadata_lookup_generic_class): The fully open
+       generic type is not the same as the generic type definition.
+       * class.c (mono_generic_class_get_class): Likewise.
+
+2007-06-20  Geoff Norton  <gnorton@customerdna.com>
+
+       * icall.c: The second argument to 
+       System.Reflection.MethodBase.GetMethodFromHandleInternalType
+       is a MonoType not a MonoClass.
+
+2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
+
+       * verify.c: support for function pointers in the verifier
+
+2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
+
+       * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
+
+Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * assembly.c: removed Mono.Data.SqliteClient from the list of
+       forward-compatible assemblies as it breaks the ABI (bug #81899).
+
+2007-06-19  Raja R Harinath  <rharinath@novell.com>
+
+       * metadata.c (mono_metadata_lookup_generic_class): Protect cache
+       lookup/update with the loader lock.
+       * reflection.c (mono_class_bind_generic_parameters): No need to
+       protect mono_metadata_lookup_* with the loader lock.
+       * class.c (inflate_generic_type): Likewise.
+       
+       * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
+       on a generic instantiated type.
+
+2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
+
+       *verify.c: produce meanfull error messages on verification error
+       *verify.c: fixed some cases of verification errors reported as validation errors
+       *pedump.c: fixed the error name array, now it shows validation errors properly
+       *verify.h: fixed the contant that should be used for verification errors
+
+Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * metadata.c, image.c, metadata-internals.h: part of the fixes needed
+       for bug #77596, 81858 and 80743 (generics data structures on domain
+       unload).
+
+2007-06-15  Raja R Harinath  <rharinath@novell.com>
+
+       Avoid allocating 'MonoGenericContext' on the heap.
+       * class-internals (_MonoMethodInflated::context): Make field
+       inline, not a pointer.
+       * loader.c (method_from_methodspec): Allocate 'new_context' on the
+       stack.  Use the context embedded within the inflated method as the
+       hash key, rather than 'new_context'.
+       * class.c (inflate_generic_context): Simplify.  Return a struct
+       rather than allocating on the heap.
+       (mono_class_inflate_generic_method_full): Update to changes.  Now,
+       doesn't salt away a copy of the context -- simplifying the
+       lifetime rules of a 'MonoGenericContext *'.
+       (mono_method_get_context): Return pointer to embedded context.
+       (setup_generic_array_ifaces): Allocate temporary context on stack.
+       * reflection.c (inflate_mono_method): Likewise.
+       (mono_reflection_bind_generic_method_parameters): Likewise.
+       Use the context embedded within the inflated method as the hash key.
+
+       Avoid a source of allocation of 'MonoGenericContext'.
+       * class-internals.h (_MonoGenericClass::context): Combine 'inst'
+       and 'cached_context' fields into embedded 'MonoGenericContext' field.
+       * class.c: Update to changes.
+       (mono_generic_class_get_context): Simplify drastically.  Now just
+       returns a pointer to the field.
+       * metadata-internals.h (mono_metadata_generic_context_hash): Mark
+       argument as a const pointer.
+       (mono_metadata_generic_context_equal): Likewise.
+       * metadata.c, loader.c, icall.c, reflection.c, verify.c:
+       Update to changes.
+
+2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
+
+       * verify.c improved the handling of brtrue/brfalse, factored out common code
+
+2007-06-14  Raja R Harinath  <rharinath@novell.com>
+
+       Kill MonoGenericMethod.
+       * class-internals.h (MonoGenericContext::method_inst): Rename from
+       'gmethod' and convert to a MonoGenericInst.
+       (MonoGenericMethod): Remove.
+       * metadata.h (MonoGenericMethod): Note that the name is obsolete.
+       * loader.c (method_from_methodspec): Update to changes.  Use a
+       MonoGenericContext as the key to the hashtable.
+       * metadata.c (mono_metadata_generic_context_equal): Rename from 
+       'mono_metadata_generic_method_equal' and take MonoGenericContext.
+       (mono_metadata_generic_context_hash): Likewise from
+       'mono_metadata_generic_method_hash'.  Change hash function.
+       (mono_metadata_load_generic_params): Update to changes.
+       (mono_get_shared_generic_method): Remove.
+       * metadata-internals.h (mono_get_shared_generic_method): Remove.
+       * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
+       (inflate_generic_context): Likewise.
+       (mono_class_inflate_generic_method_full): Likewise.
+       (setup_generic_array_ifaces): Likewise.
+       (mono_class_create_from_typespec): Likewise.
+       * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
+       (method_encode_methodspec): Update callsite.
+       (reflection_methodbuilder_to_mono_method): Update to changes.
+       (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
+       MonoGenericContext as the key to the hashtable.
+       (inflate_mono_method): Update to changes.
+
+       * class-internals.h (MonoGenericMethod::container): Remove.
+       * class.c, loader.c, metadata.c, reflection.c: Update to changes.
 
 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>