In metadata:
[mono.git] / mono / metadata / ChangeLog
1 2008-05-05  Robert Jordan  <robertj@gmx.net>
2
3         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
4         support for value types. See #386415.
5
6         * object.c: comments.
7
8 2008-05-05  Martin Baulig  <martin@ximian.com>
9
10         * debug-mono-symfile.h
11         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12         for old pre-terrania symbol files.
13
14 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
15
16         * mono-config.c: Add ppc64 architecture.
17
18         Code is contributed under MIT/X11 license.
19
20 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
21
22         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
23           PPC64 uses function descriptors as well.
24
25         Code is contributed under MIT/X11 license.
26
27 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
28
29         * object.c (compute_class_bitmap): Ignore literal static fields.
30
31         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
32         var has an invalid format.
33         (describe_ptr): Add some sanity checks for the vtable.
34         (add_nursery_frag): Clear unused nursery fragments.
35         (major_collection): Clear all remaining nursery fragments.
36
37 2008-05-03  Robert Jordan  <robertj@gmx.net>
38
39         * image.c, metadata-internals.h: add thunk_invoke_cache.
40
41         * marshal.c, marshal.h: implement
42         mono_marshal_get_thunk_invoke_wrapper ().
43
44         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
45
46         Code is contributed under MIT/X11 license.
47
48 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
49
50         * verify.c (do_leave): Empty the stack.
51
52 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
53
54         * class.c (mono_class_is_assignable_from): Variance
55         doesn't work between reference and value types. For example,
56         given type C<T+>, C<int32> is not assignable to C<object>.
57         Break the argument checking loop on first error. 
58
59 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
60
61         * icall.c : base64_to_byte_array() needs some more strict
62           check for sequence of '=' characters. Patch by Santa
63           Marta (http://deee.g.hatena.ne.jp/santamarta).
64
65           Contributed under MIT/X11 license.
66           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
67
68 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
69
70         * domain.c: Disable LoadLibrary support to fix Win32 build.
71
72         Code is contributed under MIT/X11 license.
73
74 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
75
76         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
77         to help with cache behaviour.
78
79 2008-05-01  Miguel de Icaza  <miguel@novell.com>
80
81         * appdomain.c (mono_domain_from_appdomain): Add new accessor
82         method. 
83
84 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
85
86         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
87
88 2008-05-01  Dick Porter  <dick@ximian.com>
89
90         * process.c (process_get_fileversion): Only pass 16 bits of
91         language ID to VerLanguageName.  Fixes bug 381204.
92
93 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
94
95         * verify.c (mono_method_verify): Fix the comparison
96         operator for code bounds check.
97
98 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
99
100         * verify.c (mono_method_verify): Check the bounds of
101         all access of the code array.
102
103 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
104
105         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
106
107 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
108
109         * image.c (mono_image_strong_name_position): Fix return value when the rva is
110         not valid.
111
112 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
113
114         * loader.c (mono_get_method_from_token, mono_method_signature): Add
115         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
116         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
117         fixup main EXE images when using mono.exe for mixed-mode assembly support.
118         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
119         mono_runtime_load.
120         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
121         runtime initialization from metadata.
122         * assembly.c: Remove obsolete ceGetModuleFileNameA.
123         (mono_set_rootdir): Use mono_get_module_file_name.
124         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
125         handles.
126         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
127         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
128         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
129         MonoCLIImageInfo. Add support for module handles.
130         (load_cli_header): Update mono_cli_rva_image_map signature.
131         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
132         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
133         (mono_image_rva_map): Add support for module handles.
134         (mono_image_ensure_section_idx): Add support for module handles.
135         (mono_image_close): Add support for module handles.
136         (do_load_header): Add support for module handles.
137         (mono_image_open_from_module_handle): New function for internal use.
138         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
139         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
140         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
141         handles.
142         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
143         * image.h: Add mono_image_fixup_vtable.
144         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
145         support.
146         * coree.h: New file.
147         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
148         unsupported native code.
149         (mono_marshal_set_callconv_from_modopt): New function splitted from
150         mono_marshal_get_managed_wrapper.
151         (mono_marshal_get_managed_wrapper): Use
152         mono_marshal_set_callconv_from_modopt.
153         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
154         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
155         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
156         that results in a deadlock when the runtime is loaded in _CorDllMain.
157         * Makefile.am: Add coree.c and coree.h.
158
159         Contributed under MIT/X11 license.
160
161 2008-04-28  Mark Probst  <mark.probst@gmail.com>
162
163         * generic-sharing.c: Search for type arguments in array element
164         types as well.
165
166 2008-04-28  Mark Probst  <mark.probst@gmail.com>
167
168         * class-internals.h, generic-sharing.c: New, small runtime generic context.
169
170         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
171
172         * object.c: Don't setup the RGCTX when the vtable is created,
173         because we're setting it up lazily now.
174
175 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
176
177         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
178         64 bit support.
179
180 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * verify.c (verify_class_for_overlapping_reference_fields): 
183         If class is under fulltrust allow reference types to overllap
184         if they have the same RVA.
185
186 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
187
188         * pedump.c: Added new flag valid-only, that makes the verifier
189         behaves just like --security=validil. It won't fail type load
190         due to unverifiable restrictions.
191
192 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
193
194         * class-internals.h (struct MonoMethod): Added a verification_success
195         field to cache verifier executions. Reduced MonoMethod:slot size by
196         one bit.
197
198 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
199
200         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
201         instead of a 'vt' argument to save an indirection and to allow these to be used
202         for valuetypes.
203         (scan_vtype): New helper function to scan an area using a gc descriptor.
204         (mono_gc_wbarrier_value_copy): Implement this.
205         (handle_remset): Add support for REMSET_VTYPE.
206         (find_in_remset_loc): Ditto.
207         (mono_gc_base_init): Allow some debugging options to be controlled through the
208         use of the MONO_GC_DEBUG env variable.
209         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
210         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
211
212 2008-04-23  Martin Baulig  <martin@ximian.com>
213
214         * domain.c (mono_domain_create): Move the call to
215         mono_debug_domain_create() down, after allocating the domain id.
216
217 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
218
219         verify.c (verify_class_for_overlapping_reference_fields): Skip
220         static fields while verifying for overlapping fields as they
221         don't matter at all.
222
223 2008-04-23  Marek Habersack  <mhabersack@novell.com>
224
225         * domain-internals.h: added a declaration of
226         mono_make_shadow_copy.
227
228         * assembly.c (mono_assembly_open_full): shadow copying of
229         assemblies moved to here, so that all the assemblies within the
230         application domain's private binary directories can be
231         processed. Fixes bug #380546
232
233         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
234         mono_make_shadow_copy and made non-static. The decision whether
235         to shadow-copy an assembly is made based on its location - it's
236         copied if it's in one of the private application domain binary
237         directories and its different to the target file in the shadow
238         directory. Fixes bug #380546
239
240 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
241
242         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
243
244         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
245         types.
246
247         * reflection.c (mono_image_create_token): Handle 
248         Method/ConstructorOnTypeBuilderInst.
249         (resolve_object): Ditto.
250         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
251         so it can be called from resolve_object. Also handle the case when the inflated
252         class already has its methods setup.
253
254 2008-04-21  Martin Baulig  <martin@ximian.com>
255
256         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
257
258 2008-04-20  Geoff Norton  <gnorton@novell.com>
259
260         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
261         pointer dereference.
262
263 2008-04-15  Marek Habersack  <mhabersack@novell.com>
264
265         * appdomain.c (try_load_from): if IOMAP is in effect, call the
266         portability API to look up the assembly file. Fixes behavior in
267         situations when the application has a bin/ directory, but the
268         assembly search patch refers to Bin/ (and thus the requested file
269         name is Bin/SomeLibrary.dll). Fixes bug #379888
270
271 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
272
273         verify.c (mono_type_is_generic_argument): Extracted this check
274         from a dozen places to here.
275
276         verify.c: Fixed all issues related to boxing generic arguments
277         and their constraints.
278
279 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         verify.c (mono_class_interface_implements_interface): Fix win32 build.
282
283 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
284
285         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
286         isn't finished yet. Fixes #363447.
287
288 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
289
290         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
291         Fixes #346419.
292
293 2008-04-13  Jb Evain  <jbevain@novell.com>
294
295         * domain.c: update the 2.1 profile versions.
296         Merged from the Moonlight 2 branch.
297
298 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
299
300         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
301         mscorlibs for the non-refonly case as well.
302
303         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
304         in mono_assembly_load_from_full (). Fixes #378924.
305
306 2008-04-11  Geoff Norton  <gnorton@novell.com>
307
308         * icall.c: The global extern environ doesn't exist on Mac.  We
309         need to call NSGetEnviron instead.
310
311 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
312
313         verify.c: Add generic method constraint verification.
314
315 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         class.c (mono_class_inflate_generic_method_full): Add a long
318         explanation to the is_mb_open hack. Remove the FIXME.
319
320 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
321
322         * verify.c (mono_method_verify): Mark all unknown opcodes
323         as invalid. Mark jmp as unverifiable.
324
325 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * verify.c: Add code to do type constraint verification on class instances.
328
329         * verify.c (mono_verifier_verify_class): Use the type constraint 
330         verification code.
331
332 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
333
334         * class.c (mono_class_get_field_default_value): Don't pass cindex
335         as hint to mono_metadata_get_constant_index. The local is not initialized
336         and should contain garbage most of the time. This could only work
337         with a lot of luck.
338
339 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
340
341         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
342
343 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
344
345         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
346
347         * class.c (mono_class_from_generic_parameter): Save the token of the
348         generic param in MonoClass::sizes.generic_param_token.
349
350         * reflection.c (mono_custom_attrs_from_class): If the class type is
351         VAR or MVAR retrieve the attributes of the generic param.
352
353 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
354
355         * class.c (mono_class_init): Do class verification if the verifier
356         is enabled.
357
358 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
359
360         * verify-internal.h: Added mono_verifier_verify_class.
361
362         * verify.c: Added mono_verifier_verify_class. It checks for
363         classes with explicit layout that have overlapping reference fields.
364
365         * pedump.c: Init the verifier state prior to verification. Fixed
366         command line arguments.
367
368 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
369
370         * Makefile.am: Added verify-internals.h, hopefully fix the build.
371
372 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
373
374         * verify-internals.h: Fix a warning.
375
376 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
377
378         * verify-internals.h: New header with the verifier configuration
379         extracted from mini.c.
380
381         * verify.c: Implemented the new functions exported by verify-internals.h.
382
383 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
384
385         * verify.c: Add proper verification of ckfinite.
386
387 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
388
389         * verify.c (do_conversion): Improved error message to something
390         more meanfull.
391
392         * verify.c (check_is_valid_type_for_field_ops): Fix to work
393         with primitive types.
394
395 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * verify.c: Added tail prefix checking. Marked icall
398         as unverifible.
399
400 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
401
402         * verify.c: Fix the detection of branches to the middle
403         of an instruction.
404
405 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * verify.c: Implemented verification of volatile. and
408         unaligned. prefix. Check if a type is valid after retrieving it.
409
410 2008-04-01  Dick Porter  <dick@ximian.com>
411
412         * process.c (process_get_fileversion): If there's no string block,
413         set the file language to en_US.  Fixes the other new part of bug
414         374600.
415
416 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
417
418         * class.c: New functions mono_method_can_access_field_full and
419         mono_method_can_access_method_full. They perform type visibility
420         and type site check.
421
422         * class-internal.h: Added exported functions.
423
424         * verify.c: Use new functions to implement proper visibility checks.
425
426 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
427
428         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
429
430 2008-03-28  Dick Porter  <dick@ximian.com>
431
432         * process.c (process_get_fileversion): Use the first language ID
433         we see, rather than insisting on an invariant language.  Fixes bug
434         374600.
435
436 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
437
438         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
439         the streams to fix reading of invalid memory later.
440
441         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
442         to ease debugging.
443
444 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
445
446         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
447         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
448
449 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
450         * threads.h: Added MonoThreadManageCallback type and
451         mono_thread_set_manage_callback prototype
452         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
453         (used to store the mono_thread_manage callback).
454         * threads.c: Added mono_thread_set_manage_callback, and handle
455         "MonoThread->manage_callback" in build_wait_tids.
456
457 2008-03-26  Dick Porter  <dick@ximian.com>
458
459         * process.c (process_get_fileversion): Set FileVersionInfo strings
460         to Empty when the resource doesn't have the particular info.
461         Fixes bug 355717.
462
463 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
464
465         * verify.c (mono_method_verify): Proper prefix validation.
466
467 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
468
469         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
470         itself in a separate argument instead of throwing them. Fixes #373448.
471
472         * appdomain.c: Bump corlib version.
473
474 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
475
476         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
477
478 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
479
480         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
481         version macros.
482
483 2008-03-20  Mark Probst  <mark.probst@gmail.com>
484
485         * generic-sharing.c, class-internals.h: Code for putting
486         reflection types into the runtime generic context.
487
488 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
491         Fixes #340662. 
492
493
494 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
495
496         * verify.c (VerifyContext): Added instruction prefix data to the struct.
497
498         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
499
500         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
501
502         * verify.c (do_cast): Let the result value keep the boxed status.
503
504         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
505
506 2008-03-17  Jb Evain  <jbevain@novell.com>
507
508         * reflection.c: when running on a 2.0 runtime, emit
509         unconditionally the #~ header version as 2.0, and the
510         CLI header version as 2.5, for symmetry's sake with csc.
511
512 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
513
514         * class.c: Remove the unused cache_interface_offsets stuff.
515
516         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
517         profiler.c: Fix warnings.
518
519 2008-03-16  Mark Probst  <mark.probst@gmail.com>
520
521         * generic-sharing.c, class-internals.h: Support for putting
522         methods into the runtime generic context.
523
524 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
525
526         * class.c (mono_class_setup_fields): Ignore calls made to this function for
527         classes which are generic instances of not-yet finished typebuilders. Fixes
528         #351172.
529
530         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
531
532 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
533
534         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
535
536         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
537         field, replace it with a hash table in MonoDynamicImage.
538
539         * reflection.c (inflate_mono_method): Access the generic definition object from
540         image->generic_def_objects instead of imethod->reflection_info.
541
542         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
543
544         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
545         
546         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
547         function in reflection.c so it is easier to keep in sync with the dynamic image
548         creation code.
549
550         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
551         mono_image_close ().
552
553 2008-03-15  Mark Probst  <mark.probst@gmail.com>
554
555         * class.c (mono_class_generic_sharing_enabled): Disable generic
556         sharing for all architectures except AMD64 and x86 to fix build.
557
558 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
559
560         * verify.c: Use the generic definition MonoGenericContext when available.
561         Remove code for checking generics instance compatibility in favor of
562         mono_class_is_assignable_from.
563
564 2008-03-14  Mark Probst  <mark.probst@gmail.com>
565
566         * marshal.c, marshal.h, metadata-internals.h, image.c,
567         wrapper-types.h: New wrapper for invoking a shared static method
568         without having to pass the runtime generic context argument.
569
570 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
571
572         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
573
574 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
575
576         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
577         
578         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
579         create a token from a FieldOnTypeBuilderInst.
580         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
581         (resolve_object): Ditto.
582
583         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
584         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
585
586 2008-03-14  Martin Baulig  <martin@ximian.com>
587
588         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
589
590         * debug-mono-symfile.h
591         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
592         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
593
594 2008-03-10  Martin Baulig  <martin@ximian.com>
595
596         * debug-mono-symfile.h
597         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
598         `lexical_block_table_offset'.
599         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
600         `lexical_blocks'.
601         (MonoSymbolFile): Added `version'.
602
603         * mono-debug.h
604         (MonoDebugLexicalBlockEntry): Removed.
605         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
606         `lexical_blocks'.
607
608         * mono-debug.c (mono_debug_add_method): Don't compute lexical
609         blocks here; the debugger now does this internally.
610
611 2008-02-27  Martin Baulig  <martin@ximian.com>
612
613         * object.c (mono_runtime_exec_main): Call
614         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
615         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
616
617 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * verify.c (verify_type_compatibility_full): Allow native int to be converted
620         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
621
622 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
623
624         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
625         ldftn with a virtual method.
626
627 2008-03-13  Geoff Norton  <gnorton@novell.com>
628
629         * decimal.c:  Only include memory.h if the platform has it.
630
631 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
632
633         * assembly.c, class.c, metadata-internals.h: make sure public key
634         tokesns are compared in a case-insensitive way. Also, all
635         the lookups in the GAC use a lowercase public key token
636         (gaacutil already does the lowercasing on install). Fixes
637         bug #369541.
638
639 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
640
641         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
642         and return value.
643
644 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
645
646         * image.c: when someone loads a mscorlib from a file, return the
647         currently loaded mscorlib (fixes bug #369253).
648
649 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
650
651         * class.c: handle types with no parents by forcing them to have
652         System.Object as a parent and marking them as broken (this currently
653         allows the first part of bug #369173 to work as well, likely because
654         we don't check for typeload exceptions everywhere yet).
655
656 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
657
658         * class.c: more complete check that types belong to corlib
659         (fixes second part of bug #369173).
660
661 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
662
663         * generic-sharing.c:  Including glib.h for the MSVC builds to define
664           "inline" to "__inline" before including mono-membar.h.
665           
666         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
667           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
668           MSVC builds.
669
670         Contributed under MIT/X11 license.
671
672 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
673
674         * verify.c (do_invoke_method): Remove return type validation.
675
676         * verify.c (do_ret): Do return type validation at return site instead of
677         call site.
678
679 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
680
681         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
682
683         * verify.c: Some todos cleaned and improved a few error messages.
684
685 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
686
687         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
688
689 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
690
691         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
692         system types correctly.
693
694         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
695         function.
696
697 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
698
699         * assembly.c (build_assembly_name): Fix a warning.
700
701 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
702
703         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
704         the called function takes an object type argument. Fixes storing or
705         valuetypes across remoting as well as reducing memory usage.
706         * image.c, metadata-internals.h: remove now unused ldfld_remote and
707         stfld_remote wrapper caches.
708
709 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
710
711         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
712         is not found.
713
714         * reflection.c (mono_image_register_token): New helper function to save
715         a token->object mapping.        
716
717         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
718         managed code.
719
720         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
721         one dimension arrays. Fixes #367670.
722         (mono_reflection_get_type_internal): Ditto.
723
724 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
725
726         * marshal.c: mono_load_remote_field_new() always returns object.
727         so use the proper signature (fixes bug #366445).
728
729 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
730         
731         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
732         add an 'inline_failure' flag instead.
733
734 2008-03-04  Mark Probst  <mark.probst@gmail.com>
735
736         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
737         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
738         contains the location of "this", used for exception handling.
739
740 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
741
742         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
743         their size on all platforms for perf reasons.
744
745 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
748         object-internal.h
749
750         * object-internal.h: Same.
751
752 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
753
754         * reflection.h: Fix the build I just broke.
755
756 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
757
758         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
759         Test if a token is valid, this remove explicit usage of 
760         MonoDynamicImage::tokens from the verifier code.
761
762         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
763
764         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
765         instead of direct access to MonoDynamicImage::tokens.
766
767 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
768
769         * verify.c (token_bounds_check): Fix the build I just broke.
770
771 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
772
773         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
774
775         * verify.c (verifier_load_method): Fixed the errors message.
776
777         * verify.c (mono_method_verify): Fixed a debug message.
778
779 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
780
781         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
782         mono-perfcounters.h, class-internals.h: support for predefined
783         writable counters, query of categories and counters, bugfixes.
784
785 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * verify.c (do_refanytype): Verify the refanytype opcode.
788
789         * verify.c (mono_method_verify): Use do_refanytype.
790
791 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
792
793         * verify.c (do_mkrefany): Verify the mkrefany opcode.
794
795         * verify.c (mono_method_verify): Use do_mkrefany.
796
797 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
798
799         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
800         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
801         implementation.
802
803 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
804
805         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
806         the type load exception.
807
808 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
809
810         * verify.c: Added a few FIXME for method signatures
811
812         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
813         of mono_method_get_signature and get vararg call working. Removed unused
814         checks for return value.
815
816         * verify.c (do_refanyval): Verify the refanyval opcode.
817
818         * verify.c (mono_method_verify): Implemented verification of arglist and
819         use do_refanyval.
820
821 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
822
823         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
824         vtypes to marshal.c.
825
826         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
827         it works for AOT as well.
828
829 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
830
831         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
832         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
833         the system time is adjusted.
834
835 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
836
837         * icall.c, icall-def.h: use the new time functions (fixes the
838         non-monotonic behaviour of TickCount).
839
840 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
841
842         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
843         it breaks the build.
844         
845         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
846         cattr is not finished yet.
847
848 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * verify.c: Proper token validation for field, method and type.
851
852 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
853
854         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
855
856         * loader.c (method_from_memberref): Generate type load error instead of method missing
857         if the type is not found.
858
859 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
860
861         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
862         some of the conversions caused the generation of a marshal directive exception.
863
864 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
865
866         verify.c: Report which exception should be thrown by the JIT.
867         Added a lot of FIXME notes.
868
869 2008-02-22  Mark Probst  <mark.probst@gmail.com>
870
871         * generic-sharing.c: Runtime generic context slots are not
872         instantiated on init anymore.  Instead, provide function to do the
873         instantiating on demand.
874
875         * class-internals.h: Added vtable to runtime generic context.
876         Macros for encoding direct and indirect slot offsets in one
877         guint32.
878
879 2008-02-21  Mark Probst  <mark.probst@gmail.com>
880
881         * object.c, generic-sharing.c: Moved some generic sharing code
882         from object.c to generic-sharing.c.
883
884         * generic-sharing.c: Added support for extensible runtime generic
885         context.
886
887         * metadata-internals.h: Two new hash tables in MonoImage for
888         extensible runtime generic context support.
889
890         * domain.c: Unregister generic vtables upon domain unloading.
891
892         * image.c: Destroy new hash tables upon image unloading.
893
894         * metadata.c: Unregister generic subclasses upon image unloading.
895
896         * class-internals.h: New data structure for runtime generic
897         context template.  New fields in the runtime generic context for
898         extensible part.
899
900         * Makefile.am: Added generic-sharing.c.
901
902 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
903
904         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
905         there is a pending loader exception, raise it.
906
907         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
908         same.
909
910         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
911         same.
912
913         Fixes #363450.
914
915 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
916
917         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
918
919         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
920         
921         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
922         ref-only requests for compatibility with MS.
923
924 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
925
926         * reflection.c (mono_custom_attrs_from_method): Don't silently
927         return an empty list for generic method instances.
928         (mono_custom_attrs_from_param): Likewise.
929
930 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
931             Raja R Harinath  <harinath@hurrynot.org>
932
933         Fix #354757
934         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
935         * class.c (mono_class_inflate_generic_method_full): Initialize it
936         when a fully-open method is instantiated.
937         * metadata.c (inflated_method_equal, inflated_method_hash): Update
938         to new field.
939         * reflection.c (inflate_mono_method): Don't create a temporary context.
940
941 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
942
943         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
944         Compute correct value, to prepare for imethod->reflection_info going away.
945
946 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
947
948         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
949
950 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
951
952         * verify.c: Implement skip visibility flag.
953
954 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
955
956         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
957         which contains an extra field to tell the kind of exception that should be thrown.
958
959         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
960
961 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
962
963         * loader.c (mono_method_get_param_names): Initialize 'klass' after
964         'method' is updated.
965
966 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
967
968         * class.c (mono_class_layout_fields): Set class->min_align for classes using
969         explicit layout as well. Fixes #360375.
970
971 2008-02-11  Geoff Norton  <gnorton@novell.com>
972
973         * loader.c: Guard and dereference against inflated generic methods
974
975 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
976
977         * class.c: Include Retargetable spec in assembly name.
978         * assembly.c: Always include PublicKeyToken spec in assembly name
979         (with value "null" if assembly is not signed), and include
980         Retargetable spec.
981         * icall-def.h: Added icall for Assembly.get_fullname.
982         * icall.c: Added icall returning the fullname of an assembly.
983
984 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
985
986         * class.c (mono_class_setup_vtable_general): Add a missing call to
987         mono_class_setup_methods () which is needed in the AOT case.
988
989 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
990
991         * verify.c (mono_type_get_stack_name): Added. Return the name for the
992         stack type of the given MonoType.
993
994         * verify.c (verify_type_compatibility_full): Handle the void type.
995
996         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
997         way stack merging works.
998
999         * verify.c (store_local): Improved verification message.
1000
1001         * verify.c (do_branch_op): If the merging is invalid, the method
1002         is unverifiable and not invalid. Improved error message.
1003
1004         * verify.c (merge_stacks): Properly merge a boxed valuetype and
1005         a reference type diferent than System.Object. Improved error
1006         message.
1007
1008 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
1011
1012         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
1013         type of an enum even if the argument is byref.
1014
1015         * verify.c: Replace all explicit uses of enumtype and enum_basetype
1016         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
1017
1018         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
1019
1020         *verify.c (verify_type_compatibility_full): Make enum types
1021         compatible with their base types.
1022
1023         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
1024         types are compatible for the special case of a boxed valuetype and
1025         System.Object.
1026
1027         * verify.c (verify_stack_type_compatibility): The function
1028         is_compatible_boxed_valuetype was extracted from here.
1029
1030         * verify.c (push_arg): Only set ctx->has_this_store if the method
1031         is not static.
1032
1033         * verify.c (do_ldelem): Fixed a typo in an error message and added
1034         strict check for mixing int32 and native int as the array type
1035         and ldelem type.
1036
1037         * verify.c (merge_stacks): Consider boxed valuetypes in the
1038         compatibility checks.
1039
1040 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
1041         * profiler.h: (MonoGCEvent): Added start-stop the world events.
1042
1043 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
1044         *class.c: use_new_interface_vtable_code: renamed the env var to have
1045         a "MONO_" prefix, and fix the logic to enable it by default.
1046
1047 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
1048         *class.c:
1049         mono_class_setup_vtable_general: rewrote the way in which interface
1050         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
1051         makes the code more maintainable.
1052         For now the old code is still there, and can be activated setting
1053         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
1054
1055 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
1056
1057         * verify.c: guarded some debug functions around and #ifdef.
1058
1059         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
1060
1061 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
1064         changes for now since they seem to break too many things.
1065
1066 2008-02-05  Mark Probst  <mark.probst@gmail.com>
1067
1068         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
1069         mono_marshal_find_nonzero_bit_offset): Added macro and function
1070         for finding the byte- and bit-offset of a bitfield within a
1071         struct.
1072
1073 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
1076         (mono_marshal_get_struct_to_ptr): Ditto.
1077
1078         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
1079         cctor_signature.
1080
1081 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
1084         between methods for non-corlib types.
1085
1086 2008-02-02  Geoff Norton  <gnorton@novell.com>
1087
1088         * loader.c (mono_method_get_param_names): Populate the parameter name for 
1089         generic parameters as well. (Fixes #342536)
1090
1091 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
1092
1093         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
1094
1095         * verify.c (do_invoke_method): Fix for calling with byref structs.
1096
1097         * verify.c (do_cast): push a boxed value type based on the type token and not
1098         the type of stack.
1099
1100 2008-01-31  William Holmes  <billholmes54@gmail.com>
1101
1102         * process.c (process_module_string_read): Check the size returned form 
1103           VerQueryValue to avoid out of memory exception. 
1104
1105 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
1106
1107         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
1108         Handle properly modules which are not in the moduleref table. Fixes
1109         #356938.
1110
1111 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
1114         the dynamic case which is now in managed code.
1115         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
1116
1117         * marshal.c (mono_string_to_bstr): Fix a warning.
1118         (init_com_provider_ms): Ditto.
1119
1120         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
1121
1122         * exception.c (mono_get_exception_out_of_memory): New helper function.
1123
1124 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
1125
1126         * marshal.c: Add support for BSTR marshalling
1127         using other COM systems.
1128
1129         Code is contributed under MIT/X11 license.
1130
1131 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1132
1133         * object.c (mono_runtime_invoke_array): reverted previous
1134         commit as it breaks the build.
1135
1136 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1137
1138         * object.c (mono_runtime_invoke_array): Verify arguments for
1139         invalid types. Fixes #348522.
1140
1141 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
1144         non-final virtual calls using call. 
1145
1146         * verify.c (do_invoke): fixed some TODOs.
1147
1148         * verify.c (push_arg): set has_this_store for "ldarga 0".
1149
1150 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
1153         which belong to an inflated class. Fixes #356531.
1154
1155 2008-01-26  Robert Jordan  <robertj@gmx.net>
1156
1157         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
1158         which resort to FindFirstFile when a certain error condition
1159         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
1160         Code is contributed under MIT/X11 license.
1161
1162 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
1163
1164         * marshal.c (emit_marshal_string): Fix out string marshalling
1165         to use specified encoding. Fixes #323900.
1166
1167         Code is contributed under MIT/X11 license.
1168
1169 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
1170
1171         * class.c (mono_class_inflate_generic_method_full): Don't modify
1172         iresult->context after cache check.
1173
1174 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
1175
1176         * class.c (mono_class_inflate_generic_method_full): Change the
1177         struct assignments to memcpy for better visibility and add some comments.
1178
1179 2008-01-23  Dick Porter  <dick@ximian.com>
1180
1181         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
1182         procedure, and make it work on windows.
1183
1184 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
1187         a MonoReflectionTypeBuilder since it is always of that type.
1188
1189         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
1190
1191         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
1192
1193         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
1194         
1195         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
1196
1197         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
1198
1199         * reflection.c (mono_reflection_create_runtime_class): Remove already created
1200         instantiations from the type cache.
1201
1202 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1203
1204         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
1205
1206         * verify.c (do_unbox_value): push a controled mutability managed pointer.
1207
1208 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * verify.c (do_ldstr): added, verifies if the #US token is valid.
1211
1212         * verify.c (mono_method_verify): removed old TODO
1213
1214 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * verify.c (do_newobj): add visibility check.
1217
1218 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * verify.c (do_load_function_ptr): add visibility check.
1221
1222 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
1223         *class.c:
1224         mono_generic_class_get_class: hook profiler events.
1225         mono_field_get_offset: added to support heap-shot in the new profiler.
1226         *class.h: exported mono_field_get_offset.
1227         * reflection.c:
1228         mono_reflection_setup_internal_class: hook profiler events.
1229
1230 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
1233         argument here too and use it to avoid checking for pending exceptions if 
1234         possible.
1235
1236 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
1237
1238         * assembly.c (build_assembly_name): add arg for passing the assembly
1239         flags. Do not consider a PublicKey with value "null" valid.
1240         (mono_assembly_name_parse_full): added boolean argument that will be
1241         set if the assembly name contains a PublicKeyToken spec. Added support
1242         for the Retargetable spec for which only Yes or No are allowed as valid
1243         value. Consider assembly name invalid if Retargetable spec is set, but
1244         either version, culture or public key (token) are not specified.
1245         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
1246         with implementation in assembly.c.
1247         * icall.c (fill_reflection_assembly_name): also copy assembly flags
1248         from MonoAssemblyName.
1249         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
1250         introduced argument for mono_assembly_name_parse_full to know if the
1251         assembly name has a PublicKeyToken spec, and if it has instruct
1252         fill_reflection_assembly_name to use default value for keyToken (if
1253         PublicKeyToken is null).
1254
1255 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1256
1257         * verify.c (mono_method_verify): fixed ovf ops with
1258         float values. They are unverifiable now.
1259
1260 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * class.c (set_failure_from_loader_error): add BadImageException to the
1263         list of exceptions that can cause a type to fail to load.
1264
1265         * class.c (mono_class_get_exception_for_failure): same.
1266
1267 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1268
1269         * verify.c (in_any_exception_block): added, check if offset
1270         is part of any exception handling clause.
1271
1272         * verify.c (get_stack_type): added VAR and MVAR types.
1273
1274         * verify.c (do_stobj): better error messages.
1275
1276         * verify.c (do_cpobj): added, check cpobj.
1277
1278         * verify.c (do_initobj): added, check initobj.
1279
1280         * verify.c (do_sizeof): added, check sizeof.
1281
1282         * verify.c (do_localloc): added, check localloc.
1283
1284         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
1285
1286 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
1289         save_lmf/restore_lmf opcodes.
1290
1291         * threads.c (mono_threads_install_notify_pending_exc): New function to
1292         install a callback notifying the JIT there is a pending exception on a thread.
1293         (mono_thread_request_interruption): Call the new callback.
1294         (mono_thread_get_and_clear_pending_exception): New function to return the
1295         exception pending on a thread.
1296
1297         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
1298         to turn off checking for pending exceptions.
1299         (mono_marshal_get_native_wrapper): Ditto.
1300
1301 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * threads-types.h: Get rid of the unnecessary extern declarations.
1304
1305 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
1306
1307         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
1308         return field from parent class if not private.
1309         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
1310         returns fields from parent class if they are not private.
1311         (method_nonpublic): added function to determine if a given method
1312         should be considered non-public. Returns false for private methods
1313         on parent class, and internal methods from parent on the 1.0 profile.
1314         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
1315         use method_nonpublic function to determine whether method should be
1316         returned.
1317         (property_accessor_public): use newly introduced method_nonpublic
1318         function to determine whether accessor is non-public. 
1319         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
1320         event from parent class if not private. Only return static event if
1321         Static flag is set, and only return static event from parent class if
1322         FlattenHierarchy flag is set.
1323         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
1324         include non-private events from parent class.
1325
1326 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
1329         warning.
1330
1331 2008-01-16  Wade Berrier <wberrier@novell.com>
1332
1333         * security.c: Add assembly.h header to appease some warnings
1334
1335 2008-01-16  Dick Porter  <dick@ximian.com>
1336
1337         * process.c (process_module_string_read): Remove trailing null
1338         when saving string.
1339
1340 2008-01-16  Mark Probst  <mark.probst@gmail.com>
1341
1342         * class-internals.h: A new data structure describing the layout of
1343         a runtime generic context (MonoRuntimeGenericContextTemplate).
1344
1345         * metadata-internals.h: Added a hash table to MonoDomain that maps
1346         from open generic classes to their runtime generic context
1347         templates.
1348
1349         * object.c: Building of the runtime generic context, including
1350         proper handling of generic type arguments of superclasses.
1351         Building of the runtime generic context according to the template.
1352
1353 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * class.c (mono_class_setup_fields): Set field.count for generic instances.
1356         Fixes #350856.
1357
1358         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
1359         mono_portability_find_file (). Fixes #325466.
1360         (mono_image_get_public_key): Fix a warning.
1361
1362 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
1365         Fixes #353550.
1366         (mono_class_from_name_case): Ditto.
1367
1368 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
1369
1370         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
1371           common storage for the tables used in the System/NumberFormatter class.
1372
1373 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
1374
1375         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
1376
1377 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
1378
1379         * verify.c (get_boxable_mono_type): check if the token is valid.
1380
1381         * verify.c (set_stack_value): changed to add an error if an
1382         invalid type is set on stack. Changed all callers due to signature change.
1383
1384         * verify.c (do_stobj): implement stobj validation.
1385
1386 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
1389         set container->is_method, it was set earlier.
1390
1391         * metadata.c (type_in_image): Handle MVARs which belong to not finished
1392         generic methods.
1393
1394         * reflection.c (mono_reflection_initialize_generic_parameter): Set
1395         is_method of the generic container to TRUE for methods.
1396
1397 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * metadata.c (type_in_image): Handle type parameters properly.
1400
1401         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
1402         memory ownership of this structure.
1403
1404 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
1405
1406         * verify.c (get_boxable_mono_type): make typedref types been just
1407         unverifiable. check for void type.
1408
1409         * verify.c (do_unbox_any): added, verify opcode unbox.any.
1410
1411         * verify.c (do_load_function_ptr): accept method spec tokens.
1412
1413 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * marshal.c (mono_class_native_size): Always set *align even if this is called
1416         recursively.
1417
1418 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
1421         out-of-date.
1422
1423 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
1424
1425         * verify.c: removed some old unused tables. A huge bunch of small fixes
1426         to things found while testing the verifier with mono basic.
1427
1428         * verify.c (dump_stack_value): dump null literal flag to.
1429
1430         * verify.c (verify_type_compatibility_full): fix comparison
1431         for types that have a generic super type.
1432
1433         * verify.c (verify_stack_type_compatibility): fix compatibility
1434         between null literals and reference types. fix compatibility between
1435         boxed valuetypes and object. fix corner case test for enums.
1436
1437         * verify.c (do_cmp_op): proper verification of cgt.un in case
1438         of reference types.
1439
1440         * verify.c (do_invoke_method): fix error message.
1441
1442         * verify.c (do_store_indirect
1443
1444         * verify.c (check_is_valid_type_for_field_ops): proper verification
1445         of managed pointers to valuetypes and boxed valuetypes. proper verification
1446         of null literals.
1447
1448         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
1449         allow token to be a reference type.
1450
1451         * verify.c (do_cast): proper handling of boxes valuetypes.
1452
1453         * verify.c (do_stelem): proper handling of storing a boxed valuetype
1454         in object[].
1455
1456         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
1457         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
1458         fixed the decoding of unbox_any
1459
1460 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
1463
1464 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
1465
1466         * verify.c (do_newobj): do delegate verification.
1467
1468         * verify.c (verify_delegate_compatibility): perform delegate
1469         verification.
1470
1471         * verify.c (verify_ldftn_delegate): perform tests related to
1472         ldftn delegates.
1473
1474         * verify.c (mono_delegate_signature_equal): perform the
1475         slightly diferent signature comparison required by delegates.
1476
1477         * metadata.c (mono_metadata_type_equal_full): added and exported
1478         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
1479         allows signature only comparison.
1480
1481         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
1482         as MONO_INTERNAL.
1483
1484 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1485
1486         * verify.c: added a bunch of stack_slot_* functions to
1487         make access to stack slot type easier. This is required to
1488         allow optional flags, like null literal, boxed value and
1489         this pointer.
1490         All access paths to IlStackDesc::stype have been changed 
1491         to use these new funcions.
1492         Removed a bunch of unused functions and cleared all warnings.
1493         This patch introduces the usage of the this pointer and 
1494         boxed value flags.
1495
1496 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
1499
1500 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
1503         match managed version.
1504
1505         * appdomain.c: Bump corlib version.
1506         
1507         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
1508         argument.
1509
1510 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
1511
1512         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
1513         Set public key token to zero-length byte array if assembly is not
1514         strongnamed.
1515
1516 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
1519         writing a vtype array elem.
1520
1521 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
1522
1523         * assembly.c (build_assembly_name): return FALSE if length of token is
1524         not 16 (if not "null").
1525         (mono_assembly_name_parse_full): return FALSE if value of version,
1526         culture, token or key is 0.
1527         * icall.c (fill_reflection_assembly_name): add boolean arguments to
1528         specify whether public key and public key token must be set to default
1529         value (zero-length byte array) if not available. Set versioncompat to
1530         SameMachine. If public key is available or the default is set, then
1531         set PublicKey flag.
1532         (ves_icall_System_Reflection_Assembly_FillName): if no public key
1533         is available, use empty byte array as default value. On the 2.0
1534         profile, use default value for public key token if not set.
1535         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
1536         profile, use default value for public key if not set. On the 2.0
1537         profile, use default value for public key token if not set.
1538         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
1539         default values for public key and public key token.
1540
1541 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
1544         field to keep it in synch with the managed object.
1545
1546         * marshal.c (emit_marshal_object): Add support for byref marshalling of
1547         delegates. Fixes #351520.
1548
1549         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
1550         contains defined memory.
1551         
1552         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
1553
1554         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
1555         
1556         * sgen-gc.c (check_consistency): New helper function to do a consistency check
1557         of the GC data structures.
1558
1559         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
1560
1561         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
1562         
1563         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
1564         barrier.
1565         (mono_array_clone_in_domain): Ditto.
1566         (mono_array_clone_in_domain): Ditto.
1567
1568         * threads.c (start_wrapper): Register the thread start argument as a GC root.
1569         (cache_culture): Use a write barrier.
1570
1571         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
1572         (ves_icall_get_property_info): Ditto.
1573
1574         * object.h (MONO_STRUCT_SETREF): New macro.
1575
1576         * class-internals.h (MonoStats): Add some GC statistics.
1577
1578         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
1579
1580 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
1581
1582         * exception.c (mono_exception_from_name_two_strings):
1583         Break from loop after method is found.
1584
1585 2008-01-04  Dick Porter  <dick@ximian.com>
1586
1587         * process.c (process_module_string_read): Rename variable to
1588         reflect correct usage, after fixing bug 345972.
1589
1590 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * verify.c (mono_type_create_fnptr_from_mono_method): 
1593         created a MonoType function pointer instance to be used during
1594         verification. The verifier releases this memory at end.
1595
1596         * verify.c (mono_method_is_constructor): extracted repeated
1597         checks for constructor into a single class.
1598
1599         * verify.c (do_push_field): use new extracted method
1600         for constructor check.
1601
1602         * verify.c (do_newobj): same.
1603
1604         * verify.c (do_ldftn): renamed to do_load_function_ptr
1605         and make it verify ldvirtftn too.
1606
1607         * verify.c (mono_method_verify: proper verification
1608         of ldvirtftn. release created MonoMethod instances.
1609
1610 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
1611
1612         * verify.c (token_bounds_check): added.
1613
1614         * verify.c (do_ldftn): added.
1615
1616         * verify.c (mono_method_verify): proper verificartion of ldftn.
1617
1618 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
1619
1620         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
1621         than the table row count. It's the resposibility of the caller to
1622         make the bounds check and raise the correct error.
1623
1624         * metadata.c (mono_metadata_decode_row_col): Same.
1625
1626         * loader.c (mono_get_method_from_token): perform bounds check
1627         on token for methoddef table.
1628
1629 2007-12-29  Miguel de Icaza  <miguel@novell.com>
1630
1631         * icall.c
1632         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
1633         assert into a negative result, the managed code already coped with
1634         that.
1635
1636         Some folks on Windows reported this error. 
1637
1638 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
1639
1640         * appdomain.c: Bump corlib version.
1641         * icall.c:
1642         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
1643         CultureInfo.CreateCulture to create CultureInfo for name.
1644         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
1645         create CultureInfo for name. Fixes bug #347174.
1646
1647 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
1650         flags.
1651
1652         * verify.c (is_valid_branch_instruction): allow branching to the
1653         first instruction of the protected block.
1654
1655         * verify.c (is_valid_cmp_branch_instruction): same.
1656
1657         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
1658         avoid double initialization.
1659
1660         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
1661         detect which cases the eval stack should just be copied.
1662
1663         * verify.c (mono_method_verify): check if the eval stack
1664         is empty when entering a protected block.
1665
1666 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
1667
1668         * verify.c: added is_clause_in_range, is_clause_inside_range,
1669         is_clause_nested and verify_clause_relationship. They perform
1670         the verifications stated in P1 12.4.2.7.
1671
1672         * verify.c (mono_method_verify): remove some unused variables,
1673         add the new exception clause checks, add instruction border
1674         checks for protected block start/end, improved some error 
1675         messages and fixed a bug in the way invalid instruction access
1676         is detected.
1677
1678 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
1681         from GC 7.0 if available.
1682
1683         * object.c: Remove an unused define.
1684         
1685         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
1686
1687         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
1688
1689         * null-gc.c (mono_gc_make_descr_for_array): Implement.
1690
1691         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
1692
1693         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
1694         to take the same arguments as the other make_descr functions.
1695
1696         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
1697
1698         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
1699         directly.
1700
1701         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
1702         mini.c.
1703
1704         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
1705         call to boehm-gc.c.
1706
1707         * boehm-gc.c (mono_gc_register_root): Fix a warning.
1708
1709         * null-gc.c (mono_gc_register_root): Fix a warning.
1710
1711         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
1712
1713         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
1714         (mono_gc_base_init): Call GC_init ().
1715
1716         * null-gc.c: Define mono_gc_register_root () as a no-op.
1717
1718         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
1719
1720 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
1721
1722         * verify.c: add prototype for merge_stacks at top
1723
1724         * verify.c (do_switch): added.
1725
1726         * verify.c (merge_stacks): on some cases the stack merging
1727         was not happening properly. Unequal stack sizes at merge
1728         points should be invalid.
1729
1730         * verify.c (mono_method_verify): added more debug info on stack state.
1731         verify switch properly.
1732
1733 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * method-builder.h: New file, moved the mono_mb_ declarations here from 
1736         marshal.h.
1737
1738         * boehm-gc.c marshal.c: Include method-builder.h.
1739
1740         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
1741
1742         * marshal.c: Remove some code which is now in method-builder.c.
1743
1744 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * method-builder.c: New file, extraction of the method builder functionality 
1747         from marshal.c.
1748
1749         * marshal.c: Move the mb functions into method-builder.c.
1750
1751         * marshal.h marshal.c: Export some mono_mb_... functions.
1752
1753         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
1754
1755         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
1756         the caller.
1757
1758         * class.c (mono_class_get_full): Check the token type in the dynamic case.
1759
1760         * loader.c (mono_field_from_token): Ditto.      
1761
1762         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
1763         type as well.
1764         
1765         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
1766         Fixes #342565.
1767
1768         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
1769         a helper function for setting it.
1770
1771         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
1772
1773         
1774         * assembly.c: Significally simplify code now that referenced assemblies are 
1775         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
1776
1777         * threads.h: Don't include  the internal threads-types.h header file. Fixes
1778         #349952.
1779
1780 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
1781
1782         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
1783         instructions that were target of branches or are at protected block boundaries.
1784
1785         * verify.c (in_same_block): handle filter clauses.
1786
1787         * verify.c (is_valid_branch_instruction): added. checks the target of
1788         instructions br or brtrue/false.
1789
1790         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
1791         binary branch instructions such as beq and bge.
1792
1793         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
1794         and made it pin the instruction as been part of the exception block.
1795
1796         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
1797         of in_same_block.
1798
1799         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
1800         of in_same_block.
1801
1802         * verify.c (do_ret): ret from a protected block is unverifiable and
1803         not invalid.
1804
1805         * verify.c (do_static_branch): verify br and br.s instructions.
1806
1807         * verify.c (merge_stacks): add extra param to support detection
1808         of branches in the middle of instructions.
1809         
1810         * verify.c (mono_method_verify): verify branches and exception blocks
1811         that target the middle of instructions. Proper verification of br and br.s.
1812
1813 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
1816         skip_visibility field.
1817         (reflection_methodbuilder_from_dynamic_method): Ditto.
1818
1819         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
1820         registrations. Fixes #348193.
1821
1822         * threads.h: Move the internal mono_thread_get_pending_exception () to
1823         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
1824
1825 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
1828         icall registration. Fixes #348193.
1829
1830         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
1831         for corlib classes into object. Fixes #349621.
1832
1833 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
1834
1835         * icall.c (property_accessor_nonpublic): new function to determine
1836         whether an accessor allows a property to be considered non-public.
1837         Returns false for private accessor(s) from parent class, and internal
1838         accessor(s) from parent on 2.0 profile (and higher).
1839         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
1840         to determine whether property should be included if NonPublic flag
1841         is set. Fixes bug #349078.
1842
1843 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
1844
1845         * verify.c (init_stack_with_value): added.
1846
1847         * verify.c (mono_method_verify): extracted common
1848         code for exception initialization into init_stack_with_value.
1849
1850         * verify.c (mono_method_verify): initialize the exception
1851         for handler clauses as well.
1852
1853         * verify.c (mono_method_verify): fix the exception clause
1854         ordering rules, it should use handler end offset and not
1855         start offset.
1856
1857 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
1858
1859         * rawbuffer.c: remove useless warning.
1860
1861 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
1862
1863         * threads.h, threads-types.h: move functions to the correct header
1864         (fixes bug#349952).
1865
1866 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1867
1868         * verify.c (mono_method_verify): proper verification
1869         of exception handling clauses ranges and fallthru in
1870         and out of protected blocks.
1871
1872 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * verify.c (mono_method_verify): fixed compilation issue.
1875
1876 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * verify.c (mono_method_verify): a printf slipped in, changed
1879         to use verifier debug macro.
1880
1881 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
1882
1883         * verify.c (is_correct_leave): check for filter clauses.
1884
1885         * verify.c (do_filter): added.
1886
1887         * verify.c (mono_method_verify): property verification of leave.
1888
1889
1890 2007-12-18  Mark Probst  <mark.probst@gmail.com>
1891
1892         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
1893         Win32 build, until we figure out how to do the proper thing on
1894         Win32.
1895
1896 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
1899         by the previous patch.
1900         
1901         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
1902         the assembly resolve handler for refonly assemblies.
1903
1904 2007-12-17  Mark Probst  <mark.probst@gmail.com>
1905
1906         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
1907         Make sure only one thread is allowed to commence shutdown, and
1908         don't allow new threads to be started once shutdown is in
1909         progress.
1910
1911 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * verify.c (is_correct_endfilter): added.
1914
1915         * verify.c (is_unverifiable_endfilter): added.
1916
1917         * verify.c (do_endfilter): added.
1918
1919         * verify.c (mono_method_verify): property verification of endfilter
1920         and fixed a corner case or endfinally.
1921
1922 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
1923
1924         * verify.h: new flags to support fail fast of unverifiable code and
1925         do non-strict verification. Non-strict verification is required to
1926         have MS runtime compatibility. There are a huge amount of unverifiable
1927         code that it accepts as verifiable. The strict mode verifies the code
1928         as the specs says.
1929         Non-strict mode will be required in cases where code needs to be
1930         accepted as verifiable but fails under strict mode.
1931
1932         * pedump.c: added support to fail fast and non-strict verification.
1933
1934         * verify.c: added support for both fail fast and non-strict verification.
1935
1936 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * verify.c (is_correct_endfinally): added.
1939
1940         * verify.c (mono_method_verify): property verification of endfinally.
1941
1942 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1943
1944         * verify.c (in_any_block): check for filter clauses.
1945
1946         * verify.c (is_correct_rethrow): added.
1947
1948         * verify.c (mono_method_verify): property verification of rethrow.
1949
1950         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
1951
1952 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1953
1954         * verify.c (do_throw): added.
1955
1956         * verify.c (mono_method_verify): property verification of throw
1957
1958 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
1961         assemblies. Fixes #346425.
1962
1963 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
1964
1965         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
1966         FieldBuilders.
1967
1968         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
1969
1970         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
1971         prevent asserts when this is called with a token which might not be valid.
1972
1973         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
1974         lookup_dynamic_token_class with valid_token == FALSE.
1975
1976         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
1977
1978         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
1979
1980         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
1981         
1982 2007-12-10  Mark Probst  <mark.probst@gmail.com>
1983
1984         * gc.c: Don't delay threadpool thread finalization unless Mono is
1985         shutting down.
1986
1987 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1988
1989         * threads.c: turn an assert into a non-fatal warning.
1990
1991 2007-12-09  Robert Jordan  <robertj@gmx.net>
1992
1993         * icall.c (GetVirtualMethod): Add missing argument validation.
1994
1995 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1996
1997         * verify.c (do_cast): added.
1998
1999         * verify.c (mono_method_verify): property verification of castclass and isinst.
2000
2001
2002 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
2005
2006         * verify.c (do_stelem): added.
2007
2008         * verify.c (mono_method_verify): property verification of stelem.X.
2009
2010 2007-12-07  Mark Probst  <mark.probst@gmail.com>
2011
2012         * class.c, class-internals.h: Introduce an environment variable
2013         (MONO_GENERIC_SHARING) through which the extent of generic code
2014         sharing can be controlled (share all classes, share only corlib
2015         classes, or share nothing).
2016
2017         * object.c: Only create runtime generic context for classes for
2018         which sharing is enabled.
2019
2020 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
2021
2022         * verify.c (do_ldelem): refactor it to work with ldelem.any.
2023
2024         * verify.c (mono_method_verify): property verification of ldelem.any.
2025
2026 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
2027
2028         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
2029         added ldelem.X opcodes.
2030
2031         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
2032
2033         * verify.c: proper verification of ldelem.X 
2034
2035 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
2038
2039 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2040
2041         * verify.c (mono_method_verify): null literal requires special handling,
2042         the value pushed on stack need to be flagged as so.
2043
2044         * verify.c (do_ldelema): Verify ldelema properly.
2045
2046 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2047
2048         * verify.c: Verify ldlen properly.
2049
2050 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
2053         to the target object's type. Fixes #346160.
2054
2055 2007-12-05  Dick Porter  <dick@ximian.com>
2056
2057         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
2058         Solaris needs the same workaround as BSD-derived systems.  Fixes
2059         bug 323524, patch by Burkhard Linke
2060         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
2061
2062 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
2063
2064         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
2065         handle to use when error dialog is shown; otherwise, update mask
2066         to show no error dialog when an error occurs.
2067
2068 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
2071
2072         * class.c (mono_class_get_field_default_value): New helper function to initialize
2073         field->def_type and field->data.
2074
2075 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
2078         the general one.
2079
2080         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
2081
2082         * marshal.c: Avoid depending on delegate->method_info being set.
2083
2084         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
2085         
2086         * object.c (mono_delegate_ctor): Set delegate->method.
2087
2088         * object-internals.h (struct _MonoDelegate): Add 'method' field.
2089
2090         * appdomain.c: Bump corlib version.
2091
2092 2007-11-27  Raja R Harinath  <harinath@gmail.com>
2093
2094         * metadata.c (mono_generic_inst_equal_full): Short-circuit
2095         equality check if we're comparing canonicalized MonoGenericInsts.
2096
2097 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * class.c (generic_array_methods): Call mono_class_setup_methods () before
2100         accessing class->methods.
2101
2102 2007-11-22  Dick Porter  <dick@ximian.com>
2103
2104         * threads.c: Ensure that the synch_cs is set before trying to use
2105         it.
2106
2107 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
2108
2109         * profiler.c: r89126 broke the statistial profiler, unbreak.
2110
2111 2007-11-22  Martin Baulig  <martin@ximian.com>
2112
2113         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
2114
2115         * mono-debug.c
2116         (mono_debug_debugger_version): Bump to 3.
2117         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
2118         -> mono_debugger_class_initialized().
2119
2120         * mono-debug-debugger.c
2121         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
2122
2123         * class.c
2124         (mono_debugger_start_class_init_func): Removed.
2125         (mono_debugger_class_loaded_methods_func): Added.
2126         (mono_class_setup_methods): Call it here.
2127
2128 2007-11-22  Martin Baulig  <martin@ximian.com>
2129
2130         * mono-debug.c
2131         (mono_debug_add_delegate_trampoline): New public method.
2132         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
2133
2134         * mono-debug.h
2135         (MonoSymbolTable): Added `global_data_table'.
2136         (MonoDebuggerTypeKind): Removed.
2137
2138 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
2141         these methods.
2142
2143         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2144         
2145 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
2146
2147         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
2148
2149 2007-11-20  Martin Baulig  <martin@ximian.com>
2150
2151         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
2152
2153         * mono-debug-debugger.c
2154         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
2155         (mono_debugger_remove_breakpoint): Likewise.
2156         (mono_debugger_check_breakpoints): Likewise.
2157         (mono_debugger_register_class_init_callback): New public method.
2158         (mono_debugger_remove_class_init_callback): Likewise.
2159         (mono_debugger_add_type): Likewise.
2160
2161         * mono-debug-debugger.h
2162         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
2163
2164 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
2165
2166         * class.c: more interface implementations needed for the
2167         array enumerator (fixes bug #341112).
2168
2169 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
2170
2171         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
2172         fix ParamName of ArgumentNullExceptions.
2173
2174 2007-11-17  Miguel de Icaza  <miguel@novell.com>
2175
2176         * reflection.c (mono_reflection_encode_sighelper): Generate the
2177         modopts and modreqs.   I have a useless test that crashes monodis,
2178         but that shows the code working.
2179
2180 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
2183         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
2184
2185 2007-11-15  Dick Porter  <dick@ximian.com>
2186
2187         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
2188         When joining a thread, it's the thread that's calling Join that
2189         gets WaitSleepJoin state not the target.  Fixes the standalone
2190         test case in bug 334740, and hopefully the whole bug too.
2191
2192 2007-11-15  Dick Porter  <dick@ximian.com>
2193
2194         * process.c: Read file version info from the files pointed at by
2195         process modules, not the current process.  Fixes bug 315969.
2196
2197         Use windows typedef names in some places to fix warnings on the
2198         windows build.
2199
2200 2007-11-15  Mark Probst  <mark.probst@gmail.com>
2201
2202         * image.c, metadata-internals.h: Added a generic_class_cache hash
2203         to MonoImage for looking up generic classes when sharing generics.
2204
2205 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
2206
2207         * sgen-gc.c: warning cleanups.
2208
2209 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
2212         inherited properties.
2213
2214 2007-11-14  Mark Probst  <mark.probst@gmail.com>
2215
2216         * object.c, class-internals.h: Added more information to the
2217         runtime generic context.
2218
2219 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
2222         instead of just the target method. Generalize the abstract method handling to
2223         handle any non-static method.
2224
2225         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
2226         mono_marshal_get_delegate_invoke () signature change.
2227
2228 2007-11-13  Mark Probst  <mark.probst@gmail.com>
2229
2230         * class.c, class-internals.h: Made
2231         mono_type_get_basic_type_from_generic () public.  Fixed member
2232         access check for shared generics.
2233
2234         * loader.c: Don't insert field into field cache if it's part of a
2235         non-inflated generic class.
2236
2237         * domain.c, domain-internals.h: The generic sharing context is now
2238         part of the jit info data structure.  Added two accessor
2239         functions.
2240
2241 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
2244         the array Get/Set/Address methods, since the JIT inlines them.
2245
2246         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
2247
2248         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
2249         (mono_image_init): Initialize runtime_invoke_direct_cache.      
2250
2251         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
2252         mono_marshal_get_delegate_invoke signature change.
2253
2254         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
2255         an additional argument. Add support for invoking abstract methods.
2256
2257         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
2258
2259         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
2260
2261 2007-11-09  Mark Probst  <mark.probst@gmail.com>
2262
2263         * class.c: Do field layout for open generic classes as well.
2264
2265 2007-11-09  Mark Probst  <mark.probst@gmail.com>
2266
2267         * gc.c, gc-internal.h: Don't finalize threadpool threads with
2268         other objects, because the threadpool is still around.  Put them
2269         in a list instead and after finalizing all other objects in the
2270         root domain shut down the thread pool and then finalize the
2271         threads.  Fixes bug #337383.
2272
2273         * threads.c, thread-types.h: New mono_thread_create_internal()
2274         function for marking a thread with the threadpool flag before it
2275         started.  Set synch_cs to NULL after freeing it.
2276
2277         * threadpool.c: Mark threadpool threads before they start.
2278
2279 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
2280
2281         * reflection.h, reflection.c: don't export random functions
2282         and lazy load dbnull and missing objects.
2283
2284 2007-11-07  Jonathan Chambers <joncham@gmail.com>
2285
2286         * class.c: Initialize COM types if COM interfaces
2287         are present (not just COM classes).
2288         
2289         Code is contributed under MIT/X11 license.
2290
2291 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
2292         * reflection.c:
2293         create_dynamic_mono_image: hook module profiler events (dynamic case).
2294         mono_image_basic_init: hook assembly profiler events (dynamic case).
2295
2296 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
2297         * profiler.c:
2298         simple_appdomain_unload: completely terminate the profiler
2299         instead of only processing the statistical samples.
2300         simple_shutdown: make sure this is really called exactly once,
2301         even in multithreaded applications, and always listen to
2302         appdomain events.
2303         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
2304         here, the "[un]load" functions will do it.
2305         Fixes bugs #333791 and #325261.
2306
2307 2007-11-07  Geoff Norton  <gnorton@novell.com>
2308
2309         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
2310         rather than depend on __APPLE__.
2311
2312 2007-11-07  Mark Probst  <mark.probst@gmail.com>
2313
2314         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
2315
2316 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
2317
2318         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
2319         UTF16 MonoString. Fix the crash from bug #335488
2320
2321 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
2322
2323         * marshal.c: Correct (for non-Win32 OS) length != size in 
2324         mono_string_from_bstr. Fix #339530.
2325
2326 2007-11-06  Geoff Norton  <gnorton@novell.com>
2327
2328         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
2329         to succeed
2330
2331 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
2332
2333         * process.c: Added run-time GetProcessId API detection for Windows.
2334
2335 2007-11-04  Miguel de Icaza  <miguel@novell.com>
2336
2337         * reflection.c  (mono_param_get_objects): If a parameter has the
2338         attribute [System.Runtime.InteropServices.Optional] we should
2339         set the DefaultValue of the ParameterInfo to be
2340         System.Reflection.Missing instead of DBNull.
2341
2342         See bug #339013.
2343
2344         (mono_get_reflection_missing_object): New method,
2345         returns the System.Reflection.Missing.Value singleton instance.
2346
2347 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
2348
2349         * culture-info-table.h : regenerated.
2350
2351 2007-11-02  Jonathan Chambers <joncham@gmail.com>
2352
2353         * icall.c: Use GetEnvironmentStrings on windows
2354         so we are using the same environment block as 
2355         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
2356         #333740.
2357         
2358         Code is contributed under MIT/X11 license.
2359
2360 2007-10-31  Martin Baulig  <martin@ximian.com>
2361
2362         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
2363
2364         * mono-debug-debugger.h
2365         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
2366
2367 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
2370         classes.
2371
2372 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
2373
2374         * culture-info-table.h : regenerated.
2375
2376 2007-10-30  Robert Jordan  <robertj@gmx.net>
2377
2378         * icall-def.h, icall.c:
2379         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
2380
2381         Code is contributed under MIT/X11 license.
2382
2383 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
2384
2385         * class.c (mono_class_setup_vtable): Find the inflated methods in the
2386         inflated class instead of inflating them again.
2387         
2388         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
2389         dynamic case.
2390
2391         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
2392         Call setup_supertypes () after klass->parent is set.
2393         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
2394
2395         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
2396         for inflated instances of not yet created dynamic generic classes.
2397         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
2398         times from inflated_method.
2399         (methodbuilder_to_mono_method): Ditto.
2400
2401 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
2402
2403         * gc.c: code cleanup and removed old untested option of not creating the
2404         finalizer thread.
2405
2406 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
2409         creating a jump trampoline for dynamic methods.
2410
2411 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
2412
2413         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
2414         generic TypeBuilders when called from another method of the same type (bug #335131).
2415
2416
2417 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
2420         doesn't seem to work perfectly.
2421         
2422         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
2423         called multiple times.
2424         (methodbuilder_to_mono_method): Ditto.
2425         (resolve_object): Inflate FieldBuilder's.
2426
2427 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2428
2429         * string-icalls.c, string-icalls.h, appdomain.c: patch from
2430         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
2431         RemoveEmptyEntries in the string.Split implementation (bug #322375).
2432
2433 2007-10-26  Dick Porter  <dick@ximian.com>
2434
2435         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
2436         Thread initialisation changes
2437
2438 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
2439
2440         * verify.c: fix compatibility check between arrays and System.Array
2441
2442 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
2445         too. Fixes #336999.
2446
2447 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * object.c (mono_value_box): Use typed allocation here.
2450
2451 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
2452
2453         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
2454         trampoline instead of compiling the method right away.
2455
2456         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
2457
2458 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
2461         related fields for dynamic classes. Fixes #334493.
2462
2463 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
2466         
2467         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
2468
2469         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
2470         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
2471
2472         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
2473
2474         * reflection.c (create_generic_typespec): Initialize klass->generic_container
2475         if needed.
2476         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
2477
2478 2007-10-18  Jonathan Chambers <joncham@gmail.com>
2479
2480         * marshal.c: Use correct key when removing item
2481         from ccw_hash.
2482         
2483         Code is contributed under MIT/X11 license.
2484
2485 2007-10-17  William Holmes  <billholmes54@gmail.com>
2486
2487         *marshal.c: Adding a case to marshal booleans to U1
2488
2489         Code is contributed under MIT/X11 license.
2490
2491 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
2492
2493         * class.c (mono_class_from_name): Search the modules compromising dynamic
2494         assemblies. Fixes #331601.
2495
2496 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
2499         exception if the type name contains an assembly component. Fixes #334203.
2500
2501         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
2502         modules inside dynamic assemblies. Fixes #334200.
2503         
2504         * reflection.c: Set image->public_key and image->public_key_length;
2505
2506         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
2507         fields.
2508
2509         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
2510         
2511 2007-10-16  Mark Probst  <mark.probst@gmail.com>
2512
2513         * metadata.c: Implemented correct comparing of generic classes.
2514         An inflated generic class can be equal to a non-inflated one if it
2515         is inflated with generic type variables as type arguments.  Fixes
2516         bug #333798.
2517
2518 2007-10-15  Dick Porter  <dick@ximian.com>
2519
2520         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
2521         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
2522         81646.
2523
2524         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
2525         instead of a monitor lock.  This means that monitor_try_enter and
2526         co can set the thread state safely.
2527         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
2528         thread_interrupt_requested, so interrupt actually works.
2529
2530         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
2531         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
2532         state accessor function
2533
2534 2007-10-15  Martin Baulig  <martin@ximian.com>
2535
2536         * mono-debug.h
2537         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
2538         the debugger with the current runtime.
2539
2540 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
2541
2542         * object.c, object-internals.h: added the ability to set a single
2543         trampoline for all the slots in a vtable.
2544
2545 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2546
2547         * marshal.c: deal with a possible race condition during multicast
2548         delegate invocation.
2549
2550 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2551
2552         * class.c: ensure value type methods don't have the synchronized
2553         flag set.
2554
2555 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
2556
2557         * string-icalls.c, string-icalls.h: reverted unapproved patch that
2558         breaks the build.
2559
2560 2007-10-11  Joel Reed  <joelwreed@comcast.com>
2561
2562         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
2563         to take an options parameter so that empty entries can be removed during
2564         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
2565
2566 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2567
2568         * marshal.c: make sure we don't store the signature from a dynamic
2569         method into the runtime invoke cache (bug #327189).
2570
2571 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2572
2573         * marshal.c: make sure the wrapper methods are properly initialized.
2574
2575 2007-10-11  Mark Probst  <mark.probst@gmail.com>
2576
2577         * metadata.c, metadata-internals.h: Generalized
2578         mono_type_stack_size() to mono_type_stack_size_internal() which
2579         takes an additional argument specifying whether it allows open
2580         types.
2581
2582 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2583
2584         * verify.c (do_invoke_method): handle typedbyref params
2585         correctly and check for unverifiable return values.
2586
2587         * verify.c (do_newobj): fix a warning.
2588
2589 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2590
2591         * verify.c: don't tread typedbyref as allways unverifable,
2592         so uses, like (ld/st)loc.0 are valid. verify for the cases
2593         that it matters, like boxing related operations.
2594
2595 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * verify.c: add verification of the newobj opcode. verification
2598         of delegate instantation still missing due ldftn and virldftn not
2599         pushing the function type on stack
2600
2601 2007-10-08  Mark Probst  <mark.probst@gmail.com>
2602
2603         * class-internals.h: Runtime generic context data structure
2604         definition.
2605
2606         * object.c: Initialization of runtime generic context at runtime
2607         vtable creation time.
2608
2609 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
2610         * class.c (mono_class_create_from_typedef,
2611         mono_class_from_generic_parameter, mono_ptr_class_get,
2612         mono_fnptr_class_get, mono_bounded_array_class_get)
2613         * domain.c (mono_domain_create, mono_domain_free)
2614         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
2615         * image.c (do_mono_image_load, mono_image_close):
2616         Hooked up load-unload profiler events.
2617
2618 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
2619
2620         * domain.c: track statistics about the actual amount of native code
2621         allocated.
2622
2623 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
2624
2625         * class.c: the valuetype enumerators don't have the additional
2626         supertypes interfaces.
2627
2628 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2629
2630         * class.c: need more interfaces setup for the IEnumerator<T>
2631         object created for arrays (tests/ienumerator-interfaces.2.cs).
2632
2633 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
2636
2637 2007-10-05  Alp Toker  <alp@atoker.com>
2638
2639         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
2640         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
2641         #315863.
2642
2643 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
2644
2645         * verify.c (verify_type_compatibility_full): verification of
2646         compatibility improved, validates correctly non-strict checks between
2647         native int and I4 types different than (unsigned)int32.
2648
2649         * verify.c (do_store_indirect): added, do all verification of
2650         ldind.X opcodes. 
2651
2652         * verify.c (get_load_indirect_mono_type): renamed to
2653         get_indirect_op_mono_type, as it now returns the MonoType for 
2654         ldind.X and stind.X opcodes.
2655
2656 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
2657
2658         * reflection.c: Fix the encoding of generic type definition for
2659         TypeBuilders.
2660
2661         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
2662         mono_image_typedef_or_ref but allows to specify if typespec lookups should
2663         be made. Typespec check is done prior to typeref cache lookup.
2664
2665         * reflection.c (mono_image_typedef_or_ref): now just delegate to
2666         mono_image_typedef_or_ref_full.
2667
2668         * reflection.c (encode_generic_class): encode the generic class
2669         directly instead of calling encode_type.
2670
2671         * reflection.c (encode_type): encode the generic type definition
2672         MonoClass as a generic instantiation.
2673
2674         * reflection.c (create_typespec): cache typespec tokens in
2675         the assembly->typespec cache. Don't create typespec for a generic
2676         instance MonoClass. Create typespec for the generic type defintion.
2677
2678         * reflection.c (create_generic_typespec): encode the generic
2679         class directly instead of calling encode_type.
2680
2681         * reflection.c (mono_image_create_token): encode the generic
2682         type definition not using a typespec for MonoType instances.
2683
2684
2685 2007-10-04  Raja R Harinath  <rharinath@novell.com>
2686
2687         Fix #328812
2688         * class.c (mono_image_init_name_cache): Don't return nested
2689         'protected internal' classes.
2690         (mono_class_from_name_case): Likewise.
2691
2692 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
2693
2694         * icall-def.h, icall.c : get_bundled_machine_config() is now the
2695           common function used by both DefaultConfig in System.dll and
2696           InternalConfigurationHost in System.Configuration.dll.
2697
2698 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2699
2700         * class.c: automatically add to vectors only a few essential explicit
2701         generic interfaces. The rest of the interfaces that arrays should
2702         provide are currently implicitly added (but still not lazily, see the
2703         design in the discussion of bug#325495 for the details of what is
2704         needed for that). Additionally, implicit interfaces are assigned the
2705         same vtable slot as the explicit interfaces (as they are compatible):
2706         this enables huge memory savings since we don't need to instantiate
2707         as many memthods and as large vtables anymore. Also, Since
2708         GetEnumerator<T> returns an instance of a type that is required to
2709         support a similarly large set of interfaces as arrays, we add
2710         implicit interfaces and interface offset sharing support to those
2711         types, too. This change adds all the required interfaces so that
2712         the anonarray.cs test case in the bug report works (we don't add
2713         all the interfaces to arrays of arrays 3-level deep and more because
2714         of the memory requirements explained in the bug and since they are much
2715         less common: the lazy-loading support will enabled them to work, too).
2716
2717 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2718
2719         * verify.c (merge_stacks): major clean up, all type compatibility
2720         checks are done by verify_type_compatibility. This fix my earlier lack
2721         of understanding of the CLR type system and merge_stacks no longer looks
2722         scary.
2723
2724         * verify.c: fixed some bad spelling.
2725
2726 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2727
2728         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
2729         a given stack slock.
2730         
2731         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
2732         verify_type_compatibility_full. This removed a near indentical function and fixed
2733         handling of Int32 and IntPtr across all opcodes.
2734
2735 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2736
2737         * class.c: only vectors have the additional generic interfaces.
2738
2739 2007-10-01  Jonathan Chambers <joncham@gmail.com>
2740
2741         * mono-config.c: Use g_strcasecmp instead of
2742         strcasecmp like everywhere else to fix
2743         compilation with MSVC.
2744         
2745         Code is contributed under MIT/X11 license.
2746
2747 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2748
2749         * object.c, object-internals.h: refactored the IMT code to enable
2750         building a single slot at a time and lazily creating the IMT trampolines
2751         and thunks.
2752
2753 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
2756
2757         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
2758         Fixes #328501.
2759         
2760 2007-09-29  Raja R Harinath  <harinath@gmail.com>
2761
2762         * loader.c (method_from_methodspec): Rearrange to avoid
2763         un-necessary exposition.  Don't assert out if the method's
2764         declaring type is a generic type definition.
2765
2766 2007-09-28  Martin Baulig  <martin@ximian.com>
2767
2768         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
2769
2770 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
2771
2772         * class-internals.h: optimize field layout of MonoClass to
2773         requires less cachelines at runtime and save a few bytes on 64 bit
2774         systems.
2775
2776 2007-09-28  Jb Evain  <jbevain@novell.com>
2777
2778         * reflection.c: when encoding type names in custom attributes,
2779         if the type is a closed generic type, its generic arguments
2780         have to be serialized as AssemblyQualifiedName, so that when
2781         they are deserialized, it's possible to re-create them properly.
2782         Fixes #329450.
2783
2784
2785 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2786
2787         * object.c, class-internals.h: added delegate-creation counter.
2788
2789 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
2790
2791         * class.c: cleanup of the code that synthetizes interfaces for
2792         arrays in 2.0: saves quit a bit of corlib mempool memory.
2793         Code to fix bug #325495 ifdeffed out for now until the issues
2794         with memory usage and O(n^2) behaviour are fixed.
2795
2796 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2797
2798         * marshal.c: when possible, do not duplicate the name of the methods
2799         in the method builder and in the generated MonoMethod.
2800
2801 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2802         * verify.c: added support for type checking ldind_* opcodes.
2803
2804 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2805
2806         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
2807         which is used to distinguish the fully open instantiation of a TypeBuilder
2808         with the rest. This temporary hack is required to restore the property that
2809         the fully open instantiation is the same type of the generic type definition.
2810
2811         * class-internals.h (mono_generic_class_is_generic_type_definition):
2812         new function as part of the internal API.
2813
2814         * class.c (inflate_generic_type): return NULL when the generic inst is
2815         fully open. The fully open generic type is now the same as the generic type
2816         definition for non TypeBuilder types.
2817
2818         * class.c (mono_generic_class_get_class): removed assert since it is
2819         no longer valid, gklass->cached_class can point to the generic type definition.
2820
2821         * class.c (mono_generic_class_is_generic_type_definition): new.
2822
2823         * metadata.c (mono_generic_class_hash): added is_tb_open field
2824         to the hash calculation.
2825
2826         * metadata.c (free_generic_class): if the generic class is associated
2827         with the generic type definition, its field will come from the mempool and
2828         must not be freed.
2829
2830         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
2831         new, this function identifies the corner case of a TypeBuilder fully open
2832         instantiation.
2833
2834         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
2835         for lookup. Set gclass->cached_class to be the container class in case of
2836         the fully open instantiation of non TypeBuilder types.
2837
2838         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
2839         to compare generic classes.
2840
2841         * reflection.c (method_encode_methodspec): remove assert that
2842         no longer is valid.
2843
2844         * reflection.c (mono_reflection_generic_class_initialize): add
2845         an aditional assert to ensure the proper type is used.
2846
2847 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
2848
2849         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
2850         to enjoy it.
2851
2852 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * verify.c (push_arg): Fixed support for ldarga
2855         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
2856         MonoType used as first arg in case of instance calls.
2857
2858 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2859
2860         * verify.c: Support for verifying VAR and MVAR types, 
2861
2862 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * icall.c (ves_icall_get_property_info): Set the reflected type of the
2865         accessors correctly.
2866
2867 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
2868
2869         * threads.c: support OSX and other systems in
2870         mono_thread_get_stack_bounds (bug #328026).
2871
2872 2007-09-25  Martin Baulig  <martin@ximian.com>
2873
2874         * mono-debug.h
2875         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
2876
2877 2007-09-24  Martin Baulig  <martin@ximian.com>
2878
2879         * mono-debug.h
2880         (MonoDebugClassEntry): Moved the definition of this struct into
2881         mono-debug.c to make it private.
2882
2883         * mono-debug.c
2884         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
2885         type table per symbol file, we don't need to store the symfile id
2886         any longer.
2887
2888 2007-09-24  Martin Baulig  <martin@ximian.com>
2889
2890         Create one type table per symbol file, since a `MonoClass *' gets
2891         invalid when its image is unloaded.
2892
2893         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
2894         (MonoDebugHandle): Added `type_table'.
2895
2896 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
2897
2898         * mempool.c, mempool.h: added mono_mempool_new_size () API
2899         to be able to specify a smaller initial size for the pool.
2900         Adjusted the code to slowly increase pool size before using
2901         the previous default size.
2902         * image.c: use a small initial size for image mempools.
2903
2904 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
2907         Fixes ##320990.
2908
2909         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
2910         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
2911
2912 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
2913
2914         * metadata.c (mono_type_create_from_typespec): Remove an invalid
2915         free. Fixes #327438.
2916
2917 2007-09-21  Raja R Harinath  <harinath@gmail.com>
2918
2919         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
2920         generic instantiations, etc.
2921         <MONO_TYPE_ARRAY>: Likewise.
2922
2923 2007-09-21  Martin Baulig  <martin@ximian.com>
2924
2925         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
2926         these structs were never defined.
2927         (MonoDebugHandle): Removed the `_priv' field, it was never used.
2928
2929 2007-09-21  Martin Baulig  <martin@ximian.com>
2930
2931         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
2932
2933 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
2934
2935         * image.c: removed the guid hash tables: we can get the same info
2936         without the additional memory usage hit (partially fixes also bug #327052).
2937
2938 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
2939
2940         * profiler.h, profiler-private.h, profiler.c: add a new profiler
2941         event to handle unloading methods. After the event is called, the
2942         corresponding MonoMethod* must be considered invalid.
2943         * loader.c (mono_free_method): call the new mono_profiler_method_free
2944         event.
2945
2946 2007-09-20  Mark Probst  <mark.probst@gmail.com>
2947
2948         * domain-internals.h: New flag in MonoJitInfo which marks shared
2949         generic methods.  New hash table (shared_generics_hash) in
2950         MonoDomain to keep track of shared generic methods.  Prototypes
2951         for functions to register and lookup shared generic methods.
2952
2953         * domain.c: Support for registering and looking up shared generic
2954         methods via a hash table (shared_generics_hash) in MonoDomain.
2955
2956         * class-internals.h: New exception to signal failure of shared
2957         compilation of a generic method.  New counters for generics
2958         sharing in MonoStats.
2959
2960 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
2961
2962         * image.c, metadata-internals.h: don't keep a file descriptor open
2963         for loaded assemblies (bug#325988).
2964
2965 2007-09-19  Raja R Harinath  <rharinath@novell.com>
2966
2967         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
2968         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
2969         use the corresponding datatypes.
2970         (type_in_image): Update to changes.
2971         (CleanForImageUserData): Simplify.
2972         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
2973         Avoid quadratic behaviour in handling the "stolen" list by
2974         separating the filter predicate out, and by prepending the stolen
2975         items rather than appending them.
2976         (steal_ginst_in_image): Likewise.
2977         (mono_metadata_clean_for_image): Update to changes.
2978
2979 2007-09-19  Martin Baulig  <martin@ximian.com>
2980
2981         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
2982
2983 2007-09-19  Martin Baulig  <martin@ximian.com>
2984
2985         * mono-debug.c (mono_debug_cleanup): Don't call
2986         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
2987
2988 2007-09-19  Raja R Harinath  <harinath@gmail.com>
2989
2990         Fix crash on 'make run-test' in mcs/errors
2991         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
2992         Avoid more potential allocations in mono_class_from_mono_type.
2993         (ginst_in_image): Update to changes.
2994         (gclass_in_image): Rearrange slightly.
2995
2996 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * class.c (mono_class_init): Move the code that sets up class->methods to 
2999         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
3000
3001         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
3002         canonical instance of an inflated generic signature.
3003         (mono_type_create_from_typespec): Remove an invalid free.
3004
3005         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
3006
3007 2007-09-18  Marek Habersack  <mhabersack@novell.com>
3008
3009         * domain-internals.h: added a declaration of the
3010         mono_assembly_load_full_nosearch internal function.
3011
3012         * assembly.c (mono_assembly_load_with_partial_name): use
3013         mono_try_assembly_resolve return value properly.
3014         (mono_assembly_load_full_nosearch): copied the function body from
3015         mono_assembly_load_full, without the code to invoke assembly
3016         search hooks.
3017         (mono_assembly_load_full): calls the above new function and if the
3018         assembly is not resolved, invokes the search hooks.
3019
3020         * appdomain.c (mono_runtime_init): restore the global postload
3021         assembly search handlers.
3022
3023 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * class.c (mono_class_init): Make sure class->methods and class->properties
3026         are never NULL in the generics case.
3027
3028         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
3029
3030 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * metadata.c (free_generic_class): Disable some code to fix the build.
3033
3034         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
3035
3036         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
3037         from the image mempool.
3038
3039         * metadata.c (free_generic_class): Free more data from the inflated class.
3040
3041         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
3042
3043         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
3044         mempool.
3045         (mono_type_create_from_typespec): Ditto.
3046
3047         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
3048         MonoImage to the caller.
3049         (mono_init_internal): Save the opened image in a global variable.
3050         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
3051
3052         * reflection.c (resolve_object): Fix a leak.
3053
3054         * metadata.c: Fix the freeing of data in the generics caches.
3055         
3056         * metadata.c (free_generic_inst): Comment this out to fix the build.
3057         (free_generic_class): Ditto.
3058
3059         * metadata.c: Free cached generic methods, instantinations and classes when
3060         they are removed from the caches.
3061         (mono_metadata_free_type): Free the type itself.
3062
3063         * class.c: Free the result of mono_class_inflate_generic_type () in a few
3064         places.
3065
3066 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3067
3068         * boehm-gc.c: restrict managed allocs to __thread supporting
3069         architectures.
3070
3071 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
3074         (mono_generic_class_get_class): Fix a leak.
3075
3076         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
3077         mono_metadata_free_type ().
3078         (mono_metadata_inflate_generic_inst): Fix a leak.
3079
3080 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * mono-debug.c (free_header_data): Fix a leak missed earlier.
3083
3084         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
3085         mempool.
3086
3087         * mono-debug.c (mono_debug_close_image): Fix call to 
3088         g_hash_table_remove ().
3089
3090 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
3091
3092         * icall-def.h: redirect all the string ctor to the managed
3093         CreateString () methods.
3094         * string-icalls.c, string-icalls.h: removed dead code for string
3095         ctors and icalls.
3096
3097 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * mono-debug.c: Fix memory leaks.
3100
3101 2007-09-14  Jonathan Chambers <joncham@gmail.com>
3102
3103         * threads-types.h: Implement mono_hazard_pointer_set and 
3104         mono_hazard_pointer_clear macros using do/while(0) to fix
3105         compilation with MSVC.
3106         
3107         Code is contributed under MIT/X11 license.
3108
3109 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
3112         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
3113
3114 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3115
3116         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
3117         icalls.
3118
3119 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3120
3121         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
3122         managed-code allocated as well.
3123
3124 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * class.c (mono_class_is_assignable_from): Add support for generic variance.
3127
3128 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
3129
3130         * boehm-gc.c: fixed the build after the AOT changes.
3131
3132 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * wrapper-types.h: Add an ALLOC wrapper type.
3135
3136         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
3137         reference managed allocator methods.
3138
3139 2007-09-12  Marek Safar  <marek.safar@gmail.com>
3140
3141         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
3142         of Type array and not MonoType, a fix suggested by Hari.
3143         
3144 2007-09-12  Jonathan Chambers <joncham@gmail.com>
3145
3146         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
3147         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
3148         
3149         Code is contributed under MIT/X11 license.
3150
3151 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3152
3153         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
3154
3155 2007-09-12  Marek Habersack  <mhabersack@novell.com>
3156
3157         * image.c (do_mono_image_open): if assembly file fails to open and
3158         MONO_IOMAP is in effect, try to find the path in a
3159         case-insensitive way.
3160
3161         * appdomain.c (mono_runtime_init): do not install postload hooks -
3162         tests show that MS.NET doesn't use anything of that sort to
3163         trigger the AppDomain.AssemblyResolve event.
3164         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
3165         made non-static.
3166         (mono_runtime_init): init portability helpers here.
3167
3168         * assembly.c (mono_assembly_load_with_partial_name): if other   
3169         attempts fail, trigger the AppDomain.AssemblyResolve event handler
3170         to resolve the assembly.
3171
3172         * domain-internals.h: added mono_try_assembly_resolve and marked
3173         it as internal.
3174
3175 2007-09-11  Jb Evain  <jbevain@novell.com>
3176
3177         * object-internals.h (MonoReflectionDynamicMethod): add
3178         a `MonoReflectionType *owner` field. The owner is used
3179         * reflection.c:
3180         (mono_reflection_create_dynamic_method): use the owner of the dynamic
3181         method as the class declaring the dynamic method.
3182         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
3183         dynamic method to the declaring type of the methodbuilder.
3184
3185 2007-09-11  Mark Probst  <mark.probst@gmail.com>
3186
3187         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
3188         rules for calling methods via reflection.
3189
3190 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * reflection.c (resolve_object): Add support for MonoGenericClass. 
3193         Inflate MonoType's.
3194
3195 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
3196
3197         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
3198         provide a managed method that does fast allocations without needing
3199         a managed->unmanaged transition. Boehm GC implementation currently
3200         enabled for ptrfree objects on sane architectures.
3201
3202 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
3203
3204         * marshal.c, marshal.h: exported a couple of useful functions and
3205         added mono_mb_get_label () to easily handle backward branches.
3206
3207 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
3210
3211 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3212
3213         * loader.c (find_method): Fixed the regression introduced while
3214         fixing bug #81466.
3215
3216 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
3217
3218         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
3219         well.
3220         
3221         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
3222         icall.c reflection.c: Pass a MonoGenericContext argument to 
3223         mono_lookup_dynamic_token ().
3224
3225         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
3226         #82744.
3227         
3228 2007-09-09  Robert Jordan  <robertj@gmx.net>
3229
3230         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
3231         for generic methods.
3232
3233         * object.c (mono_object_get_virtual_method): Handle generic methods.
3234         Fixes bug #78882.
3235
3236         Code is contributed under MIT/X11 license.
3237
3238 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
3239
3240         * image.c: fix locking in mono_image_load_file_for_image ().
3241
3242 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
3243
3244         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
3245         used only as a cache: added an icall to fill it.
3246
3247 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
3248
3249         * reflection.h: exposed mono_reflection_free_type_info
3250         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
3251         since mono_reflection_bind_generic_parameters makes a copy of it.
3252         * reflection.c (free_type_info): subinfos should be freed.
3253         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
3254         made non static.
3255         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
3256         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
3257         this fixes #82695 and #81726.
3258    
3259
3260 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
3261
3262         * process.h, process.c:  added support for user profile/info in
3263           ProcessStartInfo. For now only Windows works.
3264
3265 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3266
3267         * metadata.c: consider the generic arguments when comparing
3268         signatures (bug #82614).
3269
3270 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3271
3272         * cil-coff.h, image.c: updated assembly loader to cope with the
3273         PE32+ 64 bit file format.
3274
3275 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3276
3277         * assembly.c, class.c, domain.c, loader.c: remove useless
3278         inclusion of cil-coff.h.
3279
3280 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
3281
3282         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
3283         if interface is marked with CoClassAttribute. 
3284    
3285         Code is contributed under MIT/X11 license.
3286
3287 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3288
3289         * sgen-gc.c: ensure no object from the to space is copied again or finalized
3290         if it's seen twice in major collections.
3291
3292 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
3293
3294         * sgen-gc.c: big objects are not copied to the gray area, but they
3295         need to be considered for scanning, too, if they are brought alive
3296         by an object ready for finalizations or a survived one.
3297
3298 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3299
3300         * sgen-gc.c: properly account the number of disappearing links when
3301         they are nullified.
3302
3303 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
3304
3305         * sgen-gc.c: share the code to scan the registered roots between the
3306         different types of collections.
3307
3308 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
3311
3312 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
3315         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
3316
3317 2007-08-28  Mark Probst  <mark.probst@gmail.com>
3318
3319         * security-manager.c (mono_security_manager_get_methods):
3320         LinkDemandSecurityException now has 2 arguments instead of 3.
3321
3322 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
3323
3324         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
3325         platforms which need it.
3326
3327 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
3328
3329         * sgen-gc.c: unregister thread data structures with a pthread_key_t
3330         dtor.
3331
3332 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
3333
3334         * threads.c: free the thread static data on thread exit.
3335
3336 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
3337
3338         * class.c: walk the hierarchy to find the generic definition for
3339         a class (fixes runtime part of bug #82498).
3340
3341 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
3344         ...
3345
3346         * image.c (mono_image_close): Here. Hopefully fixes #82510.
3347
3348 2007-08-24  Mark Probst  <mark.probst@gmail.com>
3349
3350         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
3351
3352 2007-08-24  Robert Jordan  <robertj@gmx.net>
3353
3354         * appdomain.c: don't perform the ':'->';' substitution on Win32.
3355
3356 2007-08-24  Jb Evain  <jbevain@novell.com>
3357
3358         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
3359         for byref types.
3360
3361 2007-08-24  Mark Probst  <mark.probst@gmail.com>
3362
3363         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
3364         #82286.
3365
3366 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * assembly.c: Fix a warning.
3369         
3370 2007-08-23  Marek Habersack  <mhabersack@novell.com>
3371
3372         * appdomain.c: parse the <runtime> section looking for the probing
3373         element with the 'privatePath' attribute, which sets additional
3374         directories in which the runtime should look for assemblies.
3375
3376 2007-08-23  Robert Jordan  <robertj@gmx.net>
3377
3378         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
3379         Fixes #82499.
3380
3381 2007-08-23  Martin Baulig  <martin@ximian.com>
3382
3383         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
3384         _mono_debug_init_corlib() and remove it from the header file.
3385
3386 2007-08-23  Martin Baulig  <martin@ximian.com>
3387
3388         * mono-debug-debugger.c
3389         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
3390         don't notify the debugger about it.
3391
3392         * mono-debug-debugger.h
3393         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
3394
3395 2007-08-23  Robert Jordan  <robertj@gmx.net>
3396
3397         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
3398         Code is contributed under MIT/X11 license.
3399
3400 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
3401
3402         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
3403
3404 2007-08-22  Martin Baulig  <martin@ximian.com>
3405
3406         * mono-debug.c: Store debugging info on a per-domain basis and
3407         free it on domain unload.  Add support for unloading symbol files.
3408
3409         * mono-debug.h
3410         (MonoDebugList): New typedef.
3411         (MonoSymbolTable):
3412         - add `data_tables and `type_table'.
3413         - replace 'symbol_files' and `num_symbol_files' with a
3414           `MonoDebugList *'.
3415         (mono_debug_data_table): Removed.
3416         (mono_debug_list_add): New public function.
3417         (mono_debug_list_remove): New public function.
3418         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
3419         (mono_debug_init_2_memory): Renamed into
3420         mono_debug_open_image_from_memory().
3421         (mono_debug_close_image): New public function.
3422         (mono_debug_domain_create): Likewise.
3423         (mono_debug_domain_unload): Likewise.
3424         (MONO_DEBUGGER_VERSION): Bump to 60.
3425
3426         * mono-debug-debugger.h
3427         (MonoDebuggerEvent):
3428         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
3429         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
3430         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
3431         - rename `THREAD_CREATED' and `THREAD_EXITED' into
3432           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
3433         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
3434           meaning.
3435         (mono_debugger_add_symbol_file): Removed.
3436         (mono_debugger_add_type): Removed.
3437         (mono_debugger_lookup_type): Removed.
3438         (mono_debugger_lookup_assembly): Removed.
3439
3440         * domain.c
3441         (mono_domain_create): Call mono_debug_domain_create().
3442         (mono_init_internal): Call mono_debug_init_corlib().
3443
3444         * assembly.c
3445         (mono_assembly_close): Call mono_debug_close_image().
3446
3447 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
3448
3449         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
3450         mmap call.
3451
3452 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
3453
3454         * sgen-gc.c: ensure section->pin_queue_end is initialized
3455         correctly when non pinning objects in the section have been found.
3456
3457 2007-08-22  Marek Habersack  <mhabersack@novell.com>
3458
3459         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
3460         containing a list of directories separated by ':'. MSDN docs say
3461         the directories should be separated with ';'. Part of a bugfix for
3462         bug #81446
3463
3464 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
3465
3466         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
3467         it should MonoType and not MonoClass.
3468
3469 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
3470
3471         * culture-info-table.h : regenerated.
3472
3473 2007-08-20  William Holmes  <billholmes54@gmail.com>
3474
3475         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
3476          to call ReplaceFile Kernel32 on windows or in io-layer.
3477         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
3478         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
3479          as an internal call.
3480
3481         Code is contributed under MIT/X11 license.
3482
3483 2007-08-20  Jb Evain  <jbevain@novell.com>
3484
3485         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
3486         and MONO_EXCEPTION_FIELD_ACCESS.
3487
3488         * debug-helpers.[c|h]: new mono_field_full_name function.
3489
3490 2007-08-20  Mark Probst  <mark.probst@gmail.com>
3491
3492         * class.c: Removed class_security_level() and moved it to
3493         security-core-clr.c.
3494
3495         * security-core-clr.c, security-core-clr.h: class_security_level()
3496         is now public and renamed to mono_security_core_clr_class_level().
3497         It also looks for security attributes in the classes a class is
3498         nested in.
3499
3500 2007-08-20  Mark Probst  <mark.probst@gmail.com>
3501
3502         * security-core-clr.c, security-core-clr.h: CoreCLR security
3503         utility functions.
3504
3505         * Makefile.am: Added security-core-clr.[ch].
3506
3507         * security-manager.c, security-manager.h: Functions and enum for
3508         setting and getting the security mode.
3509
3510         * class.c: CoreCLR security checks.
3511
3512 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
3513
3514         * icall-def.h, process.c, process.h: implemented icall to get
3515         user/system processor times.
3516
3517 2007-08-17  Mark Probst  <mark.probst@gmail.com>
3518
3519         * domain.c, threads.c, class-internals.h, domain-internals.h: New
3520         reader-lock-free jit_info_table.
3521
3522 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
3525
3526         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
3527
3528         * object-internals.h (MonoException): Add missing _data member.
3529
3530 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
3531
3532         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
3533         checking that only methods with matching qname or fqname are picked
3534         from implemented interfaces.
3535
3536 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3537
3538         * verify.c (do_newarr):added, do type verification of
3539         newarr ops, push the right value on the eval stack.
3540         * verify.c (mono_method_verify): use do_newarr
3541
3542
3543 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3544
3545         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
3546         factored the common code into get_boxable_mono_type, which
3547         is now using mono_type_get_full, this fixed byref related tests.
3548
3549 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3550
3551         * class.c: added mono_type_get_full, this function has the same
3552         behavior of mono_class_get_full but the returned MonoType has
3553         all metadata of the associated token in case of a typespec token.
3554         * class.c: added mono_type_retrieve_from_typespec, used by 
3555         mono_type_get_full to retrieve the token type.
3556         * class.c (mono_class_create_from_typespec): changed to use
3557         mono_type_retrieve_from_typespec.
3558         * class.c (mono_ldtoken): changed to use mono_type_get_full
3559         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
3560         * class-internals.h: exported mono_type_get_full for internal use.
3561
3562 2007-08-16  Jb Evain  <jbevain@novell.com>
3563
3564         * domain.c (supported_runtimes): add entry for
3565         the 'moonlight' runtime version.
3566
3567 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3568
3569         * verify.c (mono_method_verify): small typo sliped in.  
3570
3571 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * verify.c (do_unbox_value): added, do type verification of
3574         unboxing ops
3575         * verify.c (mono_method_verify): use do_unbox_value
3576
3577
3578 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3579
3580         * verify.c (dump_stack_value): fixed typo, was printing string
3581         instead of object on stack.
3582         * verify.c (do_box_value): moved the byref check up as it leads
3583         to invalid code and should be done earlier.
3584         * verify.c: improved error messages for and ldobj
3585
3586 2007-08-15  William Holmes  <billholmes54@gmail.com>
3587
3588         * marshal.c (emit_marshal_custom): Omit the call to 
3589           marshal_native_to_managed when calling native to managed 
3590           and the argument is specified as an out argument.
3591
3592         Code is contributed under MIT/X11 license.
3593
3594 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3595
3596         * verify.c: fixed the type checks for generics, function pointers and vectors.
3597         Added type verification for ldobj and ldtoken. The verifier
3598         would segfault if header or signature of a method contained references
3599         to non-existant types.
3600
3601 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
3602
3603         * marshal.c (cominterop_get_ccw): Patch from
3604         Bill Holmes to no walk up interface hierarchy. 
3605         All parent methods should be present in the interface for COM.
3606    
3607         Code is contributed under MIT/X11 license.
3608
3609 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
3610
3611         * marshal.c (emit_marshal_com_interface): Patch from
3612         Bill Holmes to handle COM Interfaces as return values
3613         for native->managed calls.
3614    
3615         Code is contributed under MIT/X11 license.
3616
3617 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
3618
3619         * marshal.c (cominterop_get_idispatch_for_object): Implement
3620         for runtime callable wrappers.
3621    
3622         Code is contributed under MIT/X11 license.
3623
3624 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
3625
3626         * pedump.c (main): changed from mono_init to mono_init_from_assembly
3627         so 2.0 types are accessible
3628
3629
3630 2007-08-13  Miguel de Icaza  <miguel@novell.com>
3631
3632         * domain.c (mono_init_internal): Call mono_assembly_load_friends
3633         once we load mscorlib.   Due to the order in which we initialize,
3634         the mono_assembly_load_full routine that loads mscorlib did not
3635         load friends.   We now load it once we load the
3636         mono_defaults.internals_visible_class class. 
3637
3638         * assembly.c: Expose the mono_load_friend_assemblies method.
3639
3640 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
3641
3642         * verify.c: improved the handling of boxing, better
3643         type checking for unary ops and conversion. Fix bug
3644         regarding managed pointer compatibility checking
3645
3646 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
3649
3650         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
3651
3652 2007-08-09  Raja R Harinath  <rharinath@novell.com>
3653
3654         * reflection.c (dup_type): Remove.
3655         * class.c (dup_type): Remove.
3656         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
3657         instead of the dodgy 'dup_type'.
3658         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
3659         handle the case where 'dup_type' needed the second argument.
3660
3661 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * domain.c: Fix a warning.
3664
3665 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
3666
3667         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
3668         checking that methods with the same fqname are not overridden
3669         with a method from an ancestor.
3670
3671 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * threads.c (free_thread_static_data_helper): Avoid a crash if
3674         thread->static_data is not yet set.
3675
3676 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
3677
3678         * marshal.c: Use correct image when emitting
3679         native wrapper for COM calls.
3680    
3681         Code is contributed under MIT/X11 license.
3682
3683 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
3684
3685         * icall-def.h, security.c, security.h :
3686           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
3687
3688 2007-08-07  Martin Baulig  <martin@ximian.com>
3689
3690         * mono-debug-debugger.h
3691         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
3692
3693         * domain.c (mono_domain_free): Call
3694         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
3695
3696 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3697
3698         * verify.c (check_underflow, check_overflow): error message now returns IL offset
3699         * verify.c (in_same_block): code should test if either offset is inside the clauses
3700         * verify.c (mono_method_verify): push the exception into the eval stack of exception
3701         and filter blocks
3702
3703 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3704
3705         * image.c (mono_image_close): Fix a leak.
3706
3707         * object.c (mono_runtime_invoke_array): Avoid using alloca.
3708
3709         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
3710
3711 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
3712
3713         * domain.c, threads.c, threads-types.h: fix memory retention issue
3714         with thread static variables not being cleared on domain unload.
3715         Reuse thread static slots after domain unload.
3716
3717 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
3720         nullable type.
3721
3722         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
3723         now done in mono_runtime_invoke_array.
3724
3725         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
3726         receiver is a nullable type.
3727
3728         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
3729         generic parameter.
3730
3731 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
3732
3733         * marshal.c: Implement COM Objects as return type for 
3734         managed->unmanaged calls. Added Release calls for COM Object
3735         out/return values in managed->unmanaged calls.
3736
3737         Code is contributed under MIT/X11 license.
3738
3739 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
3740
3741         * threads.h, threads-type.h: move the hazard pointer declarations
3742         to the private header.
3743
3744 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
3745
3746         * file-io.c, appdomain.c: memory leak fixes.
3747
3748 2007-08-02  Dick Porter  <dick@ximian.com>
3749
3750         * socket-io.c
3751         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
3752         SO_REUSEADDR setting into io-layer/sockets.c.
3753
3754 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
3757         from Object when called on a generic parameter. Fixes #82211.
3758
3759 2007-08-01  Dick Porter  <dick@ximian.com>
3760
3761         * file-io.c (convert_share): Test FileShare values bit-by-bit.
3762         Fixes bug 79250 yet again.
3763
3764 2007-07-30  Martin Baulig  <martin@ximian.com>
3765
3766         Merged the `debugger-dublin' branch.
3767
3768         * mono-debug.h
3769         (MonoDebugDataTable): New typedef.
3770         (MonoDebugMethodAddressList): New typedef.
3771         (MonoDebugWrapperData): Removed.
3772         (MonoDebugSymbolTable): Removed `current_data_table',
3773         `current_data_table_size', `current_data_table_offset'.
3774         (MonoDebugDataItemType): Moved into mono-debug.c.
3775         (MonoDebugMethodJitInfo): Remove `address'.
3776         (mono_debug_data_table): New global variable.
3777         (mono_debug_lookup_method_addresses): New public function.
3778         (mono_debug_find_method): Take a `MonoMethod *', not a
3779         `MonoDebugMethodInfo *'.
3780
3781         * mono-debug.c: Drop support for the old symbol tables.
3782
3783 2007-06-28  Martin Baulig  <martin@ximian.com>
3784
3785         * mono-debug.c (mono_debug_debugger_version): New public variable.
3786
3787 2007-07-31  William Holmes  <billholmes54@gmail.com>
3788
3789         * metadata.c Changed mono_type_create_from_typespec to not insert
3790           the type into the hash map until after
3791           do_mono_metadata_parse_type has completed.
3792         Fixes Bug #82194
3793         Code is contributed under MIT/X11 license.
3794
3795 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
3798         generic parameter. Fixes #82211.
3799
3800 2007-07-27  Jb Evain  <jbevain@novell.com>
3801
3802         * pedump.c (dump_metadata, dump_metadata_header): dump
3803         versions contained in the metadata header.
3804
3805 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3806
3807         * threads.c: register small_id_table with the GC.
3808
3809 2007-07-27  Mark Probst  <mark.probst@gmail.com>
3810
3811         * threads.c, threads.h, class-internals.h, object-internals.h:
3812         Hazard pointers, to be used by lock-free parallel algorithms.
3813
3814 2007-07-26  Dick Porter  <dick@ximian.com>
3815
3816         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
3817         routine on non-windows platforms, as I've not managed to think of
3818         a non-kludgy way of doing this.  Finishes off bug 78739.
3819
3820 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
3821
3822         * object.c: properly setup interface_bitmap in proxy vtables.
3823
3824 2007-07-25  Marek Habersack  <mhabersack@novell.com>
3825
3826         * appdomain.c (get_shadow_assembly_location): do not use TickCount
3827         to create unique shadow copy target directories, use the domain's
3828         serial number instead. Each domain gets a unique target directory
3829         that way.
3830
3831         * domain.c (mono_domain_create): added code to increment domain
3832         shadow copy serial number and cache the value in the current
3833         domain structure.
3834
3835         * domain-internals.h (struct _MonoDomain): added a new field -
3836         shadow_serial to hold the serial number used in generation of
3837         shadow-copy directories. This is to make sure that the directory
3838         name is unique for each and every domain created. We avoid a race
3839         condition with overriding assemblies already in use by other app
3840         domains.
3841
3842 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
3843
3844         * class.c (mono_bounded_array_class_get): fixed memory leak when 
3845         binding generic parameters.
3846
3847 2007-07-24  Raja R Harinath  <rharinath@novell.com>
3848
3849         * metadata.c (do_mono_metadata_parse_generic_class): Use
3850         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
3851         error.
3852
3853 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
3854
3855         * loader.c, class-internals.h, reflection.c: removed the per-method
3856         generics hashtable: we use the global one through the call of
3857         mono_class_inflate_generic_method ().
3858
3859 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
3860
3861         * class.c, metadata.c, class-internals.h: introduce yet another
3862         generics global cache for inflated methods (fixes 98% of the perf
3863         issue in bug #81806).
3864
3865 2007-07-23  Raja R Harinath  <rharinath@novell.com>
3866
3867         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
3868         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
3869         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
3870         return a MonoGenericInst containing (a copy) of those types.
3871         (mono_metadata_inflate_generic_inst): Update to changes.
3872         (mono_metadata_parse_generic_inst): Likewise.
3873         (mono_get_shared_generic_inst): Likewise.
3874         * reflection.c (mono_class_bind_generic_parameters): Likewise.
3875         (mono_reflection_bind_generic_method_parameters): Likewise.
3876         * metadata-internals.h: Likewise.
3877         * icall.c (free_generic_context): Kill.
3878         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
3879
3880         * reflection.c (reflection_methodbuilder_to_mono_method): Use
3881         mono_metadata_type_dup.
3882         * marshal.c (mono_mb_create_method): Likewise.
3883
3884         * metadata.c (mono_metadata_type_dup): Rename from
3885         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
3886         MonoImage.  Handle a few more cases, esp. when no mempool is given.
3887         * marshal.c, metadata-internals.h: Update to changes.
3888
3889 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3890
3891         * class.c: fixed a small leak for array classes and removed warning.
3892
3893 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * loader.c (mono_method_get_param_token): Make this work on generic methods.
3896         Return 0x8000000 for return parameters. Fixes #82161.
3897
3898 2007-07-21  Marek Habersack  <grendello@gmail.com>
3899
3900         * appdomain.c (get_shadow_assembly_location): append the current
3901         ticks value to the path. Avoids overwriting the same assemblies by
3902         several threads at the same time.
3903
3904 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3905         and Raja R Harinath  <rharinath@novell.com>
3906
3907         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
3908         Simplify slightly.
3909         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
3910         property for testing if a method is a generic method definition.
3911
3912 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3913
3914         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
3915
3916 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * verify.c: used function from private branch, reverted to the one in class.h 
3919
3920 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3921
3922         * verify.c: a typo slipped in and the code wont compile
3923
3924 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3925
3926         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
3927         disabled box instruction as it is doing the wrong thing
3928         improved stack dump messages, now it is easier to debug type related issues
3929
3930
3931 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
3932
3933         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
3934
3935 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3936
3937         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
3938         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
3939         grouped with class and valuetype. This change will simply 
3940         the code as it should be handled just like unmanaged pointers.
3941
3942 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3943
3944         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
3945
3946 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3947
3948         * verify.c: several stack merge issues fixed, reference comparisons now
3949         check the type size. strict type check now works correctly.
3950         added more uses of IS_MANAGED_POINTER macro.
3951         fixed issues pointed by running the test suite against .net.
3952         
3953
3954 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3955
3956         * class.c, loader.c, class-internals.h: Removed the
3957         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
3958         defines.
3959
3960         * icall.c: Better error checking in some internal reflection
3961         methods.
3962
3963 2007-07-18  William Holmes  <billholmes54@gmail.com>
3964
3965         * filewatcher.c : removed unused variable 'filename' in 
3966           ves_icall_System_IO_FSW_SupportsFSW
3967
3968 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
3969
3970         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
3971         obsolete, removed.
3972
3973 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
3976         
3977         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
3978
3979 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
3982         Implement generics support.
3983         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3984
3985         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
3986         type_args and method_args arguments.
3987         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
3988         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3989         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
3990
3991 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
3992
3993         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
3994           It adds a rootimage parameter to mono_reflection_get_type_internal,
3995           adds new function mono_reflection_get_type_with_rootimage and use
3996           the rootimage to resolve the types instead of the current image
3997
3998 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3999
4000         * culture-info-table.h: Forgot to update after r78304.
4001
4002 2007-07-13  Raja R Harinath  <rharinath@novell.com>
4003
4004         * class.c (mono_class_is_open_constructed_type)
4005         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
4006
4007 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
4008
4009         * class.c (mono_bounded_array_class_get):  method fails if used with
4010         an incomplete TypeBuilder enum (no basetype field), fixed it by 
4011         avoiding calculating the size for such array as it cannot be instantiated.
4012         Fix bug #82015
4013
4014 2007-07-12  Raja R Harinath  <rharinath@novell.com>
4015
4016         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
4017         field.
4018         * metadata.c, reflection.c: Update to changes.
4019
4020 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
4021
4022         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
4023         mono_class_is_valid_enum, they are used to valide a enum when loading.
4024         * reflection.c: used new functions to throw TypeLoadException when and
4025         invalid enum is build with TypeBuilder. Fixes #82018
4026   
4027 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4028
4029         * object.c: forgot commit of mono_class_setup_methods () to access
4030         iface->methods.
4031         * object-internals.h: added a few more handy fields to
4032         MonoIMTCheckItem.
4033
4034 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
4037         iface->methods.
4038
4039 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4040
4041         * class-internals.h, object-internals.h, object.c: IMT-based
4042         interface invocation core from Massimiliano Mantione
4043         (massi@ximian.com) with a reworked arch-specific interface,
4044         bsearch implementation and a few bugfixes and memory savings by me.
4045
4046 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
4047
4048         * class.c (mono_class_create_from_typedef): mono would segfault if 
4049         an enum did not have a __value field. It now throws a TypeLoadException
4050         for such cases. Fix bug #82022
4051
4052 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
4053
4054         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
4055
4056 2007-07-09  Mark Probst  <mark.probst@gmail.com>
4057
4058         * class.c (mono_class_init): If a class is already inited but has
4059         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
4060
4061 2007-07-09  Mark Probst  <mark.probst@gmail.com>
4062
4063         * class.c: Properly handle the case of an unimplemented interface
4064         method.  Fixes: 81673.
4065
4066 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4067
4068         * class-internals.h, object.c: cleanup patch from massi: use
4069         MonoVTable->interface_bitmap since the vtable interfaces offset array
4070         is going away.
4071
4072 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
4073
4074         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
4075         GetMDStreamVersion icall instead.
4076
4077 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
4078
4079         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
4080         not use mono_dl_build_path() with a full library name: makes
4081         fallbacks to libgaim and libfam work.
4082
4083 2007-07-06  William Holmes  <billholmes54@gmail.com>
4084
4085         * assembly.c: Added a continue statement in probe_for_partial_name when
4086          parse_assembly_directory_name fails.  Fixes : 82002
4087
4088 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
4089
4090         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
4091         and added a verification  for TYPEDBYREF.
4092         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
4093         make native int interchangeable with int32 and some small cleanup and formating.
4094         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
4095         handle byref of byref.
4096         * verify.c (push_local): handle byref of byref.
4097         * verify.c (do_binop): invalid mix of values is unverifiable
4098         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
4099         added visibility checks
4100         * verify.c (field related method): added visibility checks
4101         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
4102
4103 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
4106         string.
4107
4108 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * profiler.c (mono_profiler_load): Fix an off-by-one error.
4111
4112         * marshal.c (emit_marshal_string): When returning a string from managed code,
4113         allways make a copy even for unicode strings. Fixes #81990.
4114
4115 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
4116
4117         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
4118         of byref generic inst types (bug #81997).
4119
4120 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
4121
4122         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
4123         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
4124
4125 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * marshal.c (emit_marshal_string): Add support for unicode strings in
4128         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
4129
4130 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
4131
4132         * verify.c: field load/store are now verified, missing only access checks now
4133
4134 2007-06-28  Martin Baulig  <martin@ximian.com>
4135
4136         * mono-debug.c (mono_debug_debugger_version): New public variable.
4137
4138 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
4139
4140         * locales.c: When constructing DateTimeFormat or NumberFormat for
4141         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
4142         MonoCultureInfo contructed from the current locale is always
4143         read-only and has UseUserOverride set to true. All MonoCultureInfo
4144         instances returned for GetCultures have both IsReadOnly and
4145         UseUserOverride set to true. Fixes part of bug #81930.
4146
4147 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
4148
4149        * icall-def.h: Update System.__ComObject icalls
4150        * marshal.c: Avoid managed transition (and object creation)
4151        when looking up COM interface in RCW.
4152        * marshal.h: Ditto.
4153        
4154        Code is contributed under MIT/X11 license.
4155
4156 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
4159         to avoid crashes during assembly unloading.
4160
4161 2007-06-22  Raja R Harinath  <rharinath@novell.com>
4162
4163         Fix MethodInfo.IsGenericMethodDefinition
4164         * reflection.c (mono_reflection_bind_generic_method_parameters):
4165         Rearrange code to ensure we always uses a generic method definition.
4166         * class.c (mono_class_inflate_generic_method_full): Set
4167         'generic_container' field only for generic method definitions.
4168         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
4169         Use presense of 'generic_container' field as indication of being a
4170         generic method definition.
4171
4172 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
4173
4174         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4175
4176         * object-internals.h: Reflect changes in the layout of the managed Delegate
4177         class.
4178         
4179         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
4180         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
4181         runtime memory used by the dynamic method. Fixes #77146.
4182
4183 2007-06-21  Dick Porter  <dick@ximian.com>
4184
4185         * file-io.h: 
4186         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
4187         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
4188         81767.
4189
4190 2007-06-21  Raja R Harinath  <rharinath@novell.com>
4191
4192         * reflection.c (method_encode_methodspec): Add a tripwire.
4193         * class.c (inflate_generic_type): The fully open generic type is
4194         not the same as the generic type definition.
4195
4196 2007-06-21  Martin Baulig  <martin@ximian.com>
4197
4198         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
4199
4200         * mono-debug-debugger.h
4201         (MonoDebuggerBreakpointInfo): Removed.
4202         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
4203         (mono_debugger_remove_breakpoint): Likewise.
4204         (mono_debugger_breakpoint_callback): Likewise.
4205         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
4206
4207 2007-06-21  Raja R Harinath  <rharinath@novell.com>
4208
4209         * metadata.c (mono_metadata_lookup_generic_class): The fully open
4210         generic type is not the same as the generic type definition.
4211         * class.c (mono_generic_class_get_class): Likewise.
4212
4213 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
4214
4215         * icall.c: The second argument to 
4216         System.Reflection.MethodBase.GetMethodFromHandleInternalType
4217         is a MonoType not a MonoClass.
4218
4219 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
4220
4221         * verify.c: support for function pointers in the verifier
4222
4223 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
4224
4225         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
4226
4227 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
4228
4229         * assembly.c: removed Mono.Data.SqliteClient from the list of
4230         forward-compatible assemblies as it breaks the ABI (bug #81899).
4231
4232 2007-06-19  Raja R Harinath  <rharinath@novell.com>
4233
4234         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
4235         lookup/update with the loader lock.
4236         * reflection.c (mono_class_bind_generic_parameters): No need to
4237         protect mono_metadata_lookup_* with the loader lock.
4238         * class.c (inflate_generic_type): Likewise.
4239         
4240         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
4241         on a generic instantiated type.
4242
4243 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
4244
4245         *verify.c: produce meanfull error messages on verification error
4246         *verify.c: fixed some cases of verification errors reported as validation errors
4247         *pedump.c: fixed the error name array, now it shows validation errors properly
4248         *verify.h: fixed the contant that should be used for verification errors
4249
4250 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
4251
4252         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
4253         for bug #77596, 81858 and 80743 (generics data structures on domain
4254         unload).
4255
4256 2007-06-15  Raja R Harinath  <rharinath@novell.com>
4257
4258         Avoid allocating 'MonoGenericContext' on the heap.
4259         * class-internals (_MonoMethodInflated::context): Make field
4260         inline, not a pointer.
4261         * loader.c (method_from_methodspec): Allocate 'new_context' on the
4262         stack.  Use the context embedded within the inflated method as the
4263         hash key, rather than 'new_context'.
4264         * class.c (inflate_generic_context): Simplify.  Return a struct
4265         rather than allocating on the heap.
4266         (mono_class_inflate_generic_method_full): Update to changes.  Now,
4267         doesn't salt away a copy of the context -- simplifying the
4268         lifetime rules of a 'MonoGenericContext *'.
4269         (mono_method_get_context): Return pointer to embedded context.
4270         (setup_generic_array_ifaces): Allocate temporary context on stack.
4271         * reflection.c (inflate_mono_method): Likewise.
4272         (mono_reflection_bind_generic_method_parameters): Likewise.
4273         Use the context embedded within the inflated method as the hash key.
4274
4275         Avoid a source of allocation of 'MonoGenericContext'.
4276         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
4277         and 'cached_context' fields into embedded 'MonoGenericContext' field.
4278         * class.c: Update to changes.
4279         (mono_generic_class_get_context): Simplify drastically.  Now just
4280         returns a pointer to the field.
4281         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
4282         argument as a const pointer.
4283         (mono_metadata_generic_context_equal): Likewise.
4284         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
4285         Update to changes.
4286
4287 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
4288
4289         * verify.c improved the handling of brtrue/brfalse, factored out common code
4290
4291 2007-06-14  Raja R Harinath  <rharinath@novell.com>
4292
4293         Kill MonoGenericMethod.
4294         * class-internals.h (MonoGenericContext::method_inst): Rename from
4295         'gmethod' and convert to a MonoGenericInst.
4296         (MonoGenericMethod): Remove.
4297         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
4298         * loader.c (method_from_methodspec): Update to changes.  Use a
4299         MonoGenericContext as the key to the hashtable.
4300         * metadata.c (mono_metadata_generic_context_equal): Rename from 
4301         'mono_metadata_generic_method_equal' and take MonoGenericContext.
4302         (mono_metadata_generic_context_hash): Likewise from
4303         'mono_metadata_generic_method_hash'.  Change hash function.
4304         (mono_metadata_load_generic_params): Update to changes.
4305         (mono_get_shared_generic_method): Remove.
4306         * metadata-internals.h (mono_get_shared_generic_method): Remove.
4307         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
4308         (inflate_generic_context): Likewise.
4309         (mono_class_inflate_generic_method_full): Likewise.
4310         (setup_generic_array_ifaces): Likewise.
4311         (mono_class_create_from_typespec): Likewise.
4312         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
4313         (method_encode_methodspec): Update callsite.
4314         (reflection_methodbuilder_to_mono_method): Update to changes.
4315         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
4316         MonoGenericContext as the key to the hashtable.
4317         (inflate_mono_method): Update to changes.
4318
4319         * class-internals.h (MonoGenericMethod::container): Remove.
4320         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
4321
4322 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
4323
4324         * profiler-private.h, profiler.c, profiler.h: added API to profile
4325         exception events.
4326
4327 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
4328
4329         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
4330
4331 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
4332
4333         * verify.c: method invocation is now validated, now we verify parameter types on stack.
4334         Fixed overflow and underflow not aborting the verification process.
4335
4336 2007-06-13  Mark Probst  <mark.probst@gmail.com>
4337
4338         * class-internals.h (MonoStats): Added stats entries for dynamic
4339         code allocations.
4340
4341 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
4342
4343         * loader.c (mono_free_method): Free header->locals and header->clauses.
4344
4345         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
4346         dynamic case.
4347
4348         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
4349
4350         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
4351
4352 2007-06-12  Raja R Harinath  <rharinath@novell.com>
4353
4354         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
4355         the tables.
4356
4357 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4358
4359         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
4360
4361 2007-06-11  Raja R Harinath  <harinath@gmail.com>
4362
4363         MonoGenericMethod on a diet
4364         * class-internals.h (_MonoMethodInflated::reflection_info): Move
4365         here ...
4366         (_MonoGenericMethod::reflection_info): ... from here.
4367         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
4368         Update to changes.
4369         * reflection.c (inflate_mono_method): Likewise.
4370         (mono_reflection_bind_generic_method_parameters): Likewise.
4371
4372 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4373
4374         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
4375         *verify.c: factored long ldarg forms to share code with short forms
4376
4377 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4378
4379         *verify.c: fixed code formating factored some duplicate code
4380         into a new function
4381
4382         *verify.h: fixed binary incompatibility introduced earlier
4383
4384         *pedump.c: fixed formating
4385
4386 2007-06-11  Raja R Harinath  <harinath@gmail.com>
4387
4388         Fix assertion when disassembling Mono.C5.dll
4389         * loader.c (method_from_methodspec): Avoid inflating a method
4390         twice with the same context.  If the methodref is inflated, use
4391         the declaring method instead.
4392
4393         * class.c (mono_class_from_generic_parameter): Fix case similar to
4394         bug #81830 handled below, but for method containers.
4395
4396 2007-06-10  Raja R Harinath  <harinath@gmail.com>
4397
4398         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
4399         get_shared_generic_class.  Directly inflate the instance.
4400         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
4401         (inflate_generic_class): Delete.
4402         (get_shared_generic_class): Delete.  Move setting of
4403         'cached_class' and 'cached_context' ...
4404         * metadata.c (mono_metadata_lookup_generic_class): ... here.
4405
4406         * metadata.c (mono_metadata_lookup_generic_class): Change
4407         signature to take the components of a MonoGenericClass rather than
4408         an allocated MonoGenericClass.  Change semantics to be intern-like.
4409         * reflection.c (mono_class_bind_generic_parameters): Update to
4410         changes.  Make locking region tighter.
4411         * class.c (inflate_generic_class): Update to changes.
4412         (get_shared_generic_class): Likewise.
4413         * metadata-internals.h: Likewise.
4414
4415         * reflection.c (mono_class_bind_generic_parameters): Take and
4416         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
4417         (mono_reflection_bind_generic_parameters): Use
4418         'mono_class_bind_generic_parameters' rather than duplicate the code.
4419         * class.c (mono_bounded_array_class_get): Update to changes.
4420         * object-internals.h: Likewise.
4421
4422         * reflection.c (mono_class_bind_generic_parameters): Only support
4423         parameterizing generic type definitions.  Remove support for other
4424         open types.
4425
4426 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
4427
4428         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
4429
4430         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
4431         in the dynamic case.
4432
4433 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
4434
4435         * threads.c: When cleaning up thread, reset the Background bit.
4436         Fixes bug #81720.
4437
4438 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
4439
4440        * metadata.c: Move variable declarations to top of scope.
4441        * verify.c: Move variable declarations to top of scope.
4442
4443        Code is contributed under MIT/X11 license.
4444
4445 2007-06-08  Raja R Harinath  <rharinath@novell.com>
4446
4447         * reflection.c (mono_class_bind_generic_parameters): Replace
4448         open-coded loop with mono_metadata_inflate_generic_inst.
4449
4450         * class.c (get_shared_generic_class): Don't call
4451         mono_get_shared_generic_inst.  Use the container's own
4452         'class_inst'.
4453
4454         * metadata.c (mono_metadata_load_generic_params): Move
4455         initialization of 'context' field here from ...
4456         * class.c (mono_class_create_from_typedef): ... here, and ...
4457         * loader.c (mono_get_method_from_token): ... here.
4458
4459         * class.c (get_shared_generic_class): Rename from
4460         mono_get_shared_generic_class and make static.
4461         (mono_get_shared_generic_inst): Move to metadata.c.
4462         * loader.c (mono_get_shared_generic_method): Likewise.
4463         * class-internals.h, metadata-internals.h: Update to changes.
4464
4465         Fix #81830
4466         * class.c (mono_class_from_generic_parameter): Don't assume a
4467         generic container owner exists.  Generic containers from monodis
4468         don't have any.
4469
4470 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
4471
4472         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
4473         * verify.h: new typedefs to returns the non-verifiable status
4474         * verify.c: initial implementation of generics, stack merging and object compatibility check
4475
4476 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4477
4478         * class.c, image.c, class-internals.h (MonoImage): class_cache is
4479         a MonoInternalHashTable again (fixed bug in internal hash table
4480         code).
4481
4482 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4483
4484         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
4485         MonoInternalHashTable again (fixed bug in internal hash table
4486         code).
4487
4488 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4489
4490         * class.c, image.c, class-internals.h, domain.c,
4491         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
4492         changes.  Have to figure out what makes them break the SWF
4493         regression.
4494
4495 2007-06-04  Mark Probst  <mark.probst@gmail.com>
4496
4497         * class.c, image.c, class-internals.h (MonoImage): class_cache is
4498         a MonoInternalHashTable now.
4499
4500 2007-06-04  Mark Probst  <mark.probst@gmail.com>
4501
4502         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
4503         MonoInternalHashTable now.
4504
4505 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
4508         invoke_impl code.
4509
4510         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
4511
4512         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
4513         dependent trampoline.
4514
4515         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4516
4517         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
4518
4519 2007-05-29  Robert Jordan  <robertj@gmx.net>
4520
4521         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
4522
4523 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
4524
4525         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
4526
4527 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
4528
4529        * marshal.c: Fix interface lookup loops for
4530        cominterop_get_com_slot_for_method and 
4531        cominterop_get_method_interface. Only need to lookup
4532        if type is a class, else use interface type method is on.
4533
4534        Code is contributed under MIT/X11 license.
4535
4536 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
4537
4538         * reflection.c: HasSecurity can be present even if no specially 
4539         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
4540         SecurityAttribute). Fix CAS regression tests on buildbot.
4541
4542 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
4543
4544        * appdomain.c: Add configure checks for header files.
4545        * image.c: Add configure checks for header files.
4546        * file-io.c: Add configure checks for header files.
4547        * debug-mono-symfile.c: Add configure checks for header files.
4548        * threadpool.c: Add configure checks for header files.
4549        * console-io.c: Add configure checks for header files.
4550        * profiler.c: Add configure checks for header files.
4551        * rawbuffer.c: Add configure checks for header files.
4552        * icall.c: Add configure checks for header files.
4553        * rand.c: Add configure checks for header files.
4554        * socket-io.c: Add configure checks for header files.
4555
4556        Code is contributed under MIT/X11 license.
4557
4558 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * reflection.c (mono_custom_attrs_from_builders): Remove the 
4561         assertion as it breaks the build.
4562         
4563         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
4564
4565         * reflection.c (lookup_custom_attr): Make a copy here too.
4566
4567         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
4568         dynamic images.
4569
4570         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
4571         images.
4572
4573         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
4574         info.
4575
4576 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
4579         (load_cattr_value): Ditto.
4580
4581 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
4582
4583         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
4584
4585 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
4586
4587         * threads.c: In "start_wrapper", set apartment_state to MTA if
4588         apartment_state is Unknown and we're running on 2.0 profile or
4589         higher.
4590         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
4591         to main method, then set apartment_state to Unknown on 1.0 profile,
4592         and MTA on 2.0 profile.
4593
4594 2007-05-16  Jb Evain  <jb@nurv.fr>
4595
4596         * class-internals.h (MonoDefaults): Add an attribute_class and
4597           customattribute_data_class.
4598         * domain.c (mono_init_internal): Populate them.
4599         * reflection.c: Use them to remove duplicates. Make a vew
4600         MonoClass variables `static'.
4601
4602 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
4603
4604         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
4605         step in implementing IMT, so that all isinst checks now can go
4606         through the bitmap.
4607         This was needed because vtables for TransparentProxy need to look
4608         like the vtable of the "target" class, so they need to point to
4609         its interface bitmap directly.
4610
4611         * object.c: inside "mono_class_create_runtime_vtable" and
4612         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
4613
4614 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
4615
4616         * object-internals.h
4617           culture-info.h : added territory field in MonoCulture and
4618           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
4619         * locales.c : fill territory field above too.
4620         * culture-info-table.h : regenerated.
4621
4622 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
4625         Fixes #81599.
4626
4627 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
4628
4629         * object.c: Always initialize apartment, even if 
4630         there is no custom attributes on entry point.
4631         
4632         Code is contributed under MIT/X11 license.
4633
4634 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
4635
4636         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
4637         * metadata.c: If no encoding is set, check for unicode
4638         on class.
4639         
4640         Code is contributed under MIT/X11 license.
4641
4642 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
4643
4644         * threads.c: Handle if mono_thread_current returns NULL 
4645         
4646         Code is contributed under MIT/X11 license.
4647
4648 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
4649
4650         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
4651         in start_wrapper. Added mono_thread_init_apartment_state and
4652         mono_thread_cleanup_apartment_state.
4653         * object.c: Initialize thread apartment state on main thread
4654         by checking for STAThreadAttribute on entry point.
4655         * object-internals.h: Add apartment_state field to MonoThread.
4656         * threads-types.h: Add unmanaged definition of 
4657         System.Threading.ApartmentState, MonoThreadApartmentState.
4658         
4659         Code is contributed under MIT/X11 license.
4660         
4661 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
4662
4663         * class.c: Fix windows build.
4664         * class-internals.h: Fix windows build.
4665         
4666         Code is contributed under MIT/X11 license.
4667
4668 2007-05-08  Robert Jordan  <robertj@gmx.net>
4669
4670         * process.c (CreateProcess_internal):
4671         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
4672         .CreateNoWindow was specified. Fixes #81496.
4673
4674 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4675
4676         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
4677         step in implementing IMT, replaced it with two compact arrays
4678         (interfaces_packed and interface_offsets_packed) and a bitmap that
4679         is used for isinst checks (interface_bitmap).
4680
4681         * class.c: (compare_interface_ids): compare function to pass to
4682         bsearch when looking for an interface with a given id.
4683         (mono_class_interface_offset): reimplemented using bsearch on
4684         interfaces_packed, getting the offset from interface_offsets_packed.
4685         (print_implemented_interfaces): utility debugging function.
4686         (setup_interface_offsets): reworked to initialize interfaces_packed,
4687         interface_offsets_packed and interface_bitmap.
4688
4689         * object.c: replaced all accesses to "MonoClass.interface_offsets"
4690         with uses of interfaces_packed and interface_offsets_packed.
4691
4692 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4693
4694         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
4695         mono_class_interface_offset prototype to wrap all accesses to
4696         "MonoClass.interface_offsets".
4697
4698         * class.c: Implemented mono_class_interface_offset, and wrapped all
4699         accesses to "MonoClass.interface_offsets".
4700
4701         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
4702         "MonoClass.interface_offsets".
4703
4704 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4705
4706         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
4707         GetMethodFromHandle overloads (bug #78637).
4708
4709 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4710
4711         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
4712         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
4713
4714 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
4717         #81498.
4718
4719         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
4720         gracefully.
4721         (mono_custom_attrs_from_index): Ditto.
4722
4723         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
4724         Fixes #81501.
4725
4726 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
4727
4728         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
4729         is now allocated from a mempool.
4730
4731 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
4734         caller holds threads_lock, leading to deadlocks. Fixes #81476.
4735
4736 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
4739         mono_loader_clear_error () too late. Fixes #81463.
4740
4741 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
4742
4743         * culture-info-table.h : regenerated.
4744
4745 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
4748         is missing.
4749
4750 2007-04-25  Dick Porter  <dick@ximian.com>
4751
4752         * Makefile.am: Put the mingw enforced-optimisation back into the
4753         PLATFORM_WIN32 section.
4754
4755 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
4758         patch.
4759
4760         * image.c (mono_image_load_module): New API function to load a module reference.
4761
4762         * image.c (load_modules): Load modules lazily. Fixes #80812.
4763
4764         * class.c (mono_class_from_typeref): Use mono_image_load_module.
4765         
4766         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
4767
4768         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
4769         to mono_image_load_module_dynamic.
4770
4771 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
4772
4773         * marshal.c: Fix calling convention for CCW on non-windows
4774         platforms. STDCALL on windows, CDECL everywhere else to work 
4775         with XPCOM and MainWin COM.
4776         
4777         Code is contributed under MIT/X11 license.
4778
4779 2007-04-23  Martin Baulig  <martin@ximian.com>
4780
4781         Fix #80969.
4782
4783         * loader.c
4784         (method_from_memberref): Added `gboolean *used_context' argument.
4785         (mono_get_method_from_token): Likewise.
4786         (mono_get_method_full): Don't insert the method in the cache when
4787         `used_context' is true.
4788
4789 2007-04-23  Raja R Harinath  <rharinath@novell.com>
4790
4791         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
4792
4793         * reflection.c (mono_reflection_bind_generic_parameters): Don't
4794         create new MonoTypes for returned types.
4795         * class.c (mono_generic_class_get_class): Export mono-internal.
4796         * class-internals.h: Update to changes.
4797
4798 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4799
4800         * threadpool.c, threadpool.h, icall-def.h: patch from
4801         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
4802
4803 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
4806         
4807         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
4808
4809         * threads.c (mono_thread_get_stack_bounds): New helper function.
4810
4811         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
4812         Correctly compute stack bounds when attaching. Fixes #81394.
4813
4814 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
4815
4816         * reflection.c: fix handling of doubles in custom attributes
4817         for the arm-fpa format (bug #81368).
4818
4819 2007-04-18  Raja R Harinath  <rharinath@novell.com>
4820
4821         * reflection.c (assembly_add_win32_resources): Mildly relax an
4822         bounds check to let the end pointer point just past the end of the
4823         allocated buffer.  (may fix #81384)
4824
4825 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4826
4827         * culture-info-table.h : regenerated.
4828
4829 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
4832         the thread is aborted early.
4833
4834 2007-04-05  Dick Porter  <dick@ximian.com>
4835
4836         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
4837         FindFirstFile()/FindNextFile() to find entries.  This lets the
4838         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
4839         81038.
4840
4841         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
4842         the parameters of
4843         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
4844
4845 2007-04-04  Martin Baulig  <martin@ximian.com>
4846
4847         * debug-helpers.c
4848         (mono_method_desc_full_match): Add support for nested classes.
4849
4850 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
4853
4854 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
4855
4856         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
4857         waiting for too many threads.
4858
4859 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
4860
4861         * environment.c: Fix return value check on uname so we can get the 
4862         executing version on Solaris operating systems.
4863
4864 2007-03-28  Jb Evain  <jbevain@gmail.com>
4865
4866         * class.c (mono_type_get_name_recurse): Complete the
4867         fix for the creation of assembly qualified names for
4868         pointer types. Fixes #81208.
4869
4870 2007-03-27  Dick Porter  <dick@ximian.com>
4871
4872         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
4873         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
4874         changed.
4875
4876         * threads.c
4877         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
4878         the value of ReleaseMutex().
4879
4880 2007-03-27  Dick Porter  <dick@ximian.com>
4881
4882         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
4883         in little-endian order, not network endian, so must be converted
4884         to host endian here.  Fixes bug 80593.
4885
4886 2007-03-22  Jb Evain  <jbevain@gmail.com>
4887
4888         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
4889         qualified names for pointer types. Fixes #81208.
4890
4891 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
4892
4893         * marshal.c: Add support for PreserveSigAttribute. 
4894         
4895         Code is contributed under MIT/X11 license.
4896
4897 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
4898
4899         * process.c: Fix endianness issues. Fixes #81126.
4900
4901         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
4902         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
4903
4904         * image.c (mono_image_lookup_resource): Make this work on big-endian
4905         machines.Change API contract so the caller needs to free the return value.
4906         
4907         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
4908         API change.
4909         
4910 2007-03-14  Martin Baulig  <martin@ximian.com>
4911
4912         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
4913         mono_type_get_desc() as well.
4914
4915 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
4916
4917         * icall.c:  Fix environ access in VS.  
4918         
4919 2007-03-13  Alp Toker  <alp@atoker.com>
4920
4921         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4922         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4923         #63841.
4924
4925 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
4926
4927         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
4928         circular references among dynamic methods. Fixes #81091.
4929
4930         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
4931
4932 2007-03-09  Martin Baulig  <martin@ximian.com>
4933
4934         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
4935
4936 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
4937
4938         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
4939         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
4940         
4941         Code is contributed under MIT/X11 license.
4942         
4943 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
4944
4945         * loader.c: Reapply patch for bug #79424.
4946
4947 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4948
4949         * metadata.c (mono_type_to_unmanaged): Only convert object to
4950         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
4951
4952 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
4953
4954         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
4955         (and incorrectly set) is_reference field from MonoGenericInst.
4956
4957 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4958
4959         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
4960         a little earlier.
4961
4962         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
4963
4964         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
4965
4966 2007-03-05  Miguel de Icaza  <miguel@novell.com>
4967
4968         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
4969         FileOptions.1 value to mean "temporary", map that to
4970         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
4971
4972         Fixes 80688
4973
4974 2007-03-03  Marek Habersack  <mhabersack@novell.com>
4975
4976         * appdomain.c: implement MS .Net style shadow copying. Copies of
4977         the assemblies are made in a subdirectory of the dynamic base
4978         directory, the assembly names are preserved.
4979         Copy .mdb and .config files along with the assemblies being shadowed.
4980
4981 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
4984         (emit_marshal_handleref): Ditto.
4985
4986         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
4987         on Visual C++. Fixes #80671.
4988
4989 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
4990
4991         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
4992         for clone operations.
4993
4994 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * marshal.c: Fix warnings.
4997
4998 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
4999
5000         * loader.c: allow case-insensitive matching of the dll name
5001         in dllmap handling when prefixed with "i:".
5002
5003 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
5004
5005         * threads.c: Fix #ifdef for dummy_apc function for VS.
5006
5007 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
5008
5009         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
5010
5011 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
5012         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
5013         giving precedence to the methods with a fully qualified name
5014         (InterfaceName.MethodName) when building the interface sections
5015         of the vtable.
5016
5017 2007-02-16  Dick Porter  <dick@ximian.com>
5018
5019         * threadpool.c (append_job): Fix fast-path array handling, so it's
5020         less likely the array will grow exponentially when the load is
5021         heavy.
5022
5023 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5024
5025         * metadata-internals.h, loader.c: fix dllmap lookup order
5026         for non-function maps, too, and prepare for fallback code.
5027
5028 2007-02-12  Robert Jordan  <robertj@gmx.net>
5029
5030         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
5031         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
5032         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
5033         GlobalFree. Fixes a part of bug #77075.
5034
5035 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
5036
5037         * loader.c: implemented typedef parent in field memberref.
5038
5039 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
5040
5041         * marshal.c: Fix warnings and remember to call Release on
5042         IUnknown of RCW.
5043         
5044         Code is contributed under MIT/X11 license.
5045
5046 2007-02-10  Miguel de Icaza  <miguel@novell.com>
5047
5048         * class-internals.h: Add MonoHandleRef definition, and
5049         handleref_class to mono_defaults. 
5050
5051         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
5052         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
5053
5054         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
5055         (do nothing on this stage)
5056         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
5057         (emit_marshal_handleref): New method, used for argument handling
5058         of HandleRefs. 
5059
5060 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
5061
5062         * class.c (mono_class_setup_parent): Lazily init com types.
5063         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
5064         init com types.
5065         * object.c (mono_remote_class_vtable): Lazily init com types.
5066         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
5067         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
5068         * domain-internals.h: Expose mono_init_com_types.
5069         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
5070         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
5071         Add support for COM Callable Wrapper marshalling.
5072         * marshal.h: Add icall definitions.
5073         * gc.c: Handle freeing of CCWs in finalizer code.
5074         
5075         Code is contributed under MIT/X11 license.
5076
5077 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
5078
5079         * reflection.c: changed all the signature encoding code to use
5080         a variable-sized buffer.
5081
5082 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5083
5084         * marshal.c: locking fixes: never take the loader lock
5085         or other runtime locks when holding the marshal lock
5086         (fixes bug#80664).
5087
5088 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
5089
5090         * marshal.c: make the delegate function pointer mapping
5091         work for the moving GC.
5092
5093 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
5094
5095         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
5096         for bug #80618.
5097
5098 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5099
5100         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
5101         gmodule.
5102
5103 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
5104
5105         * threadpool.c: made the code moving-GC safe.
5106
5107 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
5108
5109         * assembly.c, boehm-gc.c, class-internals.h, class.c,
5110         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
5111         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
5112         warning cleanup.
5113         * reflection.c: warning cleanup, some threading and moving GC fixes.
5114
5115 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
5116
5117         * class.c, loader.c: create the needed Set/Get/Address array methods
5118         as well as the .ctors in mono_class_init (), fixes bug #80567.
5119
5120 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
5123         we doesn't decrease its alignment. Should fix the sparc build.
5124
5125 2007-01-24  Dick Porter  <dick@ximian.com>
5126
5127         * socket-io.c
5128         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
5129         Create the returned object if we need to ignore an unsupported
5130         socket option.  Fixes a segfault reported by Atsushi.
5131
5132 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
5133
5134         * class.c, object.c: restrict GC-tracked fields to
5135         UIntPtr fields used inside corlib, so we provide better
5136         type info to the GC and also allow broken packing as in
5137         bug #80580.
5138
5139 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
5140
5141         * sgen-gc.c: removed duplicated function.
5142
5143 2007-01-19  Miguel de Icaza  <miguel@novell.com>
5144
5145         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
5146         value that means that the value is not supported, but that we
5147         should not return a failure, but instead report this as a
5148         successful operation.
5149
5150 2007-01-19  Raja R Harinath  <rharinath@novell.com>
5151
5152         Fix tests/bug79956.2.il
5153         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
5154         (mono_generic_class_get_class): If the generic definition in an
5155         enum, copy over other fields related to it.
5156
5157 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
5158
5159         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
5160         genericinst enums (bug #79215).
5161
5162 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
5163         * class.c: Fix bug 80307.
5164
5165 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
5166
5167         * image.c: if the file table is not present, try to load
5168         all the modules, since we don't have info about them
5169         having or not metadata (bug #80517).
5170         * assembly.c: allow mono_assembly_load_references () to
5171         work for netmodules.
5172
5173 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5174
5175         * image.c, metadata-internals.h, object.c: execute module
5176         cctors when running on the 2 runtime if present (bug #80487).
5177
5178 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
5179
5180         * icall.c: optimized InitializeArray() on bigendian.
5181
5182 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
5183
5184         * icall.c: fix for the broken ARM FPA double format.
5185
5186 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
5187
5188         * icall.c: handle endian issues for r4 and r8 types, too, in
5189         the InitializeArray() icall.
5190
5191 2007-01-15  Miguel de Icaza  <miguel@novell.com>
5192
5193         * loader.c (mono_loader_error_prepare_exception): Clear the error
5194         once we have extracted the information from it, do this before we
5195         call into the JIT's class loading mechanisms.
5196
5197         * object.c (mono_class_create_runtime_vtable): Do not clear the
5198         loader error before calling mono_class_get_exception_for_failure
5199         as the loader error is needed inside
5200         mono_class_get_exception_for_failure to throw the error (thinko).
5201
5202         Fixes #80521
5203         
5204 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
5205
5206         * reflection.c: align fields rva data so it's faster to load at
5207         runtime.
5208
5209 2007-01-12  Raja R Harinath  <rharinath@novell.com>
5210
5211         Prepare to simplify GenericMethod handling.
5212         * class-internals.h (mono_method_get_context): New accessor function.
5213         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
5214         rather than directly accessing '->context' field.
5215
5216         * class-internals.h (_MonoGenericParam.method): Move ...
5217         (_MonoGenericContainer): ... here.  Add into union with klass field.
5218         * class.c, icall.c, loader.c, metadata.c, reflection.c:
5219         Update to changes.
5220
5221 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
5222
5223         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
5224         the wrapper type enum and reduce relocations.
5225
5226 2007-01-12  Raja R Harinath  <rharinath@novell.com>
5227
5228         * reflection.c (inflate_mono_method): Reuse method instantiation
5229         from the generic method, if available.
5230
5231 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5232
5233         * marshal.c (emit_marshal_variant): Fix conv_arg
5234         type in last commit, based on whether parameter is byref.
5235         
5236 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5237
5238         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
5239         marshalling.
5240         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
5241         MONO_TYPE_OBJECT back for VARIANT support.
5242
5243 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5244
5245         * marshal.c, marshal.h, icall-def.h: Implement 
5246         Marshal.ReAllocCoTaskMem.
5247
5248 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
5249
5250         * marshal.c: memory retention fixes: use the proper
5251         image cache for runtime_invoke method lookups.
5252
5253 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
5254
5255         * mempool.c: added code to help debug mempool allocations.
5256
5257 2007-01-11  Dick Porter  <dick@ximian.com>
5258
5259         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
5260         support (experimenting with faking it with IP_MTU_DISCOVER for
5261         systems that don't have IP_DONTFRAGMENT.)
5262         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
5263         icall.
5264
5265         * icall-def.h: new System.Net.Sockets.Disconnect icall.
5266
5267         * socket-io.h: Add new fields to MonoSocketAsyncResult
5268         corresponding to the new ones in Socket.cs.
5269
5270 2007-01-11  Raja R Harinath  <rharinath@novell.com>
5271
5272         Fix IronPython regression mentioned in #80249
5273         * metadata.c (do_mono_metadata_parse_generic_class): Clear
5274         'cached_context' field, since it may have been initialized as a
5275         side-effect of metadata parsing.
5276
5277         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
5278         (_MonoGenericClass.cached_class): Move here and rename from lone
5279         remaining field of ...
5280         (_MonoInflatedGenericClass): ... this.  Remove.
5281         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
5282         to changes.
5283
5284         Fix mcs/tests/test-128.cs regression.
5285         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
5286         2007-01-10 change below.
5287         [MONO_TYPE_OBJECT]: Recurse into array case.
5288
5289 2007-01-11  Raja R Harinath  <harinath@gmail.com>
5290
5291         * class-internals.h (mono_get_inflated_generic_class): Remove.
5292         * class.c (mono_get_inflated_generic_class): Remove.
5293         (mono_generic_class_get_class): Rename from
5294         mono_class_create_generic.
5295         (mono_class_from_mono_type) [GENERICINST]: Use it.
5296         * reflection.c, metadata.c: Update to changes.  Use
5297         'mono_class_from_mono_type'.
5298
5299 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
5300
5301         * reflection.c: use passed type when encoding an array element
5302         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
5303
5304 2007-01-09  Robert Jordan  <robertj@gmx.net>
5305
5306         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
5307         result arguments (someDelegate.EndInvoke (unrelatedAres)).
5308         Fixes bug #80392.
5309
5310 2007-01-09  Raja R Harinath  <rharinath@novell.com>
5311
5312         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
5313
5314         * object.c (set_value): Avoid aliasing between type->data.klass
5315         and type->data.generic_class.
5316
5317         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
5318
5319 2007-01-08  Raja R Harinath  <rharinath@novell.com>
5320
5321         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
5322         between type->data.klass and type->data.generic_class.
5323
5324 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
5325
5326         * marshal.c: In MS.NET, StringBuilder objects are not copied by
5327         value in out parameters.
5328
5329 2007-01-08  Raja R Harinath  <rharinath@novell.com>
5330
5331         Simplify invariant for MonoGenericClass::klass field.
5332         * class.c (mono_class_create_generic): Verify 'klass' is null.
5333         * metadata.c (do_mono_metadata_parse_generic_class): Don't
5334         initialize 'klass' field.
5335
5336 2007-01-05  Raja R Harinath  <rharinath@novell.com>
5337
5338         Ongoing work to avoid redundant data and simplify invariants.
5339         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
5340         'generic_class', and change type to a GenericInst.
5341         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
5342         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5343
5344 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
5345
5346         * class.c : skip io-layer under PLATFORM_WIN32.
5347
5348 2007-01-03  Tor Lillqvist  <tml@novell.com>
5349
5350         Fix #80305: In a bundled executable, look in the bundled exe
5351         assembly to determine the runtime version. Add the possibility to
5352         bundle also the machine.config file.
5353         
5354         * assembly.c (mono_assembly_open_from_bundle): Make
5355         non-static. Allow being called even if we have no bundled
5356         assemblies, and return NULL right away in that case.
5357
5358         * domain-internals.h: Declare mono_assembly_open_from_bundle()
5359         here.
5360
5361         * domain.c (app_config_parse): Take an assembly exe file name as
5362         parameter instead of a config file name. Check for a bundled
5363         config file for that assembly by calling
5364         mono_config_string_for_assembly_file() (see below) before looking
5365         for one in the file system.
5366         (get_runtimes_from_exe): Corrsponding change to call of
5367         app_config_parse().
5368         (get_runtimes_from_exe): Check for bundled assembly exe file first
5369         by calling mono_assembly_open_from_bundle(). If no bundled
5370         assembly exe file is found, call mono_image_open() as before to
5371         look it up in the file system.
5372
5373         * mono-config.c: Add variable bundled_machinec_onfig.
5374         (mono_config_string_for_assembly_file): New function.
5375         (mono_config_for_assembly): Move code snippet that looks for a
5376         bundled assembly .config file into the above new function. Call
5377         it.
5378         (mono_register_machine_config, mono_get_machine_config): New
5379         functions to set and retrieve
5380
5381         * assembly.h: Declare mono_register_machine_config().
5382
5383         * mono-config.h: Declare mono_get_machine_config() and
5384         mono_config_string_for_assembly_file().
5385
5386         * icall.c: No declaration of environ necessary on Win32. It is
5387         declared (as a macro expanding to a function call) in stdlib.h.
5388         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
5389         New internal mono function. Returns the value of
5390         mono_get_machine_config() as a Mono string.
5391
5392         * icall-def.h: Add get_bundled_machine_config().
5393
5394 2007-01-04  Raja R Harinath  <rharinath@novell.com>
5395
5396         Remove redundant field
5397         * class-internals.h (_MonoGenericContext.container): Remove field.
5398         * loader.c (mono_method_get_signature_full): Don't parse a
5399         "container" for a signature parse when the signature is inflated
5400         immediately.
5401         (method_from_methodspec): Likewise, for a generic_inst.
5402         * class.c, metadata.c, reflection.c: Update to changes.
5403
5404 2006-01-04  Raja R Harinath  <rharinath@novell.com>
5405
5406         * class-internals.h (_MonoGenericClass): Rename 'context' field to
5407         'cached_context', and change semantics -- it starts off NULL, and
5408         is initialized on demand.
5409         * class.c (mono_generic_class_get_context): New accessor to
5410         replace 'context' field accesses.
5411         (mono_class_get_context): New helper.
5412         (*): Update to changes.
5413         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
5414
5415 2007-01-03  Miguel de Icaza  <miguel@novell.com>
5416
5417         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
5418         before the memcpy.   Fixes Marshal2 regression.
5419
5420 2007-01-02  Jb Evain  <jbevain@gmail.com>
5421
5422         * blob.h: add a MONO_TYPE_ENUM definition
5423         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
5424         fix the encoding of arrays of enums in custom attributes.
5425
5426         Fixes #79666.
5427
5428 2007-01-01  Miguel de Icaza  <miguel@novell.com>
5429
5430         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
5431         string is null terminated, but only cut the string short if it
5432         overflows the buffer.   
5433         
5434         (mono_string_to_byvalstr): Also fix this routine.   The code here
5435         was not properly terminating a string (it was only terminated
5436         because of the previous catch-all memset). 
5437
5438         I left the memset, because I do not know if applications expect
5439         the runtime to clear this region. 
5440
5441         Fixes #79944.
5442
5443         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5444         Clear the error before returning to unmanaged code to prevent the
5445         runtime from being confused later on (fixes  80420).
5446         (ves_icall_type_from_name): Always call mono_loader_clear_error
5447         after parsing a type that could have failed.
5448         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
5449
5450         * loader.c (mono_loader_clear_error): Fix indentation.
5451
5452 2006-12-28  Martin Baulig  <martin@ximian.com>
5453
5454         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
5455
5456 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
5457
5458         * reflection.c: patch from Rolf Bjarne Kvinge to fix
5459         getting a token for an EnumBuilder.
5460
5461 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
5462
5463         * reflection.c: be more careful in case resource generation
5464         fails to create the data array.
5465
5466 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
5467
5468         * sgen-gc.c: write barrier for clone and fix unregister handles.
5469
5470 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
5471
5472         * reflection.c: some fixes needed in the generics code for the moving GC.
5473
5474 2006-12-22  Robert Jordan  <robertj@gmx.net>
5475
5476         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
5477         account. Fixes bug #80299.
5478
5479 2006-12-21  Raja R Harinath  <rharinath@novell.com>
5480
5481         Fix WaitHandle usage in delegates.
5482         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
5483         * object.c (mono_wait_handle_new): Use the property set method to
5484         initialize the handle.
5485         (mono_wait_handle_get_handle): New.
5486         * threadpool.c (mono_async_invoke): Use it.
5487         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
5488         Likewise.
5489         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
5490
5491 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
5492
5493         * marshal.c (emit_marshal): Call emit_marshal_variant and
5494         emit_marshal_com_interface when applicable.
5495         (emit_marshal_variant, emit_marshal_com_interface): Add
5496         methods for this case and remove if's from emit_marshal_object.
5497         
5498 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
5499
5500         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
5501
5502 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
5503
5504         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
5505         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
5506         and GlobalFree on Windows. Remove FIXME.
5507
5508 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
5509
5510         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
5511         implementation for managed objects.
5512
5513 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
5514
5515         * object.c: implemented code to be used for checking
5516         that no reference field overlaps with non-references.
5517
5518 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5519
5520         * threadpool.c: fix queue code to be compatible with the
5521         moving GC.
5522
5523 2006-12-18  Miguel de Icaza  <miguel@novell.com>
5524
5525         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
5526         in structures by throwing ArgumentNullException.
5527
5528         (emit_marshal_safehandle): Also when they are null parameters.
5529
5530         (emit_marshal_safehandle): Add support for ref
5531         SafeHandles parameters
5532
5533 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
5534
5535         * profiler.c: updated to use the mono-dl API instead of
5536         gmodule.
5537
5538 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5539
5540         * profiler.c: updated to use the mono-dl dynamic loading
5541         API instead of gmodule.
5542
5543 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
5544
5545         * profiler.c: use readlink, older versions of glib don't have
5546         g_file_read_link ().
5547
5548 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
5549
5550         * profiler.c: try to detect the path to mono if libc fails to provide
5551         a useful name (bug #80286).
5552
5553 2006-12-16  Raja R Harinath  <rharinath@novell.com>
5554
5555         Fix #80242
5556         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
5557         instance, use the generic type definition instead.
5558         (ves_icall_Type_GetNestedTypes): Likewise.
5559         * class.c (mono_class_create_generic): Always set the
5560         nested_classes of a generic instance to NULL, even if the generic
5561         type definition has nested types.
5562
5563 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
5564
5565         * marshal.c (mono_string_from_bstr): Revert previous Windows change
5566         and fix on Linux.
5567         
5568 2006-12-15  Miguel de Icaza  <miguel@novell.com>
5569
5570         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
5571         my arguments were in the wrong order.   I also fixed the Windows
5572         version which seems to have had the same issue.
5573
5574         (mono_free_bstr): On Unix, this is g_free.
5575         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
5576         conversions (for the tests in corlib to pass).
5577
5578 2006-12-14  Miguel de Icaza  <miguel@novell.com>
5579
5580         * marshal.c (emit_ptr_to_object_conv): For now, ignore
5581         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
5582         exception if a ref SafeHandle in a struct has changed).
5583         
5584         (emit_struct_conv): Do not perform layout checks for classes
5585         derived from SafeHandle, as those are specially handled. 
5586
5587         (emit_object_to_ptr_conv): Add support for
5588         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
5589
5590         (emit_marshal_safehandle): Implement conversion of return values
5591         of safehandles (MARSHAL_ACTION_CONV_RESULT).
5592         
5593         * threads.c: WaitHandle now is compiled with two different handles
5594         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
5595         for 2.0.
5596         
5597         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
5598         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
5599         these routines to cope with both kinds of fields.
5600
5601 2006-12-12  Miguel de Icaza  <miguel@novell.com>
5602
5603         * metadata.c (mono_type_to_unmanaged): Handle the case where
5604         type->data.klass is a SafeHandle, and in that case, return the
5605         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
5606         MONO_MARSHAL_CONV_SAFEHANDLE. 
5607
5608 2006-12-11  Miguel de Icaza  <miguel@novell.com>
5609
5610         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
5611         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
5612         calling emit_marshal_object.
5613
5614         (emit_marshal_safehandle): Implement marshalling of
5615         SafeHandle parameters (no ref support yet).
5616
5617         (MarshalAction): Document the defines as I implement
5618         them for SafeHandle.
5619
5620         (emit_marshal_object): indentation police.
5621
5622         * class-internals.h: Define MonoSafeHandle.
5623         Add safehandle_class to MonoDefaults type.
5624
5625         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
5626         list of classes to check for fields. 
5627
5628         * domain.c (mono_init_internal): Add SafeHandle to the list of
5629         mono_defaults loaded.
5630
5631 2006-12-15  Raja R Harinath  <rharinath@novell.com>
5632
5633         Fix #80253
5634         * reflection.c (mono_reflection_bind_generic_parameters): If the
5635         generic type definition is a type builder, ensure that it is fully
5636         initialized before instantiating it.  Kill some dead code.
5637
5638 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
5639
5640         * object.c: clear the loader_error () before loading
5641         more metadata stuff (bug #80258).
5642
5643 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
5644
5645         * icall.c, icall-defs.h: type modifiers icalls for
5646         parameters and properties.
5647
5648 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
5649
5650         * object.c, icall.c: fixed warnings.
5651
5652 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5653
5654         * marshal.c: fixed a couple of leaks and coding style in a few places.
5655
5656 2006-12-08  Dick Porter  <dick@ximian.com>
5657
5658         * process.c: Cope with NULL ProcessStartInfo arguments on windows
5659         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
5660         80173.
5661
5662 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
5663
5664         * process.c: ProcessStartInfo may have only filename set and
5665         arguments can be NULL.
5666
5667 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
5668
5669         * icall.c: fix leak found by Robert Jordan.
5670
5671 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5672
5673         * marshal.c, marshal.h: generate managed method to access an element
5674         of a multi-dimensional array.
5675
5676 2006-11-30  Paolo Molaro (lupus@ximian.com)
5677
5678         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
5679
5680 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5681
5682         * icall.c: back out GetFields () fix until the serialization code is
5683         fixed to not depend on the incorrect behaviour.
5684
5685 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
5686
5687         * profiler.c: provide defaults if none are set.
5688
5689 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
5690
5691         * Makefile.am, attrdefs.h: new public header file with
5692         constants for attributes for use by embedders.
5693
5694 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
5695
5696         * icall.c: GetFields () fix for bug #80064.
5697
5698 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
5699
5700         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
5701         removed long unused icalls.
5702
5703 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
5704   
5705         * marshal.c: 
5706                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
5707                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
5708                 can be generated without a delegate class.
5709                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
5710         
5711         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5712
5713 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5714
5715         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
5716         #80069.
5717
5718 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
5719
5720         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
5721         icall-def.h: added icalls needed by System.GC.
5722
5723 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
5724
5725         * loader.c: ensure the class in catch clauses is handled
5726         correctly for generics methods (fixes bug#79980).
5727
5728 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
5729
5730         * monitor.h, monitor.c: added mono_locks_dump () function
5731         to help debug deadlocks involving managed locks.
5732
5733 2006-11-13  Dick Porter  <dick@ximian.com>
5734
5735         * file-io.c (get_file_attributes): If the file is a symlink try
5736         and get the stat data for the target, but also add the
5737         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
5738         the specs for the windows symlink support, but will probably have
5739         to be reworked when I have test data from a vista machine.  Fixes
5740         bug 79887.
5741
5742 2006-11-13  Dick Porter  <dick@ximian.com>
5743
5744         * gc.c (mono_domain_finalize): 
5745         * marshal.c (mono_delegate_begin_invoke): 
5746         * threadpool.c (socket_io_init, mono_thread_pool_init)
5747         (mono_thread_pool_finish): 
5748         * monitor.c (mono_monitor_try_enter_internal): 
5749         * threads.c (mono_thread_resume, mono_thread_init)
5750         (mono_thread_suspend_all_other_threads)
5751         (mono_thread_execute_interruption): 
5752         * appdomain.c (mono_domain_unload): Check for NULL error returns
5753         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
5754         75733.
5755
5756 2006-11-11  Miguel de Icaza  <miguel@novell.com>
5757
5758         * process.c
5759         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
5760         Only close the handle if the value of the handle is not
5761         INVALID_HANDLE_VALUE.  This just makes the process a bit more
5762         robust.
5763
5764         Improvement for #75733, so that we do not run into this problem. 
5765
5766         
5767         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
5768         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
5769         internal variables.  Fixes #79462 
5770         
5771
5772 2006-11-09  Dick Porter  <dick@ximian.com>
5773
5774         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5775         Use poll() not select().  Fixes bug 79397.
5776
5777 2006-11-09  Raja R Harinath  <rharinath@novell.com>
5778
5779         Fix #79872
5780         * assembly.c (mono_assembly_load_from_full): Check that the given
5781         image has an assembly manifest.
5782
5783 2006-11-09  Ankit Jain  <jankit@novell.com>
5784
5785         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
5786         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
5787         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
5788
5789 2006-11-07  Dick Porter  <dick@ximian.com>
5790
5791         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5792         Put the old resolver behaviour back for pre-2.0 profiles.
5793
5794 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
5795
5796         * threadpool.c: precise GC and locking fixes.
5797
5798 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
5799
5800         * class.c: don't load types that have an explicit unaligned
5801         managed reference. Provide better info in the TypeLoad exception.
5802         Part of the fix for bug #79744.
5803         * object.c: use the correct check for class type load issues.
5804
5805 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
5806
5807         * class.c: enforce alignment of fields with managed references
5808         even when Pack=1 is forced by the user (bug #77788).
5809
5810 2006-11-03  Dick Porter  <dick@ximian.com>
5811
5812         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5813         If the address reverse lookup fails, return it as the hostname
5814         anyway.  Fixes bug 79721.
5815
5816 2006-11-03  Dick Porter  <dick@ximian.com>
5817
5818         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
5819         Fix build on Windows.
5820
5821 2006-11-02  Dick Porter  <dick@ximian.com>
5822
5823         * icall-def.h: 
5824         * object-internals.h: 
5825         * exception.c (mono_get_exception_thread_interrupted): 
5826         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
5827         Fixes bug 74525.
5828
5829         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
5830         Check for pending Thread.Interrupt.
5831
5832 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
5833         * loader.c: Fixed bug 79684.
5834
5835 2006-10-27  Dick Porter  <dick@ximian.com>
5836
5837         * file-io.c (get_file_attributes): Force symlinks to directories
5838         to be returned as a regular file.  Fixes bug 79733.
5839 2006-10-26  Dick Porter  <dick@ximian.com>
5840
5841         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
5842         CreateFile to open a directory then we need to set the
5843         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
5844
5845 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
5846
5847         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
5848         friends.
5849
5850 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
5851
5852         * sgengc.c: small cleanup of timer code.
5853
5854 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
5855
5856         * sgen-gc.c: fix some warnings and start adding support for
5857         complete object removal on domain unload.
5858
5859 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
5860
5861         * assembly.c: build_assembly_name should not consider a version
5862         number without build or revision number invalid. Fixes bug #79715.
5863
5864 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
5865
5866         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
5867         call kernel32 function OutputDebugString directly.
5868         
5869         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5870         
5871 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
5872
5873         * reflection.c: small cleanup, using a function to insert a MonoString
5874         in the string heap.
5875
5876 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
5877
5878         * reflection.c: moving GC fixes.
5879
5880 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
5881
5882         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
5883         all the objects with finalizers belonging to an unloading appdomain.
5884
5885 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
5886
5887         * sgen-gc.c: added ability to allocate even when the nursery is fully
5888         pinned and fixed a couple of bugs.
5889
5890 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * threads.h: Revert the last change for now.
5893
5894         * threads.h (mono_thread_get_pending_exception): Rename this to
5895         mono_thread_get_undeniable_exception ().
5896
5897 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
5898
5899         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
5900         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
5901         when fname does not refer to valid assembly. This result in a more
5902         meaningful error message.
5903         * exception.c: added mono_get_exception_bad_image_format2 which 
5904         constructs a BadImageFormatException using the ctor taking a custom
5905         message and the file name. Passing in a NULL msg results in a default
5906         message.
5907         * exception.h: define mono_get_exception_bad_image_format2 function.
5908         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
5909         when file name pointed to an invalid IL image. Use 
5910         mono_get_exception_file_not_found2 to construct FileNotFoundException,
5911         as this results in a more meaningful error message.
5912
5913 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
5916         #79465.
5917
5918 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * metadata.c (mono_type_size): Change the align parameter to guint32 for
5921         consistency with the other _size functions.
5922         (mono_type_stack_size): Ditto.
5923
5924         * class.c object.c icall.c: Fix warnings caused by the above change.
5925
5926         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
5927
5928         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
5929
5930         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
5931
5932 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
5933
5934         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
5935         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
5936         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
5937         threadpool.h, threads-types.h: mark more internal functions.
5938
5939 2006-10-11  Dick Porter  <dick@ximian.com>
5940
5941         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5942         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
5943         reproduce the bug even before applying the fix.)
5944
5945 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
5946
5947         * reflection.c: allow retrieving attributes for arguments in generic
5948         methods (bug #79241).
5949
5950 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
5951
5952         * debug-mono-symfile.c: properly check fopen () result (found by
5953         coverity).
5954
5955 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
5956
5957         * reflection.c: make error message clearer and fixed two
5958         issuelets found by Coverity.
5959
5960 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
5963
5964 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
5965
5966         * object-internals.h, gc-internal.h, profiler-private.h:
5967         mark internal functions.
5968
5969 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
5970
5971         * reflection.c: put data in the text section.
5972         * icall.c: recognize more types in type_from_typename ().
5973         * process.c, marshal.c: added some GC FIXMEs.
5974
5975 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5976
5977         * loader.c: check for NULL before initializing.
5978
5979 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
5980
5981         * gc.c (finalizer_thread): Use a non-alertable wait here.
5982
5983         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
5984         until the correct solution is found.
5985
5986 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * reflection.c (mono_module_get_object): Avoid an assert when operating on
5989         modules with no metadata. Fixes #79596.
5990
5991         * image.c (load_metadata_ptrs): Put back the error message when
5992         the #- heap is encountered since the support is not complete yet.
5993
5994 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5995
5996         * gc.c: do not allow the user to SuppressFinalize () a
5997         delegate because it would leak the trampoline if present.
5998
5999 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
6000
6001         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
6002         PropertyPtr table.
6003
6004 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
6005
6006         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
6007
6008         * metadata.c (mono_metadata_get_param_attrs): Ditto.
6009
6010         * row-indexes.h: Add definitions for *Ptr tables.
6011
6012         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
6013
6014         * metadata.c (mono_metadata_translate_token_index): New helper function to
6015         translate table indexes used in uncompressed metadata.
6016         (mono_metadata_decode_table_row): Ditto.
6017         (mono_metadata_decode_table_row_col): Ditto.
6018
6019         * metadata.c: Add table schema for *Ptr tables.
6020
6021         * class.c loader.c: Use the new helper function to access the affected metadata
6022         tables.
6023         
6024         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
6025         #38532.
6026         
6027 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
6030         sequences which can be unbounded in size. Fixes #79583.
6031
6032 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
6033
6034         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
6035         static initialization.
6036
6037         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
6038
6039         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
6040
6041         * domain.c (mono_domain_free): Free up type_init_exception_hash.
6042
6043         * object.c (mono_runtime_class_init): Implement correct semantics when a static
6044         ctor fails, i.e. throw the same exception on subsequent accesses.
6045         
6046 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
6047
6048         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
6049         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
6050         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
6051         Handle marshalling of interfaces and VARIANTs contained in structs.
6052         
6053         Code is contributed under MIT/X11 license.
6054         
6055 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
6056
6057         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
6058         
6059         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
6060         mempool.
6061
6062 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6063
6064         * console-io.c: ignore previous SIGINT handler.
6065
6066 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
6067
6068         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
6069         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
6070         #79460, #79461, #79485.
6071
6072         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
6073
6074         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
6075         #79217.
6076
6077 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
6078
6079         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
6080         could be generated from it.
6081
6082 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
6083
6084         * rand.c: fix read loop to correctly handle EINTR.
6085
6086 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6087
6088         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
6089         internal calls are defined to keep methods closer to the declaring
6090         type and allow a significant reduction in runtime relocations and
6091         memory usage.
6092
6093 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
6094
6095         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
6096         exception message to have FileNotFoundException use the default
6097         assembly load error message. Fixes bug #79426.
6098         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
6099
6100 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6101
6102         * threadpool.c: (start_thread_or_queue) use the root domain when
6103         creating the thread instead of the async object one.
6104
6105 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
6106
6107         * class.c, object.c, class-internals.h, reflection.c:
6108         for arrays, store element_size inside MonoClass (speedup
6109         for array object creation).
6110
6111 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
6112
6113         * icall.c: fixed CodeBase to use the file name and not the module
6114         name (bug #79365).
6115
6116 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
6117
6118         * mono-debug.c, mono-debug.h: export find_method as
6119         mono_debug_find_method ().
6120
6121 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6122
6123         * debug-helpers.c, class-internals.h: added a few functions useful
6124         when debugging under gdb.
6125
6126 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6127
6128         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
6129         characters that need special handling.
6130
6131 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
6132
6133         * mono-config.c: make the os/cpu specification more flexible,
6134         allowing lists and negation.
6135
6136 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
6137
6138         * marshal.c: COM Interop fixes. Handle case where method->klass.
6139         is interface. Handle BSTR/MonoString when null. Use CDECL as 
6140         calling convention on non-windows platforms. This is for
6141         compatibility with XPCOM and MainWin COM.
6142         
6143         Code is contributed under MIT/X11 license.
6144         
6145
6146 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
6147
6148         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
6149         correctly. Fixes #79217.
6150
6151         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
6152
6153 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
6154
6155         * mono-config.c: allow both an os and cpu attribute for dllmap
6156         and dllentry elemnets to enable a single config file to be used
6157         for multiple architectures.
6158
6159 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
6160
6161         * loader.c: MonoLoaderError was cleared too soon on load failure.
6162         Fixes bug #79424.
6163
6164 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
6165
6166         * icall.c: use the defining class vtable when accessing a
6167         static field, not a pobblibly derived class.
6168
6169 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
6170
6171         * icall.c string-icalls.c: Remove references to unicode.h.
6172
6173         * unicode.h unicode.c Makefile.am: Remove these unused source files.
6174
6175         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
6176
6177         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
6178         indicating the image where custom marshaller types should be looked up.
6179         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
6180         custom marshallers, instead of corlib. Fixes #79425.
6181
6182 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
6183
6184         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
6185
6186 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
6187
6188         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
6189         Implement Environment.ProcessorCount.
6190         
6191         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
6192         Implement Environment.ProcessorCount.
6193         
6194         * icall.c: 
6195         Add Environment.ProcessorCount icall.
6196         
6197         Patch by Jason McFall.
6198
6199 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6200
6201         * assembly.c: don't append .exe/.dll when the filename already contains
6202         one of those extensions.
6203
6204 2006-09-12  Martin Baulig  <martin@ximian.com>
6205
6206         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
6207         to array interfaces.
6208
6209 2006-09-11  Martin Baulig  <martin@ximian.com>
6210
6211         * reflection.c (mono_image_build_metadata): Create the
6212         MethodImpl's after emitting all types and methods, so we don't
6213         need another fixup pass for them.
6214
6215 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * class.c (mono_class_from_name_case): Fix regression introduced by the last
6218         change.
6219
6220 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
6221
6222         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
6223         unload.
6224
6225 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
6226
6227         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
6228         args is not set. Fixes #78926.
6229
6230 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
6231
6232         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
6233
6234         * image.c (load_class_names): Move this to class.c, and rename it to 
6235         'mono_image_init_name_cache'.
6236         (load_modules): Fix a warning.
6237
6238         * class.c icall.c image.c: Initialize image->name_cache lazily.
6239
6240         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
6241         on its name using information in the AOT file.
6242
6243         * class.c (mono_class_from_name): Use the new hook function.
6244
6245 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * reflection.c (mono_param_get_objects): Handle enum default parameter values
6248         correctly.
6249
6250         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
6251         Fixes #79289.
6252         
6253 2006-09-06  Martin Baulig  <martin@ximian.com>
6254
6255         * icall.c (mono_lookup_internal_call): Small fix.
6256
6257 2006-09-05  Raja R Harinath  <rharinath@novell.com>
6258
6259         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
6260         double g_free.
6261
6262 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
6263
6264         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
6265         when --debug is specified.
6266
6267 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * class.c (setup_generic_array_ifaces): Fix a warning.
6270
6271 2006-09-04  Miguel de Icaza  <miguel@novell.com>
6272
6273         * Temporarily remove the patch to assemly.c that checks the
6274         assembly versions as it breaks our gacutil.
6275
6276 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
6279
6280         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
6281         a net 1.0 runtime.
6282
6283         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
6284         created using the default ctor. Fixes #79152.
6285         (mono_string_builder_to_utf16): Ditto.
6286
6287 2006-09-01  Martin Baulig  <martin@ximian.com>
6288
6289         Fix handling of the generic array interfaces.
6290
6291         * class-internals.h
6292         (MonoDefaults): Removed `generic_array_class' and added
6293         `generic_ilist' class.
6294
6295         * class.c
6296         (mono_bounded_array_class_get): Add the new generic array interfaces.
6297         (setup_generic_array_ifaces): New static method; create vtable
6298         entries for each method in the generic array interfaces.
6299
6300         * metadata.c
6301         (select_container): Allow "parent-less" generic methods.
6302
6303         * marshal.c
6304         (mono_marshal_get_generic_array_helper): New public method.
6305
6306         * icall.c
6307         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
6308         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
6309         moved the interncall into System.Array.
6310
6311 2006-09-01  Raja R Harinath  <rharinath@novell.com>
6312
6313         A few more cases of avoiding work on types with ->byref set.
6314         Has the real fix for #79238
6315         * icall.c (is_generic_parameter): New helper.
6316         (ves_icall_Type_GetGenericParameterPosition): Use it.
6317         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
6318         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
6319         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
6320         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
6321         reference types.
6322         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
6323         reference types.
6324         (ves_icall_Type_get_IsGenericInstance): Likewise.
6325         (ves_icall_Type_get_IsGenericType): Likewise.
6326
6327 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
6330         class if possible.
6331
6332         * mempool.h (mono_mempool_get_allocated): New helper function.
6333
6334         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
6335         change.
6336
6337         * mempool.c: Fix warnings and the calculation of stats.
6338
6339         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
6340
6341         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
6342
6343         * loader.c (mono_get_method_from_token): Update method_count stat.
6344
6345         * class-internals.h (MonoStats): Add some stats.
6346
6347 2006-08-31 Robert Jordan  <robertj@gmx.net>
6348
6349         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
6350         with managed variants.
6351         All code is contributed under the MIT/X11 license.
6352         
6353 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
6354
6355         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
6356         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
6357
6358         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
6359
6360         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
6361         with cycles in classes.
6362
6363         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
6364
6365         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
6366         missing a [MarshalAs] directive. Fixes #79203.
6367
6368         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
6369         klass->marshal_info. Fixes #79217.
6370
6371 2006-08-30  Martin Baulig  <martin@ximian.com>
6372
6373         Committing a patch from Joachim Ante <joe@otee.dk>:
6374         Add support for binary data symbol stores.
6375
6376         * debug-mono-symfile.c
6377         (mono_debug_open_mono_symbol_file): Renamed into
6378         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
6379         arguments.
6380
6381         * mono-debug.c
6382         (mono_debug_open_image): Added `raw_contents' and `size' args.
6383         (mono_debug_init_2_memory): New public function.
6384
6385 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
6386
6387         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
6388
6389 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6390
6391         * appdomain.c: implement support for ShadowCopyFiles.
6392
6393 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
6394
6395         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
6396         when value is NULL (and should remove CID #51).
6397
6398 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6399
6400         * image.c: moved 2 functions to ../utils.
6401
6402 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
6403
6404         * gc.c: cope with the target object of a GC handle being NULL
6405         (bug #78877).
6406
6407 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
6408
6409         * class.c: recursively check parent's explicit implementations
6410         of interface methods (fixes bug #79125).
6411
6412 2006-08-19  Miguel de Icaza  <miguel@novell.com>
6413
6414         * filewatcher.c: Avoid warnings when building, do not redefine
6415         constants that are defined.
6416
6417         Remove warnings.
6418
6419 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6420
6421         * image.c: don't fail when the link points to an absolute path.
6422
6423 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
6424
6425         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
6426         Fix CID #3.
6427
6428 2006-08-17  Miguel de Icaza  <miguel@novell.com>
6429
6430         * image.c (full_path): A new method used to obtain the actual path
6431         of an assembly even in the presence of symbolic links.  
6432
6433         This is necessary for the case where we are running a binary that
6434         has been GACed, but we are using the "published" path name
6435         ($prefix/mono/1.0/blah.exe) which happens to point to the real
6436         file in the GAC.
6437
6438         This was the source of the failure for the `xsp' command with the
6439         recent AppDomain changes, as far as the runtime was concerned,
6440         there were two different assemblies: $prefix/mono/1.0/blah.exe and
6441         $prefix/mono/gac/blah/version/blah.exe.
6442
6443         (do_mono_image_open): use full path
6444
6445 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
6448
6449 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
6450
6451         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
6452         domain_id is supplied. Fix CID #241 and corlib's unit tests.
6453
6454 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
6457         small structures. Fixes #78990.
6458
6459 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6460
6461         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
6462
6463         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
6464
6465 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6466
6467         * appdomain.c:
6468         * marshal.c: don't load all the assemblies from a domain into newly
6469         created ones. The new domains might have different rules and load
6470         assemblies from different locations. Fixes bug #76757.
6471
6472         Patch by Lluis. Conflicts resolved by Brian Crowell.
6473
6474 2006-08-16  Alp Toker  <alp@atoker.com>
6475
6476         * socket-io.c: First half of the fix for #79084.
6477         Set sa_size to the length of the content, not that of the struct.
6478         Don't add NULL suffix to the content, this should be done in
6479         managed code if needed.
6480
6481 2006-08-14  Raja R Harinath  <rharinath@novell.com>
6482
6483         Fix part of #79012
6484         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
6485         mono_metadata_parse_type returns NULL.
6486
6487 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
6488
6489         * normalization-tables.h : new file for string normalization data.
6490         * locales.c, locales.h, icall.c :
6491           added load_normalization_resource() for string normalization,
6492           and icall as well.
6493         * Makefile.am : added normalization-tables.h to the sources.
6494
6495 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
6496
6497         * marshal.c: Add more helper functions to reduce code duplication and use them
6498         everywhere.
6499
6500 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * marshal.c: Fix non-x86 stdcall warnings.
6503         
6504         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
6505         them everywhere.
6506
6507 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
6508
6509         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
6510         type check on multi-dimensional arrays. Fixes #79000.
6511
6512 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
6513
6514         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
6515         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
6516         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
6517         * class-internals.h: add is_com_object to class structure.
6518         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
6519         null checks to COM object marshalling. Fix .ctor call on RCW.
6520         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
6521         
6522         All code is contributed under the MIT/X11 license.
6523
6524 2006-08-09  Dick Porter  <dick@ximian.com>
6525
6526         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
6527         racing mono_monitor_allocator_lock() somewhere, so don't delete
6528         the critical section for now.  Found by running and exiting
6529         monodevelop.
6530
6531 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
6534         (ves_icall_System_ComObject_FindInterface): Ditto.
6535         (ves_icall_System_ComObject_CacheInterface): Ditto.
6536
6537         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
6538         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
6539
6540 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6541
6542         * threadpool.c: treat pipes from process asynchronous reads as sockets
6543         when reading from them, so we get select/poll or epoll to wait for
6544         data.
6545
6546 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
6547
6548         * loader.c: Fix a typo (CID #233) in the null check.
6549
6550 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
6551
6552         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
6553         Hopefully fixes #78949.
6554         
6555         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
6556         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
6557         bytes. Fixes #78972.
6558
6559 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6560
6561         * filewatcher.c: we need to set errno here.
6562
6563 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6564
6565         * filewatcher.c: let Win32Exception get the error value.
6566
6567 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6568
6569         * filewatcher.c: translate errno into win32 errors for Win32Exception
6570         to know what happened.
6571
6572 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * threadpool.c: Fix more warnings.
6575
6576         * assembly.c (search_loaded): Fix warnings.
6577
6578         * threadpool.c (mono_thread_pool_finish): Fix warnings.
6579         (mono_async_invoke): Ditto.
6580
6581 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
6582
6583         * object.c (mono_remote_class_vtable): Need to create proxy vtable
6584         entries for __ComObject type in addition to ComImport types.
6585         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
6586         about hash table.
6587         
6588         All code is contributed under the MIT/X11 license.
6589
6590 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
6591
6592         * image.c: avoid tentative loading of modulerefs that contain
6593         no metadata (P/Invoke library names).
6594
6595 2006-07-28  Dick Porter  <dick@ximian.com>
6596
6597         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
6598         mono_loader_lock() somewhere, so don't delete the critical section
6599         for now.  Found by running and exiting monodevelop.
6600
6601 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6602
6603         * filewatcher.c: define the inotify syscalls when we're building on
6604         linux and have sys/syscall.h. The build system might not have support
6605         for inotify but the target system might have it.
6606
6607 2006-07-26  Miguel de Icaza  <miguel@novell.com>
6608
6609         * domain.c: Documentation updates.
6610
6611         * loader.c (mono_free_method): Do not release the method
6612         information if we are being profiled, as profilers will use this
6613         information at shut down to present some data to the user.
6614
6615         This is needed so that the profiler does not crash, as the
6616         profiler tends to keep MonoMethods around, and they might become
6617         invalid if we free these.
6618
6619         (mono_get_method_constrained): Return the original CIL stream
6620         method as well, so verification can be performed against it.
6621
6622 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6623
6624         * filewatcher.[ch]: support for inotify file system watcher.
6625         * icall.c: add new internal calls for the inotify file system watcher.
6626
6627 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6628
6629         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
6630         #78888.
6631
6632 2006-07-20  Dick Porter  <dick@ximian.com>
6633
6634         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
6635         warning.
6636
6637 2006-07-20  Dick Porter  <dick@ximian.com>
6638
6639         * threads.c (start_wrapper): Do the thread cleanup while we still
6640         hold a reference to its object.  Fixes bug 78123.
6641
6642 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
6643
6644         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
6645         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
6646           "managed-to-managed".
6647         * icall.c: Redirect string constructors that take sbyte* to
6648           ves_icall_System_String_ctor_RedirectToCreateString.
6649         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
6650           to CreateString () methods with matching signature.
6651         * reflection.c: Use original security informations for
6652           MONO_WRAPPER_MANAGED_TO_MANAGED.
6653         * security-manager.c: Use original security informations for
6654           MONO_WRAPPER_MANAGED_TO_MANAGED.
6655         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
6656           that is a placeholder and only its address should be used.
6657         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
6658           that is a placeholder and only its address should be used.
6659
6660 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
6661
6662         Begin implementing COM Interop.
6663         * appdomain.c: Increment corlib version.
6664         * class.c: Set ComImport classes' parent to __ComObject.
6665         * loader.c: Mark cominterop methods as such.
6666         * domain.c: Add __ComObject class to MonoDefaults structure.
6667         * image.c: Add 2 hashtables to the image for COM Interop related methods
6668         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
6669         using the mempool allocator
6670         
6671         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
6672         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
6673         declaration for mono_metadata_type_dup_mp.
6674         
6675         * debug-helpers.c: Added strings for two additional wrapper types
6676         * object.c: Create proxy objects for ComImport classes
6677         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
6678         and added __ComObject class to MonoDefaults structure.
6679         
6680         * object-internals.h: Finish MonoRealProxy definition, and add definition of
6681         MonoComInteropProxy and MonoComObject.
6682         
6683         * marshal.c: Added support for COM Interop
6684         (signature_cominterop): Converts managed signature to corresponding
6685         unmanaged COM signature.
6686         (cominterop_get_function_pointer): gets unmanaged function pointer via
6687         COM object vtable
6688         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
6689         (cominterop_get_method_interface): returns interface type that method is defined on
6690         (mono_mb_emit_cominterop_call): emits native call to function pointer
6691         gotten from vtable
6692         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
6693         that matches signature of unmanaged function.
6694         (cominterop_get_native_wrapper): wrapper around adjusted method call.
6695         (cominterop_get_invoke): forwards call from proxy to __ComObject
6696         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
6697         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
6698         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
6699         
6700         * marshal.h: Added Marshal icall declarations.
6701         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
6702         so we can access them in finalizer
6703         
6704 2006-07-14  Dick Porter  <dick@ximian.com>
6705
6706         * object.c (mono_type_initialization_cleanup): Fix a race
6707         condition by temporarily commenting out the critical section
6708         deletion.
6709
6710 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * reflection.c (create_custom_attr): Fix some warnings.
6713         (create_custom_attr_data): Ditto.
6714         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
6715         types. Fixes #78855.
6716
6717 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
6718
6719         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
6720
6721         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
6722
6723 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
6724
6725         * reflection.c (resolve_object): Add support for DynamicMethod.
6726
6727         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
6728         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
6729
6730 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
6731
6732         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
6733         don't leak GPtrArray's pdata has we have no use (nor free) for it.
6734
6735 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
6736
6737         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
6738         Fixes #77888.
6739
6740 2006-06-30  Raja R Harinath  <rharinath@novell.com>
6741
6742         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
6743         slightly: remove a shadow local variable.
6744
6745 2006-06-29  Raja R Harinath  <rharinath@novell.com>
6746
6747         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
6748         definition that introduces the virtual function slot.
6749         Also fix Coverity #105.
6750
6751 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
6752
6753         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
6754         for dynamic assemblies. Fixes #78724.
6755
6756 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
6759         Fixes #78722.
6760
6761 2006-06-21  Martin Baulig  <martin@ximian.com>
6762
6763         * reflection.c
6764         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
6765         fixes #76484.
6766
6767 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
6768
6769         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
6770
6771 2006-06-20  Raja R Harinath  <rharinath@novell.com>
6772
6773         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
6774         nor TYPEREFs.
6775         * class.c (mono_class_create_from_typespec): Add 'context' argument.
6776         Inflate result if necessary.
6777         (mono_class_get_full): Remove old version.  Rename from
6778         'mono_class_get' and add 'context' argument.  Pass it to
6779         ..._create_from_typespec.
6780         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
6781         (mono_ldtoken): Revert change below.
6782
6783 2006-06-20  Martin Baulig  <martin@ximian.com>
6784
6785         * class.c (mono_ldtoken): Don't pass the generic context to
6786         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
6787
6788 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
6789
6790         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
6791         and later freeing it. Fixes #78638.
6792
6793 2006-06-15  Miguel de Icaza  <miguel@novell.com>
6794
6795         * icall.c (mono_class_get_throw): Revert over-zealous error
6796         throwing, the caller for mono_class_get_throw will cope with
6797         errors when classes are not properly initialized already.
6798
6799         The code still copes with loader exceptions though.
6800
6801         Fixes the regression in reftype1 and reftype3 from the CAS tests.
6802         
6803 2006-06-14  Miguel de Icaza  <miguel@novell.com>
6804
6805         Fixes the `make run1' version of RuntimeAbort (to be commited,
6806         source is in Bugzilla).
6807         
6808         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
6809         FALSE on class loading failure instead of returning true.
6810
6811         * class.c (mono_class_create_from_typedef): It is possible for
6812         mono_metadata_interfaces_from_typedef_full to fail if a class is
6813         not found, cope with this.
6814         
6815
6816 2006-06-14  Dick Porter  <dick@ximian.com>
6817
6818         * socket-io.c: 
6819         * process.c: Fix a bunch of signed/unsigned warnings from gcc
6820         4.1.1
6821
6822 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
6823
6824         * culture-info-table.h : oops, forgot to make it nsync with r61548.
6825
6826 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6827
6828         * icall.c: Another fix for building mono in Visual Studio.
6829
6830 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6831
6832         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
6833         
6834 2006-06-09  Martin Baulig  <martin@ximian.com>
6835
6836         * debug-mono-symfile.c: Put this back and really fix it this
6837         time. Sorry for all the trouble.
6838
6839 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
6840
6841         * icall.c (mono_class_get_throw): Fix a warning.
6842         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
6843         ReflectionTypeLoadException if needed. Fixes #78606.
6844
6845         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
6846         (mono_class_init): Ditto.
6847
6848         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
6849         ref_only exceptions.
6850         (mono_loader_clear_error): Make this work even if there is no error.
6851
6852 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
6853
6854         * object-internals.h marshal.c marshal.h icall.c: Implement method 
6855         Marshal.GetComSlotForMethodInfo using internal call.
6856
6857 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
6860         a function for signalling it.
6861
6862         * class.c (mono_class_from_typeref): Use the new kind of loader error when
6863         a referenced assembly is not found.
6864
6865         * loader.c (mono_loader_error_prepare_exception): Add support for 
6866         LOADER_ERROR_ASSEMBLY. Fix formatting.
6867
6868 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
6869
6870         * domain.c appdomain.c class-internals.h marshal.c: Add support 
6871         for VARIANT marshalling on windows and increment corlib version
6872         since Variant struct was added.
6873
6874 2006-06-03  Miguel de Icaza  <miguel@novell.com>
6875
6876         * debug-mono-symfile.c: Revert Martin's previous patch which broke
6877         stack trace line information:
6878
6879         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
6880         (Martin) when looking up B which is between A and C, return A not C.
6881
6882         Bug is #78573.
6883
6884         Thanks to Alexander Olk for tracking this down.
6885
6886 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
6887
6888         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
6889         
6890         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
6891         avoid clobbering its value.
6892         (mono_string_to_lpstr): Fix a warning on windows.
6893
6894 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6895
6896         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
6897
6898         * reflection.c loader.c: Removed references to 'dummy' flag.
6899
6900         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
6901
6902         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
6903         it gets GC tracking.
6904
6905         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
6906         GC tracking.
6907         
6908         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
6909
6910         * marshal.c threadpool.c: Update callers of mono_async_result_new.
6911
6912         * appdomain.c: Bump corlib version.
6913
6914 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6915
6916         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6917         CEE_STIND_REF when working with object references.
6918
6919 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6920
6921         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
6922         Fixes #78539.
6923
6924 2006-05-30  Miguel de Icaza  <miguel@novell.com>
6925
6926         * loader.c (method_from_memberref): Fix argument value for
6927         mono_loader_set_error_method_load (I was passing the MonoClass
6928         instead of the class name char *).
6929
6930 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6931
6932         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6933         CEE_STIND_REF when working with object references.
6934
6935 2006-05-30  Martin Baulig  <martin@ximian.com>
6936
6937         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
6938         mono_method_full_name() change and replace the ':' with a '.'
6939         here.
6940
6941 2006-05-30  Martin Baulig  <martin@ximian.com>
6942
6943         * debug-mono-symfile.c
6944         (mono_debug_symfile_lookup_location): Fix the algorithm:
6945         when looking up B which is between A and C, return A not C.
6946
6947 2006-05-29  Martin Baulig  <martin@ximian.com>
6948
6949         * mono-debug.h
6950         (MonoDebugMethodInfo): Make the typedef public.
6951         (MonoDebugSourceLocation): New public struct.
6952
6953         * mono-debug.c
6954         (mono_debug_source_location_from_address): Removed.
6955         (mono_debug_source_location_from_il_offset): Removed.
6956         (mono_debug_il_offset_from_address): Removed.
6957         (mono_debug_address_from_il_offset): Removed.
6958         (mono_debug_lookup_method): New public function.
6959         (mono_debug_lookup_source_location): New public function; replaces
6960         the old mono_debug_source_location_from_*() functions; see the
6961         inline documentation.
6962         (mono_debug_free_source_location): New public function.
6963         (mono_debug_print_stack_frame): New public function; see the
6964         inline documentation.
6965
6966         * debug-mono-symfile.c
6967         (mono_debug_find_source_location): Renamed into
6968         mono_debug_symfile_lookup_location(); only take a
6969         `MonoDebugMethodInfo *' and an `offset' argument; added inline
6970         documentation.
6971         (mono_debug_find_method): Renamed into
6972         mono_debug_symfile_lookup_method().
6973
6974 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * assembly.c (mono_assembly_open_full): Dont overwrite the status
6977         returned by mono_image_open_full ().
6978
6979         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
6980         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
6981         #78517.
6982
6983         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
6984         #78518.
6985
6986 2006-05-27  Miguel de Icaza  <miguel@novell.com>
6987
6988         * class.c (mono_class_from_typeref): handle missing images
6989         earlier, deals with bug #78418.   Refactor code; 
6990
6991         Fix a warning introduced in my previous commit (some stale code
6992         from before I revisited my patch).
6993
6994         * class.c (mono_class_create_from_typedef): On failure, remove the
6995         class from the MonoImage->class_cache as the class is not
6996         initialized;   Fixes the leak pointed out by Paolo.
6997
6998 2006-05-25  Dick Porter  <dick@ximian.com>
6999
7000         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
7001         DeleteCriticalSections until I figure out which one may still be
7002         sometimes locked when mono_thread_cleanup is called.
7003
7004 2006-05-24  Dick Porter  <dick@ximian.com>
7005
7006         * threads.c (mono_thread_cleanup): Move the threading cleanup out
7007         of mono_thread_manage and back into its own function, so it can be
7008         called after the finalizer thread has finished.
7009
7010         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
7011
7012 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
7013
7014         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
7015         Fixes #78495.
7016
7017         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
7018         with non-blittable elements.
7019         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
7020
7021 2006-05-24  Martin Baulig  <martin@ximian.com>
7022
7023         * mono-debug-debugger.h (MonoDebuggerEvent): Added
7024         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
7025
7026         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
7027         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
7028         `mono_debugger_event_handler' to NULL.
7029
7030 2006-05-24  Martin Baulig  <martin@ximian.com>
7031
7032         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
7033
7034 2006-05-24  Martin Baulig  <martin@ximian.com>
7035
7036         * mono-debug-debugger.h
7037         (mono_debugger_create_notification_function): Added
7038         `MonoCodeManager *' argument.
7039
7040 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
7041
7042         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
7043
7044 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
7045
7046         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
7047         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
7048         implementation.
7049
7050 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
7051
7052         * icall.c: precise GC support: objects can't be stored in unmanaged
7053         memory anymore, even if they are kept alive by other references: since
7054         they can move the GC needs to be able to always find them.
7055
7056 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
7057
7058         * object.c: precise GC support for static fields. Support
7059         for moving GCs: write barriers and pinned allocation for interned
7060         strings.
7061
7062 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7063
7064         * domain.c, domain-internals.h: precise GC support for the MonoDomain
7065         structure.
7066
7067 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7068
7069         * class.c, gc.c: sgen and precise GC updates.
7070
7071 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
7072
7073         * marshal.h, marshal.c: added write barrier wrapper and precise type
7074         fixes.
7075
7076 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
7077
7078         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
7079         support.
7080
7081 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
7082
7083         * reflection.c: precise and sgen GC updates.
7084
7085 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
7086
7087         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
7088
7089 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
7090
7091         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
7092
7093 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
7094
7095         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
7096         MONO_TYPE_OBJECT. Fixes #78462.
7097
7098 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
7099
7100         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
7101         and blittable types.
7102
7103 2006-05-17  Miguel de Icaza  <miguel@novell.com>
7104
7105         * class.c (mono_class_get_exception_for_failure): Implement parts
7106         of a TODO: if the loader error is set (instead of the class
7107         error), we return a Loader exception that can be properly thrown
7108         elsewhere.
7109
7110         This was exposed by some Winforms 2.0 code that I tried to run
7111         (Atsushi pointed me to it).
7112
7113 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
7116         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
7117         
7118         * marshal.c (emit_marshal_vtype): Add limited support for 
7119         UnmanagedType.LPStruct. Fixes #78427.
7120
7121         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
7122         Applied a patch from kangaroo to fix #77523.
7123
7124 2006-05-17  Martin Baulig  <martin@ximian.com>
7125
7126         * threads.c
7127         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
7128         (debugger_thread_created): Removed.
7129         (debugger_thread_exited): Removed.
7130
7131 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7134
7135         * object-internals.h (MonoReflectionResource): Sync with managed version.
7136
7137 2006-05-12  Wade Berrier <wberrier@novell.com>
7138
7139         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
7140
7141 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
7142
7143         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
7144         functions try to allocate from the image mempool.
7145
7146 2006-05-12  Dick Porter  <dick@ximian.com>
7147
7148         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
7149
7150 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
7151
7152         * object.c: The FieldGetter and FieldSetter methods require the full
7153         name of the class, not only the name. Fixes bug #78277.
7154
7155 2006-05-11  Miguel de Icaza  <miguel@novell.com>
7156
7157         * loader.c (method_from_memberref): Do not pass the NULL klass to
7158         mono_loader_set_error_() methods.  Pass the non-NULL value
7159         (class). 
7160
7161 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
7162
7163         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
7164         (mono_assembly_close): Null out assembly->image->references after freeing it.
7165
7166         * image.c (mono_image_close): Free image->references.
7167         
7168         * reflection.c (mono_image_basic_init): Fix a small memory leak.
7169
7170 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
7171
7172         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
7173         before checking if it's NULL (g_assert).
7174
7175 2006-05-10  Martin Baulig  <martin@ximian.com>
7176
7177         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
7178         I thought I already killed that two months ago, but now it somehow reappeared.
7179
7180 2006-05-10  Martin Baulig  <martin@ximian.com>
7181
7182         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
7183
7184 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
7185
7186         * reflection.c: Allocate memory for dynamically created methods in the image
7187         mempools.
7188
7189 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
7190
7191         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
7192         don't use the ad pointer before checking if it's NULL (g_assert).
7193
7194 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
7197         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
7198
7199         * marshal.c: Allocate all signatures from mempools.
7200
7201         * marshal.c: Allocate some more signatures from mempools.
7202
7203 2006-05-09  Miguel de Icaza  <miguel@novell.com>
7204
7205         * object.c (mono_load_remote_field): The code used to provide a
7206         temporary variable for returning results if the user did not
7207         provide a result pointer.  But our temporary variable was allocted
7208         on the satck.
7209
7210         Fix calling code to always pass a result area.   Coverity ID 103.
7211
7212 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
7213
7214         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
7215         value, not the old. Fixes #78312.
7216         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
7217
7218         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
7219         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
7220         per-image cache.
7221
7222         * assembly.c (mono_assembly_close): Free image->references.
7223
7224         * assembly.c (mono_assembly_names_equal): Fix a warning.
7225         (mono_assemblies_cleanup): Cleanup more global data.
7226
7227         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
7228
7229         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
7230         ptr_cache and image->modules.
7231
7232         * image.c (mono_image_init): Allocate array_cache lazily.
7233         
7234 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7235
7236         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
7237         behavior was changed recently and has bad side effects.
7238
7239 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
7240
7241         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
7242         
7243         * assembly.c (mono_assembly_close): Remove a debug printf.
7244
7245         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
7246
7247         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
7248         to also allow for temporary references between mono_image_open ()/close ().
7249
7250         * domain.c (get_runtimes_from_exe): Add a FIXME.        
7251
7252 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * marshal.c: Fix support for dynamic methods.
7255
7256         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
7257
7258         * marshal.c (mono_marshal_cleanup): New cleanup function.
7259
7260         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
7261         image mempools.
7262
7263         * class.c (mono_class_init): Fix leaking class->nested_classes.
7264
7265         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
7266
7267         * image.c (mono_image_init): Initialize the new cashes.
7268
7269         * image.c (mono_image_close): Destroy the new cashes.
7270
7271         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
7272
7273         * mempool.c (mono_mempool_strdup): New helper function.
7274
7275         * class-internals.h: Add prototype for mono_loader_unlock ().
7276
7277         * domain.c (mono_jit_info_table_find): Fix a warning.
7278         (mono_debugger_check_runtime_version): Ditto.
7279
7280         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
7281         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
7282         functions to these modules.
7283
7284         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
7285         metadata modules.
7286         
7287         * marshal.c (mono_free_bstr): Fix a warning.
7288
7289         * assembly.c (mono_assembly_open_full): Fix another small leak.
7290
7291         * object.c: Fix some unload leaks in the remoting code.
7292
7293         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
7294         function.
7295
7296         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
7297
7298         * reflection.c: Fix some unload leaks in dynamic assemblies.
7299
7300 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
7301
7302         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
7303         * marshal.h: Add BSTR support on Win32
7304         * icall.c: Add BSTR icalls
7305         * metadata.h: Add BSTR enums
7306
7307 2006-04-28  Miguel de Icaza  <miguel@novell.com>
7308
7309         Work to catch the crash from #76795 and turn it into an
7310         exception.   As I stubbed out pieces of the VisualBasic support,
7311         I found a number of places where the code was failing and I added
7312         checks to those places. 
7313         
7314         * metadata.c (do_mono_metadata_parse_generic_class): Make this
7315         function return a status code.  If we fail to parse the signature
7316         from mono_metadata_parse_generic_inst, return FALSE.
7317
7318         * loader.c (mono_get_method_from_token): If we fail to load the
7319         method (mono_class_get) return NULL.   
7320
7321         * (method_from_memberref): Return NULL if we are unable to parse
7322         the method signature
7323
7324         (mono_loader_error_prepare_exception): Since we now use the
7325         loader_error flag internally to stop processing, and obtaining
7326         exceptions that might be thrown will walk this code path the
7327         proper way of going from a MonoLoaderError into a
7328         MonoException was convoluted.   This new routine encapsulates the
7329         process of turning the error into an exception and *clearing* the
7330         error afterwards.
7331         
7332 2006-04-27  Miguel de Icaza  <miguel@novell.com>
7333
7334         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
7335         with missing assemblies), and to cope with:
7336
7337                 * Missing fieldref from a non-existing assembly.
7338                 * Missing methodref from a non-existing assembly.
7339
7340         The first batch of work to address *some* of the issues from 76661.
7341         
7342         * object.c (mono_class_create_runtime_vtable): If we fail to
7343         initialize the class raise the exception here. 
7344
7345         * metadata.c (mono_class_get_overrides_full): If any methods fail
7346         to load return the failure to the caller.
7347
7348         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
7349         flagging assemblies that failed to load.   
7350
7351         Do not crash if we are unable to load the assembly.
7352
7353         (mono_assembly_close): Do nothing with REFERENCE_MISSING
7354         assemblies. 
7355
7356         * loader.c (mono_loader_set_error_type_load): Change the
7357         convention to always pass unallocated strings, so we make our own
7358         copies (I know our own code had duplicated strings before, but
7359         this keeps the normal conventions).
7360         (method_from_memberref): Call mono_loader_set_error_method_load
7361         for all possible failures of loading the class. 
7362         Remove assert, turn into a loader error.
7363
7364         (mono_loader_error_to_exception): Move this routine from mini
7365         (mini_loader_error_to_exception) there was no need to have that in
7366         mini. 
7367
7368         * class.c (mono_class_from_typeref): If we were not able to load
7369         the assembly with mono_assembly_load_reference, call the
7370         mono_loader_set_error_type_load to register the problem.
7371
7372         (mono_class_setup_fields): If we fail to load the type from
7373         mono_metadata_parse_type_full, call mono_class_set_failure and
7374         break from the loop.
7375
7376         If class->exception_type is set, we do not layout the fields as
7377         that might crash the runtime, and instead return (from breaking
7378         from the previous loop).
7379
7380         (mono_class_setup_vtable): This now returns a boolean indicating
7381         whether the table was properly setup.   The decision is driven by
7382         mono_class_get_overrides_full which might run into non-existing
7383         methods. 
7384         
7385         (mono_class_init): Returns TRUE on success or FALSE if there was a
7386         problem in loading the type (incorrect assemblies, missing
7387         assemblies, methods, etc).
7388
7389         When we call mono_class_setup_fields we also check for a potential
7390         error inside this call (either a class exception or a general
7391         loader exception).
7392
7393         (mono_class_create_from_typedef): If the parent fails to load
7394         (calling mono_class_get_full) return NULL.
7395         
7396         ** Important **
7397
7398         calls to mono_metadata_parse_type_full should be checked
7399         everywhere and set the mono_class_set_failure
7400         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
7401
7402         The current patch checks the places where my manually constructed
7403         tests show the errors are showing up, but we should do it
7404         everywhere. 
7405
7406         ** Important2 **
7407
7408         mono_class_init return values should be tested everywhere, like
7409         the previous case this is something that we should audit
7410         everywhere and not only on the cases exposed by the tests I
7411         created. 
7412
7413 2006-04-26  Miguel de Icaza  <miguel@novell.com>
7414
7415         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
7416         boolean parameter and instead pass the information on `options'
7417         parameter (FileOptions).
7418
7419         * icall.c: Register the new signature for MonoIO.Open.
7420
7421         * debug-helpers.c (dis_one): Trying to understand how coverity
7422         works.  Fix Run 5, item 78.
7423
7424 2006-04-26  Dick Porter  <dick@ximian.com>
7425
7426         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
7427         dereference.
7428
7429 2006-04-25  Martin Baulig  <martin@ximian.com>
7430
7431         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
7432
7433         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
7434         debugger_thread_created().
7435         (debugger_gc_push_all_stacks): Don't handle the main thread in any
7436         special way.
7437         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
7438         (mono_debugger_finalize_threads): New function; undo the effects
7439         of mono_debugger_init_threads().
7440         (mono_debugger_create_all_threads): Removed.
7441
7442 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
7443
7444         * image.c (mono_image_close): Tidy up trace messages.
7445
7446         * assembly.c (mono_assembly_close): Ditto.
7447
7448         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
7449         no longer references an already freed assembly. Fixes #78168.
7450
7451 2006-04-21  Dick Porter  <dick@ximian.com>
7452
7453         * threads.c (mono_thread_detach): Fix reference counting when
7454         detaching threads.
7455
7456 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
7459         #78155.
7460
7461 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
7462
7463         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
7464         (mono_type_to_stind): Ditto.
7465
7466         * marshal.c: Use the new helper functions to simplify code.
7467
7468         * image.c (mono_image_close): Add some code for help debug assembly unloading
7469         problems.
7470
7471         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
7472         image mempool.
7473
7474         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
7475         assembly was already loaded in another appdomain. Fixes #78083.
7476
7477 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
7480         referenced assemblies.
7481         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
7482
7483         * domain.c (mono_domain_free): Add a trace message.
7484
7485         * appdomain.c (add_assemblies_to_domain): Ditto.        
7486
7487         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
7488         field.  
7489
7490 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
7491
7492         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
7493
7494 2006-04-12  Martin Baulig  <martin@ximian.com>
7495
7496         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
7497         `USE_INCLUDED_LIBGC'.   
7498
7499 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
7502         the patch contains ../ and a small directory name later. Hopefully fixes
7503         #78035.
7504
7505 2006-04-10  Martin Baulig  <martin@ximian.com>
7506
7507         Clean up the debugger's thread-handling code.
7508
7509         The debugger's thread-handling code has been moved from
7510         ../mini/debug-debugger.c to threads.c.  We now iterate directly
7511         over the `threads' hash, keep track of exiting threads and also
7512         use proper locking.
7513
7514         We can now debug XSP and XSP based applications with the debugger.
7515
7516         * object-internals.h (MonoThread): Added `gpointer end_stack'.
7517
7518         * threads.h
7519         (MonoThreadCallbacks): Removed; this was only used by the debugger.
7520         (mono_install_thread_callbacks): Likewise.      
7521
7522         * threads.c (mono_thread_callbacks): Removed.
7523         (debugger_thread_created, debugger_thread_exited): New static functions.
7524         (start_wrapper): Call debugger_thread_created().
7525         (thread_cleanup): Call debugger_thread_exited().
7526         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
7527         (mono_debugger_init_threads): New public function.
7528         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
7529         iterate directly over the `threads' hash and also use proper locking.
7530
7531         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
7532
7533         * mono-debug-debugger.h
7534         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
7535
7536 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
7537
7538         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
7539         argument type=array. Fixes #78057.
7540
7541 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
7542
7543         * culture-info-table.h : regenerated. Fixed bug #69652.
7544
7545 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * loader.c metadata.c: Reapply a variant r59116.
7548         
7549         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
7550
7551         * class.c (mono_class_setup_interface_offsets): New internal function.
7552
7553         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
7554         interfaces too. Fixes #77398.
7555
7556         * reflection.c (encode_cattr_value): Add support for 
7557         parameter type=object, argument type=array.
7558         (load_cattr_value): Ditto. Fixes #77916.
7559
7560         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
7561         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
7562
7563         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
7564         a byval char array and CharSet is Ansi.
7565
7566         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
7567
7568 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * metadata.c: Add some locking comments.
7571         
7572         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
7573         mempool.
7574         (mono_metadata_free_method_signature): Don't free the signature itself.
7575
7576         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
7577
7578         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
7579         reference the same MonoImage.
7580         (mono_assembly_load_from_full): Add an assert.
7581
7582 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
7583
7584         * image.c (mono_image_close): Don't put the image we are about to free into the
7585         loaded_images_guid_hash.
7586
7587         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
7588         to reduce code duplication.
7589
7590         * marshal.c: Register the native functions called by this module as icalls, to
7591         somewhat centralize the creation of MonoMethodSignature's.
7592
7593         * loader.c (mono_method_signature): Add a cache for method signatures.
7594
7595         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
7596         the parameter attributes of a method.
7597         (mono_metadata_parse_method_signature_full): Refactored the computation of
7598         parameter attributes into a separate function. Also avoid one allocation in
7599         most cases.
7600
7601         * assembly.c (mono_assembly_close): Ditto.
7602
7603         * image.c (mono_image_close): Log trace messages with INFO level.
7604
7605         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
7606
7607         * image.c reflection.c: Correct reference counting of image modules.
7608         
7609         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
7610         of this function from the image mempool.
7611         
7612         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
7613         to allow more cached types to be used.
7614
7615         * mono-debug.c (mono_debug_add_method): Appled patch from
7616         David S. Miller  <davem@sunset.davemloft.net>: Access 
7617         minfo->lexical_blocks[] entry elements using read32().
7618
7619 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * loader.c (mono_free_method): No longer free the method header for non-dynamic
7622         methods as it is allocated from the mempool.
7623
7624         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
7625         image mempool.
7626
7627         * metadata-internals.h: Add comments describing the reference counting scheme
7628         used for MonoImage and MonoAssembly.
7629
7630         * image.c assembly.c reflection.c: Rework reference counting of images and 
7631         assemblies so they are freed when the runtime is shut down. Free some 
7632         additional memory structures when an image is unloaded.
7633         
7634 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * class.c loader.c reflection.c: Allocate more data structures in
7637         the image mempool.
7638
7639 2006-03-31  Miguel de Icaza  <miguel@novell.com>
7640
7641         * icall.c
7642         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
7643         build on pre glib 2.4 systems.
7644
7645 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
7648
7649         * icall.c: Fix some warnings.
7650
7651 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
7652
7653         * culture-info-table.h : regenerated.
7654
7655 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
7656
7657         * threads.c, object-internals.h, verify.c: changed the culture caching
7658         code to use a normal MonoArray for storage so the GC can keep track of
7659         them easily. Fixed bits of the cache logic, too and simplified the
7660         code.
7661
7662 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
7663
7664         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
7665         thread for non-Boehm GCs.
7666
7667 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7668
7669         * domain.c, object.c, domain-internals.h: reduce the amount of memory
7670         needed to keep track of the data for static fields.
7671
7672 2006-03-29  Raja R Harinath  <rharinath@novell.com>
7673
7674         Fix #75172
7675         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
7676         for interface classes.  Use 'num_methods' instead.
7677         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
7678         before using '->vtable_size' field.
7679
7680 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
7681
7682         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
7683         doesn't contain managed pointers, so use a normal hashtable.
7684
7685 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
7686
7687         * reflection.c, class-internals.h, domain.c: fixed handling of types
7688         used as values for objects in custom attributes (bug #77915):
7689
7690 2006-03-24  Martin Baulig  <martin@ximian.com>
7691
7692         * class.c (mono_class_setup_fields): Added support for generic
7693         instances; fixes #77580.
7694
7695 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7696
7697         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
7698
7699 2006-03-24  Dick Porter  <dick@ximian.com>
7700
7701         * file-io.c (get_file_attributes): More stat macro breakage.
7702         Fixes bug 77759.
7703
7704 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
7705
7706         * profiler.c: added the file=filename option in the default profiler
7707         to output the profile data to filename.
7708
7709 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7710
7711         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
7712         bug #77877.
7713
7714 2006-03-22  Martin Baulig  <martin@ximian.com>
7715
7716         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
7717         allocated `MonoClassField *' in `fb->handle'.
7718
7719 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7720
7721         * class.c, image.c, metadata-internals.h: implemented new mechanism to
7722         allocate interface ID to save memory and allow better ID reuse on
7723         appdomain unload. setup_generic_vtable () removal from Martin.
7724
7725 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7726
7727         * object.h, appdomain.c, domain.c, exception.c, icall.c,
7728         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
7729         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
7730         write barriers for reference stores with managed objects accessed with
7731         C structures in the runtime and in embedding programs.
7732
7733 2006-03-20  Raja R Harinath  <rharinath@novell.com>
7734
7735         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
7736         'interface_id' and 'max_interface_id' fields of MonoClasses
7737         representing open generic types.
7738
7739 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
7740
7741         * object.h, object.c, icall.c: added functions to deal with
7742         storing valuetypes that contain references in managed objects.
7743         * reflection.c, string-icalls.c, threads.c, marshal.c: small
7744         fixes and comments around uses of mono_array_addr ().
7745
7746 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
7747
7748         * object.h, icall.c, monitor.c: object.GetHashCode ()
7749         implementation that supports the moving garbage collector.
7750
7751 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
7752
7753         * icall.c, threads-types.h, threads.c: implemented finalizer for
7754         LocalDataStoreSlot.
7755
7756 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * metadata.c (mono_type_size): Add a fixme.
7759         (mono_type_stack_size): Ditto.
7760
7761         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
7762         'type_forwarders' field.
7763
7764         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
7765         attribute from net 2.0.
7766
7767         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
7768         from class.c.
7769
7770         * class.c (mono_class_setup_fields): Fix a warning.
7771         
7772         * class.c (mono_class_from_name): Add support for assemblyref entries
7773         in the EXPORTEDTYPE table.
7774
7775         * reflection.c: Add support for handling type forwarders under net 2.0.
7776
7777         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
7778         
7779 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
7780
7781         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
7782         overwriting entries in ModuleBuild->types, also clean up the code
7783         a little. Fixes #77774.
7784
7785 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
7786
7787         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
7788         load friend assembly info when present.
7789
7790 2006-03-14  Raja R Harinath  <rharinath@novell.com>
7791
7792         Fix crasher on gtest-158.cs.
7793         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
7794         the return value if the MonoClass we want is yet in an
7795         inconsistent state.
7796         * class.c (mono_class_create_from_typedef): Add an comment
7797         explaining an order dependency between mono_class_setup_parent and
7798         mono_class_setup_mono_type.
7799
7800 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
7801
7802         * class.c: documentation updates and events bug fix.
7803
7804 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7805
7806         * class.c: some cleanup, locking fixes.
7807
7808 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
7809
7810         * class.c: fix the generics code to setup nested
7811         type info to the instantiated type (bug #77770).
7812
7813 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7814
7815         * marshal.c: fixed a few type correctness issues.
7816
7817 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7818
7819         * loader.c: the Set/Get/Addrtess array methods should be public.
7820
7821 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
7822
7823         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
7824         
7825         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
7826         info->wrapper.
7827
7828 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
7831
7832         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
7833
7834         * mempool.c (mono_mempool_alloc): Speed this up a bit.
7835         (mono_mempool_alloc0): Ditto.
7836
7837 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7838
7839         * socket-io.c:
7840         (create_object_from_sockaddr): it was allocating 4 extra bytes
7841         for the AF_UNIX data. Fixes bug #77747.
7842
7843 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
7844
7845         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
7846
7847 2006-03-09  Dick Porter  <dick@ximian.com>
7848
7849         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
7850         Fixes bug 76966 again.
7851
7852 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
7853
7854         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
7855         names from r57532
7856         * appdomain.c: Bumped corlib version to 48 (due to r57532)
7857
7858 2006-03-07  Martin Baulig  <martin@ximian.com>
7859
7860         * object.c
7861         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
7862
7863 2006-03-07  Martin Baulig  <martin@ximian.com>
7864
7865         * class.c
7866         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
7867         regression introduced in r56970; see gtest-252.cs.
7868
7869         * loader.c (mono_get_method_constrained): Correctly handle generic
7870         methods; see gtest-253.cs.
7871
7872 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
7875
7876 2006-03-04  Martin Baulig  <martin@ximian.com>
7877
7878         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
7879         compute the parent type at runtime, just like we're already doing
7880         it for interfaces.
7881
7882         * reflection.c
7883         (mono_reflection_bind_generic_parameters): Don't compute the
7884         parent type anymore.
7885
7886         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
7887
7888 2006-03-04  Martin Baulig  <martin@ximian.com>
7889
7890         * mono-debug-debugger.h
7891         (mono_debugger_create_notification_function): Allocate memory at
7892         runtime and return a pointer to it.
7893
7894 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * assembly.c: Fix windows build.
7897         
7898         * assembly.c: Fix build.
7899
7900         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
7901
7902         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
7903         
7904 2006-03-03  Dick Porter  <dick@ximian.com>
7905
7906         * process.c
7907         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
7908         Check parameters before dereferencing them.  Fixes Aaron's part of
7909         bug 77393.
7910
7911 2006-03-03  Raja R Harinath  <rharinath@novell.com>
7912
7913         Fix performance regression.
7914         * loader.c (find_method_in_class): Add 'from_class' argument.
7915         Rename 'klass' argument to 'in_class'.  The signature is compared
7916         against the method in 'in_class', and the corresponding method is
7917         returned from 'from_class'.
7918         (find_method): Walk both 'in_class' and 'from_class' in parallel.
7919         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
7920         type definition and generic instantiation in parallel.
7921         (mono_get_method_constrained): Update to changes.
7922
7923 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
7924
7925         * threads.c: make sure the domain is correct, too when doing
7926         mono_thread_attach ().
7927
7928 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
7929
7930         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
7931         windows. Fixes #77683.
7932
7933 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
7934
7935         * object.h, *: introduced specific way to set elements of an array
7936         of references to be used as write barrier. Still need to audit the
7937         uses of mono_array_addr.
7938
7939 2006-03-01  Miguel de Icaza  <miguel@novell.com>
7940
7941         * object-internals.h: New field to cache the assmebly name, patch
7942         from Tambet Ingo (tambet@ximian.com)
7943
7944 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7945
7946         * decimal.h, class-internals.h, metadata-internals.h,
7947         file-io.h: mark a few function declarations as internal, to
7948         reduce the number of PLT entries.
7949
7950 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7951
7952         * file-io.c: fix typo in warning message.
7953
7954 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
7955
7956         * loader.c: on unix, lookup the "*A" version of a function
7957         if charset is auto as a second option before failing.
7958
7959 2006-02-28  Raja R Harinath  <rharinath@novell.com>
7960
7961         * class.h (mono_class_inflate_generic_method): Revert to two
7962         argument version.
7963         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
7964         (mono_class_inflate_generic_method_full): Add.
7965         * class.c (mono_class_inflate_generic_method_full): Rename from
7966         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
7967         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
7968         * loader.c, reflection.c: Update to changes.
7969
7970 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
7971
7972         * icall.c: const fixes and small improvements.
7973
7974 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7975
7976         * threadpool.c: for asynchronous connect(), enable the same workaround
7977         for BSD 6 as for the Mac. Fixes bug #77637.
7978
7979 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
7982         formatted classes. Fixes #77524.
7983
7984 2006-02-24  Raja R Harinath  <rharinath@novell.com>
7985
7986         * class.c (inflate_generic_type): Add a couple more
7987         micro-optimizations.
7988         (inflate_generic_context): Don't use the 'gmethod' from
7989         'inflate_with'.
7990         (mono_class_inflate_generic_method): If the method has generic
7991         parameters, but the passed-in context doesn't have a 'gmethod',
7992         create one.  Use the possibly simplified generic instantiation
7993         from the declaring class instead of the one passed in.
7994
7995 2006-02-24  Raja R Harinath  <harinath@gmail.com>
7996
7997         Make generic method signature and method header handling lazy.
7998         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
7999         (inflate_generic_header): Likewise.
8000         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
8001         parameter to avoid inflating types.
8002         (mono_get_inflated_method): Empty out.
8003         * class.h (mono_class_inflate_generic_method): Update to changes.
8004         * loader.c (mono_get_method_from_token): Don't parse signature for
8005         generic methods, nor methods of generic classes.
8006         (mono_method_signature): Rename from 'mono_method_signature'.
8007         Inflate signature on demand.
8008         (mono_method_get_header): Inflate method header on demand.
8009         * reflection.c: Update to changes.
8010
8011 2006-02-23  Raja R Harinath  <rharinath@novell.com>
8012
8013         * metadata.c (mono_metadata_inflate_generic_inst): If the
8014         instantiation is closed, don't bother expanding it in the new
8015         context.
8016         * class.c (inflate_generic_class): If the generic instantiation
8017         doesn't change after inflation, return the argument itself.
8018         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
8019         Add bounds checks.
8020         (inflate_generic_context): If neither the generic class nor the
8021         generic method instantiations change, return the original context.
8022         * reflection.c (mono_method_get_object): Do
8023         'mono_get_inflated_method' before accessing the ->klass field.
8024         (inflate_mono_method): Don't create a MonoGenericMethod unless
8025         necessary.
8026         (inflate_method): Don't pass a constructed type as the declaring
8027         type of a methodbuilder.
8028
8029 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
8030
8031         * object.c: fix memory overwrite.
8032
8033 2006-02-22  Dick Porter  <dick@ximian.com>
8034
8035         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
8036         it doesn't work any more.
8037         (mono_threads_request_thread_dump): Fix unused variable warnings.
8038
8039 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8040
8041         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
8042         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
8043         the public header file.
8044
8045 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
8048
8049 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8050
8051         * class-internals.h, object.c: reduce the size of MonoVTable
8052         and store the interface_offsets array at negative offsets.
8053
8054 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8055
8056         * metadata.c: tweak table descriptors data structures to reduce
8057         size and runtime relocations.
8058
8059 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8060
8061         * marshal.c: fix some types and opcodes to be type-safe
8062         in marshaling wrappers.
8063
8064 2006-02-21  Ankit Jain  <jankit@novell.com>
8065
8066         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
8067
8068 2006-02-21  Raja R Harinath  <rharinath@novell.com>
8069
8070         * metadata.c (get_constraints): Relax debugging checks for monodis.
8071
8072 2006-02-21  Ankit Jain  <jankit@novell.com>
8073
8074         * metadata.c (mono_metadata_load_generic_params): Move the code
8075         checking for ambiguous generic params from here to mono/dis/get.c
8076         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
8077
8078 2006-02-21  Raja R Harinath  <harinath@gmail.com>
8079
8080         Fix assertion triggered when compiling nemerle.
8081         * class.c (mono_get_shared_generic_inst): Rename from
8082         get_shared_inst and make non-static.
8083         * loader.c (mono_get_shared_generic_method): New.  Used to create
8084         the MonoGenericContext-equivalent of a MonoGenericContainer.
8085         (mono_get_method_from_token): Initialize the 'context' field of
8086         the created MonoGenericContainer.
8087         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
8088         * metadata.c (get_constraints): Add sanity check.
8089         * class-internals.h: Add new internal methods.
8090
8091         * reflection.c (verify_safe_for_managed_space): New sanity check.
8092         Currently checks that owner-less generic parameters aren't allowed
8093         in managed space.
8094         (mono_type_get_object): Use it.
8095         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
8096         that are now in mono_type_get_object.
8097         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
8098
8099 2006-02-19  Raja R Harinath  <harinath@gmail.com>
8100
8101         * metadata.c (mono_type_create_from_typespec): Rename from
8102         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
8103         argument and caching of types in the generic container.
8104         (unwrap_arrays, find_generic_param): Remove.
8105         * metadata-internals.h: Update.
8106         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
8107
8108 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * class.c (mono_class_get_exception_for_failure): Fix a warning.
8111
8112         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
8113         return values. Fixes #77581.
8114
8115         * class.c (mono_fnptr_class_get): Switch name and name_space.
8116
8117         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
8118         classes and add support for [In, Out] attributes.
8119         (mono_marshal_free_asany): Ditto. Fixes #77524.
8120
8121 2006-02-18  Raja R Harinath  <harinath@gmail.com>
8122
8123         * class.c (mono_class_from_generic_parameter): Make more robust to
8124         incomplete MonoGenericContainers from monodis.
8125
8126 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8127
8128         * class-internals.h: added some more exception types.
8129         * class.c, metadata.c: added a few checks to handle missing
8130         types.
8131
8132 2006-02-17  Raja R Harinath  <rharinath@novell.com>
8133
8134         Use owner-less generic-params some more.
8135         * class.c (my_mono_class_from_generic_parameter): Remove.
8136         (mono_class_from_generic_parameter): Handle null image,
8137         param->name and param->owner.
8138         (mono_class_from_mono_type): Update.
8139         (mono_class_create_from_typespec): Remove 'container' parameter.
8140         If that parameter is non-null, the result is always inflated by
8141         'mono_class_get_full' anyway.
8142         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
8143         parameter.
8144         (mono_class_get_full): Update.
8145
8146         * class.c (inflate_generic_type) [GENERICINST]: If the generic
8147         instance is not open, don't bother inflating.
8148         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
8149         parse metadata for inflated classes.
8150         (_mono_class_get): Change GenericContext* parameter to
8151         GenericContainer*.
8152         (mono_class_create_from_typespec): Likewise.  Simplify, and
8153         implement trivially.  All the cases are handled in
8154         mono_class_from_mono_type.  Don't inflate returned class.
8155         (mono_class_get_full): Delegate GENERICINST optimization to
8156         inflate_generic_type.
8157         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
8158
8159 2006-02-16  Dick Porter  <dick@ximian.com>
8160
8161         * socket-io.c (create_object_from_sockaddr): Fix typo.
8162         (create_sockaddr_from_object): Check array lengths before
8163         potentially accessing items off the end.
8164         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
8165         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
8166         (ves_icall_System_Net_Sockets_Socket_Send_internal)
8167         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
8168         length checks to avoid wraparound overflows.
8169         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
8170         contents of the array of sockets
8171         (hostent_to_IPHostEntry2)
8172         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
8173         Check return value of inet_ntop ().
8174         (addrinfo_to_IPHostEntry): Fix typo
8175
8176 2006-02-16  Raja R Harinath  <rharinath@novell.com>
8177
8178         Type metadata parsing doesn't use generic-instantiation information.
8179         * metadata.c (mono_metadata_parse_array_full): Change
8180         MonoGenericContext* parameter to MonoGenericContainer*.
8181         (mono_metadata_parse_type_full): Likewise.
8182         (mono_type_create_from_typespec_full): Likewise.
8183         (mono_metadata_parse_mh_full): Likewise.
8184         (mono_metadata_parse_generic_inst): Likewise.
8185         (do_mono_metadata_parse_generic_class): Likewise.
8186         (do_mono_metadata_parse_type): Likewise.
8187         * metadata-internals.h: Update to changes.
8188         * class.c (mono_class_find_enum_basetype): Likewise.
8189         (mono_class_setup_fields): Likewise.
8190         (mono_class_create_from_typespec): Likewise.
8191         * loader.c (method_from_methodspec): Likewise.
8192         (mono_get_method_from_token): Likewise.
8193         (mono_method_get_header): Likewise.
8194
8195 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8196
8197         * marshal.c: handle additional GENERICINST case (patch from
8198         Thong Nguyen <tum@veridicus.com>).
8199         Fix a few cases where LDIND_I/STIND_I was used for references.
8200
8201 2006-02-16  Raja R Harinath  <rharinath@novell.com>
8202
8203         * reflection.c (mono_reflection_get_token): Remove unused variable.
8204
8205 2006-02-16  Martin Baulig  <martin@ximian.com>
8206
8207         * reflection.c (mono_reflection_get_token): Add support for fields
8208         in instantiated generic types.
8209
8210         * icall.c
8211         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
8212
8213 2006-02-15  Martin Baulig  <martin@ximian.com>
8214
8215         * icall.c
8216         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
8217         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
8218         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
8219         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
8220
8221 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
8222
8223         * class.c, metadata.c, metadata.h, object.c, icall.c,
8224         marshal.c: changed mono_type_get_underlying_type () to do
8225         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
8226         Fixed handling of instantiated generic valuetypes (bug #75479).
8227
8228 2006-02-15  Raja R Harinath  <rharinath@novell.com>
8229
8230         * metadata.c (mono_metadata_decode_signed_value): Simplify.
8231         Delegate to mono_metadata_decode_value, and work on the returned value.
8232
8233         * icall.c (ves_icall_MonoType_GetGenericArguments):
8234         Add consistency check here too.
8235         
8236 2006-02-15  Ankit Jain  <jankit@novell.com>
8237
8238         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
8239         char/short etc.
8240
8241 2006-02-15  Ankit Jain  <jankit@novell.com>
8242
8243         * metadata.c (mono_metadata_decode_signed_value): New function to decode
8244         signed values, used only for representing lower bounds of arrays.
8245         (mono_metadata_parse_array_full): Use new
8246         mono_metadata_decode_signed_value to decode lower bounds.
8247
8248 2006-02-14  Martin Baulig  <martin@ximian.com>
8249
8250         * reflection.c
8251         (mono_reflection_get_token): Support "MonoGenericMethod" and
8252         "MonoGenericCMethod" and allow generic instances / methods.
8253
8254 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
8257         to obtain the terminal size using an ioctl.
8258
8259         * object.c (mono_nullable_init): Revert this as nullable reference
8260         types are not valid.
8261         (mono_nullable_box): Ditto.
8262
8263 2006-02-09  Dick Porter  <dick@ximian.com>
8264
8265         * threads.c (mono_thread_detach): Drop a reference to the thread
8266         we're detaching.
8267
8268 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * object.c (mono_nullable_init): Handle nullable reference types.
8271         (mono_nullable_box): Ditto. Fixes #77446.
8272
8273 2006-02-07  Martin Baulig  <martin@ximian.com>
8274
8275         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
8276
8277 2006-02-07  Ankit Jain  <jankit@novell.com>
8278
8279         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
8280         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
8281         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
8282         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
8283         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
8284         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
8285
8286 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * class.c (mono_class_create_generic): Set type_token as well.
8289
8290         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
8291         compatible with MS.
8292
8293 2006-02-02  Martin Baulig  <martin@ximian.com>
8294
8295         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
8296         has never been used so far.
8297
8298 2006-02-02  Martin Baulig  <martin@ximian.com>
8299
8300         * mono-debug-debugger.h: Changed comment at the top of this file;
8301         the header is not installed, but it's safe to #include it from
8302         within the JIT.
8303
8304         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
8305         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
8306
8307 2006-02-02  Martin Baulig  <martin@ximian.com>
8308
8309         * mono-debug.h
8310         (MonoSymbolTable): Removed the `metadata_info' field.
8311
8312         * mono-debug.c
8313         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
8314
8315         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
8316         (mono_debugger_add_builtin_types): Removed.
8317         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
8318         (mono_debugger_create_notification_function): We now operate on a
8319         pre-allocated area; take a `gpointer' and return `void'.
8320
8321         * mono-debug-debugger.c
8322         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
8323         (mono_debugger_add_builtin_types): Removed.
8324
8325 2006-02-02  Martin Baulig  <martin@ximian.com>
8326
8327         * threads.c (mono_debugger_create_all_threads): New public method.
8328
8329 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8330
8331         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
8332         breaks on several platforms.
8333
8334 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
8335
8336         * assembly.c: the VS.NET build doesn't supply default values for
8337         MONO_ASSEMBLIES and MONO_CFG_DIR.
8338
8339 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
8340
8341         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
8342         helper function.
8343
8344         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
8345
8346         * loader.c (method_from_memberref): Fix a warning.
8347
8348         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
8349
8350         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
8351         with explicit layout. Fixes #77433.
8352
8353 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
8354
8355         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
8356         max_interface_id is initialized before using it. Fixes #77398.
8357         (ves_icall_Type_GetInterfaces): Ditto.
8358
8359 2006-01-30  Raja R Harinath  <rharinath@novell.com>
8360
8361         * metadata.c (mono_metadata_parse_method_signature_full): Don't
8362         allocate memory for parameter attributes when parsing memberref
8363         signatures.
8364         * loader.c (mono_loader_set_error_method_load): Don't warn.
8365         (method_from_memberref): Ensure MissingMethodException gets thrown
8366         if method is not found.  Make warning more informative.
8367
8368 2006-01-29  Raja R Harinath  <harinath@gmail.com>
8369
8370         Fix #77397
8371         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
8372         return true if is byref.
8373         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
8374         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
8375         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
8376
8377 2006-01-27  Raja R Harinath  <rharinath@novell.com>
8378
8379         Fix tests/find-method.2.il
8380         * loader.c (find_method, find_method_in_class): Remove is_inflated
8381         argument.  Revert 2006-01-18 change.
8382         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
8383         is generic, search for method in its generic definition.
8384         * class.c (mono_class_setup_vtable_general): Print generic
8385         arguments of generic types in debugging printf.
8386
8387 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
8388
8389         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
8390
8391         * threads.c (mono_threads_request_thread_dump): New helper function.
8392
8393 2006-01-25  Raja R Harinath  <rharinath@novell.com>
8394
8395         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
8396
8397 2006-01-25  Ankit Jain  <jankit@novell.com>
8398
8399         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
8400         move definition to ..
8401         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
8402         
8403 2006-01-25  Ankit Jain  <jankit@novell.com>
8404             Raja R Harinath  <rharinath@novell.com>
8405
8406         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
8407         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
8408         as necessary.
8409
8410 2006-01-25  Martin Baulig  <martin@ximian.com>
8411
8412         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
8413         `MonoDebuggerThread' into debug-debugger.c.
8414
8415 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8416
8417         * profiler.c: fix printing of data.
8418
8419 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
8420
8421         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
8422           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
8423
8424 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
8425
8426         * object.c: fix deadlock related to string interning.
8427
8428 2006-01-23  Martin Baulig  <martin@ximian.com>
8429
8430         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
8431
8432         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
8433
8434 2006-01-23  Martin Baulig  <martin@ximian.com>
8435
8436         * mono-debug.h: Moved the prototypes of some functions which are
8437         used by the JIT here from mono-debug-debugger.h.
8438
8439 2006-01-21  Martin Baulig  <martin@ximian.com>
8440
8441         * Makefile.am: Don't install mono-debug-debugger.h.
8442
8443 2006-01-21  Martin Baulig  <martin@ximian.com>
8444
8445         * mono-debug-debugger.h: Enforce the private status of this header
8446         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
8447         Moved some stuff from mono-debugger-jit-wrapper.h here.
8448
8449 2006-01-20  Raja R Harinath  <rharinath@novell.com>
8450
8451         * class.c (mono_class_from_typeref): Add a sanity test to help
8452         catch lack of assembly load/search hooks.
8453
8454 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * marshal.c (emit_struct_conv): Relax the fields with same offset
8457         check even more. Fixes #77230.
8458
8459 2006-01-18  Martin Baulig  <martin@ximian.com>
8460
8461         * loader.c (find_method_in_class): Added `gboolean is_inflated'
8462         argument; if false, we compare the uninstantiated signatures.
8463         (method_from_memberref): Compare the uninstantiated signatures;
8464         fixes #76417.
8465
8466 2006-01-18  Robert Jordan  <robertj@gmx.net>
8467
8468         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
8469         Clear the weak link. Fixes bug #77170.
8470
8471         * gc.c (mono_gchandle_free):
8472         Reflect *-gc.c changes (tiny optimization).
8473
8474 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * metadata.c (mono_metadata_signature_dup): Applied patch from
8477         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
8478         Fixes #77288.
8479
8480 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
8481
8482         * marshal.c (emit_struct_conv): Allow fields with the same offset when
8483         marshalling from native to managed code. Fixes #77230.
8484
8485 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8486
8487         * threadpool.c: fix problem (Mac only) when more than one asynchronous
8488         connect. Fixes bug #77020.
8489
8490 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8491
8492         * class.c: fixed id assignement for nested interfaces (bug #77275).
8493         Added also better info for --print-vtable debugging.
8494
8495 2006-01-12  Martin Baulig  <martin@ximian.com>
8496
8497         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
8498         interfaces on-the-fly; fixes #76625.
8499
8500         * class-internals.h
8501         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
8502         don't need that anymore.
8503
8504 2006-01-12  Miguel de Icaza  <miguel@novell.com>
8505
8506         * socket-io.c
8507         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
8508         To avoid initing the nested_classes when not needed I turned the
8509         PeerCredData as a toplevel internal class, as it has to be shared
8510         anyways. 
8511
8512         Fixes the CASA issue.
8513
8514 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
8515
8516         * domain.c: Accessors for MonoJitInfo
8517
8518         * profiler-private.h: Add jitinfo to the end jit hook
8519
8520         * profiler.[ch]: Define new hooks, called after jitting which give
8521         the MonoJitInfo that was compiled
8522
8523 2006-01-10  Martin Baulig  <martin@ximian.com>
8524
8525         * class.c (mono_class_setup_events): Add support for generic
8526         classes; fixes #76440.
8527
8528 2006-01-06  Raja R Harinath  <rharinath@novell.com>
8529
8530         Fix #77160.
8531         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
8532         on passed-in method.
8533
8534 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
8535
8536         * object.c (mono_runtime_invoke_array): Add Nullable support.
8537
8538         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
8539
8540 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
8541
8542         * file-io.c: Don't consider sockets as directory and avoid an endless
8543         loop. Fix bug #76966.
8544
8545 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
8546
8547         * object.c (mono_nullable_init): New helper function.
8548         (mono_nullable_box): Ditto.
8549
8550         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
8551
8552         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
8553
8554         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
8555         
8556 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * class.c (mono_class_is_assignable_from): Make T assignable to 
8559         Nullable<T>.
8560
8561 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
8562
8563         * appdomain.c: Bump corlib version to 46.
8564         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
8565         serialization purpose) and changed ves_icall_System_Reflection_
8566         Assembly_get_code_base signature to accept a boolean (to escape, or 
8567         not, the assembly code base).
8568
8569 2005-12-23  Dick Porter  <dick@ximian.com>
8570
8571         * icall.c: 
8572         * threads-types.h: 
8573         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
8574         CreateEvent icall now returns "created" boolean parameter.
8575
8576 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
8579         #76967.
8580
8581         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
8582         when attr_klass is an interface. Fixes #77045.
8583
8584 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * marshal.c (emit_struct_conv): Fix previous patch.
8587         
8588         * marshal.c (emit_struct_conv): Add a check for fields with the same
8589         offset.
8590
8591 2005-12-20  Raja R Harinath  <rharinath@novell.com>
8592
8593         Fix regression in Mono.C5.
8594         * class.c (mono_class_create_generic): If 'klass' is an interface
8595         set up the interface offsets.
8596         (mono_class_is_assignable_from): Don't throw away generic arguments.
8597
8598 2005-12-19  Raja R Harinath  <rharinath@novell.com>
8599
8600         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
8601         type parameters.
8602
8603 2005-12-15  Raja R Harinath  <rharinath@novell.com>
8604
8605         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
8606         dead store.
8607         (do_mono_metadata_parse_generic_class): Don't pass the current
8608         generic context when parsing the type being instantiated: it
8609         cannot use it, anyway.
8610
8611         * loader.c (method_from_memberref): Don't inflate a signature if
8612         it doesn't contain any type parameters.
8613
8614 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
8615
8616         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
8617
8618 2005-12-14  Martin Baulig  <martin@ximian.com>
8619
8620         * class.c
8621         (mono_type_get_name_recurse): Don't return null for type
8622         parameters and open generic classes.
8623         (mono_class_setup_methods): Don't exclude generic instances.
8624         (mono_get_unique_iid): Use different IDs for different
8625         instantiations of the same generic type.
8626         (mono_class_setup_vtable): Only use setup_generic_vtable() for
8627         open generic instances; create a normal vtable for closed generic
8628         instances.
8629         (mono_class_setup_vtable_general): We're now also called for
8630         closed generic instances.
8631
8632         * reflection.c
8633         (mono_reflection_bind_generic_parameters): Correctly use
8634         mono_metadata_lookup_generic_inst() everywhere.
8635
8636 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
8637
8638         * object.c (mono_class_create_runtime_vtable): Call 
8639         mono_class_setup_vtable ().
8640
8641         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
8642         function.
8643         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
8644         #76959.
8645
8646         * loader.c (mono_loader_set_error_type_load): Print the type load
8647         warnings to the console so they are more visible to the user.
8648         (mono_loader_set_error_method_load): Ditto.
8649
8650         * reflection.c (ensure_runtime_vtable): Revert the last change as it
8651         is still broken.
8652         
8653         * reflection.c (ensure_runtime_vtable): Fix build.
8654
8655         * reflection.c (ensure_runtime_vtable): Disable an optimization which
8656         doesn't work in all cases.
8657
8658 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
8659
8660         * object.c (mono_array_new_full): Treat a single dimensional array
8661         with 0 lower bounds as an szarray. Fixes #76973.
8662
8663         * reflection.c (custom_attr_visible): Really fix this.
8664
8665 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * reflection.c (custom_attr_visible): Allow nested public attributes
8668         as well.
8669
8670         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
8671         interface check.
8672
8673 2005-12-12  Raja R Harinath  <harinath@gmail.com>
8674
8675         * class.c (set_generic_param_owner): Delete.
8676         (mono_class_create_from_typedef): Don't set ->owner field of
8677         generic parameters to "param containers" of enclosing classes.
8678         * reflection.c (mono_reflection_initialize_generic_parameter):
8679         Likewise.
8680
8681 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * reflection.c (custom_attr_visible): Fix build.
8684
8685 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
8686
8687         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
8688         private attributes.
8689         
8690         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
8691         handling of null parameter defaults.
8692
8693 2005-12-09  Raja R Harinath  <rharinath@novell.com>
8694
8695         * class.c (mono_class_from_generic_parameter): Don't set
8696         klass->generic_container.
8697         (my_mono_class_from_generic_parameter): Likewise.
8698
8699 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * reflection.c (load_public_key): Fix a warning.
8702         (method_encode_code): Fix unaligned accesses.
8703
8704 2005-12-07  Martin Baulig  <martin@ximian.com>
8705
8706         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
8707
8708         * reflection.c
8709         (write_generic_param_entry): Encode our custom attrs.
8710
8711         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
8712
8713 2005-12-07  Martin Baulig  <martin@ximian.com>
8714
8715         * reflection.c (encode_new_constraint): Removed; we don't use the
8716         `NewConstraintAttribute' anymore.
8717
8718 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
8721         not fire a TypeResolve event when Assembly.GetType () is called.
8722
8723 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
8724
8725         Beginning of support for nullable types in the runtime. Parts of
8726         this patch are from Martin.
8727
8728         * appdomain.c (MONO_CORLIB_VERSION): Bump
8729
8730         * domain.c (mono_init_internal): get the nullable type
8731
8732         * class.c (mono_class_is_nullable): New method
8733         (mono_class_get_nullable_param): New mehod
8734         (mono_class_create_generic): In types T? set cast_class to T
8735
8736         * class-internals.h (MonoDefaults): new nullable default class
8737         (mono_class_get_nullable_param, mono_class_get_nullable_param):
8738         new methods.
8739
8740 2005-12-05  Raja R Harinath  <rharinath@novell.com>
8741
8742         * metadata.c (select_container): New.  Refactor code to select the
8743         appropriate GenericContainer given the type of generic parameter
8744         we are looking for.
8745         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
8746         not a MonoGenericContext.  Use select_container.  Update parameters.
8747         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
8748         and MONO_TYPE_MVAR.
8749         (unwrap_arrays): Remove duplicate tests.
8750         (find_generic_param): Rename from 'has_same_context'.  Now walks a
8751         generic instantiated class to find any arguments that are generic
8752         parameters.
8753         (mono_type_create_from_typespec_full): Use find_generic_param to
8754         avoid evicting some generic instantiations from the typespec
8755         cache.
8756
8757 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
8758
8759         * reflection.c: fixed writing of doubles on ARM FPA.
8760
8761 2005-12-02  Robert Jordan  <robertj@gmx.net>
8762
8763         * icall.c: Fixed EventInfo.ReflectedType (#76829).
8764
8765 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8766
8767         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
8768         least on SUSE 10 they are not the same (on debian, they are just the
8769         same thing).
8770
8771 2005-12-01  Raja R Harinath  <rharinath@novell.com>
8772
8773         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
8774         DeclaringType for VARs and MVARs.
8775         * class.c (set_generic_param_owner): Fix initialization of owner
8776         fields.
8777
8778 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
8779
8780         * icall.c: fixed Enum.ToObject() to correctly convert the values.
8781
8782 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8783
8784         * threadpool.c: workaround for a bug that shows up on the Mac:
8785         select()+connect() on a blocking socket is not like it should
8786         be, so we proceed to connect() in that case, wasting the I/O
8787         threadpool thread until connect succeedes. Fixes bug #75436.
8788
8789 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8790
8791         * threadpool.c: fix typo when setting file descriptor states.
8792
8793 2005-11-28  Raja R Harinath  <rharinath@novell.com>
8794
8795         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
8796         * metadata.c (mono_metadata_parse_method_signature_full): Don't
8797         create a temporary signature container.
8798         (mono_metadata_parse_generic_param): Update to changes.
8799         (mono_type_create_from_typespec_full): Update to changes.
8800         * loader.c (method_from_memberref): Don't use a
8801         MonoGenericContainer while parsing a memberref signature.
8802         (method_from_methodspec): Remove dead-store of the 'container'
8803         variable.  It's overwritten before use.
8804
8805         * metadata.c (mono_type_create_from_typespec_full): Make debugging
8806         checks tighter.
8807         (mono_metadata_parse_generic_param): Likewise.
8808         * loader.c (find_method_in_class): Does not need a
8809         MonoGenericContainer.  Use 'mono_method_signature' rather than
8810         'mono_method_signature_full'.
8811         (find_method, mono_get_method_constrained, method_from_memberref):
8812         Update to changes.
8813
8814         * metadata.c (mono_type_create_from_typespec_full): Ensure that
8815         owner-less generic-parameters are never evicted from the typespec
8816         cache.
8817
8818         * loader.c (method_from_memberref): Don't use the current context
8819         when parsing signatures.
8820         (method_from_methodspec, mono_get_method_from_token): Update to changes.
8821
8822         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
8823         side-effects in g_assert.
8824         * loader.c (mono_get_method_from_token): Resolve klass earlier so
8825         that we don't potentially lose information.
8826
8827 2005-11-26  Dick Porter  <dick@ximian.com>
8828
8829         * icall.c:
8830         * threads.c: icalls to implement basic (ie, not named)
8831         System.Threading.Semaphore.
8832
8833 2005-11-24  Dick Porter  <dick@ximian.com>
8834
8835         * process.c
8836         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
8837         Use GetProcessId() if it's available.
8838
8839 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
8840
8841         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
8842
8843 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8844             Ankit Jain  <jankit@novell.com>
8845
8846         * loader.c (mono_get_method_from_token): Initialize 'method' field
8847         of all generic parameters before parsing the signature.  Remove
8848         code that "fixed"-up MVAR references.
8849
8850 2005-11-23  Ankit Jain  <jankit@novell.com>
8851
8852         * metadata.c (mono_metadata_has_generic_params):
8853         (mono_metadata_load_generic_param_constraints):
8854         (mono_metadata_load_generic_params): Move duplicate code ...
8855         (mono_metadata_get_generic_param_row): ... here. Returns the
8856         first row-id in GenericParam table for a given owner (token).
8857         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
8858         prototype.
8859
8860 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8861             Ankit Jain  <jankit@novell.com>
8862
8863         * metadata.c (mono_metadata_class_equal): Pass signature_only when
8864         comparing VARs too.
8865         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
8866         type->data.generic_param only if the type is an MVAR.
8867         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
8868         leak owner-less VARs and MVARs into managed space.
8869
8870 2005-11-21  Martin Baulig  <martin@ximian.com>
8871
8872         * class-internals.h
8873         (MonoMethod): Moved the `generic_container' here from
8874         `MonoMethodNormal' since we now also need it for
8875         `MonoMethodPInvoke';
8876         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
8877         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
8878         an union containing both `MonoMethodNormal' and
8879         `MonoMethodPInvoke'.
8880
8881         * loader.c
8882         (mono_get_method_from_token): Allow implementing generic methods
8883         as interncalls.
8884
8885         * threads.c
8886         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
8887         icall.
8888
8889 2005-11-17  Dick Porter  <dick@ximian.com>
8890
8891         * icall.c: 
8892         * process.h: 
8893         * process.c: Split the Process Start_internal icall into
8894         ShellExecuteEx_internal and CreateProcess_internal, which are
8895         called depending on whether UseShellExecute is true.  Fixes bug
8896         76670.
8897
8898         * appdomain.c (MONO_CORLIB_VERSION): Incremented
8899
8900 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
8903         'msize' parameters, use the information in 'mspec' instead.
8904         (emit_object_to_ptr_conv): Ditto.
8905
8906         * marshal.c (emit_struct_conv): Handle explicit layout structs with
8907         fields out of order. Fixes #76733.
8908
8909 2005-11-17  Ankit Jain  <jankit@novell.com>
8910
8911         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
8912
8913 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
8914
8915         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
8916           bug #76575.
8917
8918 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
8921         for types with non-auto layout. Fixes #76717.
8922
8923 2005-11-16  Ankit Jain  <jankit@novell.com>
8924
8925         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
8926         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
8927         if generic_context is null.
8928           (mono_metadata_generic_param_equal): param->owner can be null.
8929           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
8930         null.
8931
8932 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
8935         the correct value.
8936
8937 2005-11-15  Martin Baulig  <martin@ximian.com>
8938
8939         * object.c (set_value): Use mono_class_from_mono_type() instead of
8940         the hack for generic instances; fixes #76136.
8941
8942 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
8943
8944         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
8945         fields.
8946
8947         * image.c (load_metadata_ptrs): Initialize the new fields.
8948
8949         * reflection.c (create_dynamic_mono_image): Ditto.
8950
8951         * reflection.c (build_compressed_metadata): Use the new fields.
8952
8953         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
8954         icall.
8955
8956         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
8957         icall.
8958         
8959 2005-11-15  Ankit Jain  <jankit@novell.com>
8960             Raja R Harinath  <harinath@gmail.com>
8961
8962         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
8963         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
8964         new per-generic_container cache if the cached MonoType's context matches
8965         the current context.
8966           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
8967         to the expected context.
8968           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
8969
8970 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8971
8972         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
8973         we changed the signature of an icall.
8974         * icall.c: Modify to mono_double_ParseImpl return true/false 
8975         depending on the success, instead of throwing the exception. This will
8976         help us in Double.TryParse methods.
8977         
8978 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * marshal.c (emit_marshal_object): Throw an exception when
8981         marshalling 'object' instead of crashing. Fixes #76696.
8982
8983 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * class-internals.h: Add prototype for mono_type_get_full_name ().
8986
8987 2005-11-11  Dick Porter  <dick@ximian.com>
8988
8989         * threads.c (mono_thread_manage): Make sure the main thread has
8990         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
8991
8992 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * loader.c (mono_loader_set_error_type_load): Log a warning to the
8995         console about the missing type.
8996         (mono_loader_set_error_method_load): Ditto.
8997
8998 2005-11-09  Miguel de Icaza  <miguel@novell.com>
8999
9000         * mono-config.c (mono_get_config_dir): Set the system defaults if
9001         none is specified.
9002
9003         * assembly.c (mono_set_dirs): New API entry point to set the
9004         assembly and the config directory in one call
9005
9006 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
9009         the ftnptr was created from a delegate in a domain other than the
9010         current domain. Fixes #75377.
9011
9012         * exception.h exception.c: Add mono_get_exception_not_supported ().
9013
9014 2005-11-08  Martin Baulig  <martin@ximian.com>
9015
9016         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
9017
9018 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
9019
9020         * security-manager.h: Added definitions to deal with strongname key 
9021         pairs bigger (and smaller) than 1024 bits.
9022         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
9023         adjust wrt the public key length being used.
9024
9025 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
9026
9027         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
9028           Windows build (r51396-51397).
9029
9030 2005-11-03  Martin Baulig  <martin@ximian.com>
9031
9032         * class.c (mono_class_setup_vtable_general): Also add generic
9033         methods to the vtable; fixes #76581.
9034
9035 2005-11-01  Miguel de Icaza  <miguel@novell.com>
9036
9037         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
9038         sure that we lookup GetString method from the System.Text.Encoding
9039         class, not the derived class or we get an empty method.
9040
9041         Fixed class #76612.
9042
9043 2005-10-25  Miguel de Icaza  <miguel@novell.com>
9044
9045         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
9046         if it has been previously set (embedders). 
9047
9048         Make mono_set_rootdir available also on Unix.
9049
9050 005-10-24  Robert Jordan  <robertj@gmx.net>
9051
9052         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
9053
9054 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
9055
9056         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
9057         only calls which are made to native code use this flag.
9058
9059         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
9060
9061 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
9062
9063         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
9064         Add support for FieldBuilders.
9065
9066 2005-10-29  Martin Baulig  <martin@ximian.com>
9067
9068         * mono-debug.c
9069         (mono_debug_using_mono_debugger): New public method; returns
9070         whether we're running inside the debugger.
9071
9072 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
9073
9074         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
9075         for Method/Constructor/FieldBuilders.
9076
9077 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
9078
9079         * reflection.c (module_add_cattrs): Save custom attributes for global methods
9080         and fields as well.
9081
9082 2005-10-26  Martin Baulig  <martin@ximian.com>
9083
9084         * mono-debug-debugger.c
9085         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
9086
9087 2005-10-24  Raja R Harinath  <harinath@gmail.com>
9088
9089         * icall.c (base64_to_byte_array): Don't pass an out-of-range
9090         integer to isspace.
9091
9092 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
9093
9094         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
9095         when passing valuetypes byref. Fixes #76502.
9096
9097 2005-10-19  Jackson Harper  <jackson@ximian.com>
9098
9099         * profiler.c: Don't put a . in front of types that are not in a
9100         namespace.
9101
9102 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
9105
9106 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
9107
9108         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
9109         #76436.
9110         (mono_marshal_get_ldflda_wrapper): Fix a warning.
9111
9112 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9113
9114         * assembly.c metadata-internals.h icall.c: Define an additional
9115         parameter for mono_assembly_name_parse_full, so we can avoid creating
9116         S.R.AssemblyName.Version when no version info wasn't passed.
9117         
9118 2005-10-09  Miguel de Icaza  <miguel@novell.com>
9119
9120         * class.c (mono_type_get_full_name): Reimplement method that was
9121         removed. 
9122
9123         * image.c: Some docs
9124
9125 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * profiler.c (output_newobj_profile): Fix printing of Total memory
9128         on x86.
9129
9130 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
9131
9132         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
9133
9134 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
9135
9136         * threads.c: remove debug output.
9137
9138 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
9139
9140         * threads.c (mono_thread_manage): Fix crashes if more than 64
9141         threads need to be aborted. Hopefully fixes #75899.
9142
9143         * assembly.c (mono_stringify_assembly_name): New helper function.
9144
9145         * class.c: Use mono_stringify_assembly_name instead of the similar
9146         static function.
9147
9148         * assembly.h assembly.c: Add support for calling a postload search 
9149         hook if an assembly cannot be loaded.
9150
9151         * appdomain.c: Register new search hooks which call the AssemblyResolve
9152         events in AppDomain. Fixes #75231
9153
9154 2005-10-07  Martin Baulig  <martin@ximian.com>
9155
9156         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
9157         methods without debug info.
9158
9159 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
9162         wrappers.
9163
9164 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9165
9166         * file-io.c: now that we return symlinks, use lstat and, when the file
9167         is a symbolic link, stat, to get the file attributes. Also avoid the
9168         conversion to/from utf16/external.
9169
9170 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
9171
9172         * class.c (mono_class_layout_fields): Compute klass->has_references
9173         correctly if an embedded valuetype is not yet initialized. Fixes
9174         #76331.
9175
9176 2005-10-04  Martin Baulig  <martin@ximian.com>
9177
9178         * metadata.c
9179         (mono_metadata_load_generic_param_constraints): New public
9180         function; splitted the constraints loading out from
9181         mono_metadata_load_generic_params().
9182
9183         * class.c (mono_class_create_from_typedef): Call
9184         mono_metadata_load_generic_param_constraints() after setting up
9185         the type and creating our parent; fixes #75329.
9186
9187 2005-10-04  Martin Baulig  <martin@ximian.com>
9188
9189         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
9190         non-dynamic parent classes.
9191
9192 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
9193
9194         * file-io.c : win32 build fix (ETXTBSY seems not found).
9195
9196 2005-10-04  Martin Baulig  <martin@ximian.com>
9197
9198         * reflection.c
9199         (mono_image_get_methodspec_token): Make the cache actually work;
9200         fixes #75974.
9201
9202 2005-10-04  Martin Baulig  <martin@ximian.com>
9203
9204         * class.c (mono_class_name_from_token): Removed the unneccessary
9205         `MonoGenericContext *' argument.
9206
9207 2005-10-04  Martin Baulig  <martin@ximian.com>
9208
9209         * loader.c
9210         (method_from_methodspec): Make the caching work again; fixes the
9211         performance regression from #76262.
9212
9213 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9214
9215         * file-io.c:
9216         * file-io.h:
9217         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
9218         GetFileSystemEntries that performs the same work but without going
9219         into io-layer, locking, etc.
9220
9221 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
9222
9223         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
9224         ThreadState_Stopped as well. Fixes #76047.
9225
9226 2005-09-29  Martin Baulig  <martin@ximian.com>
9227
9228         * class.c
9229         (inflate_generic_context): If the new context has a `gmethod', set
9230         its `container' that that gmethod's `container'.
9231
9232         * metadata.c
9233         (mono_metadata_parse_generic_param): Simplify things;
9234         `generic_container = generic_context->container;' is just fine.
9235
9236         * loader.c (method_from_methodspec): Code cleanups.
9237
9238 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
9239
9240         * decimal.c: fix warning (and let gcc generate correct
9241         code on ARM with optimizations).
9242
9243 2005-09-28  Martin Baulig  <martin@ximian.com>
9244
9245         * loader.c
9246         (method_from_memberref): Added `MonoGenericContext *class_context'
9247         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
9248         (method_from_methodspec): If we're a memberref, use the enclosing
9249         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
9250
9251 2005-09-28  Martin Baulig  <martin@ximian.com>
9252
9253         * object.c (mono_runtime_invoke_array): Added support for
9254         MONO_TYPE_GENERICINST; fixes #75917.
9255
9256 2005-09-27  Martin Baulig  <martin@ximian.com>
9257
9258         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
9259         `k->byval_arg.type' to determine the actual type.
9260
9261         * loader.c (method_from_methodspec): Removed some hacks.
9262
9263 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
9264
9265         * class-internals.h (mono_field_is_deleted): Do the test for
9266         rtspecialname before we check the actual name of the field. This
9267         prevents us from dereferencing a pointer into the string table,
9268         saving us from accessing a few pages
9269
9270         * *.c: Replace the use of {Enter,Leave}CriticalSection with
9271         macros. This will allow a deadlock debugger to easily be plugged
9272         in.
9273
9274 2005-09-27  Martin Baulig  <martin@ximian.com>
9275
9276         * loader.c (method_from_methodspec): Create a "signature"
9277         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
9278
9279 2005-09-27  Martin Baulig  <martin@ximian.com>
9280
9281         * class.c
9282         (inflate_generic_class): Correctly set the new context's
9283         container.
9284
9285         * loader.c
9286         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
9287         instead of a `MonoGenericContext *'.
9288         (mono_method_signature_full): Take a `MonoGenericContainer *'
9289         instead of a `MonoGenericContext *'.
9290
9291         * metadata.c
9292         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
9293         instead of a `MonoGenericContext *'.
9294         (mono_metadata_parse_method_signature_full): Likewise.
9295
9296 2005-09-26  Martin Baulig  <martin@ximian.com>
9297
9298         * class.c
9299         (mono_class_from_generic_parameter): Set `klass->generic_container'
9300         (mono_class_from_generic_parameter): Likewise.
9301         (mono_bounded_array_class_get): We inherit the generic container
9302         from the element class.
9303
9304         * loader.c
9305         (find_method, find_method_in_class): Take a `MonoGenericContext *'
9306         argument rather than computing it here.
9307         (method_from_memberref): Correctly set the generic context before
9308         parsing the signature.  Fixes #75681.
9309
9310 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
9311
9312         * object.c (mono_class_has_special_static_fields): Fix warnings.
9313
9314 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9315
9316         * assembly.c: Add parse_public_key function, to
9317         par the public keys. Also added mono_assembly_name_parse_full,
9318         to define it the parsed key should be freed or not.
9319         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
9320         to parse a long format assembly name.
9321         * metadata-internals.h: Keep mono_assembly_name_parse_full as
9322         private, since calling it to preserve the key requires
9323         freeing it manually.
9324         
9325 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
9326
9327         * locales.c : removed HAVE_ICU part.
9328
9329 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
9330
9331         * object.c (mono_class_create_runtime_vtable): Avoid calling 
9332         field_is_special_static if the klass has no special static fields.
9333
9334         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
9335         (MonoCachedClassInfo): Likewise.
9336
9337         * object.c (mono_class_has_special_static_fields): New helper function.
9338
9339 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * class.c (mono_class_create_from_typedef): Don't call 
9342         interfaces_from_typedef_full for enums.
9343         (mono_class_create_from_typedef): Compute the base types of enums directly
9344         without calling mono_class_setup_fields ().
9345         (mono_class_find_enum_basetype): New helper function.
9346
9347         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
9348         one place inside the string heap.
9349         
9350 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
9351
9352         * class.c: locking fixes, code cleanups, some docs added.
9353         Allocate some data structures in the image mempool.
9354
9355 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9356
9357         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
9358         the example code.
9359         
9360 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
9361
9362         * class-internals.h, class.c, reflection.c: reduce memory taken by
9363         MonoClass.
9364
9365 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
9366
9367         * metadata.c, metadata.h, loader.h: documentation updates, code and
9368         API cleanups.
9369
9370 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9371
9372         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
9373         the example code.
9374
9375         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
9376         page faults caused by the runtime while reading metadata.
9377
9378 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9379
9380         * socket-io.c: the field names were changed 3 months ago and no one
9381         realized until bug #76077 got filed!
9382
9383 2005-09-20  Martin Baulig  <martin@ximian.com>
9384
9385         * icall.c (assembly_icalls): Removed some unused debugger icalls.
9386
9387 2005-09-20  Martin Baulig  <martin@ximian.com>
9388
9389         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
9390         write the rank into the class entry.
9391
9392 2005-09-20  Martin Baulig  <martin@ximian.com>
9393
9394         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
9395
9396 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9399
9400         * icall.c (custom_attrs_defined_internal): New icall.
9401
9402         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
9403         function.
9404         (mono_custom_attrs_construct_by_type): New helper function.
9405
9406 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
9407
9408         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
9409         terminate the resulting string. Fixes #76123.
9410
9411 2005-09-16  Martin Baulig  <martin@ximian.com>
9412
9413         * mono-debug.c
9414         (mono_debug_add_method): Ignore inflated methods for the moment.
9415
9416 2005-09-14  Martin Baulig  <martin@ximian.com>
9417
9418         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
9419
9420 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
9423         return a success/failure indication.
9424         (mono_metadata_interfaces_from_typedef_full): Ditto.
9425         (get_constraints): Ditto.
9426
9427 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
9428
9429         * marshal.c (emit_marshal_array): Fix handling of null arrays.
9430         
9431         * marshal.c (emit_marshal_array): Add support for returning string
9432         arrays from delegates. Fixes #76063.
9433
9434         * marshal.c: Use the emit_ldloc/stloc macros where possible.
9435
9436 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
9437
9438         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
9439         icall.
9440
9441 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * reflection.c icall.c: Fix after mono_get_exception_type_load
9444         signature change.
9445
9446         * assembly.c (mono_assembly_get_assemblyref): New helper function.
9447         (mono_assembly_load_reference): Use the new helper.
9448
9449         * class-internals.h (MonoLoaderError): New structure containing 
9450         information about type loading errors.
9451
9452         * class-internals.h loader.c: Add APIs to store per-thread loader
9453         error information.
9454
9455         * loader.c class.c: Set the loader error if needed.
9456
9457         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
9458
9459 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
9460
9461         * decimal.c: fixed to handle the broken ARM fp format.
9462
9463 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
9464
9465         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
9466         broken.
9467
9468 2005-09-06  Martin Baulig  <martin@ximian.com>
9469
9470         * domain.c (supported_runtimes): Added v2.0.50727.
9471
9472 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
9473
9474         * culture-info.h: reduce the size of some structures.
9475
9476 2005-09-05  Martin Baulig  <martin@ximian.com>
9477
9478         Reflect latest API changes in the August CTP.
9479
9480         * icall.c
9481         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
9482         ("MonoType.HasGenericArguments"): Removed.
9483         ("MonoMethod.BindGenericParameters"): Renamed to
9484         "MakeGenericMethod".
9485         ("MethodBuilder.BindGenericParameters"): Renamed to
9486         "MakeGenericMethod".    
9487
9488 2005-09-05  Martin Baulig  <martin@ximian.com>
9489
9490         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
9491
9492 2005-09-05  Martin Baulig  <martin@ximian.com>
9493
9494         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9495
9496         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
9497         generic_container is non-NULL.
9498
9499 2005-09-05  Martin Baulig  <martin@ximian.com>
9500
9501         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9502
9503         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
9504
9505 2005-08-29  Michal Moskal  <malekith@nemerle.org>
9506
9507         * reflection.c (encode_locals,
9508         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
9509         for large generic types.
9510
9511 2005-09-05  Martin Baulig  <martin@ximian.com>
9512
9513         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9514
9515         * class.c (mono_dup_array_type): New public method.
9516         (mono_metadata_signature_deep_dup): New public method.
9517         (dup_type): Correctly duplicate array and function types.
9518
9519 2005-09-05  Martin Baulig  <martin@ximian.com>
9520
9521         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9522
9523         * reflection.c (get_default_param_value_blobs): Handle generic types
9524         and generic methods.
9525
9526 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
9527
9528         * class.c: Fixed error reporting (method/class were inversed) for 
9529         inheritance demands.
9530         * security-manager.c|h: Added the AppDomain when calling the managed
9531         System.Security.SecurityManager.InheritanceDemand method.
9532
9533 2005-09-01  Raja R Harinath  <rharinath@novell.com>
9534
9535         * reflection.c (encode_marshal_blob): 'marshaltype' and
9536         'marshaltyperef' are alternate sources for the custom marshaler
9537         name.
9538
9539 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
9540
9541         * class.c: fix creation of array classes with rank == 1
9542         (patch by Ankit Jain <jankit@novell.com>).
9543
9544 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
9545
9546         * object.c: fix check for creating the bound data for arrays vs
9547         szarrays.
9548
9549 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9550
9551         * object.c: configuration file name is now based on the executable name,
9552         not the image name. Fixes bug #75931.
9553
9554 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
9555
9556         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
9557         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
9558
9559 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * rand.c: Use wincrypt.h instead of WinCrypt.h.
9562
9563 2005-08-24  Ankit Jain  <jankit@novell.com>
9564             Raja R Harinath  <rharinath@novell.com>
9565
9566         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
9567           called by it recursively.
9568           (mono_class_init): Remove special case in pending_init handling, since it's
9569           superseded by the fix to mono_class_from_typeref.
9570
9571 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
9572
9573         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
9574         BROKEN_THREAD_START stuff.
9575
9576 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
9577
9578         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
9579         trampoline.
9580
9581         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
9582         
9583         * object.c (mono_delegate_ctor): Replace the original function address with
9584         a delegate trampoline.
9585
9586 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
9587
9588         * icall.c: add boolean argument to base64_to_byte_array and 
9589         InternalFromBase64String to control whether a whitespace-only string
9590         is allowed (or should casue a FormatException to be thrown). We need
9591         this as the behavior has changed between MS.NET 1.x and 2.0, and we
9592         to match the MS behaviour in both profiles.
9593         * appdomain.c: Bump corlib version.
9594
9595 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9596
9597         This patch implements a big portion of publisher policy
9598         support, used to bind assembly versions and redirect
9599         one assembly from version A to version B.
9600
9601         * assembly.c:
9602         New GSList loaded_assembly_bindings, for storing the cached
9603         assembly bindings.
9604         (assembly_binding_maps_name): New static function for checking if a 
9605         assembly binding information maps an assembly name.
9606         (mono_assembly_binding_info_free): New function for freeing
9607         assembly binding information resources.
9608         (get_publisher_policy_info): New static function for retrieving 
9609         assembly binding information from a MonoImage.
9610         (compare_versions): New static function for comparing an assembly
9611         binding information data and the version of an assembly name.
9612         (check_policy_versions): New static function for checking if an
9613         assembly binding info mapping an assembly name is valid for it.
9614         (mono_assembly_load_publisher_policy): New static function for
9615         loading the 'policy.major.minor.MyAssembly' image for an assembly
9616         with an assembly name 'aname'.
9617         (mono_assembly_bind_version): New static function for updating
9618         assembly redirection.
9619         (mono_assembly_apply_binding): New static function for applying
9620         assembly binding.
9621         (search_binding_loaded): New static function for searching 
9622         loaded assembly binding infos in the cache domain.
9623         (mono_assembly_load_full): Don't apply assembly binding for
9624         reflection only assemblies.
9625
9626         * metadata-internals.h: Add MonoAssemblyBindingInfo,
9627         which contains information about assembly binding. Also
9628         declare signature for mono_config_parse_publisher_policy ()
9629         function, used to retrieve pub policy info.
9630         
9631         * mono-config.c:
9632         (publisher_policy_start): New static function used to parse publisher 
9633         policy config files.
9634         (publisher_policy_parser): New static MonoParseHandler containing 
9635         the functions used when parsing config files.
9636         (mono_config_parse_publisher_policy): New function for parsing
9637         publisher policy files.
9638         
9639 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
9640
9641         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
9642
9643         * marshal.c (mono_delegate_free_ftnptr): Ditto.
9644
9645         * object.c (mono_get_addr_from_ftnptr): New helper function.
9646
9647         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
9648
9649         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9650
9651 2005-08-19  Dick Porter  <dick@ximian.com>
9652
9653         * threads.c, threads.h, appdomain.c, appdomain.h,
9654         profiler-private.h, monitor.c, object.c, object-internals.h,
9655         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
9656         store the thread ID, so it can hold a 64 bit value if needed.
9657
9658 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
9659
9660         * reflection.c (mono_reflection_create_dynamic_method): Store the
9661         handle class into the method references as well so ldtoken works in
9662         dynamic methods.
9663
9664         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
9665         types.
9666
9667 2005-08-19  Ankit Jain <jankit@novell.com>
9668
9669         Fix #75847.
9670         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
9671           here rather than using the method signature of a arbitrary function
9672           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
9673           two arguments.
9674           Hack done with Harinath.
9675
9676 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9677
9678         * threadpool.c: disable printing stack traces when we get a exception
9679         in a threadpool thread. I need to do more testing to figure out which
9680         cases actually print this. Fixes bug #75828.
9681
9682 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9683
9684         * icall.c: there might be ignored whitespace after the last '='. This
9685         fixes length computation and bug #75840.
9686
9687 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
9688
9689         * assembly.c (mono_assembly_load_full): Consider .exe extension as
9690         well. Fixes #75809.
9691
9692         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
9693         #75784.
9694         
9695         * reflection.c (create_custom_attr_data): Ditto.
9696
9697 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
9698
9699         * locales.c, culture-info.h : removed RegionLCIDMap.
9700         * culture-info-tables.h : regenerated.
9701
9702 2005-08-16  Martin Baulig  <martin@ximian.com>
9703
9704         * class.c (mono_type_get_name_recurse): Small fix.
9705
9706 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
9707
9708         * locales.c : indentation fixie.
9709
9710 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
9711
9712         * object-internals.h,
9713           locales.h,
9714           locales.c,
9715           culture-info.h,
9716           icall.c : added RegionInfo table support.
9717         * culture-info-table.h : regenerated for region support.
9718
9719 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
9720
9721         * reflection.c (resolve_object): handle all kinds of MonoMethod
9722         including generic ones
9723
9724 2005-08-12  Ankit Jain <jankit@novell.com>
9725
9726         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
9727           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
9728
9729 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
9730
9731         * process.c: Don't close a thread handle when it's NULL. This is a
9732         workaround for bug #75733.
9733
9734 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
9735
9736         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
9737
9738 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
9739
9740         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
9741
9742 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9743
9744         * threadpool.c: if a work item in the thread pool has a callback that
9745         catches a exception, don't propagate it after invoking the callback.
9746         Fixes bug #75336.
9747
9748 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
9749
9750         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
9751
9752         * class-internals.h (MonoCachedClassInfo): Add some new fields.
9753
9754         * class.c (mono_class_init): Load field info lazily in the AOT case.    
9755
9756         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
9757
9758 2005-08-03  Ankit Jain  <jankit@novell.com>
9759
9760         Fix #75683.
9761         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
9762           PInvoke calling convention is 0.
9763
9764 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
9765
9766         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
9767         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
9768
9769 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
9770
9771         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
9772         to handle threads not started by the GC (patch by Michael Meeks
9773         <michael.meeks@novell.com>).
9774
9775 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
9776
9777         * reflection.c: Make buffer used in emitting types larger for some
9778         big generic types (patch by Michal Moskal).
9779
9780 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
9781
9782         * mono-debug.c: Fix some (not all) alignment problems.
9783
9784 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9785
9786         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
9787         Invoke mono_image_load_from_data_full passing the refonly
9788         parameter.
9789
9790         * assembly.c
9791         (mono_assembly_open_from_bundle): Add the refonly argument, 
9792         in order to pass it to other methods it calls to.
9793         (do_mono_assembly_open): Add the refonly argument, in order 
9794         to pass it to other methods it calls to.
9795         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
9796         the refonly parameter to it.
9797
9798         * image.c: Add loaded_images_refonly_hash and
9799         loaded_images_refonly_guid_hash to cache the reflection
9800         only loaded images.
9801         (mono_images_init): Initialize the hash tables used for
9802         caching the reflection only images.
9803         (load_modules): Invoke mono_image_open_full passing the refonly
9804         parameter to load the modules the correct way.
9805         (build_guid_table): Add the refonly argument, to re-build the 
9806         correct hash table.
9807         (do_mono_image_open): Added the refonly argument, in order to
9808         define it for the loaded image.
9809         (mono_image_loaded_full): New function, which receives an
9810         additional parameter to look for the image in the refonly or
9811         non-refonly section.
9812         (mono_image_loaded): Updated, using mono_image_loaded_full.
9813         (mono_image_loaded_by_guid_full): The same case that happens
9814         with mono_image_loaded_full.
9815         (mono_image_loaded_by_guid): Likewise.
9816         (register_image): Use the ref_only variable inside MonoImage
9817         to decide in which hash table store the current image.
9818         (mono_image_open_from_data_full): Rename
9819         mono_image_open_from_data to mono_image_open_from_data_full,
9820         adding the refonly argument, to define the ref_only variable 
9821         inside MonoImage.
9822         (mono_image_open_from_data): Return 
9823         mono_image_open_from_data_full.
9824         (mono_image_open_full): Rename mono_image_open to
9825         mono_image_open_full, receiving the new refonly argument,
9826         to pass it to inner methods.
9827         (mono_pe_file_open): Update this function, to open
9828         a MonoImage as a non-refonly image.
9829         (mono_image_close): Use the refonly variable inside
9830         MonoImage to remove the image from the correct caches.
9831
9832         * image.h: Add the signatures of mono_image_open_full,
9833         mono_image_open_from_data_full, mono_image_loaded_full,
9834         mono_image_loaded_by_guid_full.
9835
9836         * metadata-internals.h: Add the ref_only field to 
9837         MonoImage.
9838         
9839 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9840
9841         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
9842         Fix the last behavior, which used to load the assemblies and
9843         extract MonoReflectionAssemblyName information, instead of
9844         extract it from the metadata tables. Needed for Reflection
9845         Only assemblies.
9846         
9847 2005-07-29  Martin Baulig  <martin@ximian.com>
9848
9849         * mono-debug-debugger.c
9850         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
9851         not initialized.
9852
9853         * mono-debug.c
9854         (mono_debug_address_from_il_offset): Check whether we have
9855         debugging support before attempting to take the lock.
9856         (mono_debug_source_location_from_address): Likewise.
9857         (mono_debug_source_location_from_il_offset): Likewise.
9858         (mono_debug_il_offset_from_address): Likewise.
9859         (mono_debug_address_from_il_offset): Likewise.
9860
9861 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
9862
9863         * class.c (mono_class_from_name_case): Add support for dynamic images.
9864         Fixes #75650.
9865
9866         * object.c (mono_class_compute_gc_descriptor): Add a workaround
9867         for #75479.
9868
9869 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9870         
9871         * reflection.c (mono_method_get_object): Fix warning.
9872
9873 2005-07-28  Martin Baulig  <martin@ximian.com>
9874
9875         * mono-debug.c
9876         (mono_debug_add_wrapper): Also write the wrapper type.
9877
9878 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9879
9880         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
9881         
9882         * class.c (mono_class_init): Avoid reading nested classes if the AOT
9883         data indicates the class has none.
9884
9885 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
9886
9887         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
9888         loader lock with the debugger lock. Prevents deadlocks for beagle.
9889
9890         Beagle can now run on an smp box for a weekend without any
9891         issues. Woohoo!
9892
9893 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
9894
9895         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
9896         in a module. Fixes #75629.
9897
9898 2005-07-26  Martin Baulig  <martin@ximian.com>
9899
9900         * mono-debug.c (mono_debug_add_wrapper): New static method.
9901         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
9902         interncall or a wrapper.
9903
9904         * mono-debug.h (MonoDebugWrapperData): New public typedef.
9905         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
9906         (MONO_DEBUGGER_VERSION): Bump to 51.
9907
9908         * mono-debug-debugger.c
9909         (mono_debugger_add_type): Removed this empty function.
9910         (mono_debugger_add_method): Likewise.
9911
9912 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
9913
9914         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
9915         before accessing method->slot.
9916
9917 2005-07-21  Jb Evain  <jbevain@gmail.com>
9918
9919         * reflection.c (method_encode_clauses/class): Handle filters clauses.
9920         Fixes #75010.
9921
9922 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
9923
9924         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
9925         #75587.
9926
9927 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
9928
9929         * image.h image.c: Add mono_image_get_guid () API function.
9930
9931 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
9932
9933         There were issues when multiple threads tried to load
9934         assemblies. A deadlock was created between assemblies_mutex and
9935         mono_domain_assemblies_lock. This fixes the issue by making the
9936         assembly ref counting be lock free. See bug 75586.
9937         
9938         * image.c (mono_image_close): The add ref function here was using
9939         Interlocked operations while the unref was using a mutex and a
9940         --. I don't think this was ever a bug that would be exposed in a
9941         non-pendantic way (ie, by an embedder doing a ref on one thread
9942         and an unref on another), but for the sake of correctness, this is
9943         now Interlocked.
9944
9945         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
9946         (mono_assembly_load_reference): Call mono_assembly_addref rather
9947         than touching the refcount ourselves.
9948         (mono_assembly_close): Use InterlockedDecrement to unref the
9949         assembly. Don't acquire the lock unless it is actually needed.
9950
9951 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9952
9953         * class.c (mono_class_layout_fields): Fix calculation of has_references
9954         for generic types.
9955
9956 2005-07-12  Martin Baulig  <martin@ximian.com>
9957
9958         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9959
9960         * metadata.c
9961         (mono_type_hash): Provide better hashing for generic instances.
9962         (mono_generic_inst_hash): Improve hashing.
9963         (mono_generic_class_hash): Likewise.
9964
9965         * reflection.c (mymono_metadata_type_hash): Improve hashing for
9966         generic instances.
9967
9968 2005-07-12  Martin Baulig  <martin@ximian.com>
9969
9970         * reflection.c (mono_reflection_create_runtime_class): Remove the
9971         hack for generic type definitions and non-`Run' assemblies.
9972         (mono_reflection_bind_generic_parameters): Also use
9973         `klass->wastypebuilder' to check for TypeBuilders.
9974
9975 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9976
9977         * class.c (mono_class_layout_fields): Fix calculation of has_references
9978         for generic types.
9979
9980         * class.c (inflate_generic_class): Fix a leak.
9981         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
9982         for generic types.
9983
9984 2005-07-11  Martin Baulig  <martin@ximian.com>
9985
9986         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
9987         on error.
9988
9989 2005-07-11  Martin Baulig  <martin@ximian.com>
9990
9991         * loader.c (find_method): Also lookup in
9992         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
9993
9994 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9995
9996         * appdomain.c (mono_domain_unload): Don't free the error message
9997         before passing it to mono_get_exception_...
9998
9999         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
10000         
10001 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
10002
10003         * threads.c: try to better guess an available RT signal (bug #75387).
10004
10005 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
10006
10007         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
10008         and CACHE_OBJECT.
10009
10010 2005-07-07  Martin Baulig  <martin@ximian.com>
10011
10012         * class.c (mono_type_get_name_full): Return NULL for
10013         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
10014         fixes #75408.
10015
10016 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
10017
10018         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
10019         exit the appdomain as well being aborted.
10020
10021         * threadpool.c: Create all threadpool threads inside the root appdomain, and
10022         change back to the root domain after calling managed code. This enables
10023         appdomains using threadpools to be unloaded.
10024
10025 2005-07-07  Martin Baulig  <martin@ximian.com>
10026
10027         * class-internals.h
10028         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
10029         into `MonoDynamicGenericClass' since we only need it for dynamic
10030         types.
10031
10032         * reflection.c (mono_class_bind_generic_parameters): We don't need
10033         to compute the `parent' here.
10034
10035 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
10036
10037         * culture-info-table.h : regenerated.
10038
10039 2005-07-06  Martin Baulig  <martin@ximian.com>
10040
10041         * icall.c
10042         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
10043
10044         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
10045
10046 2005-07-06  Martin Baulig  <martin@ximian.com>
10047
10048         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
10049         we're doing a signature-only comparision; fixes #74945.
10050
10051 2005-07-06  Martin Baulig  <martin@ximian.com>
10052
10053         * class-internals.h (MonoGenericClass): Moved some things out into
10054         a new `MonoInflatedGenericClass' type.  
10055         (MonoInflatedGenericClass): New type; the `klass' of a
10056         `MonoGenericClass' is now computed lazyly in
10057         mono_get_inflated_generic_class().      
10058
10059         * class.c (mono_get_inflated_generic_class): New public function.
10060         (mono_class_inflate_generic_method): Removed the unused
10061         `MonoClass *' argument.
10062         (setup_generic_vtable): Don't call mono_get_inflated_method() on
10063         all the methods.
10064         (mono_class_create_generic): Make this static and merge it with
10065         mono_class_create_generic_2(); we're now called automatically from
10066         mono_get_inflated_generic_class().
10067
10068         * loader.c (mono_method_signature): Call
10069         mono_get_inflated_method() here.
10070
10071 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
10072
10073         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
10074         type of fields with RVA.
10075
10076         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
10077         for this pseudo class.
10078         (my_mono_class_from_generic_parameter): Likewise.
10079         (mono_class_init): Allow interfaces to have cctors.
10080
10081 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
10082
10083         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
10084         lazily for AOT methods.
10085
10086 2005-07-05  Martin Baulig  <martin@ximian.com>
10087
10088         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
10089         returns FALSE for a successful match, not TRUE.
10090
10091 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
10092
10093         * loader.c (mono_method_get_index): Optimize this a bit.
10094
10095 2005-07-04  Martin Baulig  <martin@ximian.com>
10096
10097         * class.c
10098         (class_compute_field_layout): Move the check for generic type
10099         definitions into mono_class_layout_fields().  Fixes #74684.
10100         (mono_class_from_generic_parameter): Correctly compute
10101         `klass->parent'; fixes #75457.
10102
10103         * reflection.c (register_assembly, register_module): Make sure
10104         `domain->rejobject_hash' is already created.
10105
10106 2005-07-02  Martin Baulig  <martin@ximian.com>
10107
10108         * class-internals.h
10109         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
10110         `MonoDynamicGenericClass'.      
10111
10112 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
10113
10114         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
10115         returned by a field getter is null, since null is a valid value.
10116
10117 2005-07-01  Martin Baulig  <martin@ximian.com>
10118
10119         * reflection.c (mono_reflection_generic_class_initialize): Update
10120         the `dgclass->fields [i].parent' to the correct class.
10121         (mono_image_get_fieldref_token): Use the declaring type, not the
10122         reflected type.
10123
10124 2005-07-01  Martin Baulig  <martin@ximian.com>
10125
10126         * loader.c (find_method): Also look in the interfaces; fixes #75429.
10127
10128 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
10129
10130         * threads.c (thread_cleanup): assert that thread != NULL
10131         (wait_for_tids_or_state_change): We were using the wrong variable
10132         when accessing wait->threads. `i' was always out of the bounds of
10133         the array.
10134
10135 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10136
10137         * loader.c: map user32 and kernel32 to libMonoSupportW
10138
10139 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
10140
10141         * appdomain.c (unload_thread_main): Mark this as WINAPI.
10142
10143 2005-06-28  Martin Baulig  <martin@ximian.com>
10144
10145         * loader.c (method_from_methodspec): Fix #75334.
10146
10147 2005-06-28  Martin Baulig  <martin@ximian.com>
10148
10149         Fix #74953 - Arrays now implement the generic IList<T> interface
10150         on the 2.0 platform.
10151
10152         * class-internals.h (MonoDefaults): Added `generic_array_class'.
10153
10154         * reflection.c (mono_class_bind_generic_parameters): New public
10155         function; similar to mono_reflection_bind_generic_parameters(),
10156         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
10157
10158         * domain.c (mono_init_internal): Try to initialize.
10159         `mono_defaults.generic_array_class' here; this'll only succeed if
10160         we're using the 2.0 corlib.
10161
10162         * icall.c
10163         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
10164         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
10165         (mono_lookup_internal_call): Added support for nested classes.
10166
10167         * loader.c
10168         (mono_get_method_from_token): Set `result->signature->pinvoke' if
10169         we're an interncall and have generic arguments.
10170
10171         * class.c
10172         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
10173         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
10174         instance of System.Array.InternalArray<T> for arrays, so they
10175         implement the generic IList<T> interface.
10176
10177 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
10178
10179         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
10180         (chastamar@yahoo.com). Fixes #75374.    
10181
10182 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
10183
10184         * culture-info-table.h: regenerated.
10185
10186 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10187
10188         * icall.c: handle spaces correctly for base64 strings.
10189
10190 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
10191
10192         * *.c: Kill some warnings.
10193
10194 2005-06-23  Duncan Mak  <duncan@novell.com>
10195
10196         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
10197         that this builds on Solaris 10 (x86).
10198
10199 2005-06-23  Martin Baulig  <martin@ximian.com>
10200
10201         * class.c
10202         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
10203         generic type definitions.
10204
10205 2005-06-23  Martin Baulig  <martin@ximian.com>
10206
10207         Fix #75331.
10208
10209         * metadata.c (mono_class_get_overrides): Renamed to
10210         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
10211         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
10212         pass it to mono_get_method_full().
10213
10214 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
10215
10216         * reflection.c (mono_reflection_create_runtime_class): take the
10217         mono_domain_lock in this method. Prevents deadlocks
10218
10219 2005-06-22  Martin Baulig  <martin@ximian.com>
10220
10221         * loader.c (method_from_methodspec): Fix #75330.
10222
10223 2005-06-22  Martin Baulig  <martin@ximian.com>
10224
10225         * reflection.c (type_get_qualified_name): Use
10226         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
10227         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
10228         argument; use it if we don't have an assembly name.
10229
10230 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
10231
10232         * object.c: In mono_message_init, set "copy out" flag for in
10233         parameters with the [Out] flag.
10234
10235 2005-06-21  Martin Baulig  <martin@ximian.com>
10236
10237         * class.c
10238         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
10239         and MONO_TYPE_PTR.
10240
10241 2005-06-21  Martin Baulig  <martin@ximian.com>
10242
10243         * class.c (mono_class_init): Don't initialize `class->fields' for
10244         generic instances since they're initialized again in
10245         compute_field_layout(). 
10246         (compute_field_layout): Set the field's `generic_info' here; fix
10247         #75320. 
10248
10249 2005-06-21  Martin Baulig  <martin@ximian.com>
10250
10251         * class-internals.h
10252         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
10253
10254         * metadata.c (mono_metadata_generic_method_equal): Also
10255         distinguish the `generic_class'; fixes #75334.
10256
10257 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10258
10259         * domain.c:
10260         * appdomain.c:
10261         * domain-internals.h:
10262         * reflection.c: 'domain_assemblies' field is now protected by its own
10263         lock. Don't call into managed code to run the AssemblyLoad event if we
10264         now there are no registered delegates for it.
10265
10266 2005-06-20  Martin Baulig  <martin@ximian.com>
10267
10268         * class.c (mono_class_is_assignable_from): Use a custom version of
10269         mono_class_has_parent() to make things work for generic instances;
10270         fix #75300.
10271
10272 2005-06-20  Martin Baulig  <martin@ximian.com>
10273
10274         * loader.c (method_from_methodspec): Apply a patch from
10275         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
10276
10277 2005-06-20  Martin Baulig  <martin@ximian.com>
10278
10279         * class.c (mono_class_init): Reverted Zoltan's last change; it
10280         breaks generics.
10281
10282 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
10283
10284         * threads.c (wait_for_tids_or_state_change): Add missing locking.
10285
10286 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10287
10288         * socket-io.c: fix the index in the socket array for writable/error
10289         sockets. Fixes bug #75306.
10290
10291 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
10292
10293         * class.c (mono_class_init): Allow interfaces to have static ctors.
10294
10295 2005-06-17  Martin Baulig  <martin@ximian.com>
10296
10297         * loader.c (method_from_methodspec): Use `context->container' when
10298         parsing the `gmethod->inst'.
10299
10300 2005-06-17  Martin Baulig  <martin@ximian.com>
10301
10302         * class.c (mono_type_get_name_recurse): Don't add the assembly
10303         name for type arguments.
10304
10305 2005-06-15  Martin Baulig  <martin@ximian.com>
10306
10307         * reflection.c (mono_image_get_inflated_method_token): Encode
10308         correct klass; fixes #75260.
10309
10310 2005-06-13 Michal Moskal <malekith@nemerle.org>
10311
10312         * icall.c: Make GetCorrespondingMethod/Constructor take
10313         MonoReflectionMethod method not MonoMethod. Removed
10314         MonoType.GetCorrespondingField, and make
10315         MonoGenericType.GetCorrespondingField take name not
10316         MonoClassField.
10317
10318 2005-06-13  Michal Moskal <malekith@nemerle.org>
10319
10320         * reflection.c (field_encode_signature, encode_locals):
10321          Make sizes of buffers for types larger (for big generic types).
10322          (create_generic_typespec,
10323          mono_reflection_sighelper_get_signature_local,
10324          mono_reflection_sighelper_get_signature_field):
10325          Add asserts for too small buffers.
10326
10327 2005-06-15  Martin Baulig  <martin@ximian.com>
10328
10329         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
10330         if our parent is not a dynamic type.
10331
10332 2005-06-15  Martin Baulig  <martin@ximian.com>
10333
10334         * class-internals.h (MonoTypeNameFormat): New enum.
10335
10336         * class.c
10337         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
10338         (mono_type_get_full_name): Removed.
10339         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
10340         argument instead of the boolean's.
10341
10342         * icall.c (ves_icall_System_MonoType_getFullName):
10343         Added `gboolean assembly_qualified'.    
10344
10345         * reflection.h
10346         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
10347
10348         * reflection.c (mono_reflection_parse_type): Parse the new type
10349         name format.
10350
10351 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10352
10353         * icall.c: no need to convert from utf16 to utf8 and then back again
10354         after the call to GetLogicalDrives.
10355
10356 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10357
10358         * icall.c: frombase64. Fix problems exposed by new tests.
10359
10360 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10361
10362         * icall.c: added internal calls for converting char [] and strings in
10363         base64 into byte [].
10364
10365 2005-06-10  Martin Baulig  <martin@ximian.com>
10366
10367         * class.c (mono_class_create_generic_2): Read the nested classes
10368         from the metadata rather than from `gklass->nested_classes' since
10369         `gklass' might not be initialized yet.
10370
10371 2005-06-09  Duncan Mak  <duncan@novell.com>
10372
10373         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
10374         all public headers. Fixes #74919.
10375
10376 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
10377
10378         * domain.c: The key for proxy_vtable_hash is now a pointer
10379         array. Added new GHashFunc and GCompareFunc functions for this.
10380
10381         * class.h: The list of interfaces in MonoRemoteClass is known in
10382         advance and can't grow (we create a new MonoRemoteClass if needed),
10383         so now the interface array can be allocated together with
10384         MonoRemoteClass.
10385         
10386         * object.c: Added a new method create_remote_class_key.
10387         Fixed mono_remote_class so it does not depend on
10388         mono_upgrade_remote_class.
10389         Removed extend_interface_array.
10390         Added new method clone_remote_class(), which makes a copy of a remote
10391         class and adds a new interface or class to it.
10392         mono_upgrade_remote_class() now creates a new remote class (or gets
10393         it from the cache) if an vtable upgrade is needed. In this way
10394         we make sure that other objects sharing the same remote class
10395         don't get the new vtable with unwanted interfaces.
10396         
10397         * object-internals.h:
10398         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
10399         
10400         * marshal.c: Track changes in mono_upgrade_remote_class().
10401
10402 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
10403         * icall.c: Add runtime methods for obtaining members of inflated
10404         class, which were created from supplied non-inflated members. It
10405         is used in internal Get{Method,Constructor,Field} methods in
10406         System.Type
10407
10408 2005-06-09  Martin Baulig  <martin@ximian.com>
10409
10410         * reflection.c
10411         (mono_reflection_bind_generic_method_parameters): Fix #75169.
10412
10413 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10414         * reflection.c (mono_image_basic_init): Define
10415         Version in MonoDynamicAssembly. 
10416         
10417 2005-06-08  Martin Baulig  <martin@ximian.com>
10418
10419         Fix #75136.
10420
10421         * loader.c
10422         (mono_method_signature_full): New public method; takes a
10423         `MonoGenericContext *'.
10424         (find_method): Use mono_method_signature_full() and pass the
10425         klass'es context to it.
10426
10427         * class.c (mono_class_is_inflated_method): Use
10428         mono_method_signature_full() and pass the context to it.
10429
10430 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
10431
10432         * object.c: add proper locking in mono_remote_class_vtable(),
10433         fixes possible memory corruption.
10434
10435 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
10436
10437         * marshal.c (mono_remoting_marshal_init): set
10438         initialized after initialization.
10439
10440 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
10441
10442         * locales.c : hush.
10443
10444 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
10445
10446         * object.c (extend_interface_array): fix really silly
10447         memory corrupting / comparison bug.
10448
10449 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10450
10451         * reflection.c: Functions added to support the creation
10452         of CustomAttributeData, which includes Attribute data
10453         used by ReflectionOnly methods.
10454
10455         * reflection.h:  mono_reflection_get_custom_attrs_data and
10456          mono_custom_attrs_data_construct added (functions exposed).
10457
10458          * icall.c: Added mono_reflection_get_custom_attrs_data
10459          as icall.
10460         
10461 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
10462
10463         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
10464         lupus's request.
10465
10466 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
10467
10468         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
10469
10470         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
10471         dynamic DllImportAttribute.
10472
10473         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
10474         dynamic DllImportAttribute.
10475
10476         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
10477         Fixes #75162.
10478
10479 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10480
10481         * threads.c: avoid segfault when an unstarted thread is aborted.
10482
10483 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
10484
10485         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
10486         Returns the name and version of the runtime for reporting.
10487
10488 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10489
10490         * appdomain.c: bump corlib version.
10491         * object-internals.h: new field in MonoReflectionAssembly.
10492
10493 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10494
10495         * object-internals.h: Carlos forgot to add this field.
10496
10497 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10498
10499         * icall.c: Added create_version to create instances
10500         of Version of MonoReflectionAssemblyName. This change helps
10501         the AssemblyName tests to keep running fine.
10502         
10503 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
10504   
10505         * object.c (mono_method_return_message_restore): A somehow less
10506         intrusive fix for #75138.
10507
10508 2005-06-03  Raja R Harinath  <rharinath@novell.com>
10509
10510         * object.c (mono_method_return_message_restore): Fix computation
10511         of expected number of out args.
10512
10513 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
10514
10515         * reflection.c (mono_image_get_method_info): Fix the case when the
10516         charset is empty.
10517
10518 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
10519
10520         * object.c: Added missing null check in
10521           mono_method_return_message_restore.
10522
10523 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
10524
10525         * reflection.c (mono_image_get_method_info): Handle the case when
10526         dllentry is empty.
10527
10528 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
10529
10530         * object.c: When creating the vtable for a proxy, take into account
10531         all inherited interfaces, not only the ones registered in
10532         iclass->interfaces. This fixs bug #74996.
10533         Also, in mono_method_return_message_restore, verify that the array
10534         of out args has the expected lengh.
10535
10536 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10537
10538         * socket-io.c: update the timeout in Poll when the call is interrupte.
10539
10540 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10541
10542         * socket-io.c: support abort/suspend in Select_internal after last
10543         change.
10544
10545 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10546
10547         * threadpool.c: remove warning.
10548
10549 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10550
10551         * icall.c:
10552         * socket-io.[ch]: Select_internal uses poll() now when available, thus
10553         removing the 1024 limit from select(). Runtime part of the fix for
10554         bug #71203.
10555
10556 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10557
10558         * socket-io.c: when resolving the addresses for the same
10559         host returned by gethostname(), get the local IPs from the interface
10560         list. Loopback addresses are discarded if the are interfaces up with
10561         non-loopback ones. Fixes bug #63265.
10562
10563 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
10564
10565         * appdomain.c, verify.c, object-internals.h, reflection.c:
10566         bumped corlib number to 36, and added new extra_flags field
10567         to ReflectionMethodBuilder and friends.  Fixes #75060.
10568
10569 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
10570
10571         * gc.c: register a new weak link only if the object is non-null
10572         (fixes bug#75047).
10573
10574 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
10575
10576         * culture-info.h : short time pattern too.
10577
10578 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
10579
10580         * culture-info.h : expand long time pattern string length.
10581
10582 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
10583
10584         * culture-info-table.h : update (more French date format; #72788).
10585
10586 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
10587
10588         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
10589         the method is static. Fixes #75029.
10590
10591 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
10592
10593         * reflection.c: Update the table_idx field of method builders after
10594         saving the module, since it can change. This is a workaround for
10595         bug #74914. 
10596
10597 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
10598
10599         * culture-info-table.h : update (additional French date format).
10600
10601 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
10602
10603         * icall.c (ves_icall_type_Equals): Revert last change.
10604         
10605         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
10606
10607         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
10608
10609 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
10610
10611         * class-internals.h: Added executioncontext_class field to 
10612         MonoDefaults structure.
10613         * domain.c: Cache System.Threading.ExecutionContext class in 
10614         mono_defaults.
10615         * object.c: Capture the ExecutionContext for asynchroneous calls in
10616          mono_async_result_new.
10617         * object-internals.h: Added execution_context and original_context 
10618         fields to MonoAsyncResult. Added execution_context to MonoThread.
10619         * security-manager.c|.h: Added mono_get_context_capture_method to 
10620         return the capture method (if required by the security manager or by
10621         the framework version used).
10622         * threadpool.c: Apply capture (if present) ExecutionContext in 
10623         mono_async_invoke and revert to original context after it completes.
10624
10625 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
10626
10627         * culture-info-table.h : updated (real hacky solution for zh-CHT).
10628
10629 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
10630
10631         * culture-info-table.h : zh-CHT related workaround.
10632
10633 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
10634
10635         * marshal.c (emit_marshal_custom): Add some error checking and call the
10636         methods in the ICustomMarshaler interface. Fixes #74875.
10637         
10638         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
10639         native->managed wrappers.
10640
10641 2005-05-12  Martin Baulig  <martin@ximian.com>
10642
10643         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
10644         here and use the loader lock.
10645
10646         * mono-debug.c: Properly lock when the debugger is not attached.
10647         (mono_debug_init): Release the initial lock if we're not running
10648         in the debugger.
10649
10650 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
10651
10652         * marshal.c (emit_marshal_custom): Pass through NULL values without
10653         calling the custom marshalling routines.
10654
10655         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
10656         conversion in structures. Fixes #74882.
10657
10658 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
10659
10660         * culture-info-table.h : zh-* cultures were missing.
10661
10662 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
10663
10664         * threads.c: Added a new event background_change_event which is signaled
10665         when a thread changes its background mode.
10666         Moved here several checks previously done in managed code. The checks
10667         require the thread lock, and using the thread lock in managed code
10668         can result in deadlocks.
10669         Merged Start_internal and Thread_internal into a single method. Now 
10670         Thread_internal does all work of creating and starting a thread.
10671         Added icalls for setting and getting the state of the object. Moved from
10672         managed code to avoid locking there.
10673         Added wait_for_tids_or_state_change() which is called instad of
10674         wait_for_tids when waiting for non-backround threads to end. This method
10675         will return if one of the threads ends or the background_change_event
10676         is signaled.
10677         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
10678         the background mode. This method signals the background_change_event
10679         event.
10680         * icall.c:
10681         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
10682         removed Start_internal.
10683         
10684 2005-05-11  Martin Baulig  <martin@ximian.com>
10685
10686         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
10687         to order of some fields to get proper alignment on 64-bit machines.
10688
10689 2005-05-11  Martin Baulig  <martin@ximian.com>
10690
10691         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
10692         changes as they're broken and completely fuck up the debugger.
10693
10694         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
10695
10696 2005-05-10  Martin Baulig  <martin@ximian.com>
10697
10698         * reflection.c (mono_reflection_generic_class_initialize): Don't
10699         call mono_class_setup_parent() here.
10700
10701 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10702
10703         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
10704         send/receive timeout use an integer in milliseconds. We were using a
10705         struct timeval.
10706
10707 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10708
10709         * locales.c:
10710         (internal_get_cultures): reserve the first slot of the array for the
10711         InvariantCulture, which will be filled in managed code.
10712
10713 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
10714
10715         * reflection.c (mono_image_fill_module_table): Initialize the
10716         GENERATION field as well.
10717
10718 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10719
10720         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
10721         Monitor.Enter on the object.
10722
10723 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
10724
10725         * threads.c: Enable the wait for running threads when exiting.
10726         * icall.c: Suspend all threads before exiting.
10727
10728 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
10729
10730         * assembly.c (mono_assembly_load_reference): Fix warning.
10731
10732 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10733
10734         * threadpool.c: changed the default number of threads per cpu. From now
10735         on, the default will be 20 + (5 * number of cpus) instead of 50.
10736
10737 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
10738
10739         * loader.c (mono_method_get_signature_full): Add locking here.
10740
10741 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
10742
10743         * appdomain.c: Moved methods for parsing and freeing assembly
10744         names to assembly.c.
10745         * assembly.c, domain-internals.h: Created public methods for parsing
10746         assembly names. Fixed mono_assembly_load_with_partial_name:
10747         it now finds the best match, taking into account the version,
10748         token and culture specified in the partial name. Also return
10749         the latest version if no version information is specified.
10750
10751 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
10752
10753         * threadpool.c: replace check for SocketAsyncCall class.
10754
10755 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10756
10757         * threadpool-internals.h:
10758         * Makefile.am: added threadpool-internals.h
10759
10760         * threadpool.c: call mono_unhandled_exception on exceptions not handled
10761         that happen in threadpool threads (tested on MS).
10762         (mono_thread_pool_remove_socket): new function that dispatch any pending
10763         AIO call on a socket that is closing. By now only epoll really needs it,
10764         as select/poll wake up when the socket closes.
10765
10766
10767         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
10768
10769 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
10770
10771         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
10772
10773 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
10774
10775         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
10776
10777 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
10778
10779         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
10780         has an abort request, convert it into a suspend request.
10781
10782 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
10783
10784         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
10785         warning for the usage of `UnmanagedFunctionPointerAttribute' which
10786         is not supported yet.
10787
10788 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10789
10790         * image.c: register assemblies loaded from data (bundles) in the loaded
10791         assemblies hash. Fixes bug #74772.
10792
10793 2005-04-29  Martin Baulig  <martin@ximian.com>
10794
10795         * class.c (mono_type_get_name_recurse): Update to the new naming
10796         schema from the latest .NET 2.x beta2.
10797         (mono_class_setup_vtable_general): If we're a generic instance,
10798         copy the vtable from our generic type definition and inflate all
10799         the methods in it.
10800
10801         * loader.c (find_method): Update to the new naming schema from the
10802         latest .NET 2.x beta2.
10803
10804 2005-04-29  Raja R Harinath  <harinath@gmail.com>
10805
10806         * class.c (mono_class_init): Add a mono_loader_unlock to the
10807         #74734 fix.
10808
10809 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
10810
10811         * icall.c (ves_icall_System_Environment_Exit): Remove the 
10812         suspend_all_other_threads () call for the time being, since it can hang.
10813
10814         * threads.c (mono_thread_manage): Similarly, disable the waiting for
10815         the background threads to exit, since it can also hang.
10816
10817         * class.c (mono_class_init): Applied patch from Ankit Jain 
10818         (radical@gmail.com). Avoid pending init errors when a field refers
10819         to a nested class using a typeref. Fixes #74734.
10820
10821         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
10822         this for dynamic modules.
10823
10824 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10825
10826         * threads.c: don't wait for threads that are in the process of aborting
10827         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
10828         and waiting for background threads to finish. This makes xsp and
10829         mod-mono-server exit without random length delays and/or hangs.
10830
10831 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10832
10833         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
10834
10835 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
10836
10837         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
10838         dynamic types to prevent infinite loops. Fixes #74727.
10839
10840         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
10841         ..._is_assignable_to.
10842
10843 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
10844
10845         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
10846
10847 2005-04-25  Martin Baulig  <martin@ximian.com>
10848
10849         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
10850
10851         * domain.c
10852         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
10853
10854         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
10855
10856         * reflection.c (build_compressed_metadata): Set metadata header
10857         version to 2.0.
10858
10859 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
10860
10861         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
10862         number into an integral and a decimal part. Fixes #70473.
10863
10864         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
10865
10866 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
10867
10868         * culture-info-table.h : reflected the latest locale-builder output.
10869
10870 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10871
10872         * threadpool.c: check for SuspendRequested too when deciding if
10873         mono_thread_interruption_checkpoint should be called.
10874
10875 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10876
10877         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
10878         * threads.c: remove interruption_mutex and use Interlocked instead. When
10879         suspending all the threads, wait for all the suspended events at once.
10880         If we're shutting down and get an APC that is going to be queued,
10881         call mono_thread_execute_interruption immediately, as the thread might
10882         be sleeping on a pthread condition or mutex.
10883
10884         * icall.c: call mono_runtime_set_shutting_down before suspending the
10885         threads.
10886
10887         Fixes bug #74693. And now xsp is happier when exiting.
10888
10889 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
10890
10891         * loader.c (mono_stack_walk): Fix #74690.
10892
10893 2005-04-22  Martin Baulig  <martin@ximian.com>
10894
10895         * mono-debug.h (MonoDebugMethodJitInfo): Added
10896         `MonoDebugMethodJitInfo *jit'.
10897
10898         * mono-debug.c (mono_debug_read_method): Cache the
10899         MonoDebugMethodJitInfo in `address->jit'.
10900         (mono_debug_free_method_jit_info): New public method.
10901
10902 2005-04-22  Martin Baulig  <martin@ximian.com>
10903
10904         * class.c (mono_class_is_assignable_from): Disallow
10905         type parameter -> interface.
10906
10907 2005-04-21  Dick Porter  <dick@ximian.com>
10908
10909         * threads.c (mono_thread_create): Turn an assertion into an error.
10910
10911 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
10912
10913         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
10914         
10915         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
10916         Fix some gcc 4.0 warnings.
10917
10918 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
10919
10920         * file-io.c: fix alt dir separator char on unix systems
10921         and cleanup (fixes bug #71214).
10922
10923 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
10924
10925         * marshal.c: Use CALLVIRT instead of CALL when dispatching
10926         a call to a remote domain, since the method may be an
10927         interface method in the client domain. This fixes bug #74192.
10928
10929 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10930
10931         * threadpool.c: recv/send are now performed before going back to managed
10932         code to save one transition.
10933
10934 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10935
10936         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
10937
10938         * metadata/threadpool.c: removed hack to workaround the bug above.
10939
10940         Fixes bug #74618.
10941
10942 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
10943
10944         * reflection.c reflection.h: Fix handling of parameter defaults in
10945         dynamic methods. Also fixes handling of parameter attributes.
10946         Fixes #74609.
10947
10948         * mono-debug.c (mono_debug_close_image): Fix warning.
10949
10950 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10951
10952         * socket-io.h: replaced old unused field with new 'blocking'.
10953         * threadpool.c: restore socket blocking state on windows(tm).
10954
10955 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
10956
10957         * icall.c: don't return the codebase in the AssemblyName[] returned by
10958         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
10959         * object-internals.h: Removed FIXME (fields were presents) and fixed
10960         versioncompat declaration.
10961
10962 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10963
10964         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
10965         not closed, so don't cleanup when it happens.
10966
10967 2005-04-13  Chris Toshok  <toshok@ximian.com>
10968
10969         * mono-debug-debugger.h: change prototype for
10970         mono_debugger_lookup_type.
10971
10972         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
10973         this function, although it should probably be named
10974         mono_debugger_init_type.
10975
10976 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10977
10978         * threadpool.c: fix non-AIO case.
10979
10980 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
10981
10982         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
10983         the built-in profiler to measure just JIT compilation times.
10984
10985 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10986
10987         * threadpool.c: the epollfd might be closed by another thread at
10988         any time, so ignore EBADF at treat it as a "we're closing" sign.
10989
10990 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10991
10992         * threadpool.c: release the semaphores with a count equals to the number
10993         of working threads in both IO and regular pools. Fixed typo that messed
10994         up the count of IO pool threads. Don't initialize the pipe handles if
10995         we're using epoll.
10996
10997 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10998
10999         * threadpool.c: some systems don't like a NULL when deleting the socket
11000         from epoll.
11001
11002 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11003
11004         * threadpool.c: fix semaphore allocation.
11005
11006 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11007
11008         * threadpool.c: added epoll() based implementation for asynchronous IO
11009         that is used instead of the default poll() when available.
11010         It can be disabled by setting MONO_DISABLE_AIO.
11011
11012 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11013
11014         * threadpool.c: windows needs 'closesocket' and instead of returning
11015         0 when the stream is closed while in select, it returns -1. Fixes bug
11016         #74573.
11017
11018 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
11019
11020         * class.c (class_compute_field_layout): Fix the regression caused by
11021         the previous try.
11022
11023 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11024
11025         * threadpool.c: separate pool for socket async. IO.
11026         * threadpool.h: mono_max_worker_threads is not a global any more.
11027
11028 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
11029
11030         * class.c (class_compute_field_layout): Fix #74549.
11031
11032 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11033
11034         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
11035         use 2 connected sockets instead.
11036
11037 2005-04-08  Miguel de Icaza  <miguel@novell.com>
11038
11039         * mono-config.c: Add new entry point for mkbundle
11040         mono_config_parse_memory. 
11041
11042 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11043
11044         * threadpool.c: removed another unused function.
11045
11046 2005-04-08  Ankit Jain  <radical@corewars.org>
11047
11048         * reflection.c (get_default_param_value_blobs): Add 'types'
11049         parameter to get the types encoded in the constant table.
11050         (mono_param_get_objects): Use the type from the constant table,
11051         not the type of the parameter, when creating default values.
11052         Handle null default values correctly.
11053
11054 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11055
11056         * file-io.c:
11057         * file-io.h:
11058         * threadpool.c:
11059         * threadpool.h:
11060         * icall.c:
11061         * socket-io.c: removed dead code for async IO.
11062
11063 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11064
11065         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
11066
11067         * threadpool.c: intercept socket async. calls and pass them to a thread
11068         that is polling and dispatching the job items to the threadpool as
11069         socket become ready. Fixes bugs #71217, #71933.
11070
11071         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
11072         between char and short/ushort arrays.
11073
11074         * socket-io.c: remove dead code.
11075
11076 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
11077
11078         * locales.c,
11079           icall.c : removed InternalToUpper_Comp() and
11080           InternalToLower_Comp().
11081
11082 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
11083
11084         * char-conversions.h : The tables were incorrectly generated. Should
11085           be generated against invariant culture.
11086
11087 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
11088
11089         * object.c (mono_runtime_invoke_array): Fix return value when 
11090         passing pre-created valuetype objects to ctors.
11091
11092         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
11093         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
11094         Fixes #74338.
11095
11096 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
11097
11098         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
11099         only used with --security and hides the wrong corlib version error.
11100
11101 2005-03-30  Joshua Tauberer  <tauberer@for.net>
11102
11103         * class.c: Changed mono_class_name_from_token so that types
11104         outside of a namespace don't have an initial period.  Improved
11105         the g_warning message used in _mono_class_get when loading
11106         fails.
11107         * assembly.c: In mono_assembly_load_reference, when an assembly
11108         can't be found, "No such file or directory" is misleading and
11109         unhelpful because a few paths were checked for the presence of
11110         the assembly.  When that happens (ENOENT), display a nicer
11111         message indicating the directories that were searched.  In all
11112         cases, the warning is made easier to read for non-hackers.
11113
11114 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
11115
11116         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
11117         project/solution.
11118         * appdomain.h|domain.c: Removed inline from functions.
11119         * appdomain.c: Reduced warnings when compiling on windows.
11120         * icall.c: Fixed output_debug declaration to gunichar2*.
11121         * mono-config.c: Reduced warnings when compiling on windows.
11122         * rand.c: Added missing "windows.h". Added missing return value.
11123         * rawbuffer.c: Added missing winsock2.h for windows.
11124         * sysmath.h: Added mono-compiler.h header to allow/ease 
11125         compilation with non-GCC compilers.
11126         * threads.c: Fixed declarations to compile with VS.NET C compiler.
11127         Removed cast warnings.
11128
11129         Adapted from the work of J Lothian (for VC6).
11130
11131 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11132
11133         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
11134         from default_path.
11135
11136 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
11137
11138         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
11139         the 2.0 profile.
11140
11141 2005-03-27  Raja R Harinath  <harinath@gmail.com>
11142
11143         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
11144         has to be in $(exec_prefix).  $(prefix) is for arch-independent
11145         stuff, and it would probably use $(prefix)/share rather than
11146         $(prefix)/lib.
11147
11148 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11149
11150         * console-io.c: added 2 includes that might be missing.
11151
11152 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11153
11154         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
11155         profile.
11156
11157         * reflection.c (create_custom_attr): Allocate the params array using
11158         alloca so it gets GC tracking.
11159
11160 2005-03-23  Chris Toshok  <toshok@ximian.com>
11161
11162         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
11163         out some spew.
11164
11165 2005-03-24  Raja R Harinath  <rharinath@novell.com>
11166
11167         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
11168         changes to pick up any changes in prefix, etc.
11169
11170 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11171
11172         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
11173         
11174         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
11175         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
11176
11177 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11178
11179         * class-internals.h object-internals.h class.c reflection.c: Extend the
11180         mono_lookup_dynamic_token () function to return the class of the
11181         token as well. 
11182
11183         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
11184         well. Fixes #73848.
11185
11186 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
11187
11188         * security-manager.c: Skip inheritance checks for intra-corlib
11189         class inheritance and method overrides. This skips a lot of checks
11190         and (anyway) permissions cannot work until corlib is loaded.
11191
11192 2005-03-23  Martin Baulig  <martin@ximian.com>
11193
11194         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
11195         MONO_TYPE_GENERICINST.  
11196
11197 2005-03-23  Martin Baulig  <martin@ximian.com>
11198
11199         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
11200
11201 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11202
11203         * class.c: added locking comments to some functions.
11204         Cache the interface offsets arrays (saves about 20 KB
11205         of runtime memory in a typical app).
11206         Reduce the time overhead in mono_class_setup_supertypes ().
11207
11208 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
11209
11210         * icall.c: speedup and fix leaks in GetMethodsByName and
11211         GetPropertiesByName.
11212
11213 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11214
11215         * reflection.c: some locking fixes.
11216
11217 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
11218
11219         * metadata.c: added missing break in case statement.
11220
11221 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
11222
11223         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
11224         typedbyref return values. Fixes #73941.
11225
11226 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
11227
11228         * security-manager.c|h: Added demandunmanaged method and 
11229         suppressunmanagedcodesecurity class to MonoSecurityManager.
11230         Renamed aptc class to allowpartiallytrustedcallers.
11231
11232 2005-03-17  Martin Baulig  <martin@ximian.com>
11233
11234         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
11235
11236 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11237
11238         * file-io.c: disabled file async. IO using aio_*. It uses the
11239         threadpool now. Workaround for bug #73718.
11240
11241 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11242
11243         * assembly.h, mono-config.c: added code to deal with bundled configs
11244         for bundled assemblies.
11245
11246 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
11247
11248         * *.c, private.h: cleanup, removing old private.h header file.
11249
11250 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11251
11252         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
11253         and throw_on_unmappable_char attributes.
11254
11255 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
11256
11257         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
11258         _ProcessName_internal.
11259
11260 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
11261
11262         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
11263         #73631.
11264
11265         * icall.c threads.c threads-types.h: Remove slothash icalls as they
11266         are no longer used.
11267
11268 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
11269
11270         * object.c (compute_class_bitmap): Add support for generics. Fixes
11271         #73527.
11272
11273 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
11274
11275         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
11276
11277 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11278
11279         * filewatcher.c: commented out the code for windows watcher, as we don't
11280         use it (we use the managed implementation instead).
11281
11282 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
11283
11284         * object-internals.h (MonoThread): Remove 'unused1' field.
11285
11286         * appdomain.c: Bump corlib version.
11287
11288         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
11289
11290         * reflection.c (mono_reflection_create_runtime_class): Remove the
11291         AssemblyBuilder.Save optimization since it causes too many problems.
11292
11293 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
11294
11295         * exception.c|h: Added mono_get_exception_reflection_type_load to
11296         create a ReflectionTypeLoadException object.
11297         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
11298         to return NULL is a InheritanceDemand fails during reflection. Updated
11299         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
11300         ReflectionTypeLoadException if an InheritanceDemand fails during 
11301         reflection. Added icall mapping for GetLinkDemandSecurity.
11302         * security-manager.c|h: Added ves_icall_System_Security_
11303         SecurityManager_GetLinkDemandSecurity internal call to return the
11304         class and methods permissions set for a LinkDemand. Removed unused
11305         fields in MonoSecurityManager.
11306
11307 2005-03-10  Martin Baulig  <martin@ximian.com>
11308
11309         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
11310         it's a generic instance.
11311
11312 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
11313
11314         * reflection.c (mono_get_object_from_blob): Applied patch from
11315         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
11316
11317         * class.c (mono_class_is_assignable_from): Another try at fixing 
11318         #73469 without breaking anything.
11319
11320 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
11321
11322         * class.c: (mono_class_is_assignable_from): Revert the last changes
11323         since they don't work with generics.
11324         
11325         * class.c (mono_class_is_assignable_from): Fix build bustage.
11326
11327         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
11328         the managed IsAssignableFrom method. Fixes #73469.
11329
11330         * reflection.c (mono_reflection_call_is_assignable_from): New helper
11331         function.
11332
11333 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
11334
11335         * object.c (mono_load_remote_field_new): Fix returning uninitialized
11336         memory when the remoting callback does not sets the out arguments.
11337         Fixes #73007.
11338
11339         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
11340         by mistake.
11341
11342         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
11343
11344         * object-internals.h (MonoStackFrame): Sync with managed object layout.
11345
11346         * appdomain.c: Bump corlib version.
11347
11348 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
11349
11350         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
11351         function.
11352
11353         * threads.c (mono_thread_attach): Detect threads which are not started
11354         by the GC pthread wrappers.
11355
11356 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
11357
11358         * icall.c: Added new icall for RNG.
11359         * rand.c|h: Added new icall to open the RNG. This allows to share a 
11360         single handle on Linux to access /dev/urandom and fix #73183.
11361
11362 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
11363
11364         * object.c: setting the new vtable in a transparent proxy object must
11365         not change the GC descriptor.
11366
11367 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11368
11369         * object.c: fixed compilation without GCJ support.
11370         * reflection.c: for runtime-created types ensure klass->has_references
11371         is correct (bug #73215).
11372
11373 2005-03-02  Martin Baulig  <martin@ximian.com>
11374
11375         * class.c (mono_class_is_assignable_from): Make this work if
11376         `oklass' is a generic instance; fixes #72831.
11377
11378 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
11379
11380         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
11381         with hasthis set.
11382         
11383         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
11384
11385         * marshal.c: Reorganize native->managed marshalling code to also use
11386         the emit_marshal_... functions.
11387
11388 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
11389
11390         * object.c: typed allocs have issues with bitmap sizes > 30,
11391         so check for max_set >= 30.
11392
11393 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
11394
11395         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
11396         managed code. Fixes #73012.
11397
11398         * metadata.h (MonoMarshalSpec): Add elem_mult field.
11399
11400         * metadata.c reflection.c: Load/Emit elem_mult as well.
11401         
11402         * metadata.h (MonoMarshalSpec): Add comment.
11403
11404         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
11405
11406         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
11407         num_elem to -1 if not given.
11408
11409         * object-internals.h (MonoReflectionMarshal): Add has_size field.
11410
11411         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
11412         given values.
11413
11414 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
11415
11416         * null-gc.c (mono_gc_free_fixed): Was not compilable.
11417
11418 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
11419
11420         * reflection.c (encode_marshal_blob): Encode param_num field as well.
11421
11422         * object-internals.h (MonoReflectionMarshal): Add param_num field.
11423
11424 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
11425
11426         * object.c: generalized the reference bitmap creation
11427         and added hooks for the new GC.
11428         * class-internals.c: removed the gc_bitmap field from MonoClass.
11429
11430 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11431
11432         * domain.c: help the compiler to produce better code
11433         in mono_jit_info_table_find ().
11434
11435 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
11436
11437         * object.c: make all allocations look typed.
11438
11439 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11440
11441         * socket-io.c: load Mono.Posix if it's not loaded already
11442         (fixes bug#73033).
11443
11444 2005-02-24  Martin Baulig  <martin@ximian.com>
11445
11446         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
11447         * reflection.c (dup_type): Likewise.
11448
11449 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
11450
11451         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
11452         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
11453
11454 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
11455
11456         * domain.c, threads.c, object-internals.h: make the critical thread
11457         local vars use the fast access mode (even when we're compiled in
11458         a lib). Provide accessors to be used by the jit during codegen.
11459
11460 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11461
11462         * appdomain.c: Changed hook functios behavior to include
11463         support for the reflection only assemblies. Some icalls were changed
11464         to support the mentioned assemblies too. Signatures of static methods
11465         try_assembly_resolve and real_load now have an additional parameter:
11466         refonly.
11467
11468         * assembly.c: General changes to mono_assembly_ methods to support
11469         reflection only api. Functions mono_assembly_open, mono_assembly_load,
11470         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
11471         suffix, to support an additional gbool parameter to specify whether
11472         the assembli is reflection only or not. Created some new hook functions 
11473         to add support for reflection only assemblies. Signatures of static 
11474         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
11475         have now an additional parameter: refonly.
11476
11477         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
11478         indicating whether the assembly is reflection only or not.
11479
11480         * exception.c: Add mono_get_exception_invalid_operation.
11481
11482         * icall.c: Throw an InvalidOperationException when trying to invoke
11483         a property/method/event, or trying to set/get the value of a field.
11484         Also add an icall to retrieve the ref_only flag to the
11485         MonoReflectionAssembly.
11486
11487 2005-02-23  Chris Toshok  <toshok@ximian.com>
11488
11489         Part of fix for #72827.
11490         * mono-debug.c (mono_debug_add_method): add lexical block data to
11491         the info we write.  Kind of a hack at the moment - we copy the
11492         lexical block info from the MonoDebugMethodInfo to the
11493         MonoDebugMethodJitInfo here, before writing it.
11494         (mono_debug_read_method): read the lexical block info.
11495
11496         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
11497
11498         * debug-mono-symfile.h: add lexical block support.
11499
11500         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
11501         support.
11502
11503 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
11504
11505         * loader.c (mono_lookup_pinvoke_call): Fix warning.
11506
11507         * object.c (mono_runtime_free_method): Call mono_free_method () and
11508         put the TODOs there.
11509
11510         * loader.c (mono_free_method): Free up most memory allocated for 
11511         dynamic methods.
11512
11513 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
11514
11515         * reflection.c: properly flag a Type argument to a
11516         named custom attr value (bug #72248).
11517
11518 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
11519
11520         * reflection.c: reduce code duplication in named custom
11521         attribute encoding.
11522
11523 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
11524
11525         * reflection.c: properly encode custom attrs of type object
11526         (bug #72649).
11527
11528 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
11529
11530         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
11531
11532 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
11533
11534         * socket-io.c: load System.dll if it's not loaded already
11535         (bug #72850 and #70477).
11536
11537 2005-02-21  Martin Baulig  <martin@ximian.com>
11538
11539         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
11540         generic instances.
11541
11542 2005-02-21  Martin Baulig  <martin@ximian.com>
11543
11544         * reflection.c (mono_image_build_metadata): We also need to
11545         "fixup" the MethodImpl table after we computed the final method
11546         indices.  Call fixup_methodimpl() to do that.
11547         (fixup_methodimpl): New private method.
11548
11549 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
11550
11551         * assembly.c: special case mscorlib.dll (bug#72536),
11552         patch from Carlos Alberto Cortez.
11553
11554 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
11555
11556         * threads-types.h threads.c: Fix build bustage.
11557
11558         * threads.c: Use a union for long<->double conversions.
11559
11560         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
11561         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
11562
11563         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
11564         containing the checkpoint call with NOT_TAKEN.
11565         
11566         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
11567         checkpoint before pushing the arguments, so they won't have to be
11568         spilled to stack.
11569
11570 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11571
11572         * domain.c, assembly.c, domain-internals.h: make some data
11573         const and relocation-free.
11574
11575 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
11576
11577         * object.c, appdomain.c, class-internals.h: introduce the
11578         MonoClassRuntimeInfo structure to hold the info needed to
11579         use a class at runtime. Made mono_class_vtable() lock-free
11580         for all the appdomains.
11581
11582 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
11583
11584         * metadata-internals.h, image.c: introduce a per-image mempool to
11585         be used for memory that has the same lifetime as the image.
11586
11587 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
11588
11589         * domain.c: In mono_init_internal(), instead of selecting the first
11590         runtime version supported by an executable, get a list of all
11591         supported versions and select the one for which an mscorlib exists
11592         (since even if the runtime supports a given version, it doesn't mean
11593         that the framework for that version is installed).
11594         Modified get_runtimes_from_exe to support this behavior.
11595         In supported_runtimes, added information about additional system
11596         assembly versions.
11597         
11598         * assembly.c: Added support for more than one system assembly version
11599         per runtime version. Updated the assembly list.
11600         In mono_assembly_remap_version, removed the initial version check,
11601         since we don't know to which version we need to compare until we
11602         get the version set on which the assembly is based.
11603         Moved the code for loading corlib into the new method
11604         mono_assembly_load_corlib(), so it can be used by the initialization
11605         code.
11606         
11607         * domain-internals.h: Updated data structures and added declaration
11608         for mono_assembly_load_corlib.
11609
11610 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
11611
11612         * reflection.c (resolve_object): Fix the creation of the signature in 
11613         the SignatureHelper case.
11614
11615         * assembly.c (mono_assembly_remap_version): Fix binary search.
11616         
11617 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
11618  
11619         * class.c: Added inheritance check when a method is overloaded (from a
11620         virtual method or when implementing an interface) and when a class is
11621         inherited. Added functions to set a failure for a class and to 
11622         retreive the exception from a failure.
11623         * class-internals.h: Added fields to MonoClass to keep the exception
11624         information status for inheritance (or other exceptions) to be thrown
11625         later (i.e. not at load time).
11626         * object.c: Throw the inheritance SecurityException when a type is to 
11627         be created with either class or method inheritance violations.
11628         * reflection.c|h: Fix when getting declsec from a class. Removed 
11629         unrequired code for class. Improved sanity in parameter naming.
11630         * security-manager.c|h: Added functions to check for class and method
11631         inheritance.
11632
11633 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
11634
11635         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
11636         and has_finalize in dynamic types as well.
11637
11638 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
11639
11640         * culture-info-table.h : fixed currency format for en-GB (and so on).
11641
11642 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
11643
11644         * gc.c: ensure the GC handles never have 0 as a value.
11645
11646 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
11647
11648         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
11649         a pointer to a struct to unmanaged code. Fixes #72625.
11650
11651 2005-02-16  Martin Baulig  <martin@ximian.com>
11652
11653         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
11654
11655 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
11656
11657         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
11658
11659 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
11660
11661         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
11662
11663         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
11664         UnmanagedFunctionPointerAttribute, use it for determining calling convention
11665         etc. Fixes #71471.
11666
11667         * reflection.c (mono_custom_attrs_get_attr): New helper function.
11668
11669         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
11670
11671 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
11672
11673         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
11674         changes to make the current context a field in MonoThread.
11675
11676 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
11677
11678         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
11679         the last change.
11680         
11681         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
11682         extracted from mono_marshal_get_native_wrapper.
11683
11684         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
11685         to create wrappers around native functions.
11686
11687         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
11688         delegates for arbitrary function pointers. Fixes #71472.
11689
11690 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
11691
11692         * threads.c: cleaned up the code a little.
11693
11694 2005-02-15  Martin Baulig  <martin@ximian.com>
11695
11696         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
11697         the data table.
11698
11699         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
11700         allocate larger chunks if needed.
11701
11702 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11703
11704         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
11705         in by mistake.
11706
11707 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
11708
11709         * domain.c: keep the domains in an array and ensure the domain ids
11710         are kept small, so they can be used as indexes to domain-specific data
11711         with a small memory overhead.
11712
11713 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11714
11715         * icall.c: Handle byref types in Type icalls. Fixes #72544.
11716
11717 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
11718
11719         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
11720
11721 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
11722
11723         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
11724
11725         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
11726         values.
11727
11728         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
11729         
11730 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
11731
11732         * domain-internals.h: add the hashtable here.
11733
11734         * class-internals.h: Remove `info' from MonoMethod
11735
11736         * domain.c: Add a new hashtable, jit_trampoline_hash
11737
11738 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
11739
11740         * object.c: don't set the value of static fields
11741         (fixes bug#72494).
11742
11743 2005-02-11  Martin Baulig  <martin@ximian.com>
11744
11745         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
11746         (mono_debug_add_method): Silently ignore the method if it's too big.
11747         (mono_debug_add_type): Likewise.
11748
11749 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
11750
11751         * threads.c, appdomain.c: remove #ifdefs from the code.
11752
11753 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
11754
11755         * metadata-internals.h: Added flags to MonoAssembly to cache the most
11756         common security informations. This allows us to stay in unmanaged code
11757         when doing LinkDemand and it's special cases (except for the first 
11758         time for initialization). The flags a very much used with --security.
11759         * reflection.c|h: Added code to get declarative security attributes 
11760         for LinkDemand and InheritanceDemand. This required to refactor the
11761         existing code for Demand.
11762         * security-manager.c|h: Added new method fields for the special cases
11763         of LinkDemand.
11764
11765 2005-02-10  Martin Baulig  <martin@ximian.com>
11766
11767         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
11768         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
11769
11770 2005-02-10  Martin Baulig  <martin@ximian.com>
11771
11772         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
11773         debugging code; this is almost a complete rewrite.
11774
11775         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
11776
11777 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11778
11779         * domain.c, object.h: expose mono_string_equal () and 
11780         mono_string_hash ().
11781         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
11782         it's implemented in managed code.
11783
11784 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11785
11786         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
11787         lo leak objects between appdomains.
11788
11789 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11790
11791         * assembly.c: old compilers compilation fix from 
11792         robertj@gmx.net (Robert Jordan).
11793
11794 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
11795
11796         * class-internals.h: Little reminder for the future.
11797
11798         * debug-helpers.c: Fix up wrapper_type_names
11799
11800 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11801
11802         * image.c, metadata-internals.h: when loading an image from a file,
11803         mmap all of it and use the same codepaths as when using a
11804         in-memory image: the code is simpler and we use less memory
11805         (both writable and readonly).
11806
11807 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11808
11809         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
11810         API to alloc runtime data structures that need to be tracked by the
11811         GC and contain pointers.
11812         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
11813         make the code more readable and eventually use a different GC.
11814
11815 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
11816
11817         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
11818         for out arguments.
11819         
11820 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
11821
11822         * object.c: In release_type_locks(), don't release the cctor lock
11823         if it has already been released. This fixes a crash in the
11824         thread5 test.
11825
11826 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11827
11828         * gc.c, marshal.c, icall.c: register a delegate for finalization
11829         only when the native function pointer has been allocated for it.
11830
11831 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11832
11833         * object.c: cleaned up some code, allocate objects that are
11834         pointer free with the atomic malloc variant. Allocate memory
11835         for static data from the mempool if it's pointer-free.
11836         Allocate the bounds array at the end of the array data, when needed.
11837         * object-internals.h, object.h: move a private function in a private
11838         header.
11839         * class.c: handle missing case in tracking references in fields.
11840
11841 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11842
11843         * class.c, class-internals.h: keep track if a type has
11844         reference fields in either the instance or static fields.
11845
11846 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
11847
11848         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
11849         and renamed to MonoRuntimeInfo. Added fields to store the expected
11850         framework assembly version. Changed mono_get_framework_version and
11851         mono_get_runtime_version for a single mono_get_runtime_info method.
11852         
11853         * assembly.c: Added method to remap system assembly versions to the
11854         current executing runtime version. Removed old mapping code.
11855         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
11856         
11857         * icall.c, reflection.c: Track api changes.
11858
11859 2005-02-06  Miguel de Icaza  <miguel@novell.com>
11860
11861         * loader.c (method_from_memberref): Improve error reporting,
11862         produce the class name instead of the typeref/typedef index. 
11863
11864 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
11865
11866         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
11867
11868 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11869
11870         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
11871         stdcall and charset name mangling.  Reorganize the code and add
11872         some tracing stuff.
11873
11874 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11875
11876         * monodiet.c: More iters!
11877
11878         * marshal.c: Iter usage.
11879
11880         * icall.c: Iter usage.
11881
11882         * object.c: Use iters.
11883
11884         * debug-helpers.c: More iters
11885
11886 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11887
11888         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
11889         under win32.
11890
11891 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11892
11893         * mono-debug-debugger.c: use iters
11894
11895         * class.c, class-internals.h: mono_class_setup_events is static
11896         now
11897
11898         * All callers: use iters
11899
11900 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11901
11902         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
11903         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
11904
11905 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11906
11907         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
11908
11909         * marshal.h: Add prototypes for ldfld/stfld_remote.
11910
11911         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
11912         this is called during startup.
11913         
11914 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
11915
11916         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
11917         MonoThreadsSync struct private in monitor.c. Changed the way
11918         MonoThreadsSync is allocated so it's faster and there is no
11919         need to keep track of it with a finalizer and it uses less memory.
11920         This also finally allows us to allocate mono objects as ptrfree when
11921         there are no reference fields.
11922
11923 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
11924
11925         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
11926         disappearing link to the GC interface and use them to simplify
11927         the gchandles code.
11928
11929 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11930
11931         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
11932         stfld_remote which call mono_load/store_field_new. This allows methods
11933         calling ldfld/stfld wrappers to be AOTed.
11934
11935         * console-io.c: Include sys/filio.h under solaris.
11936         
11937         * console-io.c: Include curses.h if needed correctly.
11938
11939 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11940         
11941         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
11942         method->klass as well.
11943
11944         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
11945
11946         * class.c (mono_class_init): Switch on lazy initialization of 
11947         methods.
11948
11949         * class.c (mono_class_get_finalizer): Handle the case when the 
11950         finalizer is inherited.
11951
11952 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11953
11954         * console-io.c: <curses.h> is needed by term.h on solaris.
11955
11956 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
11957
11958         * icall.c, class-internals.h, monodiet.c, class.c: Remove
11959         mono_class_setup_properties where possible. Remove this ftn from
11960         the header file, and make it static.
11961
11962 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11963
11964         * loader.c: Add missing setup_... call.
11965
11966         * class.c: Add missing setup_... calls.
11967
11968         * class.c (mono_class_init): Switch on lazy initialization of 
11969         the generic vtable.
11970         
11971         * class.c (mono_class_init): Fix generics broken by the recent changes.
11972
11973         * monodiet.c (handle_type): Add missing setup_... calls.
11974
11975         * class.c: Back out garbage in previous patch.
11976         
11977         * class.c: Add missing setup_... calls.
11978
11979         * class.c (mono_class_get_method_from_name_flags): Avoid calling
11980         mono_class_setup_methods () if possible.
11981
11982         * class-internals.h (MonoClass): Add 'has_cctor' flag.
11983
11984         * class-internals.h (MonoCachedClassInfo): New structure.
11985
11986         * class.c: Initialize properties and events fields of MonoClass lazily.
11987
11988         * class.c: Add infrastructure for lazily initializing the methods and
11989         vtable fields of MonoClass. Not yet used.
11990
11991         * class.c (mono_class_get_finalizer): New helper function.
11992
11993         * class.c: Add infrastructure for loading some class related data from
11994         an AOT file.
11995
11996         * object.c: Add infrastructure for initializing the vtable from data
11997         in the AOT file.
11998
11999         * gc.c (run_finalize): Use mono_class_get_finalizer ().
12000
12001         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
12002         appropriate initialization function before accessing parts of the
12003         MonoClass structure.
12004
12005         * marshal.c: Fix warnings.
12006         
12007         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
12008
12009         * mono-debug-debugger.c (get_exception_message): Use 
12010         mono_class_get_method_from_name_flags ().
12011
12012 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
12013
12014         * reflection.c, appdomain.c: Replace a few manual searches that
12015         Zoltan missed. (Paolo approved this part of my initial patch).
12016
12017 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
12018
12019         * profiler.c: disable recording statistical events at report time.
12020
12021 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12022
12023         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
12024         to byteswap arrays of enum values, too (bug #72080).
12025
12026 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12027
12028         * appdomain.c (set_domain_search_path): Allow this to be called if
12029         domain->setup is not yet set.
12030
12031         * loader.c (mono_method_get_index): New helper function.
12032
12033         * loader.c reflection.c: Use mono_method_get_index ().
12034
12035         * class.c (mono_class_get_method_from_name_flags): New helper method.
12036
12037         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
12038         this.
12039
12040         * class.c (mono_class_get_cctor): New helper method.
12041
12042         * string-icalls.c object.c class.c marshal.c reflection.c: Use
12043         mono_class_get_method () to look up methods.
12044
12045 2005-02-01  Miguel de Icaza  <miguel@novell.com>
12046
12047         * console-io.c: Fix the build, this should work on Windows.
12048
12049 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
12050
12051         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
12052         be set to null to keep things valid
12053
12054 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12055
12056         * icall.c: added Console 2.0 icalls.
12057         * Makefile.am: added console-io.[ch]
12058         * console-io.[ch]: internal calls for Console 2.0 API.
12059
12060 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12061
12062         * class.c: make sure we consider all the interfaces
12063         when calculating max_interface_id (bug found by
12064         Jeroen Frijters running ikvm).
12065
12066 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12067
12068         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
12069         valuetype fields to null.
12070
12071         * object.c (set_value): Ditto. Fixes #71669.    
12072
12073 2005-01-31  Martin Baulig  <martin@ximian.com>
12074
12075         * metadata.c (mono_metadata_has_generic_params): New public
12076         function; checks whether something is a generic method.
12077
12078 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12079
12080         * appdomain.c: fix infinite recursion when adding assemblies.
12081
12082 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12083
12084         * object.c: Fix small typo to return all items for Environment.
12085         GetCommandLineArgs.
12086
12087 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12088
12089         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
12090         reflection.c: more domain and assembly-unload related fixes
12091         and memory leaks plugs.
12092
12093 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12094
12095         * class.c loader.c security.c loader.h process.c threads.c mono-debug-debugger.c profiler.c marshal.c rand.cpedump.c: Fix 64 bit warnings.
12096
12097 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12098
12099         * loader.c (mono_method_signature): Make this method lazy
12100         (mono_get_method_from_token): Don't computate the signature here.
12101
12102         Doing this saves quite a bit of memory. I got 90 kb on starting up
12103         monodoc. It should also save some disk reads on startup.
12104
12105         * *: MonoMethod->signature might be NULL now. You *MUST* use
12106         mono_method_signature.
12107
12108 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
12109
12110         * object.c (mono_runtime_get_main_args): Return an array from the
12111         current domain here. Fixes #71938.
12112
12113 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
12114
12115         * monitor.c: formatting changes to comply with the
12116         mono coding style and remove #ifdefs from the code.
12117
12118 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12119
12120         * metadata.c, private.h: remove some unneeded data
12121         and use a more compact representation for table schemas.
12122
12123 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12124
12125         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
12126         to get a better distribution in hash tables.
12127         * *.c: use mono_aligned_addr_hash() where appropriate.
12128         * assembly.c: make var static.
12129
12130 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12131
12132         * domain-internals.h: Put MonoJitInfo on a diet.
12133
12134         * domain.c: Fix a warning.
12135
12136 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12137
12138         * gc.c: rework the gc handles code to reuse handles
12139         when freed.
12140
12141 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
12142
12143         * domain.c: fixed long standing bug in mono_string_equal() which
12144         was brought to light with the ldstr changes.
12145
12146 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12147
12148         * reflection.c: Remove warning by adding missing include for marshal.h
12149
12150 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12151
12152         * domain.c, object.c: change the ldstr_table to hold
12153         MonoString* as keys: makes the runtime isinterned lookup
12154         faster and simplifies memory management.
12155
12156 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
12157  
12158         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
12159         possible to add imperative security checks before calling the icall.
12160         * reflection.c: Return security attributes on the original MonoMethod
12161         (and not the wrapped one). This fix permissions on icalls.
12162
12163 2005-01-25  Dick Porter  <dick@ximian.com>
12164
12165         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
12166         the check for mktime() support actually test the mktime() return
12167         value.  "Fixes" bug 71682, though the output is still different to
12168         MS.
12169
12170 2005-01-25  Martin Baulig  <martin@ximian.com>
12171
12172         * class.c (mono_class_is_assignable_from): Make this work for
12173         generic instances.
12174
12175 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
12176
12177         * marshal.c (mono_string_utf8_to_builder)
12178         (mono_string_builder_to_utf16): We might not have ownership of the
12179         string. In thise case, we need to create a new buffer.
12180
12181         * object-internals.h (mono_stringbuilder_capacity): sb->str might
12182         be null, in which case, use the default capacity.
12183
12184 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12185
12186         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
12187         GC events to the profiler.
12188
12189 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12190
12191         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
12192         if you don't want the GC to run.
12193
12194 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
12195
12196         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
12197         start providing a GC API and keeping different implementations in
12198         their own file.
12199         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
12200
12201 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12202
12203         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
12204         mmap rather than allocating a huge buffer.
12205         (mono_debug_close_mono_symbol_file): Free the buffer allocated
12206         above.
12207
12208 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12209
12210         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
12211         and CheckExecutionRights.
12212         * reflection.c|h: Keep the index of the declarative security to be 
12213         used, instead of the pointer, when AOT compiler is used. Also add 
12214         class initialization when requesting demands.
12215         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
12216         CheckExecutionRights. Both properties are now FALSE by default, and
12217         unmodifiable, unless the --security option is used.
12218
12219 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12220
12221         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
12222         reflection.c: properly refcount images and assemblies, many leaks fixed.
12223
12224 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12225
12226         * threadpool.c: increase the timeout for threads in the thread pool to
12227         10s.  Fixes bug #67159.
12228
12229 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
12230
12231         * class-internals.h: Sun's compiler insists on explicit
12232         signed on bit fields to handle then correctly.
12233
12234 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
12235
12236         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
12237         Make the size of the array fit only the number of invalid path
12238         chars that we have.
12239
12240         * class.c (_mono_class_get): Improve the error reporting when a
12241         class referenced is not found, to assist debugging. 
12242
12243 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
12244
12245         * threads.c: fix off-by-one error.
12246         * domain.c: free data allocated in the domain.
12247
12248 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
12249
12250         * reflection.c (mono_method_body_get_object): Fill out exception info
12251         as well.
12252
12253         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
12254         structure.
12255         
12256 2005-01-19  Martin Baulig  <martin@ximian.com>
12257
12258         * loader.c (mono_get_method_constrained): Make this work again.
12259
12260 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
12261
12262         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
12263         guint16 to match the managed side.
12264
12265         * reflection.c (mono_reflection_body_get_object): Fill out local
12266         variables array.
12267
12268         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
12269         as well.
12270
12271         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
12272         'local_var_sig_token'.
12273
12274 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12275
12276         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
12277         System.Drawing.
12278
12279         * reflection.c (mono_method_body_get_object): Handle abstract and
12280         runtime methods.
12281
12282 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
12283
12284         * marshal.c, loader.c, class-internals.h, reflection.c:
12285         store the emthod data for a wrapper in an array instead of a list.
12286
12287 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
12288
12289         * marshal.c: change the code to allocate memory more
12290         conservatively for method wrappers.
12291
12292 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12293
12294         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
12295         fields from MonoClass to the marshal info structure where they belong.
12296
12297 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12298
12299         * class.c, object.c, class-internals.h, marshal.c: rearrange
12300         some fields and tweak some types to lower memory usage.
12301
12302 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12303
12304         * threads.c (signal_thread_state_change): Handle the case when the
12305         target thread is the current thread.
12306
12307         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
12308
12309         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
12310         emit_ptr_to_object_conv. 
12311
12312         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
12313         marshalling. Fixes #71352.
12314
12315 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12316
12317         * metadata.h, blob.h: move table enum to blob.h so it can be included
12318         in any header.
12319         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
12320         cut the size of MonoImage/MonoDynamicImage.
12321
12322 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12323
12324         * profiler.c (mono_profiler_install_simple): Fix default arguments.
12325
12326 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
12327
12328         * reflection.c, reflection.h, icall.c: add a function to check
12329         if an attribute type is defined for a metadata object.
12330
12331 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
12332
12333         * object-internals.h: Added some needed fields from StringBuilder class.
12334         * marshal.c: Set the maxCapacity when creating a StringBuilder.
12335
12336 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12337
12338         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
12339         threads before shutting down the runtime.
12340
12341         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
12342
12343 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12344
12345         * object-internal.h, threads.c: implement stacksize and 
12346         parameterized thread start functionality (requires
12347         matching corlib). Marked broken code for later removal.
12348
12349 2005-01-12  Martin Baulig  <martin@ximian.com>
12350
12351         * class-internals.h (MonoGenericClass): Moved the `initialized'
12352         flag to MonoDynamicGenericClass, removed `init_pending'.
12353         (MonoGenericInst): Added `is_reference' flag.
12354
12355 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
12356
12357         * reflection.c (mono_image_create_pefile): Only set the pe_offset
12358         inside the MSDOS header. Fixes #71201.
12359
12360         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
12361         gc thread.
12362         (mono_domain_finalize): Ditto.
12363
12364 2005-01-12  Martin Baulig  <martin@ximian.com>
12365
12366         * class.c (mono_get_shared_generic_class): Use the cache for
12367         non-dynamic generic classes.
12368
12369         * class-internals.h (mono_class_create_generic_2): Removed
12370         function prototype, this function is now static inside class.c.
12371
12372         * class.c (mono_class_create_generic_2): Made this static, only
12373         call it from mono_class_init() and mono_class_setup_parent().
12374         (collect_implemented_interfaces_aux): Call mono_class_init() on
12375         the interfaces we collect.
12376         (mono_class_setup_vtable): Call mono_class_init (class->parent).
12377
12378 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12379
12380         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
12381         it a real thread handle.
12382
12383         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
12384         MonoJitExceptionInfo, since each catch clause needs its own variable.
12385         
12386 2005-01-11  Dick Porter  <dick@ximian.com>
12387
12388         * image.c (mono_pe_file_open): New variant on mono_image_open()
12389         that does not set up the CLI metadata; used for FileVersionInfo so
12390         it can get the data for windows binaries too.
12391         
12392         * process.c (process_read_string_block): Don't read off the end of
12393         the StringTable block.
12394
12395         These both fix bug 70766.
12396
12397 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
12398
12399         * gc.c: set some fields to NULL at GC cleanup time.
12400         * threads.c: if we quit the main thread, call exit ().
12401
12402 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12403
12404         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
12405
12406 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
12407
12408         * threads.h, threads.c, object.c: added accessor and settor for
12409         main_thread. Handle it specially when exiting from it: wait
12410         for other foreground threads to exit.
12411
12412 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
12413
12414         * process.c, verify.c: remove some bloat.
12415
12416 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
12417
12418         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
12419         the calling convention to cdecl under win32.
12420
12421 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
12422
12423         * object.c (mono_object_get_size): New function to get the size of
12424         an object instance.
12425
12426         * profiler.c (simple_allocation): Use above.
12427
12428 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
12429
12430         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
12431         ves_icall_System_AppDomain_getRootDomain (as it's not required to
12432         get an appdomain by it's id and we can't assume the root's id is 0).
12433         * domain-internals.h: Change the function prototype to match.
12434         * icall.c: Change the icall table for AppDomain.
12435
12436 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
12437
12438         * locales.c (string_invariant_compare_char): Only compute
12439         GUnicodeTypes in the case where we need them.  Test for ordinality
12440         first and return if so.
12441
12442         From the commit:
12443
12444                 /*
12445                  * FIXME: here we must use the information from c1type and c2type
12446                  * to find out the proper collation, even on the InvariantCulture, the
12447                  * sorting is not done by computing the unicode values, but their
12448                  * actual sort order.
12449                  */
12450
12451 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12452
12453         * loader.c: for P/Invoke methods, allow the "Internal" shared
12454         library name to refer to the calling process symbol namespace.
12455
12456 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
12457
12458         * Makefile.am: Add the security manager to the build.
12459         * security-manager.c|h: New. Initialization of the security manager.
12460
12461 2005-01-07  Dick Porter  <dick@ximian.com>
12462
12463         * threads.c: 
12464         * monitor.c: Update thread state during Monitor and WaitHandle
12465         waits.  Fixes bug 71031.
12466
12467 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12468
12469         * reflection.c (property_encode_signature): Correctly handle when the
12470         property has no methods.
12471
12472 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
12473
12474         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
12475         
12476         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
12477         fields from mb, not rmb. Fixes #71017.
12478
12479         * marshal.c (emit_ptr_to_str_conv): Add support for 
12480         ByValTStr -> string conversion. Fixes #71015.
12481
12482         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
12483
12484         * mempool.c (mono_mempool_contains_addr): New helper function.
12485
12486 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12487
12488         * metadata.c (mono_metadata_compute_size): Fix size calculation of
12489         HasSematics encoded fields.
12490         
12491         * metadata.c (mono_type_to_unmanaged): Improve error message for 
12492         invalid string marshalling.
12493
12494         * metadata.c: Fix warnings.
12495         
12496 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12497
12498         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
12499         profiler support.
12500
12501 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12502
12503         * domain.c object.c domain-internals.h: Revert part of r38077 since the
12504         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
12505         tests.
12506
12507 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
12508
12509         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
12510         so methods containing these can be AOTed.
12511
12512 2005-01-03  Martin Baulig  <martin@ximian.com>
12513
12514         * loader.c (find_method): Removed the hack for generic instances.
12515         (method_from_memberref): If our parent is a generic instance, pass
12516         its generic type definition to find_method() and then inflate the
12517         method.
12518         (mono_get_method_constrained): Pass the generic type definition to
12519         find_method() and inflate the method later.
12520
12521         * class-internals.h (MonoStats): Added `generic_class_count'.
12522
12523         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
12524         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
12525
12526         * reflection.c (mono_custom_attrs_from_params): Don't ignore
12527         generic type definitions.
12528
12529 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
12530
12531         * loader.c icall.c: Fix warnings.
12532
12533 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
12534
12535         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
12536         blittable types. Fixes #70864.
12537
12538 2004-12-29  Martin Baulig  <martin@ximian.com>
12539
12540         * icall.c
12541         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
12542
12543         * reflection.c (mono_method_get_object): Create a
12544         "System.Reflection.MonoGenericMethod" for inflated methods; don't
12545         call mono_get_inflated_method().
12546
12547         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
12548
12549 2004-12-27  Martin Baulig  <martin@ximian.com>
12550
12551         * class-internals.h (MonoMethod): Added `is_inflated' flag.
12552         (MonoMethodInflated): Added `inflated' field.
12553
12554         * class.c (mono_class_inflate_generic_method): Don't really
12555         inflate the method here; just set the `is_inflated' flag in the
12556         MonoMethod.
12557         (mono_class_get_inflated_method): Actually inflate the method here
12558         if it's not already inflated; we use the MonoMethodInflated's new
12559         `inflated' field as a cache.
12560
12561 2004-12-26  Martin Baulig  <martin@ximian.com>
12562
12563         * class.c
12564         (inflate_generic_class): Moved some code out of inflate_generic_type().
12565         (mono_class_inflate_generic_method): If we're already inflated,
12566         inflate the context and use the declaring method; ie. make sure
12567         the declaring method of an inflated method is always the generic
12568         method definition.
12569         (mono_class_create_from_typedef): Create
12570         `class->generic_container->context->gclass'.
12571
12572 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
12573
12574         * metadata-internals.h, marshal.c, reflection.c: More
12575         MonoGHashTable->GHashTable.
12576
12577         * domain-internals.h, class.c: Change MonoGHashTable's into
12578         GHashTables for some cases where no gc stuff is used
12579
12580         All users: update apis
12581
12582 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
12583
12584         * metadata.c (builtin_types): Make this `const'. Makes this get
12585         put into the shareable section.
12586         (mono_metadata_init): Casts to make gcc happy.
12587
12588 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
12589
12590         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
12591
12592 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
12593
12594         * icall.c: Added an internal call to retrieve the position and length
12595         of assembly-level declarative security attributes (RequestMinimum, 
12596         RequestOptional and RequestRefuse). This is used by the Assembly class
12597         to re-create the corresponding permission sets.
12598
12599 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
12600
12601         * marshal.c: fix the stelemref wrapper to be type correct
12602         (and faster).
12603
12604 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
12605
12606         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
12607         to do key & 0x7fffffff. Hashtable already does this. It just
12608         results in longer code.
12609
12610 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
12611
12612         * appdomain.c: Bump corlib version.
12613         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
12614         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
12615         * reflection.c|h: Add functions to get declarative security infos
12616         (blob position and length) for assemblies, classes and methods.
12617
12618 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
12619
12620         * reflection.c: sort the constant table (bug #70693).
12621
12622 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
12623
12624         * object-internals.h, threads.c, domain.c: add accessors for
12625         the MonoThread and MonoDomain tls keys.
12626
12627 2004-12-18  Martin Baulig  <martin@ximian.com>
12628
12629         * class.c (inflate_generic_type): If we're inflating a generic
12630         instance, set `ngclass->context->container = context->container';
12631         ie. the container we inflated into.
12632
12633         * metadata.c (mono_metadata_parse_generic_param): Reflect above
12634         inflate_generic_type() changes.
12635
12636 2004-12-17  Martin Baulig  <martin@ximian.com>
12637
12638         * class-internals.h
12639         (MonoGenericClass): Replaced `MonoType *generic_type' with
12640         `MonoClass *generic_class'.  Removed `dynamic_info'; if
12641         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
12642         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
12643
12644 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
12645
12646         * exception.c (mono_exception_from_token): New helper function.
12647
12648 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
12649
12650         * assembly.c (mono_assembly_load_with_partial_name): Call 
12651         mono_assembly_loaded before invoking the preload hooks. Fixes
12652         #70564.
12653
12654         * object-internals.h (MonoThread): Change culture_info and 
12655         ui_culture_info into an array.
12656
12657         * threads.c: Cache culture info objects from more than one appdomain.
12658
12659         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
12660         current UI culture.
12661
12662 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
12663
12664         * threads.h threads.c appdomain.c: Clear the culture_info field of
12665         all threads during unloading if they point to an object in the dying
12666         appdomain.
12667
12668 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
12669
12670         * culture-info.h (TextInfoEntry): New struct
12671         * object-internals.h: sync with managed
12672         * locales.c: fill the `text_info_data' field
12673         * culture-info-tables.h: update
12674
12675 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
12676
12677         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
12678         collector.
12679
12680 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
12681
12682         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
12683         (ves_icall_ModuleBuilder_getMethodToken): Ditto
12684
12685 2004-12-12  Martin Baulig  <martin@ximian.com>
12686
12687         * mono-debug-debugger.c (write_type): If we're an enum and the
12688         builtin types have already been initialized, call mono_class_init().
12689
12690 2004-12-11  Martin Baulig  <martin@ximian.com>
12691
12692         * metadata.c (mono_metadata_load_generic_params): Added
12693         `MonoGenericContainer *parent_container' argument; automatically
12694         compute `container->is_method'; pass the correct owner to
12695         get_constraints().      
12696
12697         * reflection.c (compare_genericparam): Sort the GenericParam table
12698         according to increasing owners. 
12699
12700 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
12701
12702         * profiler.c: allow disabling the default profiler.
12703
12704 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
12705
12706         * decimal.c, icall.c: allow disabling System.Decimal support.
12707
12708 2004-12-09  Marek Safar <marek.safar@seznam.cz>
12709
12710         * reflection.c: Add support for null attribute arguments.
12711
12712 2004-12-09  Martin Baulig  <martin@ximian.com>
12713
12714         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
12715         names to get rid of compiler warnings.
12716
12717 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12718
12719         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
12720         mono_marshal_load_type_info (). Fixes #69625.
12721         (mono_marshal_get_ptr_to_struct): Likewise.
12722
12723 2004-12-08  Martin Baulig  <martin@ximian.com>
12724
12725         * mono-debug.h: Bumped version number to 47.
12726
12727         * mono-debug-debugger.c
12728         (mono_debugger_event_handler, mono_debugger_event): Take two
12729         guint64 arguments insteed of a gpointer and a guint32.  
12730
12731 2004-12-08  Martin Baulig  <martin@ximian.com>
12732
12733         * debug-mono-symfile.h
12734         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
12735         `address' to `native_offset'.
12736
12737 2004-12-08  Martin Baulig  <martin@ximian.com>
12738
12739         * class.c (mono_class_create_from_typespec): Only inflate if we
12740         either have `context->gclass' or `context->gmethod'.
12741
12742 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12743
12744         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
12745
12746         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
12747
12748         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
12749
12750         * reflection.c (mono_assembly_get_object): Remove the workaround put
12751         in for the release.
12752         
12753         * appdomain.c: Use the corlib_internal field from MonoAssembly.
12754
12755         * appdomain.c: Bump corlib version.
12756
12757         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
12758         be visible in other appdomains.
12759
12760 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
12761
12762         * threads.c: Interlocked inc and dec for longs were messed up,
12763         use a KISS based impl for this. Fixes 70234
12764
12765 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
12766
12767         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
12768
12769 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
12770
12771         * icall.c: fix to follow policy not to allow struct
12772         arguments in icalls.
12773
12774 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12775
12776         * process.c: make the patch that handles spaces in file paths work
12777         on mono/windows too.
12778
12779 2004-12-06  Martin Baulig  <martin@ximian.com>
12780
12781         * class.c (mono_class_create_generic): Call
12782         mono_class_setup_supertypes() if we're dynamic.
12783         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
12784
12785 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
12786
12787         * object-internals.h: Add new fields to MonoThread.
12788
12789         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12790
12791         * icall.c threads-types.h threads.c: Add new icalls.
12792
12793         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
12794
12795         * object-internals.h (MonoReflectionAssembly): Sync object layout with
12796         managed side.
12797
12798         * appdomain.c: Bump corlib version.
12799
12800         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
12801         internal assemblies. Fixes #69181.
12802
12803 2004-12-05  Martin Baulig  <martin@ximian.com>
12804
12805         * class.c (mono_class_inflate_generic_signature): Make this a
12806         no-op if `context' is NULL or we don't have any type parameters;
12807         also copy `sentinelpos'.        
12808
12809 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
12810
12811         * image.c: Add unbox_wrapper_cache.
12812
12813         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
12814
12815         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
12816         function generator.
12817         
12818         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
12819         Fixes #70173.
12820
12821         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
12822         
12823 2004-12-04  Martin Baulig  <martin@ximian.com>
12824
12825         * loader.c (mono_method_get_signature_full): New public function;
12826         like mono_method_get_signature(), but with an additional
12827         `MonoGenericContext *' argument.
12828
12829         * class.c (mono_class_inflate_generic_signature): Formerly known
12830         as inflate_generic_signature(); make this public.
12831
12832 2004-12-04  Martin Baulig  <martin@ximian.com>
12833
12834         * metadata.c
12835         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
12836         instead of a `MonoGenericContainer *'.  
12837         (mono_metadata_parse_array_full): Likewise.
12838         (mono_metadata_parse_signature_full): Likewise.
12839         (mono_metadata_parse_method_signature_full): Likewise.
12840         (mono_metadata_parse_generic_inst): Likewise.
12841         (mono_metadata_parse_generic_param): Likewise.
12842         (mono_metadata_parse_mh_full): Likewise.
12843         (mono_type_create_from_typespec_full): Likewise.
12844
12845 2004-12-03  Martin Baulig  <martin@ximian.com>
12846
12847         * class-internals.h (MonoGenericContainer): Replaced the
12848         `MonoGenericContext * pointer with a `MonoGenericContext'
12849         structure and made it the first element.
12850
12851 2004-12-03  Martin Baulig  <martin@ximian.com>
12852
12853         * class.c
12854         (inflate_generic_type): Set the `context->container' when creating
12855         a new MonoGenericContext.
12856         (mono_class_inflate_generic_method): Likewise.
12857         (mono_class_create_from_typespec): Just use `context->container'
12858         to get the container.
12859
12860         * loader.c (method_from_methodspec): Set `context->parent' from
12861         `context->container' - and if that's a method container, use its
12862         parent.  Also set the `context->container' when creating a new
12863         MonoGenericContext.
12864         (mono_get_method_from_token): Use just `context->container' to get
12865         the container.
12866
12867         * metadata.c (do_mono_metadata_parse_generic_class): Also set
12868         `gclass->context->container'.
12869
12870         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
12871         the `context->container' when creating a new MonoGenericContext.
12872
12873 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
12874
12875         * reflection.c (compare_genericparam): Sort params with identical
12876         owner by their number. Fixes gen-111 on sparc.
12877
12878 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12879
12880         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
12881         around the domain changes.
12882
12883         * appdomain.c (mono_domain_unload): Handle the case when the thread
12884         calling Unload is itself being aborted during unloading. Fixes #70022.
12885
12886         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
12887
12888         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
12889         checkpoint_func as an icall so it gets a wrapper.
12890         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
12891         in the cross-appdomain wrappers too.
12892
12893         * threads.c (mono_thread_has_appdomain_ref): Make this public.
12894
12895         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
12896
12897         * reflection.c: Fix some memory leaks.
12898         
12899 2004-12-02  Martin Baulig  <martin@ximian.com>
12900
12901         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
12902
12903         * metadata.c (generic_class_cache): New static hashtable.
12904         (mono_metadata_lookup_generic_class): New public method.
12905
12906 2004-12-02  Martin Baulig  <martin@ximian.com>
12907
12908         * class.c (mono_class_create_from_typedef): Call
12909         mono_class_setup_parent() and mono_class_create_mono_type() before
12910         parsing the interfaces.
12911
12912 2004-12-02  Martin Baulig  <martin@ximian.com>
12913
12914         * metadata.c (generic_inst_cache): New static hashtable.
12915         (mono_metadata_lookup_generic_inst): New public function.
12916         (mono_metadata_inflate_generic_inst): New public function.
12917         (mono_metadata_parse_generic_inst): New public function.
12918         (do_mono_metadata_parse_generic_class): Use the new
12919         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
12920         since this'll also use the cache.
12921
12922         * reflection.c (mono_reflection_bind_generic_method_parameters):
12923         Use mono_metadata_lookup_generic_inst() to use the new cache.
12924
12925         * class.c (inflate_mono_type): Use
12926         mono_metadata_inflate_generic_inst() to inflate a generic
12927         instance; this'll also use the new cache.
12928
12929         * loader.c (method_from_methodspec): Use
12930         mono_metadata_parse_generic_inst() and
12931         mono_metadata_inflate_generic_inst() rather than parsing it
12932         manually, so we can use the new cache.
12933
12934 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12935
12936         * threads.c (wait_for_tids): Do not incorrectly free threads when 
12937         the wait times out.
12938
12939 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
12940
12941         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
12942         iter->args based on whether parameters are passed in registers (i.e.
12943         MONO_ARCH_REGPARMS is defined)
12944
12945 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
12946
12947         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
12948         the exception message. Fixes #70070.
12949         (method_from_methodspec): Fix warnings.
12950
12951 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12952
12953         * process.c: (complete_path) return the path quoted
12954
12955 2004-12-01  Martin Baulig  <martin@ximian.com>
12956
12957         * class-internals.h (MonoGenericInst): New structure.
12958         (MonoGenericClass): Replaced `type_argc', `type_argv' and
12959         `is_open' with `MonoGenericInst *inst'.
12960         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
12961         `is_open' with `MonoGenericInst *inst'.
12962
12963 2004-11-30  Martin Baulig  <martin@ximian.com>
12964
12965         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
12966
12967         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
12968         to `generic_class_cache'.
12969
12970         * metadata.c
12971         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
12972         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
12973         (mono_generic_inst_is_valuetype): Renamed to
12974         mono_generic_class_is_valuetype().
12975
12976         * class-internals.h
12977         (MonoGenericInst): Renamed to MonoGenericClass.
12978         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
12979         (MonoClass): Renamed `generic_inst' to `generic_class'.
12980         (MonoGenericContext): Renamed `ginst' to `gclass'.
12981
12982         * object-internals.h
12983         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
12984
12985         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
12986         mono_reflection_generic_class_initialize().
12987
12988         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
12989         now known as "System.Reflection.MonoGenericClass".
12990         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
12991
12992 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
12993
12994         * class-internals.h: Added a flag field to MonoClass to cache the
12995         declarative security attributes actions associated with the class.
12996         * domain-internals.h: Added booleans to MonoJitInfo to cache the
12997         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
12998         applicable to the JITted method.
12999         * reflection.c|h: Added functions to extract (as flags) which security
13000         actions are available (declaratively) for a method, class or assembly.
13001         * metadata.c|h: Added functions to search the declarative security
13002         table in the metadata.
13003         
13004 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
13005
13006         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
13007         EXPORTEDTYPES are already in the class name cache, so there is no
13008         need to add extra code here to look at them. Just removes a bit of
13009         cruft.
13010
13011         (ves_icall_System_Environment_get_TickCount): No need for #if
13012         WINDOWS. We already have the code in io-layer.
13013
13014 2004-11-28  Martin Baulig  <martin@ximian.com>
13015
13016         * loader.c
13017         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
13018         Fixes gen-112.cs.
13019
13020 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
13021
13022         * assembly.c (do_mono_assembly_open): Instead of having a
13023         conditional WITH_BUNDLE, incorporate support for bundles here, by
13024         having a global `bundles' variable holding a pointer to the actual
13025         bundles. 
13026
13027         (mono_register_bundled_assemblies): New API call used by the
13028         bundle code. 
13029
13030         See mkbundle.1 for details.
13031         
13032 2004-11-27  Martin Baulig  <martin@ximian.com>
13033
13034         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
13035         the vtable for generic methods.
13036
13037 2004-11-26  Martin Baulig  <martin@ximian.com>
13038
13039         * metadata.c
13040         (mono_metadata_generic_method_hash): New public function.
13041         (mono_metadata_generic_method_equal): Likewise.
13042
13043         * class-internals.h
13044         (MonoGenericContainer): Added `GHashTable *method_hash'.
13045
13046         * reflection.c (ReflectionMethodBuilder): Added
13047         `MonoGenericContainer *generic_container'.
13048         (reflection_methodbuilder_to_mono_method): Don't create a new
13049         MonoGenericContainer each time we're called.
13050         (mono_reflection_bind_generic_method_parameters): Use
13051         `container->method_hash' to cache the results so we don't create a
13052         different method if we're called several times with the same
13053         arguments.
13054
13055         * loader.c (method_from_methodspec): Use the new
13056         `container->method_hash' here, too.
13057
13058 2004-11-26  Martin Baulig  <martin@ximian.com>
13059
13060         * class.c (inflate_generic_signature): Correctly compute
13061         `res->has_type_parameters'.
13062         (mono_class_vtable): Use the `has_type_parameters' flag to
13063         determine whether we're a generic method.
13064
13065         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
13066
13067 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13068
13069         * object.c (mono_runtime_run_main): Fix a small memory leak.
13070
13071 2004-11-25  Martin Baulig  <martin@ximian.com>
13072
13073         * class.c (set_generic_param_owner): Fixed the loop.
13074
13075 2004-11-25  Martin Baulig  <martin@ximian.com>
13076
13077         * object.c (mono_class_vtable): Don't create any JIT wrappers for
13078         generic methods.
13079
13080 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13081
13082         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
13083         names. Fixes #69787.
13084
13085 2004-11-24  Martin Baulig  <martin@ximian.com>
13086
13087         * class.c (mono_class_create_generic_2): If we don't have a
13088         `ginst->parent', inflate `gklass->parent' to get our parent.
13089
13090 2004-11-24  Martin Baulig  <martin@ximian.com>
13091
13092         * reflection.c (compare_genericparam): Correctly sort the
13093         GenericParam table; fixes #69779.
13094
13095 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
13096
13097         * reflection.c: When writing a PE file, don't create a huge
13098         buffer in memory. Just write the arrays we have to the file.
13099         This reduces memory usage.
13100
13101         * metadata-internals.h: MonoDynamicStream pefile is no longer used
13102         globally.
13103
13104 2004-11-17  Martin Baulig  <martin@ximian.com>
13105
13106         * class.c (mono_class_init): Don't setup `class->parent' for
13107         dynamic instances; moved this to mono_class_generic_2().
13108         (mono_class_create_generic): Also set `klass->inited' for dynamic
13109         generic instances.
13110         (mono_class_create_generic_2): Don't do anything for dynamic
13111         generic instances.  Set `klass->parent' here and also call
13112         mono_class_setup_parent() here. 
13113
13114         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
13115         `MonoType *parent' argument; set `ginst->parent' before calling
13116         mono_class_create_generic_2(), so we set the correct parent.
13117
13118 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
13119
13120         * reflection.c: allow getting attributes from ModuleBuilder
13121         (used by ikvm).
13122
13123 2004-11-17  Martin Baulig  <martin@ximian.com>
13124
13125         * class.c (mono_class_create_from_typedef): If a type parameter is
13126         inherited from an outer class, set its owner to that class.
13127
13128 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
13129
13130         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
13131           for (int*) written size. This fixes bug #69592.
13132
13133 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13134
13135         * icall.c: Added IsAuthenticodePresnet internal call.
13136         * image.c|h: New function that check a MonoImage for an Authenticode
13137         signature in the certificate PE data directory.
13138         * security.c|h: New internal call to ask the runtime if an 
13139         Authenticode signature seems referenced in the PE header.
13140
13141 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
13142
13143         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
13144
13145         * reflection.c (mono_image_create_pefile): Free the assembly streams
13146         after writing out the assembly file.
13147
13148         * object.c (mono_runtime_run_main): Fix small memory leak.
13149
13150         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
13151         property access modifiers. Fixes #69389.
13152
13153 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13154
13155         * domain.c, object.c, object-internals.h, domain-internals.h,
13156         object.h, marshal.c: keep dynamic code info per domain.
13157
13158 2004-11-15  Martin Baulig  <martin@ximian.com>
13159
13160         * class.c (mono_type_get_name_recurse): Put type arguments in
13161         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
13162         see bug #68387.
13163
13164 2004-11-15  Martin Baulig  <martin@ximian.com>
13165
13166         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
13167         (mono_class_setup_vtable): When computing `the_cname' for a
13168         generic instance, don't include the namespace since we'd otherwise
13169         add it twice.
13170
13171 2004-11-15  Martin Baulig  <martin@ximian.com>
13172
13173         * class.c (mono_class_create_generic): Changed return type to void.
13174         (mono_class_create_generic_2): New public function; setup
13175         `class->method', `class->field' and `class->interfaces' here
13176         instead of in mono_class_init().
13177
13178         * class.h (mono_class_create_generic): Moved to class-internals.h.
13179
13180 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
13181
13182         * reflection.c (mono_image_create_pefile): take a file HANDLE.
13183         rather than writing to memory, write to this file. Right now,
13184         we are just writting into a buffer, and copying that. However
13185         we can avoid the buffer later.
13186
13187         (mono_dynamic_stream_reset): new function
13188
13189         * icall.c, object-internals.h: update for the above.
13190
13191 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
13192
13193         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
13194         have been using gc'd memory. First it is slower, unlikely
13195         the comment in the source code said, secondly, it increases
13196         our footprint to do it in the gc.
13197
13198         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
13199         the method so that it does not have to copy to managed code.
13200
13201 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13202
13203         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
13204
13205 2004-11-12  Martin Baulig  <martin@localhost>
13206
13207         * reflection.c (mono_image_create_token): Allow generic method
13208         definitions here, since they may appear in an `.override'; see
13209         gen-98/gen-99 for an example.
13210
13211 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
13212
13213         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
13214         #69365.
13215
13216         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
13217         descriptive.
13218
13219 2004-11-11  Martin Baulig  <martin@ximian.com>
13220
13221         * class.c (mono_class_setup_vtable): In an explicit interface
13222         implementation, the method name now includes the arity.
13223
13224 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
13225
13226         * object.c (mono_array_full_copy): Fix warning.
13227
13228 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
13229
13230         * appdomain.c: Removed look_for_method_by_name(). Use the new method
13231         mono_class_get_method_from_name() instead.
13232         
13233         * class-internals.h: Added two new types of wrappers. 
13234         Added MonoRemotingTarget enum. Added new trampoline function type, which
13235         takes an additional MonoRemotingTarget value as parameter, so it is
13236         possible to request a trampoline for a specific target.
13237         
13238         * class.c: Added new mono_class_get_method_from_name() method.
13239         
13240         * class.h: In MonoRemoteClass, we can have now to vtables, one for
13241         general remoting sinks and one specific for cross domain calls.
13242         
13243         * debug-helpers.c: Added new wrapper names.
13244         
13245         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
13246         of a remote class.
13247         
13248         * image.c: Porperly delete value objects form the remoting invoke hashtable.
13249         
13250         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
13251         with several other methods (mono_marshal_get_xappdomain_dispatch,
13252         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
13253         and others) can generate a fast remoting wrapper for cross domain calls.
13254         More information can be found in docs/remoting.
13255         Other changes: Removed mono_find_method_by_name, and used
13256         mono_class_get_method_from_name instead.
13257         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
13258         is stored in the remoting invoke hashtable.
13259         
13260         * marshal.h: published the new method for getting the xdomain wrapper,
13261         and also added a method for getting the adequate wrapper for a given
13262         method and target.
13263         
13264         * object-internals.h, object.c: Added a couple of methods for capying and
13265         cloning arrays.
13266         Modified mono_install_remoting_trampoline, which takes the new remoting
13267         trampoline that has a remoting target as parameter.
13268         mono_class_proxy_vtable now also takes a remoting target as parameter, and
13269         will return the most suitable vtable for the target.
13270         Added mono_remote_class_vtable, which returns the vtable of a remote class
13271         (which can be the normal remoting vtable or the xdomain vtable).
13272         
13273         * threads.c: the xdomain invoke and dispatch wrappers must also be
13274         protected against interruptions.
13275
13276 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13277
13278         * icall.c: use memmove in BlockCopyInternal when the source and
13279         destination arrays are the same.
13280
13281 2004-11-09  Martin Baulig  <martin@ximian.com>
13282
13283         * class-internals.h (MonoGenericContainer): Removed `method' and
13284         `signature', replaced them with `is_method' and `is_signature'
13285         flags.  Added `context'.
13286
13287         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
13288         instead of a `MonoGenericContainer *'.
13289
13290         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
13291         for dynamic type parameters.
13292         (mono_metadata_load_generic_params): Setup `container->context'.
13293
13294         * reflection.c (mono_reflection_setup_generic_class): Setup
13295         `tb->generic_container->context'.
13296         (do_mono_reflection_bind_generic_parameters): Use
13297         mono_class_inflate_generic_type() to correctly inflate types,
13298         rather than using our own hack just for MONO_TYPE_VAR.
13299
13300 2004-11-09  Martin Baulig  <martin@ximian.com>
13301
13302         * class.c (mono_class_inflate_generic_method): Small fix; don't
13303         crash here.
13304
13305         * icall.c
13306         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
13307         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
13308         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
13309         (ves_icall_Type_BindGenericParameters): Likewise.
13310         (ves_icall_Type_get_IsGenericInstance): Likewise.
13311         (ves_icall_Type_GetGenericParameterPosition): Likewise.
13312         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
13313         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
13314         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
13315
13316 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13317
13318         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
13319         assembly versions and public key tokens. Fixes #69113.
13320
13321 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
13322
13323         * metadata.c: fix bug introduced with the type cache changes
13324         on 2004-11-06.
13325
13326 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
13327
13328         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
13329         the MonoClass pointer instead of the token in exception clauses.
13330         * reflection.c: updates for the above and make the code not depend
13331         on the structure of MonoExceptionClause.
13332
13333 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13334
13335         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13336         Add support for dynamic assemblies. Fixes #69114.
13337
13338         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
13339
13340 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13341
13342         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
13343         since most only those methods use it. the code member of
13344         MonoMethodPInvoke was dead, so that can be removed too. Also,
13345         remove inline_count (again, not used), and move slot so that it
13346         can share bits with some other flags. This saves 8 bytes in the
13347         structure and gives us about 50 kb back for mcs helloworld.cs
13348
13349         * *.[ch]: Do naming changes for the above.
13350
13351         * loader.c (mono_method_get_header): Lazily init the header
13352         on first access.
13353         (mono_get_method_from_token): don't init the header here
13354         (mono_free_method): the header may never be allocated
13355
13356         Overall, this saves 150 kb of unmanaged allocations
13357         for mcs helloworld.cs. That accounts for 10% of the unmanaged
13358         memory at runtime.
13359         
13360         * loader.c, loader.h (mono_method_get_header): new accessor.
13361
13362         * *.[ch]: use the above method. Prepares us to lazily load
13363         the header.
13364
13365         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
13366         three warnings, which are actual bugs (see 69206).
13367
13368         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
13369         unused. Saves a cool 4 bytes / method.
13370
13371 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
13372
13373         * metadata.c (builtin_types): Add types for System.Object here.
13374         (mono_metadata_parse_type_full): Cache MonoType*'s that are
13375         for a class or valuetype from klass->this_arg or klass->byval_arg.
13376
13377         On mcs for a hello world, this gets us down from 21836 MonoType's
13378         to 14560.
13379
13380         (mono_metadata_free_type): Account for the above change.
13381
13382 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
13383
13384         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
13385         exception instead of asserting if name is null.
13386         (ves_icall_System_AppDomain_GetData): Ditto.
13387
13388 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13389
13390         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
13391         EnumBuilder.
13392
13393         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
13394         Return NULL when the domain does not have entry_assembly set.
13395
13396         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
13397         Add a 'resource_modules' argument.
13398         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
13399
13400         * reflection.c (mono_reflection_create_runtime_class): Move setting
13401         of wastypebuilder here, so mono_get_type_object () returns a MonoType
13402         for enums too.
13403
13404         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
13405         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
13406         Throw an ArgumentNullException if 'ptr' is null.
13407
13408         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
13409         assemblies here. Fixes #69020.
13410
13411 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13412
13413         * reflection.c (build_compressed_metadata): Fix the previous patch for
13414         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
13415         the stack.
13416
13417 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
13418
13419         * assembly.c (mono_assembly_names_equal): Allow a match if one of
13420         the cultures is false. Fixes #69090.
13421
13422         * reflection.c (build_compressed_metadata): Fix invalid memory read 
13423         detected by valgrind.
13424         
13425         * reflection.c (mono_reflection_get_type): Avoid triggering a 
13426         TypeResolve multiple times for the same type. Fixes #65577.
13427
13428 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
13429
13430         * marshal.c: Avoid using ldftn to call managed functions. It is
13431         much slower than just a call.
13432
13433         * reflection.c (mono_module_get_object): free the basename we
13434         allocate here from glib.
13435         
13436         * reflection.c (ensure_runtime_vtable): make sure to free
13437         overrides.  Also, we were allocating an array of MonoMethod not an
13438         array of MonoMethod*.
13439
13440         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
13441
13442         * image.c (mono_image_close): free image->guid here.
13443
13444 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13445
13446         * reflection.c: Fix some spec conformance issues with the PE file
13447         structures so mcs compiled apps run on the Net 2.0 beta.
13448
13449 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
13450
13451         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
13452         Implement this. Fixes #67264.
13453
13454         * debug-helpers.h debug-helpers.c marshal.c: Move 
13455         mono_find_method_by_name to debug-helpers.c.
13456
13457 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
13458
13459         * object.c (mono_release_type_locks): type_initialization_hash is
13460         a GHashTable.
13461
13462         * reflection.c object.c object-internals.h: Fix warnings.
13463
13464         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
13465         without accessors. Fixes #61561.
13466
13467         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
13468         application base from the root domain if not set. Fixes #65641.
13469         (mono_runtime_init): Fix warning.
13470
13471 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13472
13473         * appdomain.c: call mono_thread_pool_init.
13474         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
13475         of worker threads based on the number of CPUs and the environment
13476         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
13477         for non-windows (windows) systems.
13478
13479 2004-10-27  Chris Toshok  <toshok@ximian.com>
13480
13481         * mono-debug-debugger.c (write_class): don't call mono_class_init
13482         here, as even with the check for (!klass->init_pending), we get
13483         into a situation where we're hitting cycles in class
13484         initialization.  Fixes #68816.
13485
13486 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13487
13488         * image.c: Avoid overwriting values in the loaded_images_hash when an
13489         assembly is loaded multiple times. Fixes #61152.
13490
13491         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
13492         so multiple satellite assemblies for the same name can be loaded.
13493         Fixes #68259.
13494
13495         * mono_domain_assembly_preload: Actually return the loaded assembly, 
13496         not NULL.
13497
13498         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
13499         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
13500
13501         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
13502         pending finalizers are not invoked after the appdomain has been 
13503         unloaded. Fixes #67862.
13504
13505 2004-10-22  Martin Baulig  <martin@ximian.com>
13506
13507         * mono-debug-debugger.c
13508         (mono_debugger_runtime_invoke): Don't box valuetypes.
13509
13510 2004-10-22  Chris Toshok  <toshok@ximian.com>
13511
13512         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
13513         don't hide private methods.
13514
13515 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
13516
13517         * icall.c: Allows the runtime to "share" (when known) the public key
13518         token of an assembly. This avoid the need to recalculate the token 
13519         (from the public key) in managed code.
13520
13521 2004-10-21  Chris Toshok  <toshok@ximian.com>
13522
13523         * debug-helpers.c (append_class_name): argh, revert last patch.
13524         
13525 2004-10-21  Chris Toshok  <toshok@ximian.com>
13526
13527         * debug-helpers.c (append_class_name): use '+' as the delimiter,
13528         not '/', so that it matches what the debugger uses to look up
13529         methods.
13530
13531 2004-10-21  Martin Baulig  <martin@ximian.com>
13532
13533         * mono-debug-debugger.c (mono_debugger_throw_exception): New
13534         public method; this is called each time an exception is thrown and
13535         allows the debugger to use exception catch points.
13536
13537 2004-10-21  Martin Baulig  <martin@ximian.com>
13538
13539         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
13540         the stack pointer and the exception object in some struct and pass
13541         that to the debugger.
13542
13543 2004-10-21  Chris Toshok  <toshok@ximian.com>
13544
13545         * mono-debug-debugger.c (do_write_class): add instance/static
13546         event support.  We don't expose "raise" or "other" yet.
13547         (event_is_static): new method.
13548
13549 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
13550
13551         * mono-debug-debugger.c
13552         (mono_debugger_handle_exception): Remove
13553         bogus return value for fussy compilers.
13554
13555 2004-10-20  Martin Baulig  <martin@ximian.com>
13556
13557         * mono-debug-debugger.c
13558         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
13559         (mono_debugger_handled_exception): Likewise.
13560
13561 2004-10-20  Martin Baulig  <martin@ximian.com>
13562
13563         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13564         MONO_DEBUGGER_EVENT_EXCEPTION.
13565
13566         * mono-debug-debugger.c (mono_debugger_handle_exception): New
13567         public function to send the debugger a notification for an
13568         exception and inform it about a catch/finally clause.
13569
13570 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
13571
13572         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
13573         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
13574         fix 2.95 build. 
13575
13576         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
13577
13578 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13579
13580         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
13581         marshalled as [In,Out]. Fixes #58325.
13582
13583 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
13584
13585         * reflection.c (mono_method_body_get_object): Implement some fields.
13586
13587 2004-10-12  Martin Baulig  <martin@ximian.com>
13588
13589         * reflection.c (mono_reflection_bind_generic_parameters): Small
13590         fix, correctly retrieve our parent from a generic instance.
13591
13592 2004-10-12  Martin Baulig  <martin@ximian.com>
13593
13594         * metadata.c (mono_metadata_generic_param_equal): We always have
13595         an owner.
13596
13597         * class.c
13598         (mono_class_from_generic_parameter): We need to have an owner.
13599         (my_mono_class_from_generic_parameter): Likewise.
13600
13601         * reflection.c (mono_reflection_setup_generic_class): Renamed to
13602         mono_reflection_create_generic_class() and added a new
13603         mono_reflection_setup_generic_class().  
13604         (mono_reflection_initialize_generic_param): If we're a nested
13605         generic type and inherited from the containing class, set our
13606         owner to the outer class.
13607
13608 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
13609
13610         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
13611
13612         * reflection.c (mono_method_body_get_object): New function to create
13613         a MethodBody object.
13614
13615         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
13616
13617 2004-10-11  Martin Baulig  <martin@ximian.com>
13618
13619         * metadata.c (_mono_metadata_type_equal): Renamed to
13620         do_mono_metadata_type_equal() and made static.
13621
13622 2004-10-11  Martin Baulig  <martin@ximian.com>
13623
13624         * appdomain.c: Bump corlib version number to 28.
13625
13626 2004-10-10  Martin Baulig  <martin@ximian.com>
13627
13628         * class-internals.h
13629         (MonoGenericInst): Added `MonoGenericContainer *container'.
13630         (MonoGenericMethod): Likewise.
13631         (MonoGenericContext): Likewise.
13632         (MonoGenericParam): Added `MonoGenericContainer *owner'.
13633
13634         * metadata.c
13635         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
13636         (do_mono_metadata_parse_generic_inst): Likewise.
13637         (mono_metadata_parse_type_full): New public method.  This is the actual
13638         mono_metadata_parse_type() implementation - with an additional
13639         `MonoGenericContainer *' argument.
13640         (mono_metadata_parse_array_full): Likewise.
13641         (mono_metadata_parse_signature_full): Likewise.
13642         (mono_metadata_parse_method_signature_full): Likewise.
13643         (mono_metadata_parse_mh_full): Likewise.
13644         (mono_type_create_from_typespec): Likewise.
13645         (mono_metadata_interfaces_from_typedef_full): New public method;
13646         this is similar to the other _full() methods, but we take a
13647         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
13648         (mono_metadata_parse_generic_param): Take an additional
13649         `MonoGenericContainer *' argument and lookup the MonoGenericParam
13650         from that container.
13651         (mono_metadata_generic_param_equal): New static method to compare
13652         two type parameters.
13653         (_mono_metadata_type_equal): New static method; takes an
13654         additional `gboolean signature_only' argument - if true, we don't
13655         compare the owners of generic parameters.
13656         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
13657         with a TRUE argument - do a signature-only comparision.
13658
13659         * loader.c: Use the new _full() methods and pass the
13660         MonoGenericContainer to them.
13661
13662         * object-internals.h (MonoReflectionTypeBuilder): Added
13663         `MonoGenericContainer *generic_container' field.
13664         (MonoReflectionMethodBuilder): Likewise.
13665
13666 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
13667
13668         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
13669         case initial images of dynamic assemblies.
13670
13671         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
13672
13673         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
13674
13675         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
13676         length of event->other array.
13677         (typebuilder_setup_events): Ditto.
13678
13679         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
13680         'assembly_by_name' and add an 'assemblies' list.
13681
13682         * assembly.h assembly.c: Add a new search hook for determining whenever
13683         an assembly is already loaded. Use this instead of searching in the
13684         loaded_assemblies list.
13685
13686         * domain.c appdomain.c: Implement the new search hook so loaded 
13687         assemblies are now scoped by appdomain. Fixes #67727.
13688
13689 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
13690
13691         * threads.c (mono_thread_attach): Initialize synch_lock field so
13692         mono_thread_detach works again.
13693
13694         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
13695         'lib' too. Fixes #63130.
13696
13697 2004-10-06  Jackson Harper  <jackson@ximian.com>
13698
13699         * culture-info-tables.h: regenerated.
13700
13701 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
13702
13703         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
13704         implemented by other interfaces in the result. Fixes #65764.
13705         
13706         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13707         Handle unloadable modules without crashing.
13708
13709         * image.c (load_modules): Revert the previous patch since modules must
13710         have a fixed index inside the array.
13711         
13712         * image.c (load_modules): Don't include native modules in the modules
13713         array.
13714
13715 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13716
13717         * reflection.h: Add param_defaults field.
13718
13719         * reflection.c: Add support for parameter defaults in dynamic methods.
13720         Fixes #64595.
13721
13722         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
13723         an empty string when a type has no namespace. Fixes #64230.
13724
13725 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
13726
13727         * tabledefs.h: Added "internal" security actions to support non-CAS
13728         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
13729         Note: they do not seems to be used anymore in 2.0 (new metadata format)
13730
13731 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
13732
13733         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
13734         constructor of abstract class. Fixes #61689.
13735
13736 2004-10-04  Martin Baulig  <martin@ximian.com>
13737
13738         * class-internals.h (MonoGenericContainer): New type.
13739         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
13740         `MonoGenericContainer *generic_container'.
13741         (MonoClass): Replaced `gen_params' and `num_gen_params' with
13742         `MonoGenericContainer *generic_container'.
13743
13744         * metadata.c (mono_metadata_load_generic_params): Return a
13745         `MonoGenericContainer *' instead of a `MonoGenericParam *';
13746         removed the `num' argument.
13747
13748 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13749
13750         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
13751         for dynamic images.
13752
13753         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
13754         machine fields.
13755
13756         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
13757
13758         * reflection.c: Save pe_kind and machine values into the generated
13759         image file.
13760
13761         * appdomain.c: Bump corlib version number.
13762
13763         * object-internals.h: Reorganize layout of LocalBuilder.
13764
13765         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
13766         New helper function.
13767
13768         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
13769         created MonoType for dynamic types. Fixes #66180.
13770
13771 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
13772
13773         * threadpool.c: the ares hashtable needs a critical section around it.
13774         this prevents some nasty segfaults
13775
13776 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13777
13778         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
13779         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
13780         bug 67324).
13781         
13782 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13783
13784         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
13785         
13786 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13787
13788         * image.c: Always canonicalize image file names, to avoid loading
13789         the same assembly twice when referenced using a relative path.
13790
13791 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13792
13793         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
13794
13795         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
13796
13797         * marshal.c: Fix warnings.
13798
13799 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
13800
13801         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
13802         attempting to marshal the delegate_trampoline as the method_addr.
13803         This patch has a static hashtable of marshalled delegates so that 
13804         we can map delegate_trampoline addresses back to delegates.  This
13805         allows a delegate passed to managed code to be passed back into native
13806         code.  Fixes #67039
13807
13808 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13809
13810         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
13811
13812         * reflection.c (method_encode_code): Align method headers properly.
13813         Fixes #66025.
13814
13815 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13816
13817         * marshal.c: In the runtime invoke wrapper, reset the abort
13818         exception if it is cached. This avoids the automatic rethrowal of 
13819         the exception after the catch of the wrapper. Also check for pending
13820         interruptions before calling the managed method. This is done using
13821         the new method emit_thread_force_interrupt_checkpoint, since the
13822         normal checkpoint method is ignored when running the invoke wrapper.
13823         * object.c: If the abort exception is rethrown, set the abort_exc
13824         field of the thread, so it will be rethrown aftere every catch.
13825         * threadpool.c: Only run an interruption checkpoint if what has been
13826         requested is a stop of the thread (aborts will be ignored).
13827         * threads.c: By default, a thread will now never be interrumped while
13828         running the runtime invoke wrapper (this ensures that runtime_invoke
13829         will always return to the caller if an exception pointer is provided).
13830         There is a new special method mono_thread_force_interruption_checkpoint()
13831         to force an interruption checkpoint even if running a protected
13832         wrapper, which is used by the same runtime invoke wrapper to do a check
13833         at a safe point.
13834
13835 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13836
13837         * object.c, object-internals.h: Implemented mono_release_type_locks,
13838         which releases the cctor locks held by a thread.
13839         * threads.c, threads.h: In thread_cleanup, release cctor locks held
13840         by a thread. Added mono_thread_exit() method to be used to safely stop
13841         a thread.
13842
13843 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13844
13845         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13846         Move null check before dereference.  Avoid indexing beyond the end
13847         of the 'modules' array.
13848
13849 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13850
13851         * metadata-internals.h (MonoImage): Add module_count field.
13852         * image.c (load_modules): Set image->module_count.
13853         (mono_image_load_file_for_image): Use image->module_count.
13854         * reflection.c (mono_image_load_module): Append to image->modules array 
13855         of dynamic assembly.
13856         (mono_module_get_object): Fix loop to actually increment index.
13857         Use image->module_count.
13858         * assembly.c (mono_assembly_load_references): Use image->module_count.
13859         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
13860         Likewise.
13861
13862 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13863
13864         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
13865         Avoid assert on generic types.
13866
13867 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
13868
13869         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
13870
13871         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
13872
13873         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
13874         function to convert a MarshalSpec structure to its managed counterpart.
13875
13876         * reflection.c: Fix warnings.
13877         
13878         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
13879         field.
13880
13881         * icall.c (mono_create_icall_signature): Fix build.
13882
13883 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * icall.c: Add MakePointType icall.
13886
13887         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
13888         warnings.
13889
13890 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13891
13892         * threadpool.c: reuse allocated slots in the queue.
13893
13894 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13895
13896         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
13897
13898         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
13899
13900         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
13901         previous change.
13902
13903         * tabledefs.h: Add constants for pinvoke attributes BestFit and
13904         ThrowOnUnmappableChar.
13905
13906         * icall.c (ves_icall_Type_GetPacking): New icall.
13907
13908 2004-09-24  Martin Baulig  <martin@ximian.com>
13909
13910         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
13911
13912 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13913
13914         * appdomain.c:
13915         (mono_domain_set): allow setting a domain that is being unloaded.
13916         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
13917         being unloaded.
13918
13919 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13920
13921         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
13922         the GetCustomAttributes icall.
13923
13924 2004-09-23  Martin Baulig  <martin@ximian.com>
13925
13926         * object-internals.h (MonoReflectionGenericParam): Replaced
13927         'has_ctor_constraint', `has_reference_type' and `has_value_type'
13928         with `guint32 attrs'.
13929
13930 2004-09-23  Martin Baulig  <martin@ximian.com>
13931
13932         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
13933
13934 2004-09-23  Martin Baulig  <martin@ximian.com>
13935
13936         * object-internals.h (GenericParameterAttributes): New enum.
13937
13938 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13939
13940         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
13941         
13942         * class.c (init_events): Fill out event->other field.
13943
13944         * class.c: Fix warnings.
13945
13946         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
13947
13948 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
13949
13950         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
13951         walk which doesn't supply the IL offset.
13952
13953 2004-09-22  Martin Baulig  <martin@ximian.com>
13954
13955         * reflection.c (mono_reflection_setup_internal_class): If we're
13956         System.ValueType, System.Object or System.Enum, set
13957         `klass->instance_size' and create the vtable.
13958         (mono_reflection_create_internal_class): If we're an enum type,
13959         get the base class from our current corlib.
13960
13961 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
13962
13963         * reflection.h (MonoResolveTokenError): New type.
13964
13965         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
13966         icall.
13967
13968         * icall.c: Add an 'error' argument to the ResolveToken icalls.
13969
13970 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
13971
13972         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
13973         Support also calling constructors, but only for already allocated objects.
13974
13975 2004-09-17  Geoff Norton <gnorton@customerdna.com>
13976
13977         * reflection.c (type_get_qualified_name): If the klass is null
13978         return the typename to avoid a NullRefEx.
13979         (encode_cattr_value): Get the qualified name of the boxed type,
13980         not the underlying enumtype.  Fixes #62984.
13981
13982 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
13983
13984         * marshal.c: Fix problems with previous checkin.
13985
13986 2004-09-21    <vargaz@freemail.hu>
13987
13988         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
13989         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
13990
13991         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
13992
13993 2004-09-21  Geoff Norton <gnorton@customerdna.com>
13994
13995         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
13996         should only return a type for pointers, arrays, and passbyref types.
13997         Fixes bug #63841.
13998
13999 2004-09-21  Martin Baulig  <martin@ximian.com>
14000
14001         * domain.c (mono_debugger_check_runtime_version): New public
14002         function.
14003
14004         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
14005
14006 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
14007
14008         * reflection.c: Added missing sort to the declarative security 
14009         attributes table. MS implementation stops seeing the attributes if the
14010         token number regress in the table (as shown by ildasm and permview).
14011
14012 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
14013
14014         * object-internals.h (MonoReflectionModule): Add 'token' field.
14015         
14016         * reflection.c (mono_reflection_get_token): Add support for Module
14017         and Assembly.
14018         (mono_module_get_object): Set 'token' field.
14019         (mono_module_file_get_object): Set 'token' field.
14020
14021         * icall.c: Add new Assembly and Module icalls.
14022
14023         * appdomain.c: Bump corlib version.
14024
14025 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
14026
14027         * loader.h loader.c class.h class.c: Add helper functions for obtaining
14028         tokens of metadata objects.
14029
14030         * reflection.h reflection.c (mono_reflection_get_token): New function
14031         to obtain the token of a metadata object.
14032
14033         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
14034
14035 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
14036
14037         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
14038         
14039         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
14040
14041 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
14042
14043         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
14044         * object-internals.h: Added 3 MonoArray* members to MonoReflection
14045         AssemblyBuilder to access the permissions set in the class lib.
14046         * reflection.c: Added security attributes encoding step in 
14047         mono_image_build_metadata.
14048         * tabledefs.h: Added new security actions defined in 2.0:
14049         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
14050
14051 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
14052
14053         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
14054         macro parameter.
14055
14056 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
14057  
14058         * locales.c: nullify the ICU_collator member of CompareInfo when it is
14059           finalized. There where random SIGSEVs at program termination, when
14060           an object being finalized was trying to do a string comparison and
14061           the current culture was already finalized.
14062  
14063 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14064
14065         * threads.c: call thread_cleanup before finishing the thread if we get
14066         there.
14067
14068 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
14071         assemblies from the parent. Fixes #65665.
14072
14073 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
14074
14075         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
14076         modifiers.
14077
14078 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
14079
14080         * reflection.h: add prototype for mono_get_dbnull_object
14081         * reflection.c: add prototypes for get_default_param_value_blobs 
14082         and mono_get_object_from_blob for fussier compilers
14083
14084 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
14085  
14086         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
14087         false deadlock checks in class initialization.
14088  
14089 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * image.c (mono_image_addref): Fix comment.
14092
14093         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
14094         possible.
14095
14096 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
14097
14098         * reflection.c (mono_param_get_objects): Modified to return
14099         ParameterInfo.DefaultValue object.
14100
14101         (get_default_param_value_blobs):
14102         (mono_get_object_from_blob):
14103         (mono_get_dbnull_object): New helper routines. 
14104
14105         * object.c (mono_get_constant_value_from_blob): New helper routine
14106         carved out from get_default_field_value ()
14107
14108         * object-internals.h (mono_get_constant_value_from_blob): Added
14109         function declaration.
14110
14111 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14112
14113         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
14114         referenced assemblies. Fixes #62135.
14115
14116         * exception.h exception.c (mono_get_exception_file_not_found2): New
14117         helper function.
14118
14119 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14120
14121         * class.h class.c: Add mono_type_get_underlying_type ().
14122
14123 2004-09-09  Geoff Norton <gnorton@customerndna.com>
14124
14125         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
14126         Fix GetTypes() to support dynamically created assemblies.
14127
14128 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
14129
14130         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
14131         
14132         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
14133         previous patch.
14134
14135         * reflection.h reflection.c loader.c: Allow dynamic construction of
14136         pinvoke methods. Fixes #65571.
14137         
14138         * reflection.c (mono_reflection_get_type): Revert previous change since
14139         it causes regressions.
14140
14141 2004-09-08  Martin Baulig  <martin@ximian.com>
14142
14143         * class.c (class_compute_field_layout): Don't call
14144         mono_class_layout_fields() for open generic instances.
14145
14146 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
14147         * threads.c appdomain.c: fix typo in GC macro
14148
14149 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14150
14151         * threads.c: don't call mono_thread_detach() in start_wrapper(),
14152         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
14153
14154 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
14155
14156         * image.c (mono_image_close): Applied patch from 
14157         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
14158         assembly is loaded multiple times from data.
14159         
14160         * image.c (mono_image_open): Fix warning.
14161
14162 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14163
14164         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
14165         once. Fixes #58334.
14166         
14167         * reflection.c (mono_reflection_create_runtime_class): Initialize
14168         klass->nested_classes. Fixes #61224.
14169
14170 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14171
14172         * threads.c: sched_yield() on exit, to allow threads to quit.
14173
14174 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14175
14176         * object.c (mono_unhandled_exception): Remove leftover debug code.
14177
14178 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
14179
14180         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
14181
14182 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14183
14184         * marshal.c (emit_marshal_array): Really null terminate string arrays.
14185         
14186         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
14187
14188 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14189
14190         * marshal.c (emit_marshal_array): Null terminate string arrays.
14191         
14192         * marshal.c (raise_auto_layout_exception): Fix warning.
14193
14194         * reflection.c (mono_param_get_objects): Initialize the default value
14195         with DBNull.Value, not null. Fixes #62123.
14196
14197 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
14198
14199         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
14200         throw an exception with a cute explanation.
14201
14202 2004-09-06  Dick Porter  <dick@ximian.com>
14203
14204         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
14205         Close the new process's thread handle, as we don't use it.  The
14206         handle stays around forever otherwise.
14207
14208 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14209
14210         * object.c (arith_overflow): Fix warning.
14211
14212         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
14213         calling conventions in method refs. Fixes #65352.
14214
14215         * reflection.c: Fix warnings.
14216
14217 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
14218
14219         * icall.c: Add a new icall for Array.Clear
14220
14221 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
14222
14223         * object.c: When allocating an array, we have to throw
14224         an overflow exception if any of the lengths are < 0.
14225
14226 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14227
14228         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
14229         properly. Also move implementation of string array marshalling to 
14230         managed code. Fixes #42316.
14231
14232 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14233
14234         * assembly.c: provide more information when loading an assembly fails.
14235
14236 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14237
14238         * filewatcher.c: don't expect the development fam package to be
14239         installed.
14240
14241 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
14242
14243         * marshal.c: Make a copy of the signature cookie since it will be
14244         freed by the caller.
14245         
14246         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
14247
14248         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
14249
14250         * metadata.c (mono_metadata_free_marshal_spec): New function to free
14251         marshal specs.
14252
14253         * marshal.c: More refactoring.
14254         
14255         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
14256         smaller functions.
14257
14258 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
14259
14260         * object.c: In mono_message_invoke, fill the output parameter array after
14261           calling the managed method (it was done before the call). This fixes
14262           bug #59299.
14263
14264 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14265
14266         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
14267         as well.
14268
14269 2004-09-02  Martin Baulig  <martin@ximian.com>
14270
14271         * class.c (mono_class_instance_size): Don't allow generic type
14272         definitions or open generic instances.
14273         (mono_class_array_element_size): If we're a value type, call
14274         mono_class_instance_size() on the original class.
14275
14276         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
14277         handle generic instances.
14278
14279         * mono-debug-debugger.c (write_type): Handle generic instances
14280         like classes.
14281
14282 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
14285         the allocation request fails. Fixes #65089.
14286
14287         * object.c (mono_runtime_free_method): Do not call mono_free_method.
14288         
14289         * object.c (mono_runtime_free_method): New function to free a dynamic
14290         method.
14291
14292         * marshal.c (mono_delegate_free_ftnptr): New function to free the
14293         delegate trampoline.
14294
14295         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
14296         with hasthis as dynamic,
14297
14298         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
14299
14300         * domain.c (mono_jit_info_table_remove): New function to remove an
14301         entry from the jit info table.
14302
14303         * class-internals.h (MonoMethod): Add 'dynamic' field.
14304
14305         * loader.c: Fix warnings.
14306
14307 2004-09-01  Martin Baulig  <martin@ximian.com>
14308
14309         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
14310         instead of mono_debugger_lock() because the latter one is a no-op
14311         unless running in the debugger.
14312
14313 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
14314
14315         * class.c (class_compute_field_layout): Classes with auto-layout or
14316         reference fields are not blittable.
14317         
14318 2004-09-01  Dick Porter  <dick@ximian.com>
14319
14320         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
14321         mono_image_get_filename() to get the assembly location.
14322
14323         * icall.c:
14324         * metadata.h: Fix compile warnings
14325
14326 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
14327
14328         * class.c (class_compute_field_layout): System.Object is blittable.
14329
14330         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
14331         as in/out. Fixes #59909.
14332
14333 2004-09-01  Martin Baulig  <martin@ximian.com>
14334
14335         * metadata.h (MONO_TYPE_ISREFERENCE): Call
14336         mono_metadata_generic_inst_is_valuetype() if we're a generic
14337         instance to check whether our underlying type is a reference type.
14338
14339 2004-09-01  Martin Baulig  <martin@ximian.com>
14340
14341         * metadata.c (mono_type_size): If we're a generic instance, call
14342         mono_class_value_size() for value types.
14343
14344 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
14345
14346         * marshal.c: Implement more custom marshalling functionality. Fixes
14347         #64915.
14348
14349 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14350
14351         * mono-debug.c, debug-mono-symfile.c: add some locking love.
14352
14353 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14354
14355         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
14356
14357         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
14358
14359         * icall.c: Fix some warnings.
14360
14361         * threads.c (abort_appdomain_thread): Fix unref errors.
14362         (mono_thread_current): Fix THREAD_DEBUG define.
14363
14364 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14365
14366         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
14367
14368         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
14369
14370 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
14371
14372         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
14373         string arrays.
14374
14375 2004-08-28  Martin Baulig  <martin@ximian.com>
14376
14377         * metadata.c
14378         (mono_metadata_generic_inst_is_valuetype): New public function.
14379
14380         * metadata.h (MONO_TYPE_ISSTRUCT): Call
14381         mono_metadata_generic_inst_is_valuetype() if we're a generic
14382         instance to check whether our underlying type is a valuetype.
14383
14384 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
14387         #63768.
14388
14389 2004-08-25  Martin Baulig  <martin@ximian.com>
14390
14391         * loader.c (mono_get_method_from_token): Abstract methods can also
14392         be generic and thus have type parameters.
14393
14394         * metadata-internals.h
14395         (MonoDynamicImage): Added `GPtrArray *gen_params'.
14396
14397         * reflection.c (mono_image_get_generic_param_info): Don't create a
14398         metadata row, just add an entry to the `gen_params' array.
14399         (build_compressed_metadata): Sort the `gen_params' array and then
14400         actually create the metadata.
14401
14402 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14403
14404         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
14405
14406 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14407
14408         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
14409
14410 2004-08-24  Martin Baulig  <martin@ximian.com>
14411
14412         * class.cs (mono_class_is_subclass_of): Like an interface, a
14413         generic instance also derives from System.Object.
14414
14415 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14416
14417         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
14418         custom modifiers to be in any order. Fixes #61990.
14419
14420 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14421
14422         * object.c: Register mono_object_new_fast icall.
14423         
14424         * object.c (mono_class_get_allocation_ftn): Return to calling
14425         mono_object_new_fast, since it seems faster to compute the object 
14426         size in unmanaged code than passing it as a parameter.
14427
14428         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
14429
14430         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
14431         this function with Boehm as the oom handler, so we don't have to check
14432         the result of GC_malloc.
14433
14434         * object.c: Remove checks for oom.
14435
14436         * object.h object.c (mono_class_get_allocation_ftn): New function to
14437         return the icall which can be used to allocate an instance of a given
14438         class. 
14439
14440         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
14441
14442         * class-internals.h: Add 'enabled' field.
14443
14444 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
14445
14446         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
14447
14448 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
14449         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
14450         value 0x0010.
14451
14452 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14453
14454         * appdomain.c: use the Tls function for appdomain too,
14455         at Zoltan's request. Actually return in mono_context_get
14456
14457         * appdomain.c, profiler.c, threads.c: use __thread
14458
14459 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14460
14461         * appdomain.c threads.c: Call GC_CreateThread on windows.
14462
14463         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
14464         multiple libraries since this don't work on windows.
14465
14466 2004-08-18  Martin Baulig  <martin@ximian.com>
14467
14468         * class-internals.h
14469         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
14470         MonoMethodHeader.
14471
14472         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
14473         MonoMethodNormal since we also need it for abstract and interface
14474         methods.
14475
14476         * reflection.c
14477         (build_compressed_metadata): Sort the GenericParam table.
14478         (mono_image_create_token): Added `gboolean create_methodspec'
14479         argument; this is false when generating a MethodImpl token.
14480         (reflection_methodbuilder_to_mono_method): Abstract and interface
14481         methods may also have generic parameters.
14482
14483 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14484
14485         * appdomain.c: thread local alloc
14486
14487 2004-08-17  Martin Baulig  <martin@ximian.com>
14488
14489         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
14490
14491         * icall.c
14492         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
14493         argument.
14494
14495         * class.c (mono_type_get_full_name): New public function.
14496         (mono_type_get_name): Don't include the type arguments.
14497
14498 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14499
14500         * Makefile.am: Build static versions of libmetadata and libmonoruntime
14501         for inclusion into the mono executable.
14502
14503 2004-08-16  Martin Baulig  <martin@ximian.com>
14504
14505         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
14506         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
14507
14508 2004-08-14  Martin Baulig  <martin@ximian.com>
14509
14510         * class.c (dup_type): Also copy the `byref' field.
14511
14512 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14513
14514         * reflection.c (create_dynamic_mono_image): Revert the last change 
14515         since it breaks bootstrap.
14516
14517 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14518
14519         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
14520
14521         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
14522         not free them with g_free.
14523
14524 2004-08-11  Martin Baulig  <martin@ximian.com>
14525
14526         * reflection.c (mono_reflection_setup_internal_class): Also call
14527         mono_class_setup_mono_type() if we already have a `tb->type.type'.
14528
14529 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
14530
14531         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
14532         called during default (first) AppDomain creation. Keep track of
14533         Evidence when loading assemblies.
14534
14535 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
14536
14537         * opcodes.c, opcodes.h: reduce runtime relocations.
14538
14539 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
14540
14541         * culture-info.h, locales.c: fixes and chages to sue the new
14542         optimized format of the locale data.
14543         * culture-info-tables.h: regenerated.
14544
14545 2004-08-06  Geoff Norton <gnorton@customerdna.com>
14546         
14547         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
14548
14549 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
14550
14551         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
14552         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
14553         * domain-internals.h: icall declaration.
14554         * icall.c: icall registration.
14555         * object-internals.h: New fields in MonoAssembly for CAS.
14556
14557 2004-08-05  Duncan Mak  <duncan@ximian.com>
14558
14559         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14560         CEE_LDELEM_ANY.
14561
14562 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
14563
14564         * reflection.c: fix to deal with object[] arrays in custom ctors
14565         (bug #62550).
14566
14567 2004-08-05  Martin Baulig  <martin@ximian.com>
14568
14569         * class.c (mono_class_array_element_size): Added support for
14570         generic instances and correctly handle "recursive" types.
14571
14572 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14573
14574         * assembly.c: Fix warnings.
14575
14576 2004-08-04  Martin Baulig  <martin@ximian.com>
14577
14578         * class.c
14579         (mono_type_get_name_recurse): Added `gboolean include_arity'
14580         argument specifying whether or not we should include the generic
14581         arity in the type name.
14582         (_mono_type_get_name): New static function.
14583         (mono_class_setup_vtable): If we're a generic instance, don't
14584         include the generic arity in the names of explicit method
14585         implementations.        
14586
14587 2004-08-03  Martin Baulig  <martin@ximian.com>
14588
14589         * class.c (mono_type_get_name_recurse): Enclose the generic type
14590         arguments in `<', '>'.
14591
14592 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
14593
14594         * gc.c: make GC warning messages use the trace API, they are just
14595         noise to most of the users.
14596
14597 2004-08-03  Martin Baulig  <martin@ximian.com>
14598
14599         * debug-mono-symfile.c (read_string): Correctly read the string.
14600
14601 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14602
14603         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
14604         
14605         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
14606         icalls.
14607         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
14608
14609 2004-07-30  Martin Baulig  <martin@ximian.com>
14610
14611         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
14612         Reflect latest symbol writer changes.   
14613
14614 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
14615
14616         * object.c: always create an object if null is passed
14617         to Invoke() where a valuetype is expected.
14618
14619 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14620
14621         * marshal.c (mono_marshal_init): make managed
14622         signatures match native ones better for 64bits.
14623
14624 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14625
14626         * appdomain.c: hack to build correctly the private bin path on windows.
14627         Fixes bug #61991.
14628
14629 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14630
14631         * assembly.c: Load mscorlib from the correct framework directory
14632           (mono/<version>/mscorlib.dll).
14633         * appdomain.h: Added prototypes for new functions.
14634         * internals.h: Added some prototypes.
14635         * domain.c: When initializing the runtime, get from the executable and
14636           the configuration files the runtime version that the app supports.
14637           Added support methods for reading app.exe.config. Added list of versions
14638           supported by the JIT. Added two new methods: mono_init_from_assembly,
14639           which initializes the runtime and determines the required version from
14640           the provided exe file, and mono_init_version, which initializes
14641           the runtime using the provided version.
14642         * icall.c: Get machine.config from version-specific directory.
14643         * reflection.c: When generating an image, embed the version number
14644           of the current runtime.
14645
14646 2004-07-28  Dick Porter  <dick@ximian.com>
14647
14648         * socket-io.c
14649         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
14650         returned sockaddr size before creating the remote address object.
14651         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
14652         61608.
14653
14654 2004-07-28  Dick Porter  <dick@ximian.com>
14655
14656         * locales.c (string_invariant_compare_char): Fix invariant char
14657         compares between upper and lower cases.  Fixes bug 61458.
14658
14659 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
14660         
14661         * marshal.c: actually cache stelem.ref wrappers.
14662         
14663 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14664
14665         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
14666         sections and remove the mono_cli_rva_map () function.
14667
14668 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14669
14670         * debug-mono-symfile.c: fix one more endianess issue, from a patch
14671         by Geoff Norton (<gnorton@customerdna.com>).
14672
14673 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
14674
14675         * class.c: fix class loads for pointer types (typeof(int) !=
14676         typeof(int*)).
14677
14678 2004-07-27  Martin Baulig  <martin@ximian.com>
14679
14680         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
14681         reading the debugging information from an external ".mdb" file.
14682
14683 2004-07-24  Martin Baulig  <martin@ximian.com>
14684
14685         * reflection.c (mono_image_get_type_info): Only write a class
14686         layout entry if we actually have a size or a packing size.
14687
14688 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14689
14690         * reflection.c (type_get_fully_qualified_name): 
14691         insert cast to get type checking of ?: with non-gcc compilers
14692
14693 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14694
14695         * rand.c: use g_getenv for both lookups of
14696         MONO_EGD_SOCKET
14697
14698 2004-07-17  Martin Baulig  <martin@ximian.com>
14699
14700         * reflection.c (mono_reflection_bind_generic_method_parameters):
14701         Set `gmethod->reflection_info'.
14702
14703 2004-07-17  Martin Baulig  <martin@ximian.com>
14704
14705         * class.c (mono_class_create_from_typedef): Insert the newly
14706         created class into the hash table before computing the interfaces
14707         since we could be called recursively.
14708
14709 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14710
14711         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
14712         function to implement stelem.ref in managed code
14713         * class-internals.h, debug-helpers.c: a new wrapper type
14714         for the above.
14715
14716 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
14717
14718         * gc.c: allow GC handles to work even when no GC is compiled in.
14719         Fix part of bug #61134 (GetAddrOfPinnedObject).
14720
14721 2004-07-13  Peter Williams  <peter@newton.cx>
14722  
14723         * process.c (complete_path): Make sure we don't attempt to execute
14724         directories.
14725  
14726 2004-07-12  Geoff Norton <gnorton@customerdna.com>
14727
14728         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
14729           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
14730           and will add/subtract the hour if needed
14731
14732 2004-07-12  Martin Baulig  <martin@ximian.com>
14733
14734         * reflection.c (mono_field_get_object): If we have
14735         `field->generic_info', take the attributes from
14736         `field->generic_info->generic_type'.    
14737
14738 2004-07-12  Martin Baulig  <martin@ximian.com>
14739
14740         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
14741         This function must be called before initializing the runtime.
14742         (mono_debug_init_1): New function; call this after initializing
14743         the runtime, but before loading the assembly.  It tells the
14744         debugger to load corlib and the builtin types.
14745
14746         * mono-debug-debugger.c: Did some larger changes in the debugging
14747         code; support recursive class declarations, make sure we actually
14748         add all classes.
14749
14750 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14751
14752         * debug-helpers.c: undo my previous patch and fixed the real issue in
14753         ../mini/exceptions-x86.c
14754
14755 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14756
14757         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
14758         when no HOME env. variable was set and a NullRef was thrown in a .cctor
14759         called from other .cctors.
14760
14761 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
14762
14763         * loader.c: Removed the mono_loader_wine_init hack now that we are
14764         doing a managed version of Windows.Forms.
14765
14766 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14767
14768         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
14769         threadpool.c, threads.c: remove static data from rootset.
14770
14771 2004-07-09  Dick Porter  <dick@ximian.com>
14772
14773         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
14774         Don't do any more processing if the matched length was 0.  It was
14775         increasing the size of the string before.  Fixes bug 61167.
14776
14777 2004-07-09  Dick Porter  <dick@ximian.com>
14778
14779         * socket-io.h:
14780         * socket-io.c
14781         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14782         Add support for SO_PEERCRED if its available.
14783
14784 2004-07-09  Peter Bartok <pbartok@novell.com>
14785         * loader.c: winelib.exe.so error message is now only displayed if
14786         MONO_DEBUG is set. To help us avoid questions when people are trying
14787         out the new Managed.Windows.Forms.
14788
14789 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14790
14791         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
14792         for isinst and castclass wrappers.
14793
14794         * class-internals.h icall.c: Move registration and lookup of JIT icalls
14795         to libmetadata from the JIT, so they could be used by the marshalling
14796         code and the interpreter.
14797
14798         * marshal.c: Register marshalling related JIT icalls here instead of
14799         in mini.c. Use CEE_MONO_ICALL instead of the family of 
14800         CEE_MONO_PROC<x> opcodes to call marshalling functions.
14801
14802         * metadata.h: Remove unneeded marshalling conversions.
14803
14804         * opcodes.c: Update for new opcodes.
14805         
14806 2004-07-08  Martin Baulig  <martin@ximian.com>
14807
14808         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
14809         (mono_debug_get_domain_data): Make this function static.
14810
14811 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14812
14813         * gc.c, object.h: add nice GC handle API for embedders.
14814
14815 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14816
14817         * reflection.c: more changes for the new api
14818
14819         * object.c: When we reflect on a field w/ a constant value, it
14820         will not have a memory location, so we must access metadata. Also,
14821         allow easier reading of strings so that we can read them from
14822         the constant data.
14823
14824         * class.c (mono_class_layout_fields): no need for literal fields here.
14825
14826         * class-internals.h: api changes for const fields
14827
14828         * icall.c (ves_icall_get_enum_info): use new apis for const fields
14829
14830 2004-07-06  Martin Baulig  <martin@ximian.com>
14831
14832         * mono-debug.h: Increment version number to 44.
14833
14834         * mono-debug.c (mono_debug_add_wrapper): The second argument is
14835         now a gpointer, rewrote this whole method.
14836
14837         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
14838         function.  Add information about the wrapper in a new "misc table".
14839
14840         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
14841         for the new misc table.
14842
14843 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14844
14845         * metadata-internals.h image.c: Add a cache for helper signatures.
14846
14847         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
14848
14849 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14850
14851         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
14852         delegates from a delegate. Fixes #61033.
14853         
14854         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
14855         marshalling of stringbuilder arrays. Fixes #59900.
14856
14857 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14858
14859         * icall.c: Add EnumBuilder:setup_enum_type icall.
14860
14861 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14862
14863         * icall.c: Added a new icall for the property version of
14864         OffsetOfStringData.
14865
14866 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14867
14868         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
14869         it has a constant size across platforms.
14870
14871         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
14872         stack trace.
14873
14874 2004-06-29  Martin Baulig  <martin@ximian.com>
14875
14876         * mono-debug.c (mono_debug_add_method): Protect the whole function
14877         in mono_debugger_lock(), not just parts of it.
14878
14879 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14880
14881         * reflection.c: make sure padding bytes in heaps are zeroed.
14882
14883 2004-06-24  David Waite  <mass@akuma.org>
14884
14885         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
14886         image.c, loader.c, locales.c, marshal.c, metadata.c,
14887         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
14888         string-icalls.c, threads.c: change to C90-style comments from C99 /
14889         C++ -style
14890
14891 2004-06-24  Dick Porter  <dick@ximian.com>
14892
14893         * threads.c
14894         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
14895         return createdNew.  Fixes bug 60412.
14896
14897         * threads-types.h: 
14898         * icall.c: Add createdNew parameter to CreateMutex icall
14899
14900 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14901
14902         * reflection.c, object-internals.h: save default value in params.
14903
14904 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14905
14906         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
14907         no need to build a new path combining that with the application base.
14908         Fixes bug #60442.
14909
14910 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14911
14912         * reflection.c: fixed minor standard compliance issues.
14913
14914 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14915
14916         * reflection.c: fixed issue with encoding some custom attributes
14917         (arrays in properties and fields, bug #60411).
14918
14919 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14920
14921         * reflection.c: fix start address when copying the public key token.
14922
14923 2004-06-23  Martin Baulig  <martin@ximian.com>
14924
14925         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
14926         the `exc' object in a static object to put it into the GC's root set.
14927
14928 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
14929
14930         * reflection.c: make mono_reflection_setup_internal_class ()
14931         callable a second time to setup a new parent class.
14932
14933 2004-06-23  Dick Porter  <dick@ximian.com>
14934
14935         * threads.c: Check for WAIT_IO_COMPLETION return values.
14936
14937 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
14938
14939         * appdomain.c: Removed the g_free on the public key token. Now copy 
14940         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
14941         * assembly.c: Added public key token string value when loading 
14942         assemblies. Fix bug #60439.
14943         * icall.c: Added missing informations (like public key) in 
14944         GetReferencedAssemblies. Fix #60519.
14945         * image.h: Changed definition for public key token from const char*
14946         public_tok_value to guchar public_key_token [17];
14947         * reflection.c: Updated for changes to public key token.
14948
14949 2004-06-22  Lluis Sanchez Gual
14950
14951         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
14952         for the field in base classes.
14953
14954 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
14955
14956         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
14957         mark headers as not supported, they are installed only for use by the
14958         debugger.
14959
14960 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
14961
14962         * *.c, *.h: avoid namespace pollution in public headers.
14963
14964 2004-06-21  Martin Baulig  <martin@ximian.com>
14965
14966         * exception.c (mono_get_exception_security): It's in
14967         "System.Security", not in "System".
14968
14969         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
14970         the exception classes.
14971
14972 2004-06-21  Martin Baulig  <martin@ximian.com>
14973
14974         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
14975         Protect the exception object from being finalized.
14976
14977 2004-06-21  Martin Baulig  <martin@ximian.com>
14978
14979         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
14980         public function.
14981
14982 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
14983
14984         * reflection.c: Load the assembly in mono_reflection_type_from_name,
14985         if it was not loaded before. Fix parts of #60439.
14986
14987 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
14988
14989         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
14990         code that was broken since Ben's change: wrappers are now
14991         dependent on the method signature only again.
14992
14993 2004-06-21  Martin Baulig  <martin@ximian.com>
14994
14995         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
14996         added interface support.
14997
14998 2004-06-21  Martin Baulig  <martin@ximian.com>
14999
15000         * class.c (mono_vtable_get_static_field_data): New public method.
15001
15002 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
15003
15004         * filewatcher.c : Windows build fix to be compliant with API changes.
15005
15006 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15007
15008         * class.h, class.c: more accessors.
15009         * metadata.h, metadata.c: prepare for hiding MonoType and
15010         MonoMethodSignature: people should use the accessors from now on
15011         outside of the tree.
15012
15013 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15014
15015         * *.c, *.h: more API cleanups.
15016
15017 2004-06-18  Jackson Harper  <jackson@ximian.com>
15018
15019         * assembly.c: Trace loading assemblies.
15020         * loader.c: Trace loading native libraries.
15021         * mono-config.c: Trace loading config files.
15022         
15023 2004-06-18  Dick Porter  <dick@ximian.com>
15024
15025         * locales.c: Tell ICU the lengths of strings, it can cope with
15026         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
15027
15028 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
15029
15030         * image.c: swapped name/filename;
15031
15032 2004-06-18  Martin Baulig  <martin@ximian.com>
15033
15034         * mono-debug-debugger.c (write_class): Write the parent class at
15035         the end of the header.
15036
15037 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
15038
15039         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
15040
15041 2004-06-17  Raja R Harinath  <rharinath@novell.com>
15042
15043         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
15044         (bundle_obj): New conditional define.
15045         (BUILT_SOURCES): Remove.
15046         ($(bundle_srcs)): Make parallel-make safe.
15047         (libmonoruntime_la_LIBADD): Make unconditional.
15048         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
15049         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
15050
15051 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
15052
15053         * culture-info-tables.h: It was inconsistent with the latest
15054           supp info files.
15055
15056 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
15057
15058         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
15059         be loaded.
15060
15061         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
15062         with gcc 2.95.
15063
15064 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15065
15066         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
15067         cleaned up public header threads.h.
15068
15069 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15070
15071         * Makefile.am, *.c, *.h: more API cleanups.
15072
15073 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15074
15075         * Makefile.am: removed monosn from compilation.
15076         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
15077         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
15078         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
15079         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
15080         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
15081         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
15082
15083 2004-06-15  Jackson Harper  <jackson@ximian.com>
15084
15085         * assembly.c: Make locales lower case when searching the GAC for
15086         assemblies. gacutil will always make locales lowercase when
15087         installing so this effectively makes them case insensitive.
15088         
15089 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
15090
15091         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
15092         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
15093           parameter which allows to choose whether the wait can be interrupted or 
15094           not. Also added the method mono_monitor_enter(), which locks the monitor
15095           using an infinite wait and without allowing interruption.
15096           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
15097           interrupted.
15098         * object.h: Added new fields in MonoThread. suspend_event holds the event
15099           used to susped/resume the thread. synch_lock is the lock object to use for
15100           modifying the thread state.
15101         * threads.c: Use the new synch_lock object for locking, instead of "this",
15102           which can generate deadlocks.
15103           Moved thread state change in Thread.Sleep and Thread.Join from managed
15104           to unmanaged code. This avoids a deadlock when the thread was suspended
15105           just after acquiring the thread lock.
15106           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
15107           Implemented Thread.Suspend using an event instead of ThreadSuspend,
15108           which is not fully implemented in the io-layer.
15109         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
15110
15111 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
15112
15113         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
15114         threads-types.h: more API cleanups.
15115
15116 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15117
15118         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
15119         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
15120         threadpool.c, threads.c: first pass at the exported API cleanup.
15121
15122 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15123
15124         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
15125
15126 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15127
15128         * icall.c: added internalGetHome.
15129
15130 2004-06-14  Dick Porter  <dick@ximian.com>
15131
15132         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
15133         possible to return successfully when '.' or '..' were the only
15134         entries in a directory, but were skipped.  The MonoIOStat was not
15135         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
15136         Fixes bug 59574.
15137
15138 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15139
15140         * reflection.c: make binaries run on .Net 1.1 by default.
15141
15142 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
15143
15144         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
15145
15146 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
15147
15148         * marshal.c: keep track of struct size with explicit layout
15149         (bug #59979).
15150
15151 2004-06-12  Martin Baulig  <martin@ximian.com>
15152
15153         * mono-debug-debugger.c: Comment out a debugging g_message().
15154
15155 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
15156
15157         * reflection.c, reflection.h: do not free custom attrs that are cached.
15158         * icall.c: use braces to make code clearer.
15159
15160 2004-06-11  Martin Baulig  <martin@ximian.com>
15161
15162         * class.h (MonoInflatedField): New type.
15163         (MonoClassField): Replaced `MonoType *generic_type' with
15164         `MonoInflatedField *generic_info'.
15165
15166         * icall.c
15167         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
15168
15169 2004-06-11  Martin Baulig  <martin@ximian.com>
15170
15171         * reflection.c (mono_image_create_method_token): Correctly encode
15172         varargs methods.
15173
15174 2004-06-11  Martin Baulig  <martin@ximian.com>
15175
15176         * metadata.c (mono_metadata_parse_method_signature): When parsing
15177         a MethodDef which has VarArgs, also set sentinelpos if we don't
15178         have any parameters.
15179
15180 2004-06-11  Martin Baulig  <martin@ximian.com>
15181
15182         * verify.c (mono_method_verify): In CEE_CALL, use
15183         mono_method_get_signature() to get the method's signature, unless
15184         we're a PInvoke method.
15185
15186 2004-06-10  Jackson Harper  <jackson@ximian.com>
15187
15188         * assembly.c: Use <path>/lib/mono/gac for the extra paths
15189         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
15190         logical name as the supplied path is just a prefix to the gac not
15191         the direct path to it.
15192         
15193 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
15194
15195         * reflection.c: make the token for a created method match
15196         the token of the MethodBuilder it was created from
15197         (IKVM requires this behaviour now).
15198
15199 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
15200
15201         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
15202         reflection.c, socket-io.c: leak fixes.
15203
15204 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15205
15206         * icall.c: handle sentinel pos in vararg methods in position different
15207         from 0.
15208
15209 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15210
15211         * culture-info-tables.h: freshly generated.
15212
15213 2004-06-09  Martin Baulig  <martin@ximian.com>
15214
15215         * loader.c (mono_get_method_constrained): Call `mono_class_init
15216         (constrained_class)'.   
15217
15218 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
15219
15220         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
15221         any methods. Fixes #59629.
15222
15223 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15224
15225         * culture-info-tables.h: reflecting locale-builder updates.
15226
15227 2004-06-08  Dick Porter  <dick@ximian.com>
15228
15229         * object.h:
15230         * locales.c: Fixed compile warnings, including a real bug in
15231         CompareInfo_internal_compare.
15232         
15233 2004-06-08  Dick Porter  <dick@ximian.com>
15234
15235         * locales.c
15236         (ves_icall_System_Globalization_CompareInfo_internal_index):
15237         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
15238         Double-check the resuls of usearches, because ICU currently
15239         ignores most of the collator settings here.  Fixes bug 59720.
15240         
15241 2004-06-08  Dick Porter  <dick@ximian.com>
15242
15243         * locales.c
15244         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
15245         Fix memory leak and segfault-causing typo.  No idea how this one
15246         lasted so long without being noticed.
15247
15248 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
15251         any methods. Fixes #59629.
15252
15253 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15254
15255         * assembly.c:
15256         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
15257         own the critical section before). Removed dead code (that's done
15258         in the preload hook).
15259
15260         (mono_assembly_load_with_partial_name): call the preload hook.
15261
15262 2004-06-08  Martin Baulig  <martin@ximian.com>
15263
15264         * metadata.c (mono_metadata_signature_alloc): Default
15265         `sentinelpos' to -1.
15266
15267         * reflection.c (mono_image_get_array_token): Likewise.
15268
15269 2004-06-08  Martin Baulig  <martin@ximian.com>
15270
15271         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
15272
15273         * metadata.c (mono_metadata_parse_method_signature): When parsing
15274         a MethodDef which has VarArgs, set sentinelpos.
15275
15276         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
15277         `gint16' since we're using -1 for non-varargs methods.
15278
15279         * reflection.c
15280         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
15281         (method_encode_signature): Added varargs support.
15282         (method_builder_encode_signature): Likewise.
15283         (mono_image_get_varargs_method_token): New static method.
15284         (mono_image_create_method_token): New public method; this is
15285         called via an icall instead of mono_image_create_token() when
15286         calling a varargs method.       
15287
15288 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
15289
15290         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
15291
15292 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15293
15294         * culture-info-tables.h : Reflecting the latest locale-builder that
15295           fixed empty array representation ({} to {0}).
15296
15297 2004-06-07  Jackson Harper  <jackson@ximian.com>
15298
15299         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
15300         looking up extra gac paths. This allows MONO_GAC_PATH to act
15301         exactly like a prefix.
15302         
15303 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
15304
15305         * reflection.c (mono_reflection_type_from_name): Make a copy of the
15306         type name before modifying it. Fixes #59405.
15307
15308 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15309
15310         * culture-info.h: added fields for "all datetime patterns".
15311         * locales.c: (  ves_icall_System_Globalization_CultureInfo
15312           _construct_datetime_format ()): fill xxx_patterns fields.
15313         * object.h: added fields for "all datetime patterns" to
15314           MonoDateTimeFormatInfo.
15315         * culture-info-tables.h: reflecting locale-builder updates.
15316
15317 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
15318
15319         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
15320         the event has no add and remove methods. Fixes #59629.
15321
15322 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
15323
15324         * object.c: Fixed possible integer overflow when allocating large
15325         strings.
15326
15327 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
15328
15329         * culture-info-tables.h: reflecting locale-builder updates.
15330
15331 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
15332
15333         * culture-info-tables.h: reflecting locale-builder updates.
15334
15335 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
15336
15337         * culture-info-tables.h: reflecting locale-builder updates.
15338
15339 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
15340
15341         * threads.c: Made Thread.Sleep abortable.
15342
15343 2004-06-02  Martin Baulig  <martin@ximian.com>
15344
15345         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
15346
15347         * debug-mono-symfile.h: Bumped symbol file version number to 37.
15348
15349 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
15350
15351         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
15352
15353 2004-05-30  Jackson Harper  <jackson@ximian.com>
15354
15355         * reflection.c: Do not hardcode assembly versions or public key
15356         tokens anymore. All of this except the corlib section was dead
15357         code anyways.
15358         
15359 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15360
15361         * object.c (mono_runtime_invoke_array): Automatically create boxed
15362         objects for byref valuetypes if needed. Fixes #59300.
15363         
15364         * object.c (mono_method_return_message_restore): Handle 
15365         MONO_TYPE_OBJECT as well.
15366
15367 2004-05-28  Jackson Harper  <jackson@ximian.com>
15368
15369         * reflection.c: The modified type encoding was causing build
15370         problems. Reverted for now.
15371         
15372 2004-05-28  Jackson Harper  <jackson@ximian.com>
15373
15374         * reflection.c/h: Take an assembly ref so that we dont create
15375         fully qualified names when encoding types in the same assembly as
15376         the custom attribute being emitted.
15377         * appdomain.c: Increment version number.
15378         
15379 2004-05-26  Duncan Mak  <duncan@ximian.com>
15380
15381         * icall.c
15382         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
15383         Set the full version number (major, minor, build, revision).
15384
15385 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
15386
15387         * marshal.c (emit_struct_conv): increment src/dst after blit
15388         (mono_marshal_get_managed_wrapper,
15389         mono_marshal_get_native_wrapper): make sure we have marshalling
15390         info before marshalling params (info computation affects
15391         blittable)
15392
15393         * class.c (class_compute_field_layout): correctly deal with
15394         blittable
15395         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
15396         value types (as per what windows dows by default)
15397         (mono_class_setup_mono_type): System.ValueType is blittable
15398         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
15399         blittable
15400
15401         * marshal.c (mono_marshal_load_type_info): flag types  as
15402         non-blittable if the native layout doesn't match the managed
15403         layout
15404
15405 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15406
15407         * appdomain.c: don't add stuff in the private search path that is
15408         above the application base. If application base is not set, there's
15409         no private search path.
15410
15411 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15412
15413         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
15414         byref struct arguments in native->managed marshalling.
15415
15416 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
15417
15418         * marshal.c (mono_marshal_get_runtime_invoke): correctly
15419         cache methods using signature (special case for methods
15420         that are value type or string class)
15421         
15422         * image.c (mono_image_close): clean up allocated GSList's
15423         in runtime_invoke_cache.
15424
15425 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15426
15427         * mono-config.c: set the correct path for mono_cfg_dir on windows when
15428         there's no MONO_CFG_DIR environment variable defined.
15429
15430 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15431
15432         * threads.c: windows version must be >= 0x0500 to include OpenThread.
15433
15434 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
15435
15436         * threadpool.c: Really wait for 500ms after the async call, even if the wait
15437           is interrumped.
15438         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
15439           before waiting for it, and call CloseHandle after the wait to unref it.
15440           This will make sure that handles are not disposed too early.
15441
15442 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15443
15444         * appdomain.c:
15445         * appdomain.h:
15446         * icall.c: removed
15447         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
15448         needed now.
15449
15450         * object.c: se the application_base only for the domain that runs
15451         Main. Fixes bug #59216,
15452
15453 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15454
15455         * appdomain.c:
15456         * object.c: only the domain in which Main is run have
15457         SetupInformation.ConfigurationFile set, so moved a few lines from
15458         appdomain.c to object.c.
15459
15460 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15461
15462         * appdomain.c: we tried to load [name].(dll|exe), but according
15463         to bug #57710, we must also try [culture]/[name].(dll|exe) and
15464         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
15465         There's a test case attached to bug #58922.
15466
15467 2004-05-27  Dick Porter  <dick@ximian.com>
15468
15469         * icall.c:
15470         * file-io.c: Implemented icalls for locking and unlocking regions
15471         in a file.
15472         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
15473         FALSE on error (fixes both compiler warning and real bug.)
15474
15475 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
15476
15477         * culture-info-tables.h: reflecting locale-builder updates.
15478
15479           (Added missing ChangeLog entry for 05/26)
15480
15481 2004-05-27  Jackson Harper  <jackson@ximian.com>
15482
15483         * locales.c: Fix some cut and paste errors.
15484         
15485 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15486
15487         * mono-config.c: set the correct path for config. directory on windows.
15488
15489 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15490
15491         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
15492           on win32.
15493
15494 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15495
15496         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
15497         from pinvoke functions.
15498         
15499         * marshal.c (mono_ftnptr_to_delegate): Implement this.
15500
15501 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15502
15503         * culture-info-tables.h: reflecting locale-builder updates.
15504
15505 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15506
15507         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
15508         #59086.
15509
15510 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
15511
15512         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
15513         * icall.c: Modified icalls for RNG.
15514         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
15515         Windows (CryptoAPI).
15516
15517 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15518
15519         * locales.c: Fix build.
15520
15521 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
15522
15523         * culture-info-tables.h: reflecting locale-builder updates.
15524
15525 2004-05-25  Jackson Harper  <jackson@ximian.com>
15526
15527         * locales.c: When creating the current culture use the $LANGs
15528         specific culture. So DateTimeFormat and NumberFormat entries are created.
15529         
15530 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15531
15532         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
15533         a char array as parameter.
15534
15535 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
15536
15537         * image.c: In mono_image_open(), always use an absolute path name to
15538           look for already loaded images.
15539
15540 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
15541
15542         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
15543         missing in the windows build (like older cygwin include files).
15544
15545 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
15546
15547         * icall.c: Fixed check for possible integer overflow in Buffer_
15548         BlockCopy icall. Replaced comments style // by /* */.
15549
15550 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15551
15552         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
15553         
15554         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
15555         check after MONO_VTADDR. Fixes pinvoke2.exe.
15556
15557         * marshal.h marshal.c metadata.h: Add beginnings of support for
15558         ftnptr -> delegate marshalling.
15559
15560 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15561
15562         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
15563         * threads.c: Fix warnings.
15564
15565 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15566
15567         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
15568         * icall.c: Registered icalls for Suspend and Resume.
15569         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
15570           Thread.Abort.
15571         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
15572         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
15573         * process.c: Use WaitForSingleObjectEx.
15574         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
15575           checkpoints.
15576         * threads.c, threads.h: Make use of new Ex wait methods. Improved
15577           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
15578           for Suspend and Resume. Added new mono_thread_stop, used for stoping
15579           background threads. Added basic support for Abort in Windows.
15580           Start new threads using a managed delegate invoke wrapper. This wrapper
15581           has an interruption checkpoint that is needed since an interruption
15582           can be requested before the thread leaves the unmanaged code that starts 
15583           the thread.
15584         * marshal.c: Added interruption checkpoint after every native call, and
15585           also before managed calls for wrappers called from unmanaged code to
15586           go into managed code.
15587         * object.h: Added new field in MonoThread to keep track of interruption
15588           requests.
15589
15590 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15591
15592         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
15593         calls.
15594
15595 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15596
15597         * appdomain.c:
15598         * assembly.c:
15599         * gc.c:
15600         * locales.c:
15601         * mono-config.c:
15602         * rand.c: getenv -> g_getenv (windows!)
15603
15604         * process.c: complete_path is also used on non-windows platforms.
15605
15606 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15607
15608         * icall.c: new signature for Process_Start.
15609
15610         * process.[ch]: new signature for Process_Start. If we're on windows
15611         and UseShellExecute is false, we have to search for the program by
15612         ourselves if we don't get a full path.
15613
15614 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15615
15616         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
15617         marshalling and call CleanUpNativeData if needed. Fixes #58646.
15618
15619 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15620
15621         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
15622         Fixes bug #58373.
15623
15624 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15625
15626         * process.c: use double quotes to quote program name and arguments on
15627         windows. Fixes bug #58575.
15628
15629 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15630
15631         * file-io.c: don't return "." and ".." when using windows Find*File.
15632
15633 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
15634
15635         * marshal.c: Don't pass wrappers to message init because method 
15636         addressed used to lookup metadata. part of remoting[2|3] fix.
15637
15638 2004-05-15  Jackson Harper  <jackson@ximian.com>
15639
15640         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
15641         path is essentially the same as MONO_PATH except that it points to
15642         GACs instead of lib directories.
15643         * loader.h: The user gac is gone so we dont need function to
15644         enable/disable it.
15645         * mono-config.c: user gac option is now gone.
15646         
15647 2004-05-15  Jackson Harper  <jackson@ximian.com>
15648
15649         * culture-info.h: Make defines more consistent, add calendar data
15650         to the culture info table.
15651         * culture-info-tables.h: Add basic calendar data. Basically
15652         everyone gets default gregorian until all the data is
15653         updated.
15654         * locales.c: Use the new consistent defines. Set calendar data for
15655         culture info objects.
15656         * object.h: add a field for calendar data to CultureInfo
15657         
15658 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15659
15660         * image.c: image->runtime_invoke_cache is keyed on signatures now.
15661         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
15662         a signature.
15663         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
15664         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
15665         an extra param that is the pointer of the method to invoke. The IL for
15666         the invoke method is no longer specific to the method, but to the
15667         signature of the method. Thus, we can share the same code for multiple
15668         methods. This reduces the number of methods that have to be compiled.
15669
15670 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
15673
15674         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15675
15676         * icall.c: Optimize Buffer.BlockCopy.
15677
15678 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15679
15680         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
15681         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
15682         quote). Changed them to "MMMM yyyy".
15683
15684 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
15685
15686         * rand.c
15687         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
15688
15689 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
15690
15691         * reflection.h: Updated after changes to managed structures.
15692
15693         * appdomain.c: Bump corlib version.
15694
15695 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15696
15697         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
15698         windows.
15699
15700 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15701
15702         * Makefile.am: link to ../os/libmonoos.la on windows.
15703
15704         * assembly.c:
15705                 -If MONO_DEBUG, warn about non-existing directories in
15706                 MONO_PATH.
15707                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
15708                 compile time variable.
15709                 -Removed init_default_path and call mono_set_rootdir from
15710                 libmonoos.a instead (windows only).
15711
15712         * assembly.h: declare mono_assembly_getrootdir().
15713
15714         * domain.c:
15715         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
15716
15717         * loader.c: s/getenv/g_getenv/
15718
15719 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15720
15721         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
15722
15723         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
15724
15725         * metadata.h: Add new marshalling conversions.
15726
15727         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
15728         function.
15729
15730         * reflection.c (mono_reflection_get_type): Lookup the type in all
15731         modules of a multi-module assembly. Fixes #58291.
15732
15733 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15734
15735         * threads.c: Before aborting a background, set the StopRequested
15736         state.  This avoids throwing the Abort exception.
15737         In mono_thread_manage, don't continue with the shutdown until all
15738         aborted threads have actually stopped.
15739
15740 2004-05-10  Jackson Harper  <jackson@ximian.com>
15741
15742         * locales.c: Remove the modifier from culture names.
15743         
15744 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15745
15746         * Makefile.am: monosn is not installed any more. It has been deprecated
15747         in favor of sn.
15748
15749 2004-05-07  Jackson Harper  <jackson@ximian.com>
15750
15751         * locales.c
15752         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
15753         Fix array construction, add bailout if the length is 0.
15754
15755 2004-05-07  Dick Porter  <dick@ximian.com>
15756
15757         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
15758         machine doesn't have a DNS entry.  Patch by Urs Muff
15759         (umuff@quark.com), fixes bug 57928.
15760
15761 2004-05-06  Jackson Harper  <jackson@ximian.com>
15762
15763         * reflection.c: Handle null PublicTokens properly. alloc mem for
15764         assembly names culture so we dont crash when freeing it.
15765         
15766 2004-05-06  Jackson Harper  <jackson@ximian.com>
15767
15768         * assembly.c: Check the usergac when loading with partial names.
15769         
15770 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15771
15772         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
15773         does nothing for now (not required for Linux/Windows) but the class
15774         library can call it (and a newer or modified runtime could need it).
15775         * icall.c: Registred icall.
15776
15777 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15778
15779         * loader.c: prints a message on module loading error we set MONO_DEBUG
15780         environment variable.
15781
15782 2004-05-05  Jackson Harper  <jackson@ximian.com>
15783
15784         * appdomain.c: Handle PublicKeyToken=null properly.
15785         
15786 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15787
15788         * environment.c|h: Added icall ves_icall_System_Environment_
15789         GetOSVersionString to get the current OS version as a string.
15790         * icall.c: Registred icall.
15791
15792 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
15793
15794         * object.c: in mono_object_get_virtual_method(), take into account that
15795         non-virtual methods don't have a slot in the vtable. Check needed when
15796         the object is a proxy.
15797
15798 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15799
15800         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
15801         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
15802
15803         * object.c (mono_class_compute_gc_descriptor): Fix warning.
15804
15805         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
15806         passed when a valuetype is expected.
15807
15808         * object.c (mono_unhandled_exception): Only set the exit code if the
15809         exception happens in the main thread. Fixes thread5.exe.
15810
15811         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
15812         invalid names. Fixes #58047.
15813
15814 2004-05-03  Jackson Harper  <jackson@ximian.com>
15815
15816         * assembly.c: This line was committed accidently and is unneeded.
15817         
15818 2004-05-03  Jackson Harper  <jackson@ximian.com>
15819
15820         * icall.c: Add new icall for Assembly::LoadWithPartialName
15821         * assembly.c/.h: new function that probes the GAC to load partial
15822         assembly names by Paolo Molaro.
15823         
15824 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15825
15826         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
15827         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
15828         (type_get_fully_qualified_name): Added PublicKeyToken when building a
15829         full type name.
15830
15831 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15832
15833         * appdomain.c: fixed check for 'neutral' culture and removed warning.
15834         * reflection.c: fix bug when parsing a full type name and Version is not
15835         the last thing in the string.
15836
15837 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
15838
15839         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
15840         crashes when it is freed.
15841
15842 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15843
15844         * assembly.c: print the compat warning to stderr.
15845
15846 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
15847
15848         * assembly.c (mono_assembly_load_references): Add a compatibility
15849         hack to run old applications that might be still referencing the
15850         3300-based assemblies, only do this for System.xxx.
15851
15852 2004-05-01  Jackson Harper  <jackson@ximian.com>
15853
15854         * appdomain.c: If the culture is neutral we set it to "".
15855         
15856 2004-04-29  Jackson Harper  <jackson@ximian.com>
15857
15858         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
15859
15860 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
15861  
15862         * string-icalls.c: added low overhead function for copying chars
15863         * icall.c: added needed icall for the above function
15864  
15865 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15866
15867         * icall.c: fix return value of get_global_assembly_cache.  Implemented
15868         Environment.GetLogicalDrives.
15869
15870 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
15871
15872         * rand.c: try and talk to egd or prngd
15873         for random bytes if opening devices fail.
15874
15875 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15876
15877         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
15878         alignment for the type using the native alignment of its members 
15879         instead of using klass->min_align.
15880
15881         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
15882
15883 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15884
15885         * file-io.c:
15886         * socket-io.c: added check for sys/aio.h.
15887
15888 2004-04-28  Dick Porter  <dick@ximian.com>
15889
15890         * threads.c: Don't abort a thread thats already aborting, when
15891         terminating everything.
15892
15893 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15894
15895         * icall.c: added 2 new async calls for Socket.
15896
15897         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
15898         IO on *nix systems.
15899
15900         * threadpool.c: removed unused variable.
15901
15902 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
15903
15904         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
15905
15906 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15907
15908         * locales.c: put back string_invariant_tolower () and
15909         string_invariant_toupper ().
15910
15911 2004-04-26 David Waite <mass@akuma.org>
15912
15913         * file-io.h:
15914         * socket-io.h:
15915         * threads.h:
15916         * unicode.h: remove comma from end of enumeration declarations
15917
15918 2004-04-26 David Waite <mass@akuma.org>
15919
15920         * debug-mono-symfile.h:
15921         * decimal.c:
15922         * mono_debug.h:
15923         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
15924
15925
15926 2004-04-26  Jackson Harper  <jackson@ximian.com>
15927
15928         * appdomain.c: Increment version number.
15929         
15930 2004-04-26  Jackson Harper  <jackson@ximian.com>
15931
15932         * appdomain.c: Set assembly references public token value when
15933         PublicKeyToken is specified, not the hash_value. Free public token
15934         values when free assembly name data. Previously the public key
15935         token was hex decoded, however we are using hex encoded public key
15936         tokens, so this is not neccasary.
15937         * assembly.c: Lookup assemblies in the gac if their public token
15938         value is set. Add function to allow enabling user gac
15939         lookups. Specify whether or not the assembly was loaded from the
15940         GAC. Compare full assembly names when checking the cache for
15941         assemblies (Temporarily disabled see comment in code). Remove
15942         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
15943         specifies trace-loader they get extra info to stdout on the
15944         loading of assemblies.
15945         * image.h: Add a field for an assembly references public token
15946         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
15947         whether an assembly has been loaded from the GAC.
15948         * image.c: Remove a corlib -> mscorlib name mapping.
15949         * loader.h: Add function to enable/disable the user gac.
15950         * mono-config.c: Check if the usergac is enabled in the config
15951         file.
15952         * icall.c: New icall to determine whether or not an assembly has
15953         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
15954         * tabldefs.h: Add constant for assemblyref flag that specifies a
15955         full public key is used instead of a public token.
15956         * reflection.c: Remove mscorlib -> corlib mappings. Set
15957         PublicTokenValue instead of hash value. This value is a hex
15958         string so it does not need to be expanded.
15959
15960 2004-04-26  Martin Baulig  <martin@ximian.com>
15961
15962         * mono-debug-debugger.c (mono_debugger_initialize): Set
15963         `mono_debugger_initialized' before calling mono_debug_lock().
15964
15965 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
15966
15967         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
15968           InternalToUpper/InternalToLower.
15969         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
15970           removed invariant culture shortcut.  This is now done in managed code.
15971         * locales.c: (string_invariant_toupper/tolower) removed.
15972
15973 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15974
15975         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
15976         Added Poll internal call.
15977
15978         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
15979         call for Poll. Select was too heavy for polling a single socket.
15980
15981         * threadpool.[ch]: added mono_threadpool_cleanup.
15982         * threads.c: use it. Don't use Thread_Abort on windows.
15983
15984 2004-04-23  Martin Baulig  <martin@ximian.com>
15985
15986         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
15987
15988 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
15989
15990         * icall.c: Registred new icalls for key pair protection and added an
15991         icall for Environment.GetFolderPath on Windows.
15992         * security.c|h: Added new icalls for key pair protection.
15993
15994 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15995
15996         * socket-io.c: don't display the non-supported family warning for known
15997         families. Now this is not displayed on windows when checking support
15998         for IPv4/IPv6.
15999
16000 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16001
16002         * class.c: don't display the layout warning for static fields.
16003
16004 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
16005
16006         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
16007         * locales.c, locales.h: Added new icalls for culture-specific
16008         Char.ToLower and Char.ToUpper.
16009
16010 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16011
16012         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
16013         by David Waite.
16014
16015 2004-04-20  Martin Baulig  <martin@ximian.com>
16016
16017         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
16018         of the type name before passing it to mono_reflection_type_from_name().
16019
16020 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
16021
16022         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
16023         encodings here. Fixes #56965.
16024
16025 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
16026
16027         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
16028         fix test on strstr result not that I can see anything that
16029         relies on the result.
16030
16031 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
16034         Fixes #57081.
16035
16036         * marshal.c (mono_marshal_get_string_encoding): New helper function.
16037
16038         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
16039         function to determine which marshalling to use for strings. Fixes
16040         #56965.
16041
16042         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
16043
16044         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
16045
16046 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
16047
16048         * icall.c: #include mono-config.h
16049
16050 2004-04-15  Jackson Harper  <jackson@ximian.com>
16051
16052         * culture-info-tables.h: Fix date formats for en-US culture.
16053         
16054 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
16055
16056         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
16057         ThreadPool.SetMinThreads.
16058         * threadpool.c: Implemented ThreadPool.GetMinThreads and
16059         ThreadPool.SetMinThreads.
16060
16061 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16062
16063         * mono-config.c: also load the .config file in the directory
16064         where the assembly was found.
16065
16066 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
16067
16068         * assembly.c: load per-assembly config files.
16069         * icall.c: decrapified code to get the config dir and moved to
16070         mono-config.c.
16071         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
16072         per-assembly config files. When doing a dll map lookup give precedence
16073         to the per-assembly data.
16074
16075 2004-04-14  Martin Baulig  <martin@ximian.com>
16076
16077         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
16078         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
16079         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
16080
16081         * mono-debugger-debugger.c: While the debugger is locked, remember
16082         whether the symbol tables have changes and send one single
16083         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
16084
16085 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
16088
16089         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
16090         function.
16091
16092         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
16093         account when marshalling string arrays. Fixes #56965.
16094
16095 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
16096
16097         * icall.c: Add new icalls mapping for security.
16098         * security.c|h: Add internal calls for WindowsIdentity,
16099         WindowsImpersonationContext and WindowsPrincipal.
16100
16101 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
16102
16103         * class.c: Added comment to ensure the System.MonoDummy class
16104         is removed when no longer necessary
16105
16106 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
16107
16108         * appdomain.c: Pass arguments to the bootstraping exceptions to
16109         minimize JITed methods at boot
16110
16111         * metadata.c (mono_exception_from_name_two_strings): Allow for the
16112         second string to be null.
16113
16114         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
16115         Change the protocol to minimize the JIT methods at startup.  Now
16116         it Returns the internal codepage, if the value of "int_code_page"
16117         is 1 at entry, and we can not compute a suitable code page
16118         number, returns the code page as a string.
16119
16120 2004-04-13  Jackson Harper  <jackson@ximian.com>
16121
16122         * culture-info-tables.h: Fix number of decimal digits for all
16123         english locales.
16124
16125 2004-04-13  Jackson Harper  <jackson@ximian.com>
16126
16127         * icall.c: Clairfy out of sync error message. It is not always
16128         your corlib that is out of sync.
16129
16130 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
16131
16132         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
16133         properties when only the set accessor is overriden. Fixes #55874.
16134
16135 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
16136
16137         * assembly.c (mono_assembly_load_references): Make this thread safe.
16138         Fixes #56327.
16139
16140 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
16141
16142         * monosn.c: Add missing initialization calls.
16143
16144 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
16145
16146         * locales.c:
16147         ves_icall_System_Globalization_CultureInfo_construct_number_format
16148         Fix g_assert so it compiles on fussier compilers re int/ptr
16149         mismatch
16150
16151 2004-04-08  Dick Porter  <dick@ximian.com>
16152
16153         * socket-io.h:
16154         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
16155         53992.  Also rearrange the code so that the internal calls return
16156         an error value and exceptions are thrown from managed code.
16157
16158         * icall.c: Add type info to the socket icalls.
16159
16160 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16161
16162         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
16163         owes me a beer.
16164
16165 2004-04-07  Martin Baulig  <martin@ximian.com>
16166
16167         * class.c (mono_class_from_generic_parameter): Don't default
16168         `klass->parent' to `mono_defaults.object_type'.
16169
16170 2004-04-07  Martin Baulig  <martin@ximian.com>
16171
16172         * reflection.c (mono_reflection_initialize_generic_parameter): Set
16173         `param->pklass->reflection_info'.       
16174
16175 2004-04-07  Jackson Harper  <jackson@ximian.com>
16176
16177         * culture-info-tables.h: Fix date separator symbol.
16178         
16179 2004-04-07  Martin Baulig  <martin@ximian.com>
16180
16181         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
16182         from System.Type to System.MonoType.
16183
16184 2004-04-07  Martin Baulig  <martin@ximian.com>
16185
16186         * reflection.h
16187         (MonoReflectionGenericParam): Added `has_reference_type' and
16188         `has_value_type' fields.
16189
16190         * reflection.c (mono_image_get_generic_param_info): Encode the
16191         correct flags if we have the `class' or `struct' constraint.
16192
16193 2004-04-07  Martin Baulig  <martin@ximian.com>
16194
16195         * reflection.h
16196         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
16197
16198 2004-04-07  Jackson Harper  <jackson@ximian.com>
16199
16200         * appdomain.c: Revert extra patches, just wanted to bump the
16201         version number.
16202         
16203 2004-04-07  Jackson Harper  <jackson@ximian.com>
16204
16205         * Makefile.am: Add culture-info private headers.
16206         * icall.c: Add new icalls for contructing locales.
16207         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
16208         * locales.h: Declare new culture info construction methods.
16209         * object.h: Add new fields used to avoid the CultureMap to
16210         MonoCultureInfo.
16211         * culture-info.h: Definition of structs used in the culture info
16212         tables.
16213         * culture-info-tables.h: Autogenerated tables that contain culture
16214         info data. This file was generated with the locale-builder tool.
16215         * appdomain.c: Incement corlib version number.
16216         
16217 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
16218
16219         * appdomain.c: (mono_runtime_init) move mono_thread_init
16220         to before mono_object_new calls so critical sections
16221         are initialized before use.
16222
16223 2004-04-07  Martin Baulig  <martin@ximian.com>
16224
16225         * icall.c
16226         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
16227         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
16228         (ves_icall_MonoGenericParam_initialize): Removed.
16229         (monogenericparam_icalls): Removed.
16230         (generictypeparambuilder_icalls): Added new table for
16231         System.Reflection.Emit.GenericTypeParameterBuilder.
16232
16233         * reflection.c
16234         (mono_reflection_define_generic_parameter): Removed.
16235         (mono_reflection_initialize_generic_parameter): This is now called
16236         from GenericTypeParameterBuilder's .ctor.
16237
16238 2004-04-06  Martin Baulig  <martin@ximian.com>
16239
16240         * class.c (mono_class_init): Don't inflate nested classes in a
16241         generic instance.
16242         (mono_type_get_name_recurse): Include the generic arguments for
16243         generic instances and generic type declarations.
16244         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
16245         (_mono_class_get_instantiation_name): Removed.
16246         (mono_class_create_generic): Always use `gklass->name' as our name.
16247
16248         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
16249
16250         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
16251         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
16252         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
16253         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
16254         closed generic methods here.
16255
16256         * reflection.c
16257         (mono_reflection_generic_inst_get_nested_types): Removed.
16258         (inflate_mono_method): Copy the generic parameters from the
16259         MonoMethodHeader into out MonoGenericMethod.
16260
16261 2004-04-06  Martin Baulig  <martin@ximian.com>
16262
16263         * row-indexes.h
16264         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
16265
16266         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
16267
16268         * reflection.c (build_compressed_metadata): If we have any entries
16269         in the GenericParam, MethodSpec or GenericParamConstraint tables,
16270         set the header version to 1.1.
16271
16272 2004-04-06  Martin Baulig  <martin@ximian.com>
16273
16274         * class.c (mono_class_init): If we're a generic instance,
16275         initialize our nested classes, too.
16276         (_mono_class_get_instantiation_name): Deal with the new `!%d'
16277         suffix. 
16278
16279 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16280
16281         * process.c: quote the argument passed to the shell on windows.
16282
16283 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
16284
16285         * threads.c (mono_alloc_special_static_data): Allow this to be
16286         called during startup.
16287
16288 2004-04-02  Martin Baulig  <martin@ximian.com>
16289
16290         * icall.c
16291         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
16292
16293 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * icall.c: Fix build.
16296
16297 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
16298
16299         * Makefile.am: Added security.c|h.
16300         * icall.c: Added icall for get_UserName;
16301         * security.c: New file for security related icalls. Added function
16302         get_UserName for System.Environment (fix #56144).
16303         * security.h: New. Header file for security.c
16304
16305 2004-04-02  Dick Porter  <dick@ximian.com>
16306
16307         * icall.c: Deleted the icalls that were obsoleted some time ago
16308         by the ICU string code, and which were mixed into the icall
16309         rearranging.  Fixes bug 55969.
16310
16311         * string-icalls.h: 
16312         * string-icalls.c: Deleted the code that those icalls reference.
16313
16314 2004-04-01  Martin Baulig  <martin@ximian.com>
16315
16316         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
16317
16318         * class.c (mono_class_from_generic_parameter): Don't set 
16319         TYPE_ATTRIBUTE_INTERFACE.
16320         (my_mono_class_from_generic_parameter): Likewise.
16321
16322 2004-04-01  Martin Baulig  <martin@ximian.com>
16323
16324         * loader.c (find_method): Added an optional `MonoClass *ic'
16325         argument to search in a specific interface.
16326         (mono_get_method_constrained): New public function.
16327
16328 2004-04-01  Martin Baulig  <martin@ximian.com>
16329
16330         * reflection.c (mono_image_get_generic_field_token): Use the
16331         `handleref' cache here.
16332
16333 2004-04-01  Martin Baulig  <martin@ximian.com>
16334
16335         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
16336
16337         * reflection.c (create_generic_typespec): Use the `typespec' hash
16338         here, not the `typeref' one.    
16339
16340 2004-04-01  Martin Baulig  <martin@ximian.com>
16341
16342         * class.c (mono_class_inflate_generic_type): Moved the
16343         functionality into a new static inflate_generic_type() which
16344         returns NULL if it didn't do anything.  Only increment the
16345         `mono_stats.inflated_type_count' if we actually inflated
16346         something.
16347         (mono_class_get_full): Check the classes type to see whether we
16348         need to inflate it; also inflate MONO_TYPE_(M)VAR.
16349
16350 2004-04-01  Jackson Harper  <jackson@ximian.com>
16351
16352         * reflection.c: Set culture for assembly references.
16353         
16354 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
16355
16356         * reflection.[ch], icall.[ch], Fix support for pinning variables.
16357
16358 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16359
16360         * assembly.c:
16361         (do_mono_assembly_open): the critical section also covers
16362         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
16363
16364 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16365
16366         * threads.c:
16367         (mono_manage_threads): abort the background threads when finishing.
16368         Fixes bug #47232.
16369
16370 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16371
16372         * gc.c: only close the done_event handle if there was no timeout.
16373         C-ified comments.
16374
16375 2004-03-30  Martin Baulig  <martin@ximian.com>
16376
16377         * icall.c (icall_entries): It's called "System.Activator", not
16378         "System.Activation".    
16379
16380 2004-03-30  Martin Baulig  <martin@ximian.com>
16381
16382         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
16383         (mono_class_create_from_typespec): Likewise.
16384
16385 2004-03-30  Martin Baulig  <martin@ximian.com>
16386
16387         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
16388         `has_ctor_constraint' and `initialized'.
16389
16390 2004-03-30  Martin Baulig  <martin@ximian.com>
16391
16392         * reflection.c (encode_new_constraint): New static function to add
16393         the constructor constraint attribute to a type parameter.
16394         (encode_constraints): Call encode_new_constraint() if necessary.
16395
16396         * reflection.h
16397         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
16398
16399         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
16400         
16401 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
16402
16403         * reflection.c, icall.c: add support for pinning variables. 
16404
16405 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
16406
16407         * marshal.c (mono_marshal_get_managed_wrapper):
16408         init bool local with zero rather than null.
16409
16410 2004-03-29  Martin Baulig  <martin@ximian.com>
16411
16412         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
16413         the "official" behavior here.
16414         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
16415
16416 2004-03-29  Martin Baulig  <martin@ximian.com>
16417
16418         * icall.c: Reflect latest API changes.
16419
16420 2004-03-29  Martin Baulig  <martin@ximian.com>
16421
16422         * loader.c (mono_get_method_from_token): Also call
16423         mono_metadata_load_generic_params () for abstract and interface
16424         methods; replace the type arguments in the method signature with
16425         the ones which are loaded from the metadata.
16426
16427 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
16428
16429         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
16430         of the lock is not the current thread. MS.NET don't do it, in spite of
16431         what the documentation says. See bug #56157.
16432
16433 2004-03-28  Martin Baulig  <martin@ximian.com>
16434
16435         * class.c (mono_class_init): Don't call init_properties() and
16436         init_events() for generic instances; set `prop->parent' when
16437         inflating properties.
16438
16439         * reflection.c (mono_generic_inst_get_object): Call
16440         `mono_class_init (ginst->klass)'.
16441         (mono_type_get_object): Only create a MonoGenericInst if your
16442         generic type is a TypeBuilder.
16443         (do_mono_reflection_bind_generic_parameters): Only set
16444         `ginst->is_dynamic' if our generic type is a TypeBuilder.
16445
16446 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
16447
16448         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
16449         Fixes #56091.
16450
16451 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16452
16453         * icall.c: added Kill_internal icall.
16454         * process.[ch]: added Kill_internal icall.
16455
16456 2004-03-25  Martin Baulig  <martin@ximian.com>
16457
16458         * class.h (MonoStats): Added `generic_instance_count',
16459         `inflated_method_count', `inflated_type_count' and
16460         `generics_metadata_size'.       
16461
16462 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16463
16464         * reflection.c: no warnings now.
16465
16466 2004-03-25  Martin Baulig  <martin@ximian.com>
16467
16468         * class.c (mono_class_get_full): New public function; does a
16469         mono_class_get(), but also takes a `MonoGenericContext *'.
16470
16471         * loader.c (mono_field_from_memberref): Renamed to
16472         `field_from_memberref', made static and added `MonoGenericContext *'
16473         argument.
16474         (mono_field_from_token): Added `MonoGenericInst *' argument.
16475         (method_from_memberef): Likewise.
16476         (mono_get_method_from_token): Likewise.
16477         (mono_get_method_full): New public function; does a
16478         mono_get_method(), but also takes a `MonoGenericContext *'.
16479
16480         * verify.c (mono_method_verify): Get the method's generic context
16481         and pass it to mono_field_from_token(), mono_get_method_full() and
16482         mono_class_get_full().
16483
16484 2004-03-25  Martin Baulig  <martin@ximian.com>
16485
16486         * class.c (mono_class_inflate_generic_type): Take a
16487         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
16488         `MonoGenericMethod *'.
16489
16490 2004-03-25  Martin Baulig  <martin@ximian.com>
16491
16492         * loader.h (MonoMethodInflated): Store the MonoGenericContext
16493         instead of the MonoGenericMethod here.
16494
16495 2004-03-25  Martin Baulig  <martin@ximian.com>
16496
16497         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
16498         each time we create a new MonoGenericInst, we also create a new
16499         context which points back to us.
16500
16501         * class.c (inflate_method): Use `ginst->context' instead of
16502         creating a new context.
16503
16504         * loader.c (method_from_memberref): Use
16505         `klass->generic_inst->context' instead of creating a new context.
16506
16507 2004-03-25  Martin Baulig  <martin@ximian.com>
16508
16509         * class.h (MonoGenericContext): New struct.
16510         (MonoGenericMethod): Removed `generic_inst'.
16511
16512         * class.c (mono_class_inflate_generic_method): Take a
16513         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
16514
16515 2004-03-25  Martin Baulig  <martin@ximian.com>
16516
16517         * loader.h (MonoMethodInflated): New typedef.
16518
16519         * metadata.h (MonoMethodSignature): Removed `gen_method', make
16520         `generic_param_count' consume just 30 bits, added `is_inflated'
16521         and `has_type_parameters' flags (one bit each).
16522
16523         * class.c (mono_class_inflate_generic_method): Create a
16524         MonoMethodInflated instead of a MonoMethodNormal and set
16525         `is_inflated' in the method signature.
16526
16527         * class.h (MonoGenericMethod): Removed `generic_method'.
16528
16529 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
16530
16531         * image.c: Make sure the name of a MonoImage is always an absolute path.
16532           This fixes bug #54415.
16533
16534 2004-03-24  Martin Baulig  <martin@ximian.com>
16535
16536         * class.c (mono_class_setup_vtable): If we're a generic instance,
16537         use our generic type's vtable size.
16538
16539 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
16540
16541         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
16542         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
16543         problems.
16544
16545 2004-03-23  Martin Baulig  <martin@ximian.com>
16546
16547         * class.h (MonoDynamicGenericInst): Added `int count_events' and
16548         `MonoEvent *events'.
16549
16550         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
16551         (typebuilder_icalls): Added "get_event_info"; calls
16552         mono_reflection_event_builder_get_event_info(). 
16553
16554         * reflection.c (mono_reflection_generic_inst_initialize): Added
16555         `MonoArray *events'.
16556         (mono_reflection_event_builder_get_event_info): New function.
16557
16558 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
16559
16560         * object.h: add mono_type_initialization_init
16561
16562         * object.c (mono_runtime_class_init): 
16563         implement class constructor synchronization rules
16564         to cope with threading issues.  
16565         add mono_type_initialization_init
16566
16567         * appdomain.c (mono_runtime_init): call 
16568         mono_type_initialization_init
16569
16570         * class.h: removing initializing field from MonoVTable
16571
16572 2004-03-23  Martin Baulig  <martin@ximian.com>
16573
16574         * class.c (my_mono_class_from_generic_parameter): Use
16575         `param->name' if it's not NULL. 
16576
16577 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
16578
16579         * class.c: do not insert non-virtual methods in the vtable.
16580         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
16581         that means the method is non-virtual. This never would have
16582         happened before.
16583
16584 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
16585
16586         * profiler.c: Added lock for accessing coverage_hash.
16587
16588 2004-03-22  Martin Baulig  <martin@ximian.com>
16589
16590         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
16591         `method->method->signature->generic_param_count != 0' to make it
16592         work for interface methods.
16593
16594 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16595
16596         * process.c: quote the string passed to the shell using g_shell_quote.
16597
16598 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16599
16600         * threads.c:
16601         (mono_threads_manage): don't remove the finalizer thread and self
16602         from the threads hash table so that mono_thread_manage can be called
16603         more than once.
16604
16605 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16606
16607         * process.c: quote the arguments when UseShellExecute is true. Fixes
16608         bug #55790.
16609
16610 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16611
16612         * threads.c: set mono_thread_detach as a cleanup routine for every
16613         thread. This way it's always executed upon thread termination, either
16614         aborted or finished normally. No more xsp hangs!
16615
16616 2004-03-17  Martin Baulig  <martin@ximian.com>
16617
16618         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
16619         `int count_nested' and a `MonoType **nested'.
16620
16621         * reflection.c (mono_reflection_bind_generic_parameters): Moved
16622         most of the functionality into a new static
16623         do_mono_reflection_bind_generic_parameters() and don't take a
16624         `MonoType *nested_in' argument any more.  Don't compute nested
16625         types here.
16626         (mono_reflection_generic_inst_get_nested_types): New public method
16627         to get nested types.
16628
16629         * class.c (mono_class_create_generic): Set `klass->nested_in' if
16630         we're a nested class.
16631
16632         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
16633         mono_reflection_generic_inst_get_nested_types() to compute the
16634         nested types.
16635
16636 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16637
16638         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
16639         descriptive error message under windows.
16640         
16641 2004-03-17  Martin Baulig  <martin@ximian.com>
16642
16643         * class.c (dup_type): Added `const MonoType *original' argument;
16644         copy the attrs from the original type.
16645
16646 2004-03-17  Martin Baulig  <martin@ximian.com>
16647
16648         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
16649         `m->generic_inst_cache' here.
16650
16651 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * exception.h exception.c: Add stack_overflow_exception.
16654
16655 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16656
16657         * threadpool.c:
16658         (overlapped_callback): call SetEvent *after* invoking the callback.
16659         No need to call CloseHandle.
16660
16661 2004-03-16  Martin Baulig  <martin@ximian.com>
16662
16663         * reflection.c (mono_image_get_fieldref_token): Take a
16664         `MonoReflectionField *' instead of a `MonoClassField *' and a
16665         `MonoClass *'; store the `MonoReflectionField *' in the hash.
16666
16667 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16668
16669         * appdomain.c: don't add the culture to the filename we're looking for
16670         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
16671
16672 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16673
16674         * locales.c: don't ignore symbols when doing case insensitive compares.
16675         Thanks Dick! Fixes bug #54046.
16676
16677         * threads.c: surround 'threads' usage with enter/leave in
16678         mono_thread_manage.
16679
16680 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
16681
16682         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
16683         implicitly marshalled as [Out]. Fixes #55450.
16684
16685         (mono_marshal_get_runtime_invoke): Zero out the result if there is
16686         an exception.
16687
16688 2004-03-16  Martin Baulig  <martin@ximian.com>
16689
16690         * class.c (mono_class_from_generic_parameter): Use the actual
16691         parameter name. 
16692
16693 2004-03-16  Martin Baulig  <martin@ximian.com>
16694
16695         * reflection.c (type_get_signature_size): New static function.
16696         Compues the size of the type in a method signature.
16697         (method_get_signature_size): New static function; calls
16698         type_get_signature_size() to compute the actual size of the
16699         method's signature.
16700         (method_encode_signature): Use method_get_signature_size() to get
16701         the signature's size rather than using `nparams * 10'.
16702
16703 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16704
16705         * file-io.h: define here WapiOverlapped on windows. I don't want the
16706         regular OVERLAPPED one.
16707
16708         * file-io.c:
16709         * threadpool.c: somehow, BindIoCompletionCallback is not found.
16710         Disabling AIO on windows.
16711
16712 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16713
16714         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
16715         bug #55385.
16716
16717 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16718
16719         * appdomain.c: upgraded corlib version.
16720
16721         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
16722         and BeginWrite. Allow opening files for asynchrnous operations.
16723
16724         * file-io.h: new struct that maps FileStreamAsyncResult.
16725         * icall.c: added new icalls.
16726         * process.[ch]: support setting child process environment variables
16727         and use the SHELL or COMSPEC when UseShellExecute is true.
16728
16729         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
16730         callback for async. IO is here and also BindHandle.
16731
16732         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
16733         from here.
16734
16735 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * reflection.c (create_custom_attr): Allow len == 0.
16738
16739         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
16740         computation on big-endian machines.
16741
16742 2004-03-13  Martin Baulig  <martin@ximian.com>
16743
16744         * class.h (MonoGenericInst): Added `int count_ifaces'.
16745
16746         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
16747         `ginst->count_ifaces' instead `klass->interface_count' since we
16748         may get called before the vtable is created.
16749
16750         * loader.c (mono_method_get_param_names): If we're a generic
16751         instance, return and don't initialize the class.
16752
16753         * reflection.c (mono_reflection_setup_generic_class): Don't call
16754         ensure_runtime_vtable().
16755         (mono_reflection_bind_generic_parameters): Set
16756         `ginst->count_ifaces'.
16757
16758 2004-03-11  Jackson Harper <jackson@ximian.com>
16759
16760         * icall.c:
16761         * unicode.c:
16762         * unicode.h: Remove unused System.Char icalls.
16763         
16764 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
16765
16766         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
16767         code when we P/Invoke the first library in Windows.Forms, instead
16768         of when we first open the assembly.
16769
16770         * assembly.c: Drop the lookup from here.
16771
16772 2004-03-10  Martin Baulig  <martin@ximian.com>
16773
16774         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
16775         class for properties, fields and events.  Finally fixes #54945.
16776
16777 2004-03-10  Martin Baulig  <martin@ximian.com>
16778
16779         * metadata.c (mono_metadata_class_equal): New static function;
16780         checks whether two generic instances or two generic parameters are
16781         equal.
16782         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
16783         compare classes.        
16784
16785 2004-03-10  Martin Baulig  <martin@ximian.com>
16786
16787         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
16788
16789         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
16790         argument and write it into the `reflection_info' field.
16791
16792         * icall.c
16793         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
16794         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
16795
16796 2004-03-09  Jackson Harper  <jackson@ximian.com>
16797
16798         * char-conversions.h: use 8 bits for numeric data its all we need
16799         * icall.c: numeric data is only 8 bits now.
16800
16801 2004-03-09  Martin Baulig  <martin@ximian.com>
16802
16803         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
16804
16805         * class.c (init_properties, init_events): Initialize the new
16806         `parent' field.
16807
16808         * reflection.c (typebuilder_setup_properties): Likewise.
16809         (typebuilder_setup_events): Likewise.
16810
16811         * reflection.h (MonoEventInfo): Replaced `parent with
16812         `declaring_type' and `reflected_type'.
16813
16814         * icall.c (ves_icall_get_property_info): Distinguish between
16815         declaring and reflected type.
16816         (ves_icall_get_event_info): Likewise.
16817
16818 2004-03-09  Martin Baulig  <martin@ximian.com>
16819
16820         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
16821         (ves_icall_Type_GetField): Correctly set field->klass.
16822
16823 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
16824
16825         * loader.h: Fix warning.
16826
16827 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
16828
16829         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
16830         library routine if present.  Notice that it will still continue
16831         executing even if its missing, for those working on the Gtk#
16832         edition of Windows.Forms.
16833
16834         * assembly.c (do_mono_assembly_open): If loading the
16835         System.Windows.Forms call mono_loader_wini_init.
16836
16837 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16838
16839         * class.h: Added MonoRemoteClass struct.
16840         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
16841         function for MonoStrings.
16842         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
16843         Added internal call for getting the proxy type.
16844         * marshal.c: Get the type of transparent proxies from its remote_class.
16845         Added methods that generate the IL for type checks and casts:
16846         mono_marshal_get_isinst, mono_marshal_get_castclass, 
16847         mono_marshal_get_proxy_cancast.
16848         * marshal.h: Declaration of the previous new methods.
16849         * object.c: Added new moethods for creating and updating MonoRemoteClass
16850         instances: mono_remote_class, mono_upgrade_remote_class, 
16851         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
16852         * verify.c: FIx transparent_proxy_fields layout.
16853         * appdomain.c: Bump corlib version.
16854
16855 2004-03-04  Jackson Harper  <jackson@ximian.com>
16856
16857         * icall.c: Add icall to access char conversion tables.
16858         * char-conversions.h: Character conversion tables.
16859         * Makefile.am: Add char-conversions.h private header file.
16860         
16861 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
16862
16863         * appdomain.c (unload_thread_main): Increase unloading timeout to
16864         10 sec as a temporary workaround for Nant problems.
16865
16866 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * gc.c: Add checks for GC_enable and GC_disable.
16869
16870         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
16871         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
16872         (bug #54988).
16873         
16874 2004-02-27  Martin Baulig  <martin@ximian.com>
16875
16876         * reflection.c (mono_reflection_bind_generic_parameters): Take a
16877         `MonoReflectionType *' instead of a `MonoType *'.
16878
16879 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16880
16881         * gc.c (run_finalize): Avoid finalizing the object representing the
16882         finalizer thread.
16883         (finalizer_thread): Fix warning.
16884
16885 2004-02-25  Martin Baulig  <martin@ximian.com>
16886
16887         * class.c (_mono_class_get_instantiation_name): Added `int offset'
16888         argument for nested types.
16889         (mono_class_create_generic): Added support for nested generictypes.
16890
16891         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
16892         `GList *nested'.
16893
16894         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
16895
16896         * reflection.c (method_encode_signature): Increase the minimum
16897         value of `size' from 10 to 11.
16898         (mono_reflection_bind_generic_parameters): Take `int type_argc'
16899         and `MonoType **types' arguments instead of the `MonoArray
16900         *types'; added `MonoType *nested_in'.  Recursively instantiate
16901         nested classes. 
16902
16903 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16904
16905         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
16906         stack_overflow_ex members which are used by exception handling.
16907
16908         * appdomain.c (mono_runtime_init): Initialize the new members.
16909
16910         * gc.c (mono_gc_enable): New helper function.
16911         * gc.c (mono_gc_disable): New helper function.
16912
16913 2004-02-23  Martin Baulig  <martin@ximian.com>
16914
16915         * icall.c: I must have been really stupid - make it actually work
16916         this time ;-)
16917
16918 2004-02-23  Martin Baulig  <martin@ximian.com>
16919
16920         * loader.c (method_from_memberref): Only inflate the method if
16921         it's in another klass.
16922
16923 2004-02-23  Martin Baulig  <martin@ximian.com>
16924
16925         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
16926         (mono_class_init): If we're a generic instance and an interface,
16927         compute `class->interface_id'; also create `class->interfaces'
16928         here and inflate them.
16929
16930         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
16931         `ginst->is_open'.
16932         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
16933
16934         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
16935
16936 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
16937
16938         * reflection.c (method_encode_code): Improved the error message
16939         generated by the exception.
16940
16941 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16942
16943         * icall.c: Martin did not do what he said in the ChangeLog for
16944         2004-02-18, but put back the changes for properties and events.
16945         Commenting those changes out again and adding comment to bug #54518.
16946         
16947         * process.c: removed warning.
16948
16949 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
16950
16951         * marshal.c (emit_struct_conv): Print an error message instead of
16952         asserting when a type does not have the StructLayout attribute.
16953
16954 2004-02-20  Martin Baulig  <martin@ximian.com>
16955
16956         * reflection.c (mono_type_get_object): Also use the cache for
16957         generic instances.
16958         (mono_reflection_bind_generic_parameters): Always compute
16959         `ginst->ifaces'.        
16960
16961 2004-02-20  Martin Baulig  <martin@ximian.com>
16962
16963         * class.h (MonoGenericMethod): Removed `klass'.
16964
16965         * class.c (mono_class_inflate_generic_method): Added `MonoClass
16966         *klass' argument.
16967
16968 2004-02-20  Martin Baulig  <martin@ximian.com>
16969
16970         * reflection.c (method_encode_methodspec): Actually use the
16971         uninflated signature for the memberref.
16972
16973 2004-02-20  Martin Baulig  <martin@ximian.com>
16974
16975         * class.h (MonoGenericMethod): Removed `declaring'.
16976
16977         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
16978         is NULL, compute it here.
16979
16980 2004-02-20  Martin Baulig  <martin@ximian.com>
16981
16982         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
16983
16984         * metadata.c (mono_metadata_generic_inst_hash): New method.
16985         (mono_metadata_generic_inst_equal): New method.
16986
16987         * reflection.c (mono_reflection_bind_generic_parameters): Use the
16988         `klass->image->generic_inst_cache' cache to avoid creating
16989         duplicate MonoGenericInst's.
16990
16991         * class.c (mono_class_inflate_generic_type): Use the cache.
16992
16993 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
16994
16995         * object.c: fixed gc descriptor calculation for embedded valuetypes.
16996
16997 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16998
16999         * icall.c: added Socket.WSAIoctl icall.
17000
17001         * socket-io.[ch]: implemented
17002         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
17003
17004 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
17005
17006         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
17007
17008 2004-02-18  Urs C Muff  <umuff@quark.com>
17009
17010         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
17011         this work on PPC and other big-endian architectures.
17012
17013         * debug-mono-symfile.h: Prepended the names of all the `guint32'
17014         fields with an underscore to make sure they're only accessed by
17015         the read32() macro.
17016
17017 2004-02-18  Martin Baulig  <martin@ximian.com>
17018
17019         * icall.c: Put the klass->refclass changes back for methods and
17020         fields, but not for properties and events.  We're currently not
17021         distinguishing between DeclaringType and ReflectedType for
17022         properties and events, that's what caused the regressions.
17023
17024 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17025
17026         * object.c:
17027         (mono_async_result_new): the handle can be NULL.
17028
17029         * threadpool.c: Use an event instead of a semaphore, don't initialize
17030         it until needed. This saves quite a few semaphores from being created
17031         when using the threadpool.
17032
17033 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
17034
17035         * object.c (mono_string_is_interned_lookup): Fix interning of long
17036         strings. Fixes #54473.
17037
17038         * domain.c (ldstr_equal): Optimize if the two strings are equal.
17039
17040         * icall.c: Revert the klass->refclass changes since they introduce
17041         regressions (bug #54518).
17042
17043 2004-02-18  Martin Baulig  <martin@ximian.com>
17044
17045         * class.c (mono_class_init): If we're a generic instance and don't
17046         come from a TypeBuilder, inflate our members here.
17047         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
17048         (mono_class_create_generic): New public method.
17049         (mono_class_initialize_generic): Removed.
17050         (get_instantiation_name): Renamed to
17051         _mono_class_get_instantiation_name() and made it public.
17052
17053 2004-02-18  Martin Baulig  <martin@ximian.com>
17054
17055         * class.c (mono_class_inflate_generic_type): Clear the new
17056         instance's `nginst->klass' when inflating a generic instance.
17057         (mono_class_is_subclass_of): Added (basic) support for generic
17058         instances.
17059
17060 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
17061
17062         * appdomain.h, domain.c: use a MonoCodeManager instead of a
17063         MonoMempool to hold compiled native code.
17064
17065 2004-02-17  Martin Baulig  <martin@ximian.com>
17066
17067         * class.h (MonoDynamicGenericInst): Added `count_properties' and
17068         `properties'.
17069
17070         * reflection.c (mono_reflection_generic_inst_initialize): Added
17071         `MonoArray *properties' argument.
17072
17073         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
17074
17075 2004-02-17  Martin Baulig  <martin@ximian.com>
17076
17077         * icall.c (ves_icall_Type_GetFields): Renamed to
17078         ves_icall_Type_GetFields_internal() and added a
17079         `MonoReflectionType *rtype' argument; pass it to
17080         mono_field_get_object() to set the field's "reflected" type.
17081         (ves_icall_Type_GetConstructors): Likewise.
17082         (ves_icall_Type_GetEvents): Likewise.
17083         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
17084         argument; pass it to mono_method_get_object() to set the method's
17085         "reflected" type.       
17086
17087 2004-02-17  Martin Baulig  <martin@ximian.com>
17088
17089         * class.h (MonoDynamicGenericInst): New type.
17090         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
17091
17092         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
17093         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
17094         (ves_icall_MonoGenericInst_GetFields): New interncall.
17095
17096         * class.c (mono_class_from_generic): Don't call
17097         mono_class_initialize_generic() if this is a dynamic instance;
17098         ie. it's being created from a TypeBuilder.
17099         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
17100         `class->byval_arg.type'.
17101
17102         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
17103         to `inflate_method' and made static.
17104         (mono_reflection_inflate_field): Removed.
17105         (mono_reflection_generic_inst_initialize): New public method.
17106
17107         * reflection.h (MonoReflectionGenericInst): Removed `methods',
17108         `ctors' and `fields'; added `initialized'.
17109
17110 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
17111
17112         * debug-helpers.c (mono_method_full_name): Fix output for empty
17113         namespaces.
17114
17115 2004-02-12  Martin Baulig  <martin@ximian.com>
17116
17117         * class.h (MonoClassField): Added `MonoType *generic_type'.
17118
17119         * reflection.c (mono_image_get_fieldref_token): Added support for
17120         instantiated generic types.
17121         (field_encode_inflated_field): Removed.
17122         (mono_image_get_inflated_field_token): Removed.
17123         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
17124
17125         * reflection.h (MonoReflectionInflatedField): Removed.
17126
17127 2004-02-12  Martin Baulig  <martin@ximian.com>
17128
17129         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
17130         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
17131
17132         * reflection.c (mono_image_get_methodspec_token): Take a
17133         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
17134         (mono_image_create_token): Check whether we have a
17135         `method->signature->gen_method' and call
17136         mono_image_get_methodspec_token() if appropriate.
17137         (inflated_method_get_object): Removed.
17138         (mono_reflection_bind_generic_method_parameters): Return a
17139         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
17140         (mono_reflection_inflate_method_or_ctor): Likewise.
17141
17142         * reflection.h (MonoReflectionInflatedMethod): Removed.
17143
17144 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
17145
17146         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
17147         for custom valuetype marshalling.
17148
17149         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
17150
17151 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17152
17153         * icall.c: fixed WSAGetLastError_internal name.
17154
17155 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
17156
17157         * threads.c (mono_thread_attach): Allow this to be called multiple
17158         times for a thread.
17159         
17160         * threads.c (build_wait_tids): Do not wait for ourselves.
17161
17162         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
17163         appdomain list is empty.
17164
17165         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
17166         memory returned by mono_string_builder_to_utf16, since it points into
17167         managed memory. Thanks to Bernie Solomon for noticing this.
17168
17169         * icall.c: Add AppDomainSetup icalls.
17170
17171         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
17172
17173         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
17174         types.
17175
17176         * reflection.c (reflection_methodbuilder_to_mono_method): Save
17177         custom attributes to the method_aux struct. Also fix array indexes etc.
17178
17179         * loader.c (mono_method_get_param_names): Make dynamic case work again.
17180         
17181 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
17182
17183         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
17184         (both static and runtime) and reduce startup time.
17185
17186 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
17187
17188         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
17189         AsAny marshalling conversion instead of crashing.
17190
17191         * marshal.c: Fix warnings.
17192
17193 2004-02-09  Martin Baulig  <martin@ximian.com>
17194
17195         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
17196
17197         * reflection.h (MonoReflectionInflatedMethod): Removed the
17198         `declaring' field, it's now in the unmanaged MonoGenericMethod.
17199
17200         * reflection.c (method_encode_methodspec): Removed the `method'
17201         argument; we get it from `gmethod->declaring'.
17202         (inflated_method_get_object): Removed the `declaring' argument.
17203
17204 2004-02-09  Martin Baulig  <martin@ximian.com>
17205
17206         * class.h (MonoGenericMethod): New type.
17207         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
17208         `generic_method'.
17209
17210         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
17211         a `MonoGenericMethod *gen_method' one.
17212
17213         * class.c (mono_class_inflate_generic_type): Take an additional
17214         `MonoGenericMethod * argument.  This is only non-NULL if we're
17215         inflating types for a generic method.   
17216         (mono_class_inflate_generic_signature): Renamed to
17217         inflate_generic_signature() and made static; take a
17218         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
17219         (inflate_generic_header): Take a `MonoGenericMethod *' argument
17220         instead of a `MonoGenericInst *' one.
17221         (mono_class_inflate_generic_method): Likewise.
17222
17223         * reflection.c (encode_generic_method_sig): Take a
17224         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
17225         (method_encode_methodspec): Likewise.
17226         (inflated_method_get_object): Likewise. 
17227
17228         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
17229         field with a `MonoGenericMethod *gmethod' one.  
17230
17231 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
17232
17233         * class.h (mono_class_has_parent): add parens to expansion
17234         so you can ! this.
17235
17236 2004-02-08  Martin Baulig  <martin@ximian.com>
17237
17238         * image.h (MonoImage): Removed `generics_cache'.
17239
17240         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
17241         instead of a `MonoType *' argument; removed the `inflate_methods'
17242         argument.  Don't inflate methods here.
17243
17244         * loader.c (find_method): If it's a generic instance, call
17245         mono_class_init() on the `sclass->generic_inst->generic_type'.
17246
17247         * metadata.c (mono_type_size): Make this work on uninitialized
17248         generic instances; call it on the `ginst->generic_type's class.
17249
17250         * reflection.c (mono_reflection_bind_generic_parameters): Call
17251         mono_class_from_generic() to create the `ginst->klass'.
17252
17253 2004-02-08  Martin Baulig  <martin@ximian.com>
17254
17255         * class.h (MonoClass): Changed type of `generic_inst' from
17256         `MonoType *' to `MonoGenericInst *'.
17257
17258 2004-02-08  Martin Baulig  <martin@ximian.com>
17259
17260         * icall.c (ves_icall_Type_BindGenericParameters): Just call
17261         mono_type_get_object(), this is now creating a `MonoGenericInst'
17262         for MONO_TYPE_GENERICINST.
17263         (ves_icall_MonoGenericInst_GetParentType): Likewise.
17264         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
17265
17266         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
17267         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
17268         (inflated_method_get_object): Added `MonoClass *refclass' argument.
17269         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
17270         and reflected type.
17271
17272         * reflection.h (MonoReflectionInflatedMethod): Removed
17273         `declaring_type' and `reflected_type'.
17274
17275 2004-02-08  Martin Baulig  <martin@ximian.com>
17276
17277         * class.h (MonoGenericInst): Added `MonoType *parent' and
17278         `MonoType **ifaces'.
17279
17280         * reflection.h (MonoReflectionGenericInst): Removed `klass',
17281         `parent' and `interfaces'.
17282
17283         * reflection.c (mono_reflection_bind_generic_parameters): Take a
17284         `MonoType *' argument and return a `MonoType *'.
17285
17286         * icall.c
17287         (ves_icall_MonoGenericInst_GetParentType): New interncall.
17288         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
17289
17290 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
17293         valuetype marshalling.
17294
17295 2004-02-06  Martin Baulig  <martin@ximian.com>
17296
17297         * class.c
17298         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
17299         (my_mono_class_from_generic_parameter): Likewise.
17300
17301 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
17302
17303         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
17304         contents of the symbol files lazily.
17305
17306         * object.h (MonoThread): Add 'name' and 'name_len' fields.
17307
17308         * threads.h threads.c icall.c: New icalls for getting and setting the
17309         threads name.
17310
17311 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
17314         Raise an exception when the domain is not found.
17315
17316 2004-02-03  Martin Baulig  <martin@ximian.com>
17317
17318         * reflection.c (mono_image_get_methodspec_token): Use the
17319         uninflated signature; fixes gen-33.
17320
17321 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
17322
17323         * gc.c threads.c: Make the finalizer thread a normal managed thread so
17324         the finalizer code can use thread functionality.
17325
17326         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
17327         the finalizer thread.
17328
17329         * threads.c: Make some functions more robust.
17330
17331         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
17332
17333         * metadata.h: Add new marshalling conventions.
17334
17335         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
17336         stringbuilder marshalling. Fixes #53700.
17337
17338         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
17339
17340         * reflection.c (mono_image_get_type_info): Save declarative security
17341         info.
17342
17343         * reflection.c (mono_image_get_field_info): Handle uninitialized 
17344         unmanaged fields as well.
17345
17346         * appdomain.c: Bump corlib version.
17347
17348 2004-02-01  Martin Baulig  <martin@ximian.com>
17349
17350         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
17351         method type arguments.  
17352
17353 2004-01-30  Duncan Mak  <duncan@ximian.com>
17354
17355         * marshal.h: Add prototype for
17356         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
17357         and
17358         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
17359         fix the build.
17360
17361 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
17362
17363         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
17364         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
17365
17366 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * marshal.c (mono_marshal_get_native_wrapper): Add support for
17369         custom marshalling of valuetypes.
17370
17371         * marshal.c: Fix some warnings.
17372
17373 2004-01-29  Martin Baulig  <martin@ximian.com>
17374
17375         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
17376         for generic method parameters.
17377
17378         * reflection.c (method_encode_methodspec): Write the uninflated
17379         signature into the methodspec table.
17380         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
17381         is always the uninflated method.
17382         (reflection_methodbuilder_to_mono_method): Copy the generic
17383         parameters from the MethodBuilder into `header->gen_params'.
17384
17385 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
17386
17387         * class.c (mono_class_from_generic_parameter): Fix warning.
17388
17389 2004-01-27  Martin Baulig  <martin@ximian.com>
17390
17391         * class.c (mono_class_from_generic_parameter): Don't create
17392         `klass->methods' here.  
17393
17394 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
17397         extension since it does not work with libraries named lib<FOO>.dll.so.
17398
17399 2004-01-25  Martin Baulig  <martin@ximian.com>
17400
17401         * class.c (mono_class_inflate_generic_type): Added support for
17402         MONO_TYPE_GENERICINST.
17403
17404         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
17405         inflate methods on open constructed types.      
17406
17407 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17408
17409         * object.c: fire ProcessExit event in the root AppDomain after running
17410         Main. Fixes bug #53299.
17411
17412 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
17413
17414         * socket-io.c: include the new socket-wrappers.h header.
17415         Use the wrappers instead of the unix socket functions to make the code
17416         more clear.
17417
17418 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
17421
17422         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
17423         Fixes #22532.
17424
17425 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
17426
17427         * reflection.c (mono_image_create_pefile): Handle the case when the
17428         entry point is not a MethodBuilder.
17429
17430         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
17431         field to ReflectionMethod since it is not allways a builder.
17432
17433         * reflection.c (type_get_fully_qualified_name): New helper function to
17434         return the fully qualified name of a type.
17435
17436         * reflection.c (encode_marshal_blob): Always emit the fully qualified
17437         type name for custom marshallers.
17438
17439         * reflection.c (mono_marshal_spec_from_builder): Ditto.
17440
17441         * class.c (mono_class_setup_vtable): If a parent class already 
17442         implements an interface, use the implementing methods from that class.
17443         Fixes #53148.
17444
17445 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17446
17447         * threadpool.c: just return instead of ExitThread to allow for thread
17448         clean up earlier.
17449
17450 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
17453         when closing resource modules.
17454
17455         * reflection.c (mono_image_create_pefile): Handle the case when the
17456         entry point is not a MethodBuilder.
17457
17458         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
17459         field to ReflectionMethod since it is not allways a builder.
17460
17461 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
17462
17463         * marshal.c (mono_marshal_get_managed_wrapper): 
17464         mono_marshal_alloc takes native int so CONV_I
17465         the arg for 64bits.
17466
17467 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
17468
17469         * reflection.c (fixup_cattrs): New function to fixup the methoddef
17470         tokens in the cattr table. Fixes #53108.
17471
17472 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17473
17474         * loader.c: don't trim ".dll" before looking up in the config file.
17475         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
17476
17477 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
17480         Return the module which contains the resource as well.
17481         (ves_icall_System_Reflection_Module_Close): New icall.
17482
17483         * appdomain.c: Bump corlib version number.
17484
17485         * image.c (mono_image_addref): New public function.
17486
17487         * assembly.c: Call mono_image_addref.
17488
17489         * reflection.c (mono_module_get_object): Increase reference count of 
17490         the image.
17491
17492         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
17493         Fixes #22532.
17494
17495         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
17496         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
17497         proper exceptions on DllImport problems.
17498
17499 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
17500
17501         * class.c, metadata.c: eliminate CSIZE macro.
17502
17503 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
17504
17505         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
17506         * object.h: Added async_callback field in MonoAsyncResult.
17507         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
17508         * verify.c: Added async_callback in MonoAsyncResult layout.
17509
17510 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
17511
17512         * reflection.c (mono_reflection_get_custom_attrs): Add support
17513         for Modules.
17514
17515 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17516
17517         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
17518         marshalling.
17519         (mono_marshal_method_from_wrapper): Add null pointer check.
17520
17521 2004-01-16  Martin Baulig  <martin@ximian.com>
17522
17523         * debug-mono-symfile.h: Set version number to 36 and reflect
17524         latest symbol writer changes.
17525
17526 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17527
17528         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
17529         multi-dimensional arrays.
17530         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
17531         (mono_class_from_mono_type): Use bounded_array_class_get.
17532         
17533         * class.c (mono_bounded_array_class_get): New function which takes
17534         a 'bounded' bool argument to distinguish vectors from one dimensional
17535         arrays.
17536
17537         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
17538         bounded_array_class_get if the array has bounds.
17539
17540         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
17541         Search modules loaded using AssemblyBuilder:AddModule as well.
17542
17543 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17544
17545         * appdomain.c: increased corlib version.
17546         * filewatcher.c: removed g_print.
17547         * icall.c:
17548         (get_property_info): only allocate what is actually requested.
17549         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
17550
17551 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17552
17553         * Makefile.am: added filewatcher.[ch]
17554         * filewatcher.[ch]: FileSystemWatcher runtime support.
17555         * icall.c: added new FSW icalls.
17556
17557 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17558
17559         * string-icalls.c: fix stringbuilder regression as suggested by
17560         Iain McCoy <iain@mccoy.id.au>.
17561
17562 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
17563
17564         * process.c (process_read_stringtable_block): Recognize '007f' as
17565         a language neutral stringtable block.
17566
17567 2004-01-12  Patrik Torstensson
17568
17569         * object.h (MonoStringBuilder) : Changed layout to support our
17570         new stringbuilder class.
17571         * marshal.c: Change marshalling to support the new layout of 
17572         string builder.
17573         * appdomain.c: increased version number because new layout of
17574         string builder.
17575
17576 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
17577
17578         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
17579         assembly name as an string instead of an AssemblyName, since it is
17580         easier to extract info from it.
17581
17582         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
17583         the culture subdirectories too. Fixes #52231.
17584
17585 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17586
17587         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
17588         It takes 2 new parameters with an optional name for the method to look
17589         for and case ignoring info.
17590
17591         * threadpool.c: removed unused variable.
17592
17593 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17594
17595         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
17596         It takes 2 new parameters with an optional name for the property to look
17597         for and case ignoring info.
17598         Fixes bug #52753.
17599
17600 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
17601
17602         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
17603         Fix #52451.
17604
17605 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17606
17607         * appdomain.c:
17608         * assembly.c: escape the uri before passing it to g_filename_from_uri.
17609         Fixes bug #52630.
17610
17611 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
17612
17613         * reflection.c: Add support for more than one unmanaged resource.
17614
17615         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
17616         in field->def_value, as done in all other cases.
17617
17618         * reflection.c (mono_reflection_get_custom_attrs): Add support for
17619         TypeBuilders.
17620
17621         * reflection.c (mono_reflection_create_runtime_class): Remove 
17622         errorneous assignment to klass->element_class, since it is already
17623         done in mono_reflection_setup_internal_class.
17624
17625 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17626
17627         * gc.c: added missing LeaveCriticalSection.
17628         * icall.c: indented a couple of lines.
17629         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
17630         if we call EndInvoke inside a callback. Fixes bug #52601.
17631
17632 2004-01-07  Martin Baulig  <martin@ximian.com>
17633
17634         * mono-debug-debugger.h
17635         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
17636
17637 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
17638
17639         * appdomain.c: Use messages in NotImplementedException.
17640
17641         * exception.c (mono_get_exception_not_implemented): Now this takes
17642         a message argument.
17643
17644         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
17645         exception instead of g_asserting an aborting when something is not
17646         implemented.
17647
17648         Add some inline docs.
17649
17650 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
17651
17652         * reflection.h: Update after changes to object layout.
17653
17654         * reflection.c: Implement saving of unmanaged aka win32 resources.
17655
17656         * appdomain.c: Bump version number.
17657
17658         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
17659         Handle missing domains gracefully.
17660
17661 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
17662
17663         * file-io.c : On Windows, there are much more invalid_path_chars.
17664
17665 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17666
17667         * class.h, object.c: prepare for GetType () speedup.
17668
17669 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
17670
17671         * profiler.c: workaround for --profile null reference exception on
17672           cygwin. Patch by Patrik Torstensson.
17673
17674 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
17675
17676         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
17677         make work for unaligned access.
17678
17679 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
17680
17681         * class.c: small cleanup (class->fields [i] -> field).
17682         * image.c: check address of metadata is valid.
17683
17684 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
17685
17686         * assembly.h assembly.c (mono_assembly_loaded): New public function to
17687         search the list of loaded assemblies.
17688
17689         * reflection.c (mono_reflection_type_from_name): Use 
17690         mono_assembly_loaded instead of mono_image_loaded.
17691
17692         * reflection.c: Fix warnings.
17693
17694 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
17695
17696         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
17697         is dynamic. This is needed since an assembly can contain both dynamic and
17698         non-dynamic images.
17699
17700         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
17701         assembly->dynamic.
17702
17703         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
17704
17705         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
17706         to store modules loaded using AddModule.
17707
17708         * reflection.c (mono_image_fill_file_table): Generalize this so it works
17709         on Modules.
17710
17711         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
17712
17713         * reflection.c (mono_image_fill_export_table_from_module): New function to
17714         fill out the EXPORTEDTYPES table from a module.
17715
17716         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
17717         into a separate function. Also handle loaded non-dynamic modules.
17718
17719         * reflection.c (mono_image_basic_init): Fix memory allocation.
17720
17721         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17722
17723         * assembly.c (mono_assembly_load_references): Make this public.
17724
17725 2003-12-19  Martin Baulig  <martin@ximian.com>
17726
17727         * class.c (mono_class_initialize_generic): Made this static, take
17728         a `MonoGenericInst *' instead of a `MonoClass *'.
17729         (mono_class_from_generic): Call mono_class_initialize_generic()
17730         unless we're already initialized or being called from
17731         do_mono_metadata_parse_generic_inst().
17732
17733         * class.h (MonoGenericInst): Added `initialized' and
17734         `init_pending' flags.
17735
17736         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
17737         `mono_class_init (gklass)' or mono_class_initialize_generic()
17738         here; set `generic_inst->init_pending' while parsing the
17739         `type_argv'.
17740
17741 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
17742
17743         * locales.c: include string.h for memxxx prototypes
17744
17745 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
17748         constructor when accessing literal fields.
17749
17750 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17753
17754         * reflection.c (assembly_add_resource_manifest): New function to fill
17755         the MANIFESTRESOURCE table.
17756
17757         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
17758
17759         * reflection.h: Update to changes in class layout.
17760
17761         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
17762         Reenable call to mono_runtime_is_shutting_down ().
17763
17764         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
17765         determine if the runtime is shutting down.
17766
17767 2003-12-16  Jackson Harper <jackson@ximian.com>
17768
17769         * icall.c: comment out call to mono_runtime_is_shutting_down to
17770         fix build.
17771         
17772 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
17775         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
17776
17777 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
17778
17779         * reflection.c: move definition of swap_with_size
17780         to before its first call
17781
17782 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
17783
17784         * appdomain.c (mono_runtime_is_shutting_down): New public function.
17785
17786         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
17787         icall.
17788
17789         * object.c: Fix warnings.
17790
17791         * icall.c (ves_icall_Type_Get...): Only consider inherited static
17792         members if FlattenHierarchy is set.
17793
17794         * reflection.c (mono_image_add_decl_security): New function to emit
17795         declarative security.
17796
17797         * reflection.h reflection.c: Add support for declarative security.
17798
17799         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17800         
17801 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
17802
17803         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17804         
17805         * appdomain.c verify.c: Moved corlib version checking into its own
17806         function in appdomain.c since it needs to create vtables etc.
17807
17808 2003-12-13  Patrik Torstensson <p@rxc.se>
17809
17810         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
17811         instead of unwrapped server.
17812
17813 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
17814
17815         * verify.c (check_corlib): Fix field index.
17816
17817 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
17818
17819         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
17820         GetGacPath icall.
17821
17822 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
17823
17824         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
17825         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
17826         cope with sizeof(size_t) != sizeof(guint32).
17827
17828 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17829
17830         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
17831         in case of failure.
17832
17833 2003-12-10  Mark Crichton <crichton@gimp.org>
17834
17835         * icall.c: removed the GetNonZeroBytes.  We now handle this case
17836         in managed code.
17837
17838         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
17839
17840 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
17841
17842         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
17843         marked as deleted.
17844
17845 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
17846
17847         * verify.c (check_corlib): Handle the case when the version field is 
17848         initialized by a static constructor.
17849
17850 2003-12-08  Patrik Torstensson  <p@rxc.se>
17851
17852     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
17853
17854 2003-12-08  Martin Baulig  <martin@ximian.com>
17855
17856         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
17857         a MonoReflectionGenericParameter, also take the parameter index
17858         and name as arguments.
17859         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
17860         (ves_icall_MonoGenericParam_initialize): New interncall.
17861         (ves_icall_Type_make_byref_type): New interncall.
17862
17863         * reflection.h (MonoReflectionGenericParam): Derive from
17864         MonoReflectionType, not just from MonoObject.  Added `refobj' and
17865         `index' fields.
17866
17867         * reflection.c (mono_reflection_define_generic_parameter): Create
17868         and return a new MonoReflectionGenericParam; don't initialize the
17869         constraints here.
17870         (mono_reflection_initialize_generic_parameter): New public method;
17871         initializes the constraints and creates the `param->pklass'.
17872
17873 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * reflection.h reflection.c: Use the new fields 'num_types', 
17876         'num_fields' and 'num_methods' to track the number of types etc.
17877
17878         * verify.c (check_corlib): Check corlib version number.
17879
17880 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
17883         function works on all methods.
17884
17885 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
17886
17887         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
17888         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
17889         the custom_type_info flag of the transparent proxy.
17890         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
17891         objects that supports IRemotingTypeInfo.
17892         * object.h: Added custom_type_info field in transparent proxy.
17893
17894 2003-12-06  Martin Baulig  <martin@ximian.com>
17895
17896         * class.c (mono_class_create_from_generic): Removed.
17897         (mono_class_from_generic): Check `ginst->klass' before doing
17898         anything else.  This is important to fully support "recursive"
17899         generic types.
17900
17901         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
17902         empty `generic_inst->klass' before doing anything else.
17903
17904 2003-12-06  Dick Porter  <dick@ximian.com>
17905
17906         * verify.c: 
17907         * object.h:
17908         * icall.c:
17909         * locales.c: Use C structs to access class fields.  Don't do a
17910         conversion between MonoString and UChar because both are
17911         platform-endian UTF-16.  Compare now takes startindex and count
17912         parameters.  Add a char overload for IndexOf.  Speed up the
17913         invariant string IndexOf.
17914
17915 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * Makefile.am (monosn_LDADD): Fix parallel build.
17918
17919 2003-12-04  Martin Baulig  <martin@ximian.com>
17920
17921         * icall.c
17922         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
17923         (ves_icall_Type_make_array_type): New interncall.       
17924
17925 2003-12-04  Martin Baulig  <martin@ximian.com>
17926
17927         * locales.c: also change it in the !HAVE_ICU case.
17928
17929 2003-12-04  Dick Porter  <dick@ximian.com>
17930
17931         * icall.c:
17932         * locales.c: construct_compareinfo is now in CompareInfo, not
17933         CultureInfo.
17934
17935 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
17936
17937         * image.c (mono_image_load_file_for_image): Cache loaded images in the
17938         image->files array.
17939
17940         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
17941         table as well.
17942
17943         * assembly.c (mono_assembly_load_references): Only load references
17944         once.
17945
17946         * class.c (mono_class_from_name): Avoid linear search of the 
17947         EXPORTEDTYPE table.
17948
17949         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
17950
17951 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
17952
17953         * image.h (MonoImage): Add 'field_cache' field.
17954
17955         * loader.c (mono_field_from_token): Cache field lookups.
17956         
17957         * reflection.c (mono_module_get_object): Fix name property.
17958
17959         * icall.c (ves_icall_get_enum_info): Update after changes to 
17960         mono_metadata_get_constant_index ().
17961
17962         * icall.c: Get rid of get_type_info icall, use a separate icall for
17963         each type property to avoid needless memory allocations. Fixes #51514.
17964
17965         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
17966         to avoid needless binary searches.
17967
17968         * class.c (class_compute_field_layout): Move the initialization of
17969         field->def_value to mono_class_vtable ().
17970
17971         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
17972         non-corlib types.
17973
17974         * object.c (mono_object_allocate): Make it inline.
17975
17976         * object.c (mono_object_allocate_spec): Make it inline.
17977         
17978 2003-12-02  Dick Porter  <dick@ximian.com>
17979
17980         * locales.c (create_NumberFormat): NumberFormatInfo construction.
17981         Patch by Mohammad DAMT (mdamt@cdl2000.com).
17982
17983 2003-12-01  Dick Porter  <dick@ximian.com>
17984
17985         * threads.c: Fix signature and call in CreateMutex and
17986         CreateEvent.
17987
17988 2003-12-01  Dick Porter  <dick@ximian.com>
17989
17990         * icall.c: 
17991         * locales.c: Implement string compares and searching
17992
17993         * object.h: Add extra Thread field
17994
17995 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
17996
17997         * reflection.c (fixup_method): Add support for MonoCMethod.
17998
17999 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
18002
18003         * reflection.c (assembly_name_to_aname): Allow extra characters in
18004         assembly names. Fixes #51468.
18005
18006 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18007
18008         * exception.c (mono_exception_from_name_domain): New helper function.
18009
18010         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
18011         exception object in the correct domain.
18012
18013         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
18014         formatting + make a copy a the input data.
18015
18016         * loader.c (mono_get_method_from_token): Methods which contain
18017         native code do not have entries in the ImplMap.
18018
18019         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
18020         Thanks to Gonzalo for spotting this.
18021         
18022         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
18023         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
18024
18025         * assembly.h (mono_assembly_load_from): Split the second part of 
18026         assembly loading into a new public function.
18027
18028         * exception.h (mono_get_exception_bad_image_format): New function.
18029
18030 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
18031
18032         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18033         Enumerate all modules inside a dynamic assembly. Fixes #51293.
18034         
18035         * icall.c: Add new icall for creating dynamic methods.
18036
18037         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
18038
18039         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
18040
18041         * reflection.c (mono_reflection_create_dynamic_method): New icall to
18042         create a dynamic method.
18043
18044         * reflection.c (resolve_object): New helper function.
18045
18046         * reflection.c: Generalize ReflectionMethodBuilder and the functions
18047         which manipulate it so they can also work on dynamic methods.
18048
18049         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
18050         creating the MonoReflectionMethodAux structure if it is not needed.
18051         
18052         * reflection.h verify.c: Update after changes to object layout.
18053
18054         * reflection.c (method_builder_encode_signature): Fix compilation on
18055         gcc 2.95.x.
18056
18057 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
18058
18059         * appdomain.h: Added support for context static fields. Added static_data
18060           field to MonoAppContext and renamed thread_static_fields to a more
18061           generic special_static_fields in MonoAppDomain, since it can now contain
18062           context static fields.
18063         * domain.c: Updated hashtable name.
18064         * object.c: Replaced field_is_thread_static() for a more generic
18065           field_is_special_static() which also checks for context static attribute.
18066           In mono_class_vtable(), added support for static context fields.
18067         * threads.c: Changed methods that manage thread static fields to more
18068           generic methods so they can be reused both for thread and context static
18069           data.
18070         * threads.h: Declared some new methods.
18071
18072 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
18073
18074         * reflection.h: Update after changes to the managed types.
18075
18076         * reflection.c (encode_custom_modifiers): New helper function.
18077
18078         * reflection.c (method_encode_signature): Emit custom modifiers.
18079
18080         * reflection.c (field_encode_signature): Emit custom modifiers.
18081
18082 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18083
18084         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
18085
18086         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
18087         implementation.
18088
18089         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
18090         icall.
18091
18092         * object.c (mono_field_get_value_object): New function.
18093
18094         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
18095         specific.
18096
18097 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
18100         return a preallocated out-of-memory exception instance.
18101
18102         * object.c (out_of_memory): Use the new function.
18103
18104         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
18105         flag is before the custom modifiers. Fixes #49802.
18106
18107 2003-11-16  Martin Baulig  <martin@ximian.com>
18108
18109         * class.c (mono_class_is_open_constructed_type): Implemented the
18110         MONO_TYPE_GENERICINST case.
18111
18112 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18113
18114         * assembly.c (mono_assembly_fill_assembly_name): New function to
18115         fill out the MonoAssemblyName structure.
18116         (mono_assembly_open): Use the new function.
18117
18118         * icall.c (fill_reflection_assembly_name): New helper function.
18119
18120         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
18121         new function.
18122
18123         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
18124
18125 2003-11-15  Martin Baulig  <martin@ximian.com>
18126
18127         * class.c (mono_class_is_open_constructed_type): New public
18128         function; checks whether a type is an open constructed type,
18129         ie. whether it still contains type parameters.
18130         (mono_class_inflate_generic_type): If we're a type parameter and
18131         the inflated type is also a MONO_TYPE_(M)VAR, return the original
18132         type.
18133
18134         * class.h (MonoGenericInst): Added `guint32 is_open'.
18135
18136         * loader.c (method_from_methodspec): Check whether we're an open
18137         or closed constructed type and set `ginst->is_open'.
18138
18139         * reflection.c (mono_reflection_bind_generic_parameters): Check
18140         whether we're an open or closed constructed type and set
18141         `ginst->is_open'.
18142         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
18143         from open constructed types.
18144
18145 2003-11-15  Martin Baulig  <martin@ximian.com>
18146
18147         * reflection.c (mono_reflection_bind_generic_parameters): If we're
18148         a generic instance (instead of a generic type declaration) with
18149         unbound generic parameters, bind them to our actual types.
18150
18151 2003-11-14  Martin Baulig  <martin@ximian.com>
18152
18153         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
18154
18155         * reflection.c (mono_reflection_bind_generic_parameters): If we're
18156         an interface type, populate `res->interfaces' with instantiated
18157         versions of all the interfaces we inherit.
18158
18159 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
18160
18161         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
18162         when MONO_PATH is set but doesn't contain the install dir.
18163
18164 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18165
18166         * icall.c:
18167         (ves_icall_Type_GetInterfaces): don't return an interface twice when
18168         it's also implemented in base classes. Fixes bug #50927.
18169
18170 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
18171
18172         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
18173         if this method is called from a finalizer. Fixes #50913.
18174
18175 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
18176
18177         * threads.c: Implement VolatileRead/VolatileWrite
18178
18179         * icall.c: Add new icalls for VolatileRead/VolatileWrite
18180
18181 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
18184         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
18185         2.95.3.
18186
18187         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
18188         from Peter Ross (pro@missioncriticalit.com).
18189         
18190 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
18191
18192         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
18193
18194 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18195
18196         * assembly.c (mono_assembly_load_references): Disable check because it
18197         triggers on older corlibs which lots of people have.
18198
18199 2003-11-12  Jackson Harper  <jackson@ximian.com>
18200
18201         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
18202         load corlib.dll if mscorlib.dll is not found.
18203         * assembly.h: Remove corlib name define.
18204         * class.c:
18205         * domain.c:
18206         * image.c: Change corlib name to mscorlib.
18207         
18208 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18209
18210         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
18211
18212 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
18213
18214         * appdomain.h: Added loader_optimization here to sync with the C#
18215         code, and add disallow_binding_redirects field.
18216
18217 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
18218
18219         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
18220
18221         * reflection.c (mono_image_build_metadata): Fix crash on modules
18222         with no types.
18223
18224         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
18225
18226         * icall.c (ves_icall_get_method_info): Return callingConvention as
18227         well.
18228
18229         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
18230         namespaces from the EXPORTEDTYPE table as well.
18231
18232         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
18233         from all modules inside the assembly.
18234         
18235 2003-11-11  Martin Baulig  <martin@ximian.com>
18236
18237         * reflection.c (mono_reflection_bind_generic_parameters): Make
18238         this work for interfaces.
18239
18240 2003-11-11  Martin Baulig  <martin@ximian.com>
18241
18242         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
18243
18244 2003-11-11  Martin Baulig  <martin@ximian.com>
18245
18246         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
18247         "MonoInflatedMethod" and "MonoInflatedCtor".
18248
18249 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
18250
18251         * reflection.c (resolution_scope_from_image): Use the assembly table
18252         from the manifest module, since other modules don't have it.
18253
18254         * debug-helpers.c (mono_type_full_name): New helper function.
18255
18256         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
18257
18258         * image.c (mono_image_load_file_for_image): New public function which
18259         is a replacement for the load_file_for_image in class.c.
18260
18261         * assembly.c (mono_assembly_load_module): A wrapper for the function
18262         above which does assembly association and reference loading too.
18263
18264         * class.c (mono_class_from_name): Call mono_assembly_load_module.
18265
18266 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18267
18268         * appdomain.c: not all of the attributes for the full assembly name
18269         are required and the order doesn't matter. Fixes bug #50787.
18270
18271 2003-11-10  Dick Porter  <dick@ximian.com>
18272
18273         * locales.c: Use platform-endian UTF16
18274
18275 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
18276
18277         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
18278         
18279 2003-11-10  Martin Baulig  <martin@ximian.com>
18280
18281         * metadata.c
18282         (mono_metadata_load_generic_params): Make this actually work.
18283
18284         * reflection.c (mono_reflection_bind_generic_parameters): If our
18285         parent is a generic instance, pass all the `types' to it, no
18286         matter whether it has the same number of type parameters or not.
18287
18288 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
18289
18290         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
18291
18292         * assembly.c (mono_assembly_load_references): Move the image<->assembly
18293         assignment code to this function so it gets called recursively for all
18294         modules.
18295
18296         * image.c (load_modules): Remove the assembly assignment since it is
18297         now done by mono_assembly_load_references.
18298         
18299         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18300         Add 'module' argument.
18301         (mono_module_get_types): New helper function.
18302         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
18303
18304 2003-11-08  Martin Baulig  <martin@ximian.com>
18305
18306         * class.c (mono_class_inflate_generic_method): Interface method
18307         don't have a header.
18308
18309         * reflection.c (mono_image_get_methodspec_token): Take an
18310         additional `MonoGenericInst *' argument instead of reading it from
18311         the header; this is necessary to support interfaces.
18312         (mono_image_create_token): Pass the `MonoGenericInst *' from the
18313         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
18314         (inflated_method_get_object): Take an additional `MonoGenericInst *'
18315         argument.
18316
18317         * reflection.h (MonoReflectionInflatedMethod): Added
18318         `MonoGenericInst *ginst'.
18319
18320 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
18321
18322         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
18323
18324 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
18325
18326         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
18327
18328 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18329
18330         * reflection.c 
18331         (reflection_methodbuilder_from_method_builder):
18332         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
18333         initialize a ReflectionMethodBuilder structure.
18334         (mono_image_get_methodbuilder_token):
18335         (mono_image_get_ctorbuilder_token): New functions to emit memberref
18336         tokens which point to types in another module inside the same assembly.
18337
18338         * reflection.c: Use the new helper functions.
18339         
18340         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
18341
18342         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
18343         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
18344
18345         * reflection.c (resolution_scope_from_image): Emit a moduleref if
18346         neccesary.
18347
18348         * reflection.c (mono_image_build_metadata): Emit metadata only for the
18349         current module. Emit the manifest only for the main module.
18350
18351         * reflection.c (mono_image_create_token): Add assertion when a 
18352         memberref needs to be created.
18353
18354         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
18355
18356         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
18357         larger buffer for the custom attribute blob. Fixes #50637.
18358         
18359 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18360
18361         * threadpool.c: notify listener on async processing handles after
18362         invoking the async callback. Thanks to Zoltan.
18363
18364 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
18367         avoid code duplication.
18368
18369         * reflection.h (MonoDynamicImage): New type which is currently unused,
18370         but will be used through the ref.emit code in place of 
18371         MonoDynamicAssembly.
18372
18373         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
18374         object layout.
18375
18376         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
18377         a MonoDynamicImage instead of just a MonoImage.
18378         
18379         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
18380         icalls to ModuleBuilder but keep their semantics, so they will work
18381         with moduleb->assemblyb. This will change later.
18382         
18383 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18384
18385         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
18386         object layout.
18387
18388         * reflection.c (mono_image_build_metadata): Avoid creation of a default
18389         main module, since it is now done by the managed code.
18390
18391 2003-11-03  Martin Baulig  <martin@ximian.com>
18392
18393         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
18394         `ginst->klass' here.
18395         (method_encode_methodspec): Don't use the `ginst->generic_method's
18396         klass if it's a generic instance, use `ginst->klass' in this case.
18397
18398 2003-11-03  Martin Baulig  <martin@ximian.com>
18399
18400         * reflection.c (mono_image_get_generic_method_param_info):
18401         Removed, use mono_image_get_generic_param_info() instead.
18402         (mono_image_get_type_info): Write the GenericParam table before
18403         the Method table.  This is neccessary because in the GenericParam
18404         table, type parameters of the class (ie. '!0' etc.) must come
18405         before the ones from its generic methods (ie. '!!0' etc).
18406
18407 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18408
18409         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
18410
18411 2003-11-02  Martin Baulig  <martin@ximian.com>
18412
18413         * reflection.c (create_generic_typespec): Take a
18414         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
18415         the generic parameters from it.
18416
18417 2003-11-02  Martin Baulig  <martin@ximian.com>
18418
18419         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
18420         instead of a `MonoClassField *' since we just need the type.
18421         (create_generic_typespec): New static function.  Creates a
18422         TypeSpec token for a generic type declaration.
18423         (mono_image_get_generic_field_token): New static function.
18424         (mono_image_create_token): If we're a FieldBuilder in a generic
18425         type declaration, call mono_image_get_generic_field_token() to get
18426         the token.
18427
18428 2003-11-02  Martin Baulig  <martin@ximian.com>
18429
18430         * reflection.h
18431         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
18432         `MonoReflectionGenericInst *declaring_type' and
18433         `MonoReflectionGenericInst *reflected_type' fields.
18434
18435         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
18436         `MonoReflectionGenericInst *declaring_type' and a
18437         `MonoReflectionGenericInst *reflected_type' argument instead of a
18438         single `MonoReflectionGenericInst *type' one.  Set
18439         `res->declaring_type' and `res->reflected_type' from them.
18440         (mono_reflection_inflate_field): Likewise.      
18441
18442 2003-11-02  Martin Baulig  <martin@ximian.com>
18443
18444         * class.c (mono_class_setup_vtable): Don't store generic methods
18445         in the vtable.  
18446
18447 2003-11-02  Martin Baulig  <martin@ximian.com>
18448
18449         * reflection.h (MonoReflectionGenericInst): Added
18450         `MonoReflectionType *declaring_type'.
18451
18452         * reflection.c (mono_reflection_bind_generic_parameters): Use
18453         `if (tb->parent)' instead of `klass->parent'.
18454
18455 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
18456
18457         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
18458         with an empty ASSEMBLY table.
18459
18460         * reflection.c (mono_image_build_metadata): Avoid using the same loop
18461         variable in the inner and outer loops.
18462
18463 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18464
18465         * metadata.h (mono_metadata_make_token): Put parentheses around macro
18466         argument.
18467
18468         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
18469         
18470         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
18471         icalls. Instead, do everything in managed code. This is needed since
18472         it is hard to restore the original domain etc. in unmanaged code in the
18473         presence of undeniable exceptions.
18474
18475         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
18476         New icalls to push and pop appdomain refs.
18477
18478 2003-10-31  Martin Baulig  <martin@ximian.com>
18479
18480         * class.c (inflate_generic_type): Renamed to
18481         mono_class_inflate_generic_type() and made it public.
18482
18483         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
18484         New interncall.
18485
18486         * loader.c (mono_field_from_memberref): Also set the retklass for
18487         typespecs.
18488
18489         * fielder.c (mono_image_get_inflated_field_token): New static
18490         method; creates a metadata token for an inflated field.
18491         (mono_image_create_token, fixup_method): Added support for
18492         "MonoInflatedField".
18493         (fieldbuilder_to_mono_class_field): New static function.
18494         (mono_reflection_inflate_field): New public function.
18495
18496         * reflection.h
18497         (MonoReflectionGenericInst): Added `MonoArray *fields'.
18498         (MonoReflectionInflatedField): New typedef.     
18499
18500 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
18501
18502         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
18503         for Solaris and other platforms without s6_addr16
18504
18505 2003-10-30  Martin Baulig  <martin@ximian.com>
18506
18507         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
18508         argument instead of two.
18509         (mono_class_inflate_generic_signature): Likewise.
18510         (inflate_generic_header): Likewise.
18511         (mono_class_inflate_generic_method): Likewise.  In addition, if
18512         `ginst->klass' is set, it becomes the new `method->klass'.
18513
18514         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
18515         field.
18516
18517         * reflection.c (encode_generic_method_sig): Write a 0xa as the
18518         first byte. [FIXME]
18519         (method_encode_methodspec): If we have generic parameters, create
18520         a MethodSpec instead of a MethodRef.
18521         (fixup_method): Added support for "MonoInflatedMethod" and
18522         "MonoInflatedCtor".
18523         (mono_image_create_token): Added support for "MonoInflatedMethod"
18524         and "MonoInflatedCtor".
18525         (inflated_method_get_object): New static function; returns a
18526         managed "System.Reflection.MonoInflatedMethod" object.
18527         (mono_reflection_bind_generic_method_parameters): Return a
18528         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
18529         (mono_reflection_inflate_method_or_ctor): Likewise.
18530         (mono_image_get_generic_method_param_info): Initialize unused
18531         fields to zero.
18532         (mono_image_get_generic_param_info): Likewise.
18533
18534         * reflection.h (MonoReflectionInflatedMethod): New public
18535         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
18536         "S.R.MonoInflatedCtor" classes.
18537
18538         * loader.c (method_from_memberref): If we're a TypeSpec and it
18539         resolves to a generic instance, inflate the method.
18540
18541 2003-10-28  Dick Porter  <dick@ximian.com>
18542
18543         * object.c (mono_runtime_run_main): Convert command-line arguments
18544         into utf8, falling back to the user's locale encoding to do so.
18545
18546 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18547
18548         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
18549         at this time.
18550
18551         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
18552
18553         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
18554         up icalls at method definition time. Partially fixes #33569.
18555
18556 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
18559         marshalling of arrays. Fixes #50116.
18560
18561         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
18562
18563         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
18564         points to a vtable in the dying appdomain.
18565
18566         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
18567         listeners into unmanaged code inside the lock.
18568
18569         * object.c (mono_class_vtable): Turn off typed allocation in non-root
18570         domains and add some comments.
18571
18572 2003-10-25  Martin Baulig  <martin@ximian.com>
18573
18574         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
18575
18576         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
18577
18578         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
18579         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
18580         currently parsing.  Create the generic class and store it in
18581         `generic_inst->klass' before parsing the type arguments.  This is
18582         required to support "recursive" definitions; see mcs/tests/gen-23.cs
18583         for an example.
18584         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
18585         to support recursive typespec entries.
18586
18587         * class.c (mono_class_setup_parent): If our parent is a generic
18588         instance, we may get called before it has its name set.
18589         (mono_class_from_generic): Splitted into
18590         mono_class_create_from_generic() and mono_class_initialize_generic().
18591
18592 2003-10-25  Martin Baulig  <martin@ximian.com>
18593
18594         * icall.c (ves_icall_Type_BindGenericParameters): Return a
18595         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
18596         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
18597         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
18598
18599         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
18600         (create_typespec): Likewise.
18601         (mono_reflection_bind_generic_parameters): Return a
18602         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
18603         (mono_reflection_inflate_method_or_ctor): New public function.
18604
18605         * reflection.h (MonoReflectionGenericInst): New typedef.        
18606
18607 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18608
18609         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
18610         inside the domain lock. Fixes #49993.
18611         
18612         * object.c (mono_class_vtable): When typed allocation is used, 
18613         allocate vtables in the GC heap instead of in the mempool, since the
18614         vtables contain GC descriptors which are used by the collector even
18615         after the domain owning the mempool is unloaded.
18616
18617         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
18618
18619         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
18620         reflect what it does. Also invalidate mempools instead of freeing
18621         them if a define is set.
18622
18623         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
18624         of the appdomain.
18625         
18626         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
18627         hold the finalizable objects in this domain.
18628
18629         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
18630         appdomain.
18631
18632         * appdomain.c (mono_domain_set): New function to set the current
18633         appdomain, but only if it is not being unloaded.
18634
18635         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
18636         appdomain which is being unloaded.
18637         
18638         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
18639         unloading of the root appdomain.
18640
18641         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
18642         icall to execute a method in another appdomain. Intended as a 
18643         replacement for InternalSetDomain, which can confuse the code 
18644         generation in the JIT.
18645
18646         * appdomain.c (mono_domain_is_unloading): New function to determine
18647         whenever an appdomain is unloading.
18648
18649         * appdomain.c (mono_domain_unload): New function to correctly unload
18650         an appdomain.
18651
18652         * assembly.c (mono_assembly_load_references): Check that an assembly
18653         does not references itself.
18654
18655         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
18656         domain manually, it asks the finalizer thread to do it, then waits for
18657         the result. Also added a timeout.
18658
18659         * icall.c: Register the new icalls.
18660
18661         * threads.h threads.c: Export the mono_gc_stop_world and 
18662         mono_gc_start_world functions.
18663         
18664         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
18665         function to fill out the mempool with 0x2a.
18666
18667 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
18668
18669         * reflection.h (MonoReflectionMethodAux): New structure to store
18670         information which is rarely used, thus is not in the MonoMethod
18671         structure.
18672
18673         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
18674         store the aux info.
18675
18676         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
18677         and marshalling info into the aux structure.
18678
18679         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
18680         from the aux structure.
18681
18682         * loader.c (mono_method_get_param_names): Retrieve the param names from
18683         the aux structure.
18684         
18685 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * exception.h exception.c: Add AppDomainUnloadedException && fix 
18688         warning.
18689
18690 2003-10-21  Dick Porter  <dick@ximian.com>
18691
18692         * socket-io.c
18693         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
18694         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
18695
18696 2003-10-21  Martin Baulig  <martin@ximian.com>
18697
18698         * reflection.c (mono_reflection_bind_generic_parameters):
18699         `klass->parent' is NULL for interfaces.
18700
18701 2003-10-21  Martin Baulig  <martin@ximian.com>
18702
18703         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18704
18705 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
18706
18707         * exception.c (mono_exception_from_name_msg): New helper function for
18708         creating exceptions and initializing their message field.
18709
18710         * exception.c: Simplify functions using the new helper.
18711
18712         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
18713         New function.
18714
18715         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
18716         mono_raise_exception, since otherwise gcc doesn't generate the function
18717         epilog for raise_exception, confusing the stack unwinding in the JIT.
18718         Fixes #45043.
18719
18720         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
18721         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
18722         Fixes #49499.
18723
18724 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18725
18726         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
18727         utf8.
18728
18729 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
18730
18731         * icall.c: Removed GetUninitializedObject method because
18732           AllocateUninitializedClassInstance does the same.
18733
18734 2003-10-18  Martin Baulig  <martin@ximian.com>
18735
18736         * class.c (inflate_generic_signature): Renamed to
18737         mono_class_inflate_generic_signature() and made it public.
18738         (my_mono_class_from_generic_parameter): New static function; if we
18739         don't already have the generic parameter's MonoClass, create a
18740         very simple one which is just used internally in the runtime and
18741         not passed back to managed code.
18742
18743         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
18744
18745         * metadata.h (MonoMethodSignature): Moved the
18746         `MonoGenericParam *gen_params' to the MonoMethodHeader.
18747         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
18748
18749         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
18750         ves_icall_MonoMethod_GetGenericArguments(); this is now an
18751         interncall on the MonoMethod class, not on MethodInfo.
18752         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
18753         calling mono_reflection_bind_generic_method_parameters() directly.
18754
18755         * loader.c (mono_method_get_signature): If this is a MethodSpec;
18756         return the already computed `method->signature'.
18757         (method_from_methodspec): New static function to load a method
18758         from a MethodSpec entry.
18759         (mono_get_method_from_token): Call the new method_from_methodspec()
18760         for MethodSpec tokens.  
18761         (mono_get_method_from_token): If we're a generic method, load the
18762         type parameters.
18763
18764         * reflection.c (mono_image_get_memberref_token): Allow
18765         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
18766         table.
18767         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
18768         (mono_image_create_token): First check whether it's a generic
18769         method (so we'd need to create a MethodSpec), then do the other
18770         two alternatives.
18771         (mono_reflection_bind_generic_method_parameters): Return a
18772         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
18773         called directly from the interncall.
18774
18775 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * reflection.c (load_public_key): Move loading of the public key
18778         into managed code.
18779
18780         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
18781
18782         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
18783         fields.
18784
18785         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
18786         culture, hash_alg and public_key. Fixes #49555.
18787
18788 2003-10-17  Martin Baulig  <martin@ximian.com>
18789
18790         * class.h (MonoGenericInst): Moved this declaration here and added
18791         `MonoMethod *generic_method'.
18792
18793         * icall.c
18794         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
18795         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
18796
18797         * metadata.c (mono_metadata_type_equal): Two types of
18798         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
18799         index; ie. don't compare the address of the `MonoGenericParam'
18800         structure.
18801         (mono_metadata_load_generic_params): Removed the `MonoMethod
18802         *method' argument.
18803
18804         * metadata.h (MonoGenericInst): Moved declaration to class.h.
18805         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
18806
18807         * reflection.c (method_encode_signature): Encode the number of
18808         generic parameters.
18809         (encode_generic_method_sig): New static function.
18810         (method_encode_methodspec): New static function; creates an entry
18811         in the MethodSpec table for a generic method.
18812         (mono_image_get_methodspec_token): New static function.
18813         (mono_image_create_token): Call mono_image_get_methodspec_token()
18814         for generic methods.
18815         (mono_reflection_bind_generic_method_parameters): New public
18816         function.  Instantiates a generic method.
18817
18818 2003-10-16  Martin Baulig  <martin@ximian.com>
18819
18820         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
18821         *gen_params' here from MonoMethodHeader.
18822
18823         * metadata.c (mono_metadata_parse_method_signature): If we have
18824         generic parameters, initialize `method->gen_params' and then set
18825         the correct `type->data.generic_param' in all the parameters.
18826
18827 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * threads.c (mono_threads_get_default_stacksize): New function to 
18830         return the default stacksize.
18831
18832         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
18833         termination of the finalizer thread, since the previous method had
18834         race conditions. Fixes #49628.
18835
18836         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
18837         as for the other managed threads.
18838
18839 2003-10-16  Martin Baulig  <martin@ximian.com>
18840
18841         * class.c (inflate_generic_signature): Copy `generic_param_count'
18842         and `gen_params'.
18843
18844         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
18845         New interncall.
18846
18847         * metadata.c (mono_metadata_parse_method_signature): Actually set
18848         the `method->generic_param_count' here.
18849         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
18850
18851 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18852
18853         * object.h: Add a new field to TypedRef to simplify the implementation
18854         of the REFANY opcodes in the JIT.
18855
18856         * icall.c: Make use of the new field.
18857
18858         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
18859         dynamically.
18860
18861 2003-10-15  Martin Baulig  <martin@ximian.com>
18862
18863         * class.c (mono_class_from_gen_param): Renamed to
18864         mono_class_from_generic_parameter() and moved most of the
18865         functionality from mono_reflection_define_generic_parameter()
18866         here; ie. we create a "real" class here.
18867         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
18868         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
18869         previously been called.
18870
18871         * class.h (MonoGenericParam): Moved the declaration of this struct
18872         here from metadata.h and added `MonoMethod *method'.
18873
18874         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
18875         interncall.
18876
18877         * loader.c (mono_get_method_from_token): If we have any generic
18878         parameters, call mono_metadata_load_generic_params() to read them
18879         from the MONO_TABLE_GENERICPAR.
18880
18881         * metadata.c (mono_metadata_load_generic_params): Added
18882         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
18883
18884         * metadata.h (MonoMethodSignature): Replaced
18885         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
18886         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
18887
18888         * reflection.c (mono_reflection_define_generic_parameter): Moved
18889         most of the functionality into the new
18890         mono_class_from_generic_parameter(); set the `method' field if
18891         we're a method parameter.       
18892
18893 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
18894
18895         * marshal.c (emit_struct_conv): if native size is 0
18896         emit no code.
18897
18898 2003-10-14  Martin Baulig  <martin@ximian.com>
18899
18900         * icall.c: The generics API has changed in the spec since it was
18901         added to System.Type; these modifications make it match the spec
18902         again.
18903         (ves_icall_Type_GetGenericParameters): Renamed to
18904         `ves_icall_Type_GetGenericArguments'.
18905         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
18906         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
18907         `ves_icall_MonoType_get_HasGenericArguments'.
18908         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
18909         `ves_icall_MonoType_get_IsGenericParameter'.
18910         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
18911         this is no interncall anymore.
18912         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
18913         `ves_icall_TypeBuilder_get_IsGenericParameter'.
18914
18915 2003-10-14  Martin Baulig  <martin@ximian.com>
18916
18917         * reflection.c (mono_reflection_bind_generic_parameters): Also
18918         inflate generic methods if we're reading the class from IL.
18919
18920 2003-10-13  Martin Baulig  <martin@ximian.com>
18921
18922         * reflection.c (mono_reflection_define_generic_parameter): This
18923         method isn't called directly from the icall anymore; take a
18924         `MonoReflectionAssemblyBuilder *' so we can use this for type and
18925         method generic parameters.
18926         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
18927         (method_builder_encode_signature): Encode generic parameters.
18928         (mono_image_get_method_info): Write generic params to the
18929         MONO_TABLE_GENERICPARAM table.
18930
18931         * reflection.h (MonoReflectionMethodBuilder): Added
18932         `MonoArray *generic_params'.
18933
18934         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
18935
18936         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
18937         wrapper for mono_reflection_define_generic_parameter().
18938         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
18939
18940 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * marshal.h: Add missing function to fix build.
18943
18944         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
18945         the SetLastError pinvoke attribute.
18946
18947         * marshal.c (mono_marshal_set_last_error): New helper function called
18948         by the generated code.
18949         
18950         * marshal.c (mono_mb_emit_branch): New helper function.
18951
18952         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
18953
18954         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
18955         classes as parameters and return values of delegates. Fixes #29256. 
18956
18957 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
18958
18959         * locales.c: use gint32 in non HAVE_ICU case
18960
18961 2003-10-11  Martin Baulig  <martin@ximian.com>
18962
18963         * mono-debug.c (mono_debug_add_method): Added a workaround for
18964         bug #48591.
18965
18966 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
18969         delegates passed to native code must use the STDCALL calling 
18970         convention. Fixes #35987.
18971
18972 2003-10-10  Martin Baulig  <martin@ximian.com>
18973
18974         * class.c (inflate_generic_type): If we're inflating for a generic
18975         type instance (and not for a generic method), return
18976         MONO_TYPE_MVAR unchanged.
18977
18978 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18979
18980         * string-icalls.c: Join ignores null strings in the source array.
18981         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
18982         * threads.c: GetAvailableTheads is slightly more accurate.
18983
18984 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
18985
18986         * threads.h threads.c : add mono_threads_set_default_stacksize
18987         and pass default to CreateThread calls.
18988
18989 2003-10-09  Dick Porter  <dick@ximian.com>
18990
18991         * icall.c:
18992         * locales.h:
18993         * locales.c: Internal calls for constructing CultureInfo and
18994         related objects from libicu (if its available.)
18995
18996 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18997
18998         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
18999
19000 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19001
19002         * threadpool.c: added an argument to async_invoke_thread that is the
19003         item to process, pass the MonoAsyncResult to the thread start function
19004         when creating a new thread. This way we don't need to acquire any lock
19005         when we're creating a new thread. Readded a semaphore for faster
19006         response times (instead of that Sleep i added).
19007
19008 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
19009
19010         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
19011         get daylight change dates better on Windows, fix handling
19012         of platforms without tm_gmtoff.
19013
19014 2003-10-06  Martin Baulig  <martin@ximian.com>
19015
19016         * class.c (inflate_generic_method): Renamed to
19017         mono_class_inflate_generic_method() and made public.
19018         (mono_class_init): Don't inflate the generic methods here.
19019         (mono_class_from_generic): Added `gboolean inflate_methods'
19020         argument.  Inflate the methods here.
19021
19022         * loader.c (mono_method_get_param_names): Ignore instances of
19023         generic types for the moment.
19024
19025         * reflection.c (fixup_method): Added support for inflated methods.
19026         (mono_image_create_token): Use mono_image_get_methodref_token()
19027         for inflated methods.
19028         (mono_custom_attrs_from_param): Ignore instances of generic types
19029         for the moment.
19030         (mono_reflection_bind_generic_parameters): New public function.
19031         Moved all the functionality from
19032         ves_icall_Type_BindGenericParameters() here and added support for
19033         dynamic types.
19034         (mono_reflection_define_generic_parameter): Initialize
19035         `klass->methods' here.
19036
19037         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
19038         functionality into mono_reflection_define_generic_parameter().
19039         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
19040         TypeBuilder, return that TypeBuilder.
19041
19042 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19043
19044         * appdomain.c: removed mono_delegate_semaphore.
19045
19046         * threadpool.c:
19047         (mono_thread_pool_add): moved hash table creation inside and the thread 
19048         creation outside of the critical region.
19049         (mono_thread_pool_finish): removed obsolete code.
19050         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
19051         continue or exit the thread depending on the queue.
19052
19053 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
19054
19055         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
19056         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
19057         handle more bool marshalling options
19058
19059 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
19062         arrays of structs. Also add a more descriptive error message when
19063         a structure member is marshalled as LPArray.
19064
19065 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19066
19067         * marshal.c (mono_marshal_get_native_wrapper): Add support for
19068         marshalling arrays of complex types. Fixes #29098. Also remove an
19069         usused and incomplete function.
19070
19071 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
19072
19073         * gc.c: report heap_size - free_bytes as total memory allocated
19074         (bug#49362).
19075
19076 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
19079         fix timezone handling problems on Windows.
19080         
19081         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
19082         asserts when the year is outside the range handled by ms the functions.
19083
19084         * class.c (setup_interface_offsets): If the class is an interface,
19085         fill out its interface_offsets slot.
19086
19087 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19088
19089         * threadpool.c: mark threadpool threads as background.
19090
19091 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
19092
19093         * decimal.c - define DECINLINE to nothing if not using GCC
19094
19095 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19096
19097         * assembly.c: More refcount fixes.
19098
19099 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19100
19101         * string-icalls.c: if we're not trimming, return the same string.
19102         When not splitting, don't create a new string.
19103
19104 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19105
19106         * image.c:
19107         (mono_image_open): increment the ref_count inside the critical section.
19108
19109 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
19110
19111         * image.c (mono_image_open): Fix reference counting bug.
19112
19113 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
19114
19115         * marshal.c (mono_marshal_type_size) struct alignment changed for 
19116         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
19117         64bits. Avoid leak in mono_marshal_get_native_wrapper when
19118         mono_lookup_pinvoke_call throws.        
19119
19120 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19121
19122         * reflection.c (mono_reflection_parse_type): Fix #49114.
19123
19124         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
19125         temporary workaround for cygwin header problem.
19126
19127         * object.c (mono_object_isinst): Synchronize this with the code
19128         generated by the JIT for casts.
19129
19130 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * reflection.c (encode_type): Fix #38332.
19133
19134 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19135
19136         * marshal.c (mono_marshal_method_from_wrapper): New function to return
19137         the original method from the wrapper method.
19138
19139 2003-09-25  Martin Baulig  <martin@ximian.com>
19140
19141         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
19142         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
19143         (ves_icall_Type_get_IsGenericInstance): New interncall.
19144
19145 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
19146
19147         * object.c: fix cast warning in big endian code.
19148
19149 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
19150
19151         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
19152         
19153 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19154
19155         * assembly.c: don't call check_env from mono_assembly_load. It's
19156         already done once in mono_assemblies_init and may cause headaches when
19157         multiple threads are loading assemblies.
19158
19159 2003-09-19  Martin Baulig  <martin@ximian.com>
19160
19161         * reflection.c (mono_reflection_define_generic_parameter): Don't
19162         allocate `klass->methods', set `klass->flags' to
19163         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
19164
19165 2003-09-18  Martin Baulig  <martin@ximian.com>
19166
19167         * class.c (mono_class_init): Don't create `class->methods' if it's
19168         already initialized.
19169
19170         * metadata.c (mono_metadata_load_generic_params): Make this
19171         actually work.
19172
19173         * reflection.c (mono_reflection_define_generic_parameter): Set
19174         parent class and interfaces from the constraints.
19175
19176         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
19177         to keep this struct in sync with the declaration in TypeBuilder.cs.
19178
19179 2003-09-17  Martin Baulig  <martin@ximian.com>
19180
19181         * metadata.h (MonoType): Replaced the data's `int type_param'
19182         field with `MonoGenericParam *generic_param'.
19183         (MonoGenericParam): Added `MonoClass *klass'.
19184
19185         * class.c (mono_class_from_gen_param): Removed the
19186         `MonoImage *image' and `int type_num' arguments.
19187
19188         * metadata.c (mono_metadata_parse_generic_param): New static
19189         method; creates a MonoGenericParam which just contains the index.
19190         (do_mono_metadata_parse_type): Call
19191         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
19192         MONO_TYPE_MVAR.
19193
19194         * reflection.c (mono_image_typedef_or_ref): Generic type
19195         parameters may be in the same assembly, but never use a typedef
19196         for them.
19197         (mono_reflection_define_generic_parameter): We're now creating a
19198         "real" class for the type parameter; it's now safe to call
19199         mono_class_from_mono_type() on the class'es type, it'll do the
19200         right thing.
19201
19202 2003-09-16  Martin Baulig  <martin@ximian.com>
19203
19204         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
19205         `symfile->range_entry_size' and `symfile->class_entry_size' here;
19206         the `symfile' data structure must be fully initialized before it
19207         gets added to the table.
19208
19209 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19210
19211         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
19212
19213         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
19214         class init trampolines.
19215
19216 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19217
19218         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
19219         to the built-in profiler to turn off time and allocation profiling
19220         respectively.
19221
19222 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
19225         g_direct_equal.
19226
19227         * debug-helpers.c (mono_method_full_name): Print the wrapper type
19228         in human readable form.
19229
19230 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19231
19232         * reflection.c icall.c: Fixed warnings.
19233
19234         * image.c (load_class_names): Use a temporary hash table to hold the
19235         namespaces in order to avoid doing many string comparisons.
19236
19237         * image.h: Fix typo.
19238
19239         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
19240         Pass NULL instead of g_direct_equal to the GHashTable constructor 
19241         since the NULL case is short-circuited inside g_hash_table_lookup, 
19242         leading to better performance.  
19243
19244         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
19245         obtain the first custom attribute for a given index. Depends on the
19246         CustomAttribute table being sorted by the parent field.
19247
19248         * reflection.c (mono_custom_attrs_from_index): Use the new function 
19249         for better performance.
19250
19251 2003-09-07  Martin Baulig  <martin@ximian.com>
19252
19253         * class.c (mono_class_init): If we're a generic instance, inflate
19254         all our methods instead of loading them from the image.
19255         (mono_class_from_generic): Set `class->methods = gklass->methods'.
19256
19257 2003-09-07  Martin Baulig  <martin@ximian.com>
19258
19259         * mono-debug-debugger.c: Added support for constructors.
19260
19261 2003-09-06  Martin Baulig  <martin@ximian.com>
19262
19263         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
19264         New interncall.
19265
19266         * reflection.c (mono_reflection_setup_generic_class): Call
19267         ensure_runtime_vtable() to create the vtable.
19268
19269 2003-09-05  Martin Baulig  <martin@ximian.com>
19270
19271         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
19272         MONO_TYPE_MVAR.
19273
19274 2003-09-04  Martin Baulig  <martin@ximian.com>
19275
19276         * reflection.c (mono_reflection_define_generic_parameter): Generic
19277         parameters start with zero.
19278
19279 2003-09-04  Martin Baulig  <martin@ximian.com>
19280
19281         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19282
19283         * reflection.h (MonoReflectionGenericParam): New typedef.
19284         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
19285         the generic parameters from the managed TypeBuilder.
19286
19287         * reflection.c (mono_reflection_define_generic_parameter): New function.
19288         (mono_reflection_create_runtime_class): Encode generic parameters.
19289         (mono_reflection_setup_generic_class): New function; this is
19290         called after adding adding all generic params to the TypeBuilder.
19291         (encode_type): Added MONO_TYPE_VAR.
19292
19293 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * class.h class.c (mono_class_needs_cctor_run): Moved this method
19296         here from the JIT.
19297
19298         * assembly.h assembly.c: Moved the AOT loading code into an assembly
19299         load hook.
19300
19301 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * reflection.h reflection.c class.h class.c: Delete duplicate 
19304         definition of mono_type_get_name () from reflection.c and export the
19305         one in class.c.
19306
19307         * class.c: Class loading fixes from Bernie Solomon 
19308         (bernard@ugsolutions.com).
19309
19310         * reflection.c: Endianness fixes from Bernie Solomon 
19311         (bernard@ugsolutions.com).
19312         
19313 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19314
19315         * assembly.h assembly.c: Define a file format version for AOT
19316         libraries.
19317         
19318         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
19319
19320         * appdomain.h (MonoJitInfo): New field to determine whenever the
19321         code is domain neutral.
19322         
19323 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
19324
19325         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
19326
19327 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
19330         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
19331         Avoid caching the result since strings must be domain specific. Fixes
19332         #48050.
19333
19334 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19335
19336         * marshal.c (mono_marshal_init): Make this callable multiple times
19337         since it is hard to find a correct place to call it.
19338
19339         * object.c (mono_runtime_class_init): Execute static constructors in
19340         the correct appdomain.
19341
19342         * image.c (build_guid_table): Handle the case when multiple images have
19343         the same GUID.
19344
19345 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19346
19347         * icall.c: added a couple of icalls for System.Web.
19348
19349 2003-08-28  Martin Baulig  <martin@ximian.com>
19350
19351         * icall.c (ves_icall_Type_BindGenericParameters): Use
19352         `klass->generic_inst' instead of `&klass->byval_arg' in the
19353         mono_type_get_object() call.  The returned type must be
19354         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
19355
19356 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19357
19358         * NOTES: New file.
19359
19360         * object.c (mono_class_proxy_vtable): Make it thread safe.
19361
19362         * pedump.c: Fix warning.
19363
19364         * object.c appdomain.h: Get rid of metadata_section. 
19365         It is no longer needed and it was causing deadlocks with domain->lock.
19366
19367         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
19368
19369 2003-08-26  Martin Baulig  <martin@ximian.com>
19370
19371         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
19372
19373 2003-08-26  Martin Baulig  <martin@ximian.com>
19374
19375         * pedump.c (main): Call mono_metadata_init(),
19376         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
19377         and mono_loader_init().
19378
19379 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * loader.h: Add missing include to fix build.
19382
19383         * image.h: mono_image_load_references is no more.
19384
19385         * assembly.c: Reworked assembly loading to make it really thread safe.
19386         After these changes, the assembly returned by mono_assembly_open is
19387         fully initialized, i.e. all its references assemblies are loaded.
19388
19389         * assembly.c (mono_image_load_references): Renamed to 
19390         mono_assembly_load_references, and made private, since clients no
19391         longer need to call it.
19392
19393         * class.c: Removed calls to mono_assembly_load_references, since it was
19394         a source of deadlocks.
19395
19396         * loader.h loader.c class.h class.c: Protect data structures using a 
19397         new lock, the loader lock.
19398
19399         * class.c (mono_class_setup_vtable): Create temporary hash tables and
19400         GPtrArrays only when needed.
19401
19402         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
19403         into empty structures by mcs. Fixes pinvoke7.cs.
19404         
19405         * domain.c (mono_init): Call a new initialization function.
19406
19407         * appdomain.c (mono_runtime_init): Call the new initializer function
19408         of the marshal module.
19409
19410         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
19411         inserted into empty structures by mcs. Fixes pinvoke7.cs.
19412
19413         * marshal.h marshal.c: Added locks around the wrapper caches to make
19414         this module thread safe.
19415
19416         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
19417         this argument. Fixes pinvoke1.exe.
19418
19419 2003-08-25  Lluis Sanchez <lluis@ximian.com>
19420
19421         * object.h: Added call_type field to MonoMethodMessage and the corresponding
19422         enumeration of values. Removed fields to store remote call output values in
19423         MonoAsyncResult. Not needed any more.
19424         * object.c: Initialize call_type and async_result fields in mono_message_init.
19425         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
19426         dispatching the message.
19427         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
19428         async call to finish. To do it use a message with EndInvoke call type.
19429
19430 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * loader.h loader.c (mono_method_hash_marhal_info): New function which
19433         determines whenever a method has marshalling info.
19434
19435 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19436
19437         * assembly.c: fix the build on windows.
19438
19439 2003-08-22 Lluis Sanchez <lluis@ximian.com>
19440
19441         * object.cs: Fixed bug #47785.
19442
19443 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
19444
19445         * string-icalls.c (StringReplace): If their are no occurances of
19446         the old string found return a reference to the supplied
19447         string. This saves some memory and matches MS behavoir.
19448         
19449 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19450
19451         * socket-io.c: fixed compilation for systems that define AF_INET6
19452         and don't define SOL_IP/SOL_IPV6.
19453
19454 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
19457         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
19458
19459         * rawbuffer.c rawbuffer.h: Make this module thread safe.
19460
19461         * domain.c: Make this module thread safe.
19462
19463         * domain.c (mono_init): Call new initialization function.
19464
19465         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
19466         reference types too. Fixes #38812.
19467
19468         * image.c (mono_image_init): Fixed warnings.
19469
19470         * class.c (mono_class_from_typeref): Handle assembly load failure
19471         correctly.
19472
19473         * appdomain.c (add_assemblies_to_domain): Handle the case when
19474         the references of an assembly are not yet loaded.
19475
19476         * metadata.c image.c assembly.c: Moved initialization of global
19477         variables to a separate function called at startup since lazy 
19478         initialization of these variables is not thread safe.
19479         
19480         * image.c assembly.c: Made this module thread safe by adding locks in 
19481         the appropriate places.
19482
19483         * domain.c (mono_init): Call the new initialization functions of the
19484         three modules.
19485
19486 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
19487
19488         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
19489           make a direct call. It is proxy's work to make the call asynchronous.
19490           mono_delegate_end_invoke(): If the targe is a proxy, just collect
19491           the return values.
19492         * object.cs: mono_method_call_message_new(): read AsyncResult and
19493           state object from parameters list, if this info is requested.
19494         * object.h: Added fields to store remote call output values in
19495           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
19496
19497 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19498
19499         * object.h: add needed fields to MonoThread.
19500         * threads.c, threads.h: allow registering a function to cleanup data
19501         allocated per thread by the JIT.
19502
19503 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19504
19505         * loader.h: portability fix by Bernie Solomon
19506         * <bernard@ugsolutions.com>.
19507
19508 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
19511         return a MonoArray. This simplifies the code and also ensures that
19512         the cache allways contains an object reference as a value.
19513
19514         * icall.c (ves_icall_get_parameter_info): Simplified using the new
19515         function.
19516
19517 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19518
19519         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
19520         fixes a problem with byte ordering when getting the address family for
19521         a socket.
19522
19523 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
19524
19525         * .cvsignore: Added monosn.
19526
19527         * reflection.h reflection.c loader.c: Added support for parameter
19528         marshalling to dynamically created types. Fixes #47295.
19529
19530 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19531
19532         * rand.c: remove useless warnings.
19533
19534 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19535
19536         * class.c: implemented ldtoken for methods and fieldrefs.
19537
19538 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19539
19540         * threadpool.c: when mono_async_invoke was called, no one took care of
19541         monitoring the queue. So if the method invoked took some time and we
19542         got new async invoke requests after 500 ms (the thread created waited
19543         that long in WaitForSingleObject), the new async invoke was not called
19544         until the previous one finished.
19545
19546         This is fixed now. Thanks to Totte for helping with it.
19547
19548 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19549
19550         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
19551
19552 2003-08-11  Martin Baulig  <martin@ximian.com>
19553
19554         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
19555
19556 2003-08-06  Martin Baulig  <martin@ximian.com>
19557
19558         * mono-debug-debugger.c: Added support for static fields,
19559         properties and methods.
19560
19561 2003-08-06  Martin Baulig  <martin@ximian.com>
19562
19563         * mono-debug-debugger.c: Don't store the MonoString's vtable to
19564         make this work for applications with multiple application domains.
19565
19566 2003-08-04  Martin Baulig  <martin@ximian.com>
19567
19568         * mono-debug-debugger.c: Completely reworked the type support; the
19569         most important thing is that we're now just using one single
19570         `MonoType' instance per type.
19571
19572 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
19573
19574         * mono-endian.h, mono-endian.c, icall.c: Added icall
19575         ves_icall_System_Double_AssertEndianity to assert double word endianity
19576         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
19577
19578 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19579
19580         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
19581         support, icalls and fixes.
19582
19583 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
19584
19585         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
19586         classes that are a punctuation character in .NET is not the same a
19587         g_unichar_ispunct.
19588
19589 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19590
19591         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
19592
19593 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
19594
19595         * icall.c: Add new MemCopy internalcall.
19596         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
19597         Simplified code; It is not necessary to handle all the cases here,
19598         as the C# code takes care of it.  Only handle the case of the name
19599         resource embedded into the assembly.
19600
19601         Changed signature to return the data pointer and the size of the
19602         data. 
19603
19604 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
19605
19606         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
19607         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
19608
19609 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
19610
19611         * socket-io.c: ignore EINTR error in select.
19612
19613 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
19614
19615         * class.h, class.c: removed unused subclasses field in MonoClass.
19616
19617 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
19618
19619         * icall.c: improve fix of get_base_definition(). If the parent class
19620           doesn't have the mehod, look at the parent of the parent.
19621         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
19622           to check if a parameter is an in or out parameter
19623           (PARAM_ATTRIBUTE_IN is not set by default).
19624           mono_method_return_message_restore(): Use mono_class_value_size to
19625           get the size of a value type. mono_type_stack_size (parameterType)
19626           does not return the correct value if parameterType is byRef.
19627           mono_load_remote_field(), mono_load_remote_field_new(),
19628           mono_store_remote_field(), mono_store_remote_field_new():
19629           raise exception if the remote call returns an exception.
19630
19631 2003-07-28  Martin Baulig  <martin@ximian.com>
19632
19633         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
19634         method.  This is a wrapper around mono_runtime_invoke() which
19635         boxes the instance object if neccessary.
19636
19637 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19638
19639         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
19640         metadata.h, row-indexes.h, verify.c: first cut of generics support.
19641
19642 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19643
19644         * icall.c: disable mcs bug workaround.
19645
19646 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19647
19648         * object.c (mono_runtime_class_init): Take the metadata_section
19649         mutex before obtaining the domain mutex.
19650
19651         * appdomain.h: Added definition of metadata_section mutex here. 
19652
19653         * object.c: define metadata_mutex here.
19654
19655 2003-07-24  Ravi Pratap  <ravi@ximian.com>
19656
19657         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
19658         fixed.
19659
19660 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
19661
19662         * reflection.c: Fix bug #46669
19663
19664 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19665
19666         * exception.c:
19667         * exception.h:
19668         * icall.c:
19669         * object.h: fill in the type name for TypeLoadException.
19670
19671 2003-07-23  Ravi Pratap  <ravi@ximian.com>
19672
19673         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
19674         relationship between TypeBuilders while compiling corlib) and bug
19675         45993 (Array types returned from the runtime while compiling
19676         corlib were from the loaded corlib).
19677
19678 2003-07-22  Martin Baulig  <martin@ximian.com>
19679
19680         * mono-debug-debugger.c: Reworked the type support a bit more;
19681         distinguish between types and classes.
19682
19683 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
19684
19685         * icall.c: add IsArrayImpl icall.
19686
19687 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
19688
19689         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
19690         initializing real_size only once. Also fix bug #46602.
19691
19692 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
19693
19694         * object.c: Renamed mono_metadata_section to metadata_section.
19695
19696 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
19697
19698         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
19699           empty array if the type is an array. Fixed.
19700           ves_icall_MonoMethod_get_base_definition: if the base method
19701           is abstract, get the MethodInfo from the list of methods of
19702           the class.
19703         * reflection.c: ParameterInfo.PositionImpl should be zero-based
19704           and it was 1-based. Fixed in mono_param_get_objects.
19705
19706 2003-07-20  Martin Baulig  <martin@ximian.com>
19707
19708         * mono-debug.h: Set version number to 31.
19709         (mono_debug_init): Added `MonoDomain *' argument.
19710
19711         * mono-debug-debugger.c: Reworked the type support; explicitly
19712         tell the debugger about builtin types; pass the `klass' address to
19713         the debugger.
19714
19715 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
19716
19717         * image.c: Allow new metadata tables to be loaded without a
19718         warning. Also update the warning message to give the new constant value.
19719                 
19720 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19721
19722         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
19723         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
19724         array type representation changes.
19725
19726 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19727
19728         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
19729         on Environment.Exit () call.
19730
19731 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19732
19733         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
19734         requires a matching corlib.
19735
19736 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19737
19738         * Changelog: My editor decided to add a CR to each line. Sorry about that.
19739           Committed again without the CRs.
19740         
19741 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19742
19743         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
19744           getting it from the "this" socket instance. Did not work
19745           if the socket is a subclass of Socket.
19746           Also fixed bug #35371.
19747
19748 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19749
19750         * metadata.c: fixed size for TypedByRef.
19751         * loader.c: when searching for a method, consider the vararg amrker.
19752         * unicode.c, decimal.c: constify some arrays.
19753
19754 2003-07-15  Dick Porter  <dick@ximian.com>
19755
19756         * socket-io.c: Fixed compilation for gcc < 3.2.
19757
19758         Fixed compilation for machines that don't have AF_INET6 (thanks to
19759         Bernie Solomon <bernard@ugsolutions.com> for that part.)
19760
19761         Fixed compile warnings.
19762         
19763         Fixed formatting and line endings.
19764
19765 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
19766
19767         * socket-io.h:
19768         * socket-io.c: Added IPv6 support.
19769
19770 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
19771
19772         * class.c (mono_class_is_assignable_from): New function to implement
19773         the is_assignable_from logic. Used by mono_object_isinst, 
19774         Type::IsAssignableFrom () and the interpreter.
19775
19776         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
19777         Object, even interfaces.
19778         
19779         * object.c (mono_object_isinst): Implement in terms of 
19780         is_assignable_from.
19781
19782         * icall.c (ves_icall_type_is_assignable_from): New icall.
19783
19784 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * domain.c (foreach_domain): fix compiler warning.
19787
19788 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
19789
19790         * image.c (load_metadata_ptrs): use g_strndup because strndup is
19791         not available on all plattforms
19792
19793 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * image.h image.c: Store the metadata version string in MonoImage.
19796         * icall.c: New icall to retrieve the image version.
19797         * reflection.c (create_dynamic_image): Fill in the image version field
19798         * reflection.c (build_compressed_metadata): Use the image version
19799         from the image structure.
19800
19801 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19802
19803         * appdomain.c: modified comment.
19804         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
19805         That will be its last iteration when mono_gc_cleanup is called from
19806         mono_runtime_cleanup and before the domain is unloaded.
19807
19808         Fixes bug #45962.
19809
19810 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
19811
19812         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
19813         attributes.
19814
19815 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19816
19817         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
19818         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
19819         Bernie Solomon <bernard@ugsolutions.com>.
19820
19821 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19822
19823         * object.c, object.h: provide mono_object_new_fast() for faster
19824         allocation in some special cases.
19825
19826 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19827
19828         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
19829         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
19830
19831 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19832
19833         * threadpool.c: fix leaks.
19834
19835 2003-07-01  Dick Porter  <dick@ximian.com>
19836
19837         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
19838         using MonoGHashTables.  Fixes threadpool bug posted to list.
19839
19840 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
19841
19842         * image.h, image.c: added support to load an assembly from a byte array.
19843         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
19844         assembly bundle support.
19845
19846 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
19847
19848         * threadpool.c (mono_thread_pool_add): keep a reference to the
19849         AsyncResult to prevent GC
19850
19851 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19852
19853         * class.c: leak fix.
19854
19855 2003-06-25  Dick Porter  <dick@ximian.com>
19856
19857         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
19858         for the async object, the WaitHandle object will close the handle.
19859         Fixes bug 45321.
19860
19861 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19862
19863         * class.c: in mono_array_class_get (), lookup from the hash with the
19864         same type we insert: this works around a bug in
19865         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
19866         lluis. The real fix will have to wait for after the release.
19867
19868 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19869
19870         * icall.c: fix memory leak when getting type members.
19871
19872 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19873
19874         * reflection.c: added more pubtoken special cases.
19875
19876 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19877
19878         * class.c: handle field offset correctly when class size
19879         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
19880
19881 2003-06-20  Martin Baulig  <martin@ximian.com>
19882
19883         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
19884         *image' field.
19885
19886 2003-06-20  Martin Baulig  <martin@ximian.com>
19887
19888         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
19889
19890 2003-06-20  Martin Baulig  <martin@ximian.com>
19891
19892         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
19893         just distinguish between variables in registers and variables at
19894         an offset relative to a register.
19895
19896 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19897
19898         * icall.c: #ifdef out latest changes until mcs is fixed.
19899
19900 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19901
19902         * icall.c: return members in metadata order.
19903
19904 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19905
19906         * icall.c: avoid infinite loop in GetTimeZoneData.
19907
19908 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19909
19910         * icall.c: added Marshal.Prelink/All icalls.
19911
19912 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19913
19914         * object.c, object.h: fix warnings and do some overflow checking
19915         when creating arrays.
19916
19917 2003-06-17  Dick Porter  <dick@ximian.com>
19918
19919         * file-io.h:
19920         * file-io.c: File attributes need to be tweaked slightly when
19921         passed from the managed to the w32 world.
19922
19923 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19924         * profiler.h profiler-private.h profiler.c: Rework last patch
19925         based on suggestion by Paolo.
19926         
19927 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
19930         instruction level coverage data collection.
19931         * profiler.h profiler.c (: Added new callback function which can be
19932         used by the profiler to limit which functions should have coverage
19933         instrumentation.
19934         * profiler.c (mono_profiler_load): Call g_module_build_path to
19935         generate the file name of the profiler library.
19936
19937 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19938
19939         * profiler.c, profiler.h, profiler-private.h: added basic block 
19940         coverage profiling API.
19941
19942 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * reflection.c (mono_reflection_create_runtime_class): Add support
19945         for events in dynamically generated code.
19946
19947         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
19948         not allocated.
19949
19950 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19951
19952         * icall.c: when getting timezone info, return reasonable values if we
19953         can't get the actual data.
19954
19955 2003-06-14  Dick Porter  <dick@ximian.com>
19956
19957         * threads.c (start_wrapper): Remove the reference to the thread
19958         object in the TLS data, so the thread object can be finalized.
19959         This won't be reached if the thread threw an uncaught exception,
19960         so those thread handles will stay referenced :-( (This is due to
19961         missing support for scanning thread-specific data in the Boehm GC
19962         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
19963
19964 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
19965
19966         * reflection.c: ensure streams and tables are first allocated with
19967         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
19968
19969 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19970
19971         * icall.c: fixed GetElementType for byrefs (bug# 44792).
19972
19973 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * reflection.c (mono_reflection_create_runtime_class): Add support for
19976         properties to dynamically created classes.
19977         * reflection.c: Fix a few places where non-MonoObjects were inserted
19978         into the tokens hashtable.
19979
19980 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19981
19982         * object.c: some support to handle out of memory exceptions.
19983
19984 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
19985
19986         * marshal.c (mono_marshal_get_native_wrapper): support reference
19987         return types
19988
19989 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19990
19991         * object.h, object.c: more portability stuff from Bernie Solomon.
19992         Unexport mono_object_allocate(). Added mono_object_unbox ().
19993         Set exitcode when an unhandled exception is thrown.
19994
19995 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
19996
19997         * marshal.c (mono_marshal_get_native_wrapper): use custom
19998         marshaler for return types.
19999
20000 2003-06-10  Dick Porter  <dick@ximian.com>
20001
20002         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
20003         ip_mreq is available
20004
20005 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20006
20007         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
20008         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
20009         by Bernie Solomon <bernard@ugsolutions.com>.
20010
20011 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * gc.c (mono_gc_init): Avoid error message on shutdown when
20014         GC_DONT_GC=1 is used.
20015
20016         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
20017         New icall to return the GUID of a module.
20018
20019 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20020
20021         * class.c: ensure instance size always includes the parent's size
20022         even whem class size is set explicitly (fixes bug#44294).
20023
20024 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20025
20026         * profiler.h, profiler.c: made the simple profiler thread-safe,
20027         get more accurate timing info. Allow the loading of an
20028         externally-developed profiler module.
20029
20030 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
20031
20032         * marshal.c (mono_marshal_get_native_wrapper): improved
20033         class/byref arguments.
20034         (mono_marshal_get_native_wrapper): better string marshaling support.
20035
20036 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20037
20038         * class.c: ensure .pack and .size are handled correctly and
20039         simplified layout of static fields.
20040
20041 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20042
20043         * appdomain.c
20044         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
20045
20046         * loader.c (mono_lookup_pinvoke_call): look for modules in the
20047         current directory (fix bug 44008)
20048
20049 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
20050
20051         * marshal.c (mono_marshal_get_native_wrapper): started support for
20052         custom marshalers.
20053         (mono_delegate_to_ftnptr): consider marshalling specifications
20054
20055 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20056
20057         * reflection.c, reflection.h: emit custom marshal info.
20058
20059 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20060
20061         * object.c: free the GError.
20062         * icall.c: added CloseEvent_internal.
20063         * threads.[ch]:
20064         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
20065         call.
20066
20067 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * loader.c (mono_method_get_signature): Add support for dynamic
20070         assemblies.
20071
20072 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20073
20074         * reflection.c: fixed bug #43905.
20075
20076 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20077
20078         * class.c, domain.c, icall.c, metadata.h, object.h: support for
20079         handling TypedReference and ArgIterator.
20080         * loader.c, loader.h: added function to get signature at call site.
20081
20082 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20083
20084         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
20085         data readonly. Buglets and warning fixes. Some MethodSpec support.
20086
20087 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20088
20089         * class.h, class.c, object.c: remove relative numbering support.
20090
20091 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
20092
20093         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
20094         free the string, until we get a chance to fix Gtk#
20095
20096 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20097
20098         * marshal.c: revert last patch.
20099
20100 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20101
20102         * icall.c: updates for new mono_class_vtable() not calling
20103         the type constructor anymore.
20104
20105 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20106
20107         * object.h, object.c: separate vtable creation from type
20108         initialization. Make running the .cctor thread safe.
20109
20110 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20111
20112         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
20113
20114 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20115
20116         * loader.c (mono_get_method): consider calling convention
20117
20118 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
20119
20120         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
20121         to return the invisible global type for a module.
20122
20123         * reflection.c (mono_image_build_metadata): Emit global fields too.
20124
20125 2003-05-20  Peter Williams  <peterw@ximian.com>
20126
20127         * loader.c (mono_lookup_internal_call): Add a few newlines.
20128
20129 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
20132         literal strings.
20133
20134         * appdomain.c (set_domain_search_path): Recalculate search path when
20135         AppDomainSetup.PrivateBinPath changes.
20136
20137         * object.c (mono_class_compute_gc_descriptor): It turns out some
20138         parts of the class libs (like System.Thread) holds pointers to
20139         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
20140         to treat native int a pointer type here.
20141         
20142 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
20143
20144         * appdomain.h, domain.c: add hashtable for jump target resolution.
20145
20146 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * reflection.h reflection.c icall.c: Added new icalls 
20149         GetManifestResourceInfoInternal, GetModulesInternal and support
20150         infrastructure.
20151
20152 2003-05-16  Dick Porter  <dick@ximian.com>
20153
20154         * icall.c:
20155         * file-io.h:
20156         * file-io.c: Implement System.IO.MonoIO::GetTempPath
20157
20158 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
20159
20160         * object.c: mono_store_remote_field: little fix to previous patch.
20161
20162 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20163
20164         * class.c: add constructors to array classes.
20165         * icall.c: special case array construction for InternalInvoke (),
20166
20167 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * class.h class.c reflection.c object.c: Added support for field
20170         defaults in dynamically generated classes.
20171
20172 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20173
20174         * reflection.c: properly encode charset for ddlimport.
20175
20176 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20177
20178         * threads.c: allow compiling without GC.
20179
20180 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20181
20182         * appdomain.h, object.c, object.h, threads.c, threads.h: added
20183         handling of thread static data.
20184
20185 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20186
20187         * reflection.h, reflection.c: added mono_custom_attrs_free ().
20188
20189 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20190
20191         * class.c (mono_array_class_get): always set the serializable flags
20192         (mono_array_class_get): always set the SEALED attribute for array types
20193
20194 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
20195
20196         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
20197         attributes (fix for bug 42021).
20198
20199 2003-05-12  Dick Porter  <dick@ximian.com>
20200
20201         * gc.c: Don't run finalizers when the finalizer thread is
20202         finishing up, because the default domain has already been
20203         destroyed.
20204
20205 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
20206
20207         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
20208         value is null, we should throw an exception.   This is slightly
20209         different than the other conventions used for the constructor.
20210
20211 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20212
20213         * socket-io.c: fixed windows build.
20214
20215 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20216
20217         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
20218
20219 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * object.c (mono_string_new_wrapper): Compatibility fix for MS
20222         compilers.
20223
20224 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * class.c (mono_class_layout_fields): Add experimental GC aware
20227         auto layout facility. Requires class library changes to work correctly.
20228
20229         (mono_class_setup_vtable): Avoid overriding explicit interface
20230         method implementations. Fixes iface3.exe test.
20231
20232         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
20233         object reference.
20234         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
20235         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
20236
20237         * metadata.h: Add new type classification macro which determines
20238         whenever the type holds an object reference.
20239
20240 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20241
20242         * marshal.c (mono_marshal_get_native_wrapper): cleanups
20243
20244 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * gc.c (finalizer_thread): Work around a GC bug.
20247
20248 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
20249
20250         * marshal.c (emit_struct_conv): allow unions
20251
20252         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
20253
20254 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
20255
20256         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
20257
20258 2003-05-06  Martin Baulig  <martin@ximian.com>
20259
20260         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
20261
20262 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20263
20264         * socket-io.c:
20265         (Select_internal): allow NULLs, don't create arrays if not needed.
20266         Coupled with Socket.cs changes.
20267
20268         * threadpool.c:
20269         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
20270         register a finalizer for it that will close the semaphore handle. This
20271         fixes the leak and make Lupus' test run with > 4080 loops.
20272
20273 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20274
20275         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
20276         Jerome Laban (bug #42287)
20277
20278 2003-05-02  Martin Baulig  <martin@ximian.com>
20279
20280         * debug-mono-symfile.h
20281         (MonoSymbolFile): Moved declaration into mono-debug.h.
20282         (MonoDebugMethodJitInfo): Likewise.
20283         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
20284         argument.
20285         (_mono_debug_address_from_il_offset): Take a
20286         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
20287
20288         * mono-debug.h
20289         (MonoDebugDomainData): New struct.
20290         (mono_debug_get_domain_data): New function.
20291         (mono_debug_add_method): Take an additional `MonoDomain *'
20292         argument.
20293         (mono_debug_source_location_from_address): Likewise.
20294         (mono_debug_il_offset_from_address): Likewise.
20295         (mono_debug_address_from_il_offset): Likewise.
20296
20297 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
20298
20299         * reflection.c: one more check for null type in custom attrs.
20300
20301 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20302
20303         * reflection.c: avoid warning (comparison is always false due to limited
20304         range of data type).
20305
20306 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20307
20308         * icall.c: throw an exception in Type.GetField if the argument 'name'
20309         is NULL.
20310
20311 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
20312
20313         * reflection.c: fixed handling of enums in named arguments to custom
20314         attributes (bug #42123).
20315
20316 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20317
20318         * reflection.c: use the right array element type and handle
20319         a null for a Type argument, too.
20320
20321 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
20322
20323         * reflection.c: handle arrays as arguments to custom attributes.
20324
20325 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
20326
20327         * reflection.c: handle a string value in a custom attr
20328         ctor that takes an object.
20329
20330 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20331
20332         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
20333         (fix bug #42063)
20334
20335 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20336
20337         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
20338
20339 2003-04-27  Martin Baulig  <martin@ximian.com>
20340
20341         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
20342         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
20343         MONO_DEBUGGER_EVENT_BREAKPOINT.
20344         (mono_breakpoint_trampoline_code): Removed.
20345         (mono_debugger_event_handler): The last argument is now a
20346         `guint32'.
20347         (mono_debugger_insert_breakpoint_full): Removed the
20348         `use_trampoline' argument.
20349         (mono_debugger_method_has_breakpoint): Likewise.
20350         (mono_debugger_trampoline_breakpoint_callback): Renamed to
20351         mono_debugger_breakpoint_callback(); take the method and
20352         breakpoint number as arguments.
20353
20354 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20355
20356         * metadata.c: fix off by one when loading parameters attributes.
20357
20358 2003-04-24  Martin Baulig  <martin@ximian.com>
20359
20360         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
20361
20362 2003-04-24  Martin Baulig  <martin@ximian.com>
20363
20364         * mono-debug-debugger.c: Moved all code which interacts with the
20365         Mono Debugger here.
20366
20367         * debug-mono-symfile.c: This code now just deals with the symbol
20368         file itself, the debugger code is now in mono-debug-debugger.c.
20369
20370 2003-04-23  Martin Baulig  <martin@ximian.com>
20371
20372         * mono-debug.c (mono_debug_source_location_from_il_offset):
20373         New method; like mono_debug_source_location_from_address(), but
20374         takes an IL offset instead of a machine address.
20375
20376 2003-04-23  Martin Baulig  <martin@ximian.com>
20377
20378         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
20379         `line' field; this is now computed by the debugger.
20380
20381 2003-04-23  Martin Baulig  <martin@ximian.com>
20382
20383         * mono-debug.[ch]: New files.  This is the new debugging interface.
20384
20385         * mono-debug-debugger.[ch]: New files.  Moved all code which
20386         interacts with the Mono Debugger here.
20387
20388 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20389
20390         * domain.c (mono_init): initialize mono_defaults.monitor_class
20391
20392 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
20393
20394         * reflection.c (method_encode_code): Add a spicy exception to help
20395         future compiler authors.
20396
20397 2003-04-21  Martin Baulig  <martin@ximian.com>
20398
20399         * icall.c
20400         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
20401         Make this work with relative pathnames; g_filename_to_uri() needs
20402         an absolute filename.
20403
20404 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * icall.c: Track name changes in Object and ValueType.
20407
20408 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
20409
20410         * metadata.c (mono_type_stack_size): size should be a multiple of
20411         sizeof (gpointer)
20412
20413 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20414
20415         * gc.c:
20416         (internal_domain_finalize): moved into mono_domain_finalize. No need
20417         to create another thread because the finalizers will be run in the
20418         finalizer thread.
20419         
20420         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
20421         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
20422         to be run (MS does this too).
20423
20424 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * object.c (mono_class_compute_gc_descriptor): Update comment.
20427
20428         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
20429
20430         * image.h: Add synchronized wrapper cache.
20431
20432         * image.c (do_mono_image_open): Initialize cache.
20433
20434         * reflection.c (create_dynamic_mono_image): Initialize cache.
20435
20436 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20437
20438         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
20439         ves_icall_System_Buffer_ByteLengthInternal.
20440
20441 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20442
20443         * reflection.c: setup klass->nested_in earlier. Allow
20444         a dash in the assembly name.
20445
20446 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
20447
20448         * metadata.c (mono_type_to_unmanaged): dont access
20449         type->data.klass for MONO_TYPE_OBJECT
20450         (mono_type_to_unmanaged): consider System.Delegate class
20451
20452 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
20453
20454         * class.c: just setup supertypes in the proper place instead of
20455         initializing the full element class for arrays.
20456
20457 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20458
20459         * class.c: ensure the element class of arrays is initialized.
20460         Setup the supertype info for array classes, too.
20461
20462 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
20463
20464         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
20465
20466 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20467
20468         * Makefile.am: re-added -m option when running cygpath. This way,
20469         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
20470         separator.
20471         * mono-config.c: same codepath for locating mono config file for WIN32
20472         and the rest.
20473         * assembly.c: if mono_assembly_setrootdir is called, don't override
20474         the value set.
20475
20476 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20477
20478         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
20479         MONO_ASSEMBLIES variable.
20480
20481 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20482
20483         * icall.c: added Assembly::GetNamespaces() icall.
20484
20485 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20486
20487         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
20488
20489 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
20490
20491         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
20492         * object.c: fixed bug in the construction of vtable for proxies
20493
20494 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * object.c (mono_array_new): Mark mono_array_new as an icall.
20497
20498 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20499
20500         * class.c: fixed test for public method when overriding interfaces.
20501         Closes bug #40970.
20502
20503 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20504
20505         * appdomain.h, domain.c: added mono_domain_foreach() to
20506         be able to access the currently loaded appdomains.
20507         * object.c: make string interning work across sppdomains.
20508         Mark some functions for use as icalls.
20509
20510 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20511
20512         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
20513
20514         * reflection.h reflection.c: Allocate long living data using 
20515         GC_MALLOC_ATOMIC so the collector does not need to scan it.
20516
20517         * reflection.c: Double the allocation size in streams instead of
20518         increasing it, to prevent unneccesary copying on large assemblies.
20519         
20520         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
20521         creation if the assembly does not have the Run flag set.
20522
20523 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20524
20525         * class.h: avoid the C++ keywords in header files (Jerome Laban
20526         spotted and fixed this).
20527
20528 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20529
20530         * object.c:
20531         (mono_unhandled_exception): fill in the arguments for the
20532         UnhandledException event. Only trigger that event for the default
20533         domain (as MS does).
20534
20535 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * object.c: Improve typed allocation stuff based on suggestions from
20538         Paolo. Also turn it on if the GC library supports it.
20539
20540 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * object.c object.h class.h: Added experimental typed allocation
20543         facility using the interfaces in gc_gcj.h.
20544
20545         * os/gc_wrapper.h: Added new include files.
20546         
20547 2003-04-03  Martin Baulig  <martin@ximian.com>
20548
20549         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
20550         which is not yet enabled by default.
20551
20552         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
20553         functions.
20554         (mono_gc_lock, mono_gc_unlock): New static functions.
20555
20556         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
20557         functions; stop/start the world for the garbage collector.  This
20558         is using the windows API; we need to complete the SuspendThread()/
20559         ResumeThread() implementation in the io-layer to make this work on Unix.
20560         (mono_gc_push_all_stacks): New public function; tells the garbage
20561         collector about the stack pointers from all managed threads.
20562
20563 2003-04-03  Martin Baulig  <martin@ximian.com>
20564
20565         * object.h (MonoThread): Added `gpointer stack_ptr'.
20566
20567         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
20568
20569 2003-04-03  Martin Baulig  <martin@ximian.com>
20570
20571         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
20572
20573 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
20574
20575         * reflection.c (typebuilder_setup_fields): Initialize field.first and
20576         field.last.
20577
20578 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
20579
20580         * loader.c (mono_lookup_internal_call): Report the corlib that is
20581         out of sync.
20582
20583 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
20584
20585         * icall.c (ves_icall_type_GetTypeCode): fixed check for
20586         System.DBNull (it's class not valuetype).
20587
20588 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20589
20590         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
20591         if the array method was already assigned a token (fixes bug#40646).
20592
20593 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
20594
20595         * reflection.c (mono_reflection_get_type): Attempt type resolve even
20596         if no assembly is given.
20597
20598 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
20599
20600         * metadata.h: Added the new tables.
20601
20602         * row-indexes.h: Added definitions for new tables.
20603
20604         * metadata.c: Add schemas for new tables, and add support for
20605         computing the sizes of them.
20606
20607         * class.c: Update for handling the new type cases.
20608
20609 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
20610
20611         * metadata.h (MONO_TYPE_IS_VOID): new macro
20612
20613 2003-03-31  Martin Baulig  <martin@ximian.com>
20614
20615         * threads.h (MonoThreadCallbacks): Added `thread_created'.
20616
20617         * threads.c (mono_thread_new_init): Call `thread_created' in the
20618         mono_thread_callbacks.
20619
20620 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
20621
20622         * loader.h: added marshalbyrefobject_class to mono_defaults
20623         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
20624         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
20625           generation of output parameters.
20626           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
20627         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
20628           contextbound and the target object belongs to the context of the caller.
20629         * object.h: added context and unwrapped_server variables in MonoRealProxy.
20630         * object.c: Implemented support for interfaces and abstract classes
20631           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
20632           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
20633
20634 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
20635
20636         * class.h class.c (mono_class_is_subclass_of): New function.
20637         
20638         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
20639         routines for most common case (calls from ArrayList::ToArray).
20640
20641         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
20642         routine so programs which call Environment::Exit() can be profiled.
20643
20644         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
20645         Added MONO_ARCH_SAVE_REGS.
20646
20647         * icall.c (ves_icall_type_is_subtype_of): Use new function.
20648
20649 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
20650
20651         * blob.h: Add a couple of new MonoType types definitions.
20652
20653         * tabledefs.h: Add a couple of new call convs.
20654
20655 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
20656
20657         * reflection.h (MonoReflectionDynamicAssembly): track changes in
20658         the layout of the class.
20659
20660         * reflection.c (alloc_table): double the size on overflow to avoid
20661         unnecessary copying.
20662
20663         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
20664         avoid filling out metadata tables and blobs. Also set mb->ilgen to
20665         null so it can be garbage collected.
20666         
20667 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * reflection.c (mono_reflection_get_type): Return the resolved type
20670         only if it is in the assembly we searched.
20671
20672         * reflection.c (ensure_runtime_vtable): Initialize method slots.
20673
20674         * class.c (mono_class_setup_vtable): Set the slot of the overriding
20675         method.
20676
20677 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20678
20679         * appdomain.c:
20680         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
20681         the right one is 'file:///blah', but MS allows it.
20682         * assembly.c:
20683         (mono_assembly_open): allow 'file://blah'
20684
20685         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
20686
20687 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
20688
20689         * socket-io.c: fixes bug #40310.
20690
20691 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
20692
20693         * reflection.c (mono_reflection_parse_type): handle deeply nested
20694         types correctly.
20695
20696         * reflection.c (mono_image_create_token): Use unique token values
20697         since they will be put into a hash table.
20698
20699         * class.c (mono_class_setup_vtable): If a method occurs in more than
20700         one place in the vtable, and it gets overriden, then change the
20701         other occurances too.
20702
20703         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20704         object as return type.
20705
20706 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20707
20708         * icall.c: Deleted "ToString" implementation for double and float
20709         because they are full implemented in managed code.
20710
20711 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20712
20713         * reflection.c, reflection.h: implemented and exported functions
20714         to retrieve info about custom attributes.
20715
20716 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20717
20718         * appdomain.c: moved Uri handling to assembly.c
20719         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
20720         work when using a file Uri in *nix and windows.
20721
20722         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
20723         GetReferencedAssemblies.
20724
20725 2003-03-18  Dick Porter  <dick@ximian.com>
20726
20727         * icall.c: Rename a couple of internal calls
20728
20729         * threads.c: Set the thread state to Stopped when a thread exits.
20730         Fixes bug 39377.
20731
20732 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
20733
20734         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
20735         New icall.
20736
20737         * object.c (mono_class_vtable): fix warning.
20738
20739 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
20740
20741         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
20742
20743         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
20744         memory.
20745         (method_encode_clauses): Create exception info structures in the right
20746         order.
20747         (mono_reflection_setup_internal_class): Initialize supertypes field.
20748
20749         * class.c object.c: Handle interfaces which implement other interfaces 
20750         correctly.
20751
20752         * class.h class.c: Move the supertypes array initialization code into 
20753         a separate function so it can be used for dynamic types too. Also call
20754         it earlier, in mono_class_init(), since it can be used before the
20755         type is initialized.
20756
20757 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20758
20759         * Makefile.am:
20760         * assembly.c:
20761         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
20762
20763         * appdomain.c:
20764         * appdomain.h:
20765         * marshal.c:
20766         * object.c: remove warnings.
20767
20768 2003-03-13  Martin Baulig  <martin@ximian.com>
20769
20770         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
20771         (MonoDebugLexicalBlockEntry): New types.
20772
20773         * debug-mono-symfile.c
20774         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
20775
20776 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20777
20778         * process.c: ret can be any non-zero value accroding to MS doc.
20779
20780 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
20781
20782         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
20783         fixing a warning for a miss-used prototype, would have cause
20784         random memory corruption.
20785
20786 2003-03-07  Martin Baulig  <martin@ximian.com>
20787
20788         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
20789         getting really annoying ....
20790
20791 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
20792
20793         * reflection.c (fixup_method): added support for array methods.
20794
20795 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20796
20797         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
20798         (pointed out by Michael Adams).
20799
20800 2003-03-04  Dick Porter  <dick@ximian.com>
20801
20802         * icall.c: Temporarily reverted the Double and Single ToString()
20803         change, because it broke nunit.
20804
20805 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
20806
20807         * object.h, threads.h: make include files compatible with C++
20808         (patch by Jerome Laban <jlaban@wanadoo.fr>).
20809
20810 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20811
20812         * icall.c: Erased ToString helper functions for Double and Single.
20813         Now, that implementations ar all in managed code (Double and Single
20814         Formatters).
20815
20816 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
20817
20818         * appdomain.c: Added method for initializing the default context of
20819         a domain. Added internal call for getting the default context.
20820         * appdomain.h: Added context variable in MonoDomain struct.
20821         * domain.c: mono_domain_set also sets the default context of the domain
20822         * icall.c: Mapped internal method InternalGetDefaultContext.
20823         * object.c: mono_object_get_virtual_method returns always a remoting
20824         wrapper if the object is a transparent proxy.
20825         mono_runtime_invoke_array: when creating an object by calling the
20826         constructor, if the created object is a proxy, then the constructor should
20827         be called using the a remoting wrapper.
20828
20829 2003-03-03  Dick Porter  <dick@ximian.com>
20830
20831         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
20832         variable so it compiles on solaris.  Problem spotted by
20833         Christopher Taylor <ct@cs.clemson.edu>
20834
20835 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20836
20837         * appdomain.c:
20838         (get_info_from_assembly_name): don't leak value.
20839
20840         * icall.c:
20841         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
20842         result.
20843
20844 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20845
20846         * assembly.c: export mono_image_load_references ().
20847         * class.c: handle function pointers. mono_class_from_name() now
20848         supports nested type names directly.
20849
20850 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
20851
20852         * reflection.h reflection.c: Encode already created dynamic methods 
20853         and fields correctly as a DEF instead of a REF.
20854
20855         * reflection.c: Get rid of the force_ref argument to 
20856         mono_image_typedef_or_ref since it was wrong in the first place.
20857
20858         * string-icalls.c: add error checking to string constructors according
20859         to the MSDN docs.
20860
20861         * reflection.c: Emit types in the order their TypeBuilders were 
20862         created. Previously, a new table index was assigned to each type before
20863         the tables were emitted. This was wrong because the signature blob
20864         might already refer to a type by its original table index.
20865
20866 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
20869         change.
20870         
20871 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20872
20873         * Makefile.am: make assemblies dir have \ instead of / on windows.
20874
20875 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
20876
20877         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
20878         iterate over the NESTEDCLASS table using a linear search since the
20879         table is not guaranteed to be sorted by the secondary key.
20880
20881         * class.c (mono_class_create_from_typedef): fixed up call to
20882         mono_metadata_nesting_typedef.
20883         
20884 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
20885
20886         * marshal.c (mono_string_to_byvalstr): clear the memory as
20887         suggested by Jerome Laban <jlaban@wanadoo.fr>
20888
20889 2003-02-26  Dick Porter  <dick@ximian.com>
20890
20891         * process.c: Cope with padding in .rsrc blocks
20892
20893 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20894
20895         * metadata.h: reverted the filter_len change, it breaks reflection
20896         
20897 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20898
20899         * metadata.h: added a new field to store the filter_len
20900         
20901
20902 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20903
20904         * reflection.c: handle custom attributes for types and members
20905         created with Reflection.Emit (bug#38422).
20906
20907 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
20908
20909         * reflection.c: define RTSpecialName automatically for constructors for
20910         compatibility with MS.NET.
20911
20912         * reflection.c (mono_reflection_create_runtime_class): initialize
20913         nested_in field of dynamically created classes.
20914
20915 2003-02-22  Martin Baulig  <martin@ximian.com>
20916
20917         * debug-mono-symfile.h: Incremented version number.
20918
20919 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * object.h icall.c process.c: fix warnings.
20922
20923 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20924
20925         * appdomain.h appdomain.c:
20926         (mono_domain_try_type_resolve): split the 
20927         name_or_tb argument into a name and a tb argument.
20928         (mono_domain_has_type_resolve): new function to check whenever the
20929         application has registered a TypeResolve event handler.
20930         
20931         * icall.c reflection.h reflection.c: move the type resolve logic into
20932         mono_reflection_get_type () so it will be invoked when 
20933         Assembly::GetType () is called.
20934
20935         * reflection.c:
20936         (mono_reflection_get_type): renamed to get_type_internal.
20937         (mono_reflection_get_type): fixed type name generation so it works 
20938         for nested types too.
20939         (mono_reflection_get_type): call has_type_resolve () to avoid the 
20940         costly type name generation if there is no resolve event handler.
20941
20942 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20943
20944         * class.c, image.c: load exported types from file references.
20945
20946 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
20947
20948         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
20949           used to cache the managed methods used to create proxies and make 
20950           remote invocation of methods.
20951         * class.h: Added in MonoVTable a flag to indicate that a class needs 
20952           to be remotely created.
20953         * object.c: Modified the method mono_class_vtable(). It now initializes 
20954           the remote flag of the vtable. Modified mono_object_new_specific(), 
20955           so now it checks the remote flag.
20956         * icall.c: Added a couple of internal methods, one for enabling instance 
20957           creation interception for a type, and one for creating objects bypassing
20958           the remote check.
20959
20960 2003-02-18  Martin Baulig  <martin@ximian.com>
20961
20962         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
20963         New interncall to get a method's metadata token.
20964
20965         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
20966         New interncall for the debugger.
20967
20968 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
20969
20970         * class.c (mono_class_setup_vtable): allocate supertype array
20971
20972 2003-02-18  Martin Baulig  <martin@ximian.com>
20973
20974         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
20975
20976 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20977
20978         * reflection.c:
20979         (assembly_name_to_aname): jump over unknown properties (i've found
20980         something like: 'type, assembly, version=xxx, custom=null, public...',
20981         so now will ignore custom=null and still get the rest of the values).
20982
20983 2003-02-17  Dick Porter  <dick@ximian.com>
20984
20985         * threads.c: Have Thread.Start() wait for a semaphore to signal
20986         that the thread has set up all its local data.  This fixes bug
20987         34323, where Abort() raced the new thread's TLS data.
20988
20989         Also removes the handle_store() call from start_wrapper, because
20990         threads are now always created suspended and there is no longer a
20991         race between the parent and child threads to store the info.
20992
20993 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
20994
20995         * image.c: explain the #- heap issue in a message, hopefully
20996         avoiding FAQs on mono-list.
20997
20998 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20999
21000         * icall.c:
21001         (GetEntryAssembly): if the domain has not invoked
21002         AppDomain.ExecuteAssembly yet, return the assembly of the default
21003         AppDomain.
21004
21005 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * class.c (mono_ldtoken): make it work in dynamic assemblies.
21008
21009 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21010
21011         * metadata.c, reflection.c: simple speedup to type hash
21012         and equals code.
21013
21014 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
21015
21016         * image.c, image.h, class.c, assembly.c: move module loading
21017         to MonoImage. When loading metadata, consider alignemnet from
21018         the start of metadata, not from the metadata address in memory.
21019
21020 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
21023         AssemblyBuilder objects. Factored out custom attribute creation into
21024         a separate function.
21025         (create_custom_attr): new function to create custom attributes.
21026
21027 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
21028
21029         * Makefile.am: Got tired of typing the full pathname to pedump.
21030         Until there is another option, am installing this.
21031
21032 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
21033
21034         * class.c (class_compute_field_layout): always set field->parent 
21035         (mono_ldtoken): use mono_defaults.fieldhandle_class;
21036
21037 2003-02-11  Dick Porter  <dick@ximian.com>
21038
21039         * threads-types.h:
21040         * monitor.c: Rewrote Monitor, making lock much faster and
21041         Pulse/Wait work as specified.  Also uses much fewer handles, and only
21042         creates them as needed.
21043
21044         * exception.c: Added SynchronizationLockException
21045
21046         * threads.c: Deleted old Monitor implementation.  The new one is
21047         in a new file.
21048
21049 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21050
21051         * class.c: handled TypedReference type code. Set the correct size for
21052         class data. Setup interface_offsets for interface classes, too.
21053
21054 2003-02-09  Martin Baulig  <martin@ximian.com>
21055
21056         * debug-mono-symfile.h: Reflect latest symbol writer changes.
21057
21058 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
21059
21060         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
21061         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
21062         * object.c: fixed mono_object_get_virtual_method () for interfaces.
21063         * verify.c: check for code that runs after the end of the method.
21064
21065 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21066
21067         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
21068         "System.Math::Round2".
21069         * sysmath.h: Added Floor, Round and Round2 definitions.
21070         * sysmath.c: Modified certain functions that were not 100% compliant
21071         with MS.NET (math precision) and added the implementation of Floor,
21072         Round and Round2.
21073
21074 2003-02-07  Martin Baulig  <martin@ximian.com>
21075
21076         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
21077
21078 2003-02-07  Martin Baulig  <martin@ximian.com>
21079
21080         * debug-mono-symfile.c: Reflected latest symwriter changes.
21081         (mono_debug_create_mono_symbol_file): Removed.
21082         (mono_debug_open_mono_symbol_file): Take an argument which
21083         specifies whether to create a dynamic symbol file.
21084
21085 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
21086
21087         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
21088
21089 2003-02-05  Martin Baulig  <martin@ximian.com>
21090
21091         * reflection.c (mono_image_build_metadata): Make this public,
21092         protect it against being called multiple times, don't create
21093         resources and don't build the compressed metadata here.
21094         (mono_image_create_pefile): Do this here.
21095
21096         * icall.c
21097         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
21098
21099 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21100
21101         * socket-io.c: fixed bug #36322.
21102
21103 2003-02-06  Piers Haken <piersh@friskit.com>
21104
21105         * appdomain.[ch]:
21106         * class.h:
21107         * debug-mono-symfile.c:
21108         * icall.c:
21109         * loader.c:
21110         * mono-config.c:
21111         * monosn.c:
21112         * reflection.c:
21113         * socket-io.c: warning cleanups
21114
21115 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
21116
21117         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
21118         function. works like remoting invoke, but does a check for the Proxy first.
21119
21120 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
21121
21122         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
21123
21124 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
21125
21126         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
21127         array of pointers.
21128         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
21129         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
21130
21131         * object.c (mono_store_remote_field_new): used by the new jit
21132         instead of mono_store_remote_field
21133         (mono_load_remote_field_new): used by the new jit
21134         instead of mono_load_remote_field
21135
21136 2003-02-05  Patrik Torstensson
21137
21138         * appdomain.c: changed unload to take the domain id instead
21139         of domain
21140         
21141         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
21142
21143
21144 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21145
21146         * appdomain.c: don't look for assemblies in ApplicationBase if
21147         PrivateBinPathProbe is set.
21148
21149 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21150
21151         * object.c: make the first argument in main_args contain the absolute
21152         path to the assembly. Fixes bug #37511.
21153
21154 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21155
21156         * icall.c: get correct UTC offset for countries not using daylight
21157         time saving. Fixes bug #30030.
21158
21159 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21160
21161         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
21162         and 1 are the family).
21163
21164 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
21165
21166         * icall.c (ves_icall_InternalExecute): removed wrong assertion
21167
21168         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
21169
21170 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * reflection.c: added support for SignatureHelper tokens, which is
21173         needed by the Calli opcode.
21174
21175         * reflection.h: track changes to SignatureHelper class.
21176
21177         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
21178
21179 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21180
21181         * appdomain.c: fixed loading assemblies from PrivateBinPath.
21182
21183 2003-02-03  Patrik Torstensson
21184         * appdomain.[c|h], domain.c : 
21185          - Added support for getting a domain via domain id
21186          - Support for setting and getting domain from System.AppDomain 
21187            (used in cross appdomain channel)
21188          - Added support for get/set for a MonoAppContext on a thread 
21189            (Context class in System.Runtime.Remoting.Contexts),
21190          - Removed hack in Get/SetData and ExecuteAssembly.
21191         
21192         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
21193         the managed world to get control when a proxy is created.
21194
21195         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
21196         
21197 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
21198
21199         * icall.c
21200         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21201         Populate the codebase field as well.
21202
21203 2003-02-02  Martin Baulig  <martin@ximian.com>
21204
21205         * debug-mono-symfile.c
21206         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
21207         (mono_debug_symfile_add_method): Allow interncalls.
21208
21209 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21210
21211         * icall.c: throw parse exception if strtod fails or the string is empty.
21212
21213 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
21214
21215         * marshal.c: handle object type separately from defined
21216         class types.
21217
21218 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
21219
21220         * marshal.c: handle NATIVE_LPSTR for strings when it's
21221         explicitly specified.
21222
21223 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
21224
21225         * reflection.c, reflection.h, icall.c: setup the reflection
21226         handle cache for ModuleBuilders and AssemblyBuilders.
21227
21228 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
21229
21230         * reflection.c (reflection_methodbuilder_to_mono_method): set
21231         pinvoke flag
21232
21233 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21234
21235         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
21236
21237 2003-01-29  Dick Porter  <dick@ximian.com>
21238
21239         * threads.c: No need for the fake_thread kludge now that Thread
21240         doesn't run a class constructor
21241         
21242 2003-01-29  Dick Porter  <dick@ximian.com>
21243
21244         * threads.c: Use g_direct_hash instead of the rather bogus
21245         g_int_hash
21246
21247 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
21248
21249         * marshal.c (mono_marshal_get_native_wrapper): add check for null
21250         (fix pinvoke12.exe)
21251         (mono_marshal_get_struct_to_ptr): generate valid IL code
21252         (mono_marshal_get_ptr_to_struct): generate valid IL code
21253         (*): correctly set sig->pinvoke, we need to memdup the signature
21254         to do that
21255
21256 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21257
21258         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
21259         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
21260
21261 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
21262
21263         * profiler.c: provide more callers information.
21264
21265 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
21266
21267         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
21268
21269         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
21270
21271         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
21272
21273 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21274
21275         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
21276         exception instead of going into an infinite loop on dates which it 
21277         can't yet handle.
21278
21279         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
21280         out-of-range exception if needed.
21281
21282         * class.c (mono_class_setup_vtable): allow a virtual method to provide
21283         an implementation for an interface method and to override an inherited
21284         method at the same time. 
21285         Imagine a scenario when a virtual method is used to override a
21286         virtual abstract method in a parent class, and this same method 
21287         provides an implementation for an method inherited from an interface. 
21288         In this case, the interface resolution code will set im->slot, which 
21289         means that the virtual method override pass will skip this method 
21290         which means a pointer to the abstract method inherited from the parent
21291         will remain in the vtable of this non-abstract class.
21292
21293         * class.c: (mono_class_setup_vtable): continue search for a real 
21294         method if only an abstract method is found.     
21295
21296 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
21297
21298         * reflection.c: add size to encoding for ByValStr and ByValArray
21299         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
21300
21301 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21302
21303         * class.c (mono_class_setup_vtable): pass the override info as an
21304         argument.
21305
21306         * class.c (mono_class_setup_vtable): set the slot of overriding methods
21307         correctly.
21308         
21309         * reflection.c (ensure_runtime_vtable); add support for method 
21310         overrides.
21311         
21312 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21313
21314         * reflection.c (resolution_scope_from_image): Hack to work to work with
21315         dynamic assemblies.
21316
21317         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
21318         added a 'force_ref' argument to force this function to allways return 
21319         a TypeRef. This is needed by mono_image_get_memberref_token ().
21320         
21321 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21322
21323         * reflection.c (mono_image_get_type_info): interfaces really don't have
21324         a parent.
21325
21326         * reflection.c (mono_image_basic_init): fill out missing fields of
21327         image structure.
21328
21329         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
21330         dynamic assemblies. This is required so dynamic assemblies show up in
21331         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
21332         Type::GetType() etc. This is consistent with MS behaviour.
21333
21334         * image.c image.h reflection.c: add newly created classes to the name 
21335         cache so mono_class_get () will find them.      
21336
21337 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         First part of changes to get IKVM.NET running under mono.
21340         
21341         * appdomain.h, appdomain.c: added new function 
21342         mono_domain_try_type_resolve() which will emit TypeResolve events. 
21343         This function will call AppDomain::DoTypeResolve to do the actual work.
21344
21345         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
21346         moved existing code dealing with dynamic tokens to a new function 
21347         called mono_reflection_lookup_dynamic_token (). This function will 
21348         raise TypeResolve events when appropriate. Since reflection.c is not 
21349         part of libmetadata, a new hook function called 
21350         mono_lookup_dynamic_token() is added to class.c which will call this.
21351
21352         * assembly.h assembly.c: make the invoke_load_hook function public,
21353         so it can be called for dynamic assemblies.
21354
21355         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
21356
21357         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
21358         type isn't found.
21359
21360         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
21361         MonoGHashTable, since it contains pointers to objects which the GC 
21362         needs to track.
21363
21364         * assembly.c (search_loaded): remove unused variable.
21365         
21366 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
21367
21368         * object.c: fixed issue exposed by gcc-generated IL programs
21369         that use RVA data for pointers.
21370
21371 2003-01-25  Martin Baulig  <martin@ximian.com>
21372
21373         * threads.c (start_wrapper): Moved the initialization of
21374         `start_func' above the mono_new_thread_init() call to which we
21375         pass it as argument.
21376
21377 2003-01-24  Martin Baulig  <martin@ximian.com>
21378
21379         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
21380         the MonoThread pointer.
21381
21382 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
21383
21384         * icall.c: Rename `PowImpl' to Pow.
21385
21386 2003-01-23  Dick Porter  <dick@ximian.com>
21387
21388         * threads.c (start_wrapper): Create a Thread object if needed, so
21389         the Main() thread can do the class initialisation in a subthread
21390         that has been set up to allow managed code execution.
21391
21392         Pass the thread ID instead of the MonoThread pointer to the thread
21393         start and attach callbacks.  This change is required, because the
21394         jit thread start callback must be called _before_ the Thread
21395         object can be created.
21396         
21397         (mono_thread_init): Removed much object creation code that is no
21398         longer needed.  No managed code is called from here now.
21399
21400         * object.c (mono_runtime_exec_managed_code): Create a subthread
21401         for Main, and call back to the runtime to use it.
21402         Set the exit code when Main exits.
21403
21404         * gc.c: Make sure domain finalisation happens in a subthread.
21405         Re-enable threaded GC, fixing bug 31333 (again).
21406
21407         * environment.c: System.Environment internall calls (so far just
21408         ExitCode is here, the others are still in icall.c)
21409
21410         * appdomain.c (mono_runtime_cleanup): All threads running managed
21411         code should have finished before mono_runtime_cleanup() is
21412         reached, so no need to clean up threads.
21413
21414 2003-01-22  Martin Baulig  <martin@ximian.com>
21415
21416         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
21417         `gpointer func' arguments.      
21418         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
21419         but added `MonoThread *thread' argument.
21420         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
21421
21422         * threads.c (mono_new_thread_init): Added `gpointer func' argument
21423         and pass it to the mono_thread_start_cb callback.
21424         (mono_install_thread_callbacks): New public function to install a
21425         set of callbacks which are set by the debugger.
21426         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
21427
21428 2003-01-22  Martin Baulig  <martin@ximian.com>
21429
21430         * Makefile.am: Install debug-mono-symfile.h.
21431
21432 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
21433
21434         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
21435
21436 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
21437
21438         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
21439         * class.c (mono_ptr_class_get): correctly set access levels of pointers
21440         (mono_array_class_get): correctly set access levels of arrays
21441
21442 2003-01-20      Patrik Torstensson
21443         * image.h (MonoAssemblyName): changed major, minor, build, revision
21444         from signed to unsigned.
21445
21446 2003-01-20  sean kasun <skasun@azstarnet.com>
21447
21448         * reflection.c (load_cattr_value): Now this handles
21449         MONO_TYPE_SZARRAY.  Fixes bug #35629
21450
21451 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
21452
21453         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
21454         integer value
21455
21456 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21457
21458         * decimal.c: fixed bug #26056.
21459
21460 2003-01-17  Martin Baulig  <martin@ximian.com>
21461
21462         * gc.c: Raise an ExecutionEngineException instead of using g_error().
21463
21464 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21465
21466         * exception.[ch]:
21467         (mono_get_exception_type_initialization): new function.
21468
21469         * object.c: throw a TypeInitializationException when an exception is
21470         thrown invoking the class constructor.
21471
21472 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21473
21474         * reflection.c: fixed attribute reading.
21475
21476 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21477
21478         * icall.c:
21479         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
21480         provided, look for the type in the calling assembly and then in
21481         mscorlib; if the assembly name is provided, only try that one.
21482
21483 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21484
21485         * object.c: register the vtable before there is a chance it's
21486         queried again recursively.
21487
21488 2003-01-13  Duncan Mak  <duncan@ximian.com>
21489
21490         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
21491         gc-internal.h. 
21492         
21493 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
21494
21495         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
21496
21497 2003-01-11  Martin Baulig  <martin@ximian.com>
21498
21499         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
21500         this to 20 for the release.
21501
21502 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
21503
21504         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
21505
21506         * loader.c (mono_method_get_marshal_info): bug fix
21507
21508         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
21509         structures with explicit layout
21510
21511 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21512
21513         * profiler.c: made the output more readable (and sorted). 
21514         Added caller information for the allocation profiler.
21515
21516 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
21517
21518         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
21519
21520 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21521
21522         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
21523         to get value types.
21524         
21525 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
21526
21527         * object.c, profiler.h, profiler.c, profiler-private.h:
21528         Added object allocation profiler.
21529
21530 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
21531
21532         * reflection.h, reflection.c: handle global methods.
21533         Compress blob entries.
21534
21535 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
21536
21537         * marshal.c: fix compilation.
21538
21539 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
21540
21541         * loader.c (mono_method_get_marshal_info): impl.
21542
21543         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
21544
21545 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21546
21547         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
21548         for reference types.
21549
21550 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
21551
21552         * loader.c: fixed off by one error in loaded parameter names.
21553
21554 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
21555
21556         * marshal.c (mono_marshal_get_icall_wrapper): like
21557         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
21558         instead of a MonoMethod.
21559
21560 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21561
21562         * decimal.c: fixed bug #36537.
21563
21564 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
21565
21566         * marshal.c: throw a missing method exception if a
21567         P/Invoke method is not found.
21568
21569 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21570
21571         * icall.c: allow a null this for constructors.
21572
21573 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21574
21575         * icall.c: raise the proper exceptions if the arguments to the
21576         internal Invoke are incorrect.
21577
21578 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
21579
21580         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
21581
21582 2003-01-03  Martin Baulig  <martin@ximian.com>
21583
21584         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
21585
21586 2002-12-31  Martin Baulig  <martin@ximian.com>
21587
21588         * debug-mono-symfile.c: Completely rewrote the type section.
21589         Instead of using individual malloc()ed fields, we use one big
21590         continuous memory area and offsets into this area.
21591         See the comments in the source code for details.
21592
21593 2002-12-30  Martin Baulig  <martin@ximian.com>
21594
21595         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
21596
21597 2002-12-30  Martin Baulig  <martin@ximian.com>
21598
21599         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
21600         line number table in this data blob instead of using an external
21601         pointer.
21602
21603 2002-12-28  Martin Baulig  <martin@ximian.com>
21604
21605         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
21606
21607 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
21608
21609         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
21610         as a boxed return type.
21611
21612 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
21613
21614         * appdomain.c
21615         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
21616         g_build_filename to properly get separators on the filename created.
21617
21618         * object.h: Small change, introduce MonoMarshalByRefObject to
21619         track the layout of that structure in the C# universe as we make
21620         changes there.
21621
21622 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
21623
21624         * object.c: removed assert to allow static fields on interfaces.
21625         * loader.c: a TypeSpec may be used for any type, not just arrays.
21626
21627 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
21628
21629         * class.c, class.h: added mono_class_array_element_size ().
21630         Ignore static methods in interfaces.
21631
21632 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21633
21634         * threads.c: fixed the build under cygwin.
21635
21636 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
21637
21638         * reflection.c: handle nullref constants. Allocate keys for
21639         reflection handles with the GC.
21640
21641 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
21642
21643         * threads.c, threads.h: added mono_thread_get_abort_signal()
21644         to get a suitable signal for thread abort.
21645
21646 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
21647
21648         * metadata.c: fix handling of ExportedType table.
21649
21650 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21651
21652         * icall.c: added WriteWindowsDebugString internal call.
21653
21654 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21655
21656         * reflection.h: added fields to match C# implementation.
21657
21658 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21659
21660         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
21661
21662 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
21663
21664         * gc.h, gc-internal.h: Rename header for GC internal calls to
21665         gc-internal.h from gc.h as to not clash with Boehm GC having its
21666         header installed as <gc.h> in outside include paths.
21667         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
21668         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
21669
21670 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21671
21672         * icall.c: assign minor, build and revision in FillName.
21673
21674 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
21675
21676         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
21677         Added support for running code generated by Reflection.Emit.
21678
21679 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21680
21681         * appdomain.c: check for NULL argument in LoadFrom.
21682
21683 2002-12-10  Dick Porter  <dick@ximian.com>
21684
21685         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
21686
21687 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21688
21689         * appdomain.c: fix buglet when building exe file name.  Handle full
21690         assembly name (needed after latest changes to AssemblyName).
21691         * image.c:
21692         (mono_image_close): free some hashtables.
21693
21694 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
21695
21696         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
21697         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
21698         on some systems (redhat 7.3) 
21699
21700 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
21701
21702         * threads.c: delete the critical section of a sync block,
21703         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
21704
21705 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
21706
21707         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
21708
21709 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21710
21711         * appdomain.[ch]: handle the assembly preload event to try loading the
21712         assemblies using the paths we have in the current domain.
21713
21714         * assembly.[ch]: created an assembly preload hook that is called to try
21715         loading the assembly by other means that the ones provided here.
21716
21717         * domain.c: initialize the domain search path.
21718
21719         From now on, assemblies (TODO: except corlib and System) are loaded
21720         according to these rules when using mono_assembly_load ():
21721
21722                 1. It tries to load the assembly from the ApplicationBase
21723                 of the current domain appending .dll and .exe (TODO: have to
21724                 try loading from name/name.dll and name/name.exe).
21725
21726                 2. It tries the search path specified in PrivateBinPath for the
21727                 current domain (if any).
21728
21729                 3. Previous behavior.
21730
21731 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
21732
21733         * icall.c: implemented GetInterfaceMap() related icall.
21734         * domain.c, loader.h: load MethodInfo in mono_defaults.
21735
21736 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
21737
21738         * gc.c: disable the finalizer thread for now, untill all the issues
21739         with it are resolved.
21740
21741 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
21742
21743         * string-icalls.c: handle embedded nulls in string ctor when the
21744         length is specified.
21745
21746 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
21747
21748         * class.c: look for explicit interface implementation in parent
21749         classes, too.
21750
21751 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
21752
21753         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
21754
21755 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
21756
21757         * gc.c: protect handles with a critical section.
21758
21759 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21760
21761         * icall.c:
21762         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
21763         parameters. If no assembly specified, try getting the type from all
21764         the assemblies in the current domain, else, load the assembly and get
21765         the type from it.
21766
21767 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21768
21769         * marshal.c: applied patch from Aleksey Demakov that fixes
21770         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
21771
21772 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21773
21774         * icall.c: fixed get_location.
21775
21776 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
21777
21778         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
21779         declarations to make it work with older gcc. 
21780
21781         * loader.c (mono_get_method): set signature->pinvoke for native calls
21782
21783 2002-11-20  Dick Porter  <dick@ximian.com>
21784
21785         * threads.c (mono_thread_init): Set the main thread's handle
21786
21787 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
21788
21789         * gc.c: allow compilation without GC support. Changed to match the
21790         mono coding style.
21791
21792 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
21793
21794         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
21795
21796 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
21797
21798         * reflection.c: set a public key token on the core assemblies.
21799
21800 2002-11-18  Dick Porter  <dick@ximian.com>
21801
21802         * threads.c: Split out some thread initialisation so that other
21803         files can set the start callback function.
21804
21805         * gc.c: Run finalisers in a separate thread, to avoid stack
21806         overflow.  Fixes bug 31333.
21807
21808         * appdomain.c: Set up GC finalisation thread.
21809
21810         * reflection.c: 
21811         * object.c: 
21812         * domain.c: Use gc.h macros for GC_malloc
21813         
21814 2002-11-15  Dick Porter  <dick@ximian.com>
21815
21816         * threadpool.c: 
21817         * threads.c:
21818         * appdomain.c: Removed mono_runtime_init_with_attach(),
21819         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
21820         merging the extra parameter with the existing function.  Removed
21821         unneeded code in mono_thread_attach().
21822
21823 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
21824
21825         * image.c (mono_image_loaded_by_guid): a method to get loaded
21826         images by guid. 
21827         (load_metadata_ptrs): we store the guid as string.
21828
21829 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
21830
21831         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
21832
21833         * metadata.c (mono_guid_to_string): imported method form Zoltan
21834         Varga (slightly modified)
21835
21836         * assembly.c (mono_assembly_open): load precompiled code
21837
21838         * loader.h (MonoMethod): we store the method token for use in the
21839         aot compiler. 
21840
21841 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21842
21843         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
21844         the hook function called when an assembly is loaded.
21845         
21846         * domain.c: Modified file.
21847         (mono_domain_assembly_load): removed hash table insertion of assemblies.
21848
21849         Fixes bug #33196.
21850
21851 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
21852
21853         * reflection.c: Map PEFileKind to the value expected by the WinNT
21854         image loader. 
21855
21856 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21857
21858         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
21859         Read until the buffer is filled completely.
21860
21861 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21862
21863         * icall.c: implemented MonoType.InternalGetEvent ().
21864
21865 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21866
21867         * appdomain.c: implemented InitAppDomainSetup. Delayed
21868         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
21869         the entry_assembly.
21870
21871         * assembly.c: base_dir is now an absolute path ending with
21872         G_DIR_SEPARATOR.
21873
21874         * icall.c: modified get_location according to the above changes.
21875
21876         * object.c: init AppDomain.SetupInformation for the default domain after
21877         we have the entry assembly.
21878
21879         * domain.c: when unloading a domain, setup = NULL.
21880
21881 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
21882
21883         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
21884
21885 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
21886
21887         * object.h, object.c: introduced mono_object_get_virtual_method ()
21888         to lookup the method invoked on an object when a callvirt is done on
21889         a method.
21890         * icall.c: make MethodInfo::Invoke() always do a virtual call.
21891
21892 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21893
21894         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
21895         current domain when loaded an assembly and failed to load it.
21896
21897         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
21898
21899 2002-10-31  Dick Porter  <dick@ximian.com>
21900
21901         * icall.c: 
21902         * file-io.h: 
21903         * file-io.c: Return the error status in a parameter, as the
21904         GetLastError() value has long since been blown away if we try and
21905         look it up in a subsequent internal call invocation.  Delete the
21906         GetLastError() internal call, because it's useless.
21907
21908 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
21909
21910         * class.[ch]: added cast_class to fix bug 29517
21911
21912 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
21913
21914         * marshal.c: create valid IL code in the filter clause:
21915         the new JIT is less forgiving:-)
21916
21917 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21918
21919         * icall.c: removed get_property internal call.
21920
21921 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
21922
21923         * appdomain.h domain.c: Added an ID to appdomains.
21924         
21925         * threads.c threads.h icall.c: Implement icall
21926         Thread:GetDomainID(), and remove unused icall 
21927         CurrentThreadDomain_internal.
21928
21929 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21930
21931         * icall.c: Don't recurse through the base types in GetConstructor.
21932         Fixes bug #32063. 
21933
21934 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
21935
21936         * mempool.h, mempool.c: added mono_mempool_empty() and
21937         mono_mempool_stats().
21938
21939 2002-10-23  Dick Porter  <dick@ximian.com>
21940
21941         * file-io.c: 
21942         * file-io.h: 
21943         * icall.c: Added MonoIO.GetFileType internal call
21944
21945 2002-10-17  Dick Porter  <dick@ximian.com>
21946
21947         * appdomain.c (mono_runtime_cleanup): Don't signal the async
21948         delegate semaphore before waiting for all threads to finish,
21949         because new threads can also call async delegates.  Fixes bug
21950         32004.
21951
21952         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
21953         of 3 seconds, in case another async job is queued.  (This part is
21954         needed because the bug fix reintroduced the 3s exit lag.)  This
21955         makes the mono_runtime_shutdown flag superfluous.
21956
21957 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
21958
21959         * reflection.c: include ehader size in method section headers.
21960         Really check for suplicated modules entries.
21961
21962 2002-10-17  Martin Baulig  <martin@gnome.org>
21963
21964         * debug-mono-symfile.c: Added back support for locals.
21965
21966 2002-10-14  Martin Baulig  <martin@gnome.org>
21967
21968         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
21969         MONO_TYPE_VOID.
21970
21971 2002-10-14  Martin Baulig  <martin@gnome.org>
21972
21973         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
21974         mono_class_get() instead of looking in the class cache. 
21975
21976 2002-10-13  Martin Baulig  <martin@gnome.org>
21977
21978         * debug-mono-symfile.c: Set version number to 28, include the
21979         signature in method names.
21980
21981 2002-10-13  Martin Baulig  <martin@gnome.org>
21982
21983         * debug-mono-symfile.h: Set version number to 27.
21984
21985 2002-10-11  Martin Baulig  <martin@gnome.org>
21986
21987         * gc.c: Don't register/unregister NULL pointers as disappearing links.
21988
21989 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
21990
21991         * metadata.c, metadata.h: added helper function to allocate signatures.
21992
21993 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21994
21995         * icall.c: added internal call to get the location of machine.config.
21996
21997 2002-10-08  Martin Baulig  <martin@gnome.org>
21998
21999         * debug-mono-symfile.c: Ignore classes with a pending init for the
22000         moment.
22001
22002 2002-10-03  Dick Porter  <dick@ximian.com>
22003
22004         * threads.c: Freebsd pthread_t is a pointer
22005
22006 2002-10-03  Dick Porter  <dick@ximian.com>
22007
22008         * socket-io.c: Implemented GetHostName_internal
22009
22010 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22011
22012         * mono-config.c:
22013         (mono_config_parse_file): don't leak the text.
22014
22015 2002-10-02  Martin Baulig  <martin@gnome.org>
22016
22017         * debug-mono-symfile.c: Added support for methods.
22018
22019 2002-10-01  Martin Baulig  <martin@gnome.org>
22020
22021         * debug-mono-symfile.c: Don't emit methods and line numbers for
22022         the dynamic symbol file, just write the type table.  We can easily
22023         have an external helper program which creates a symbol file for an
22024         IL file.        
22025
22026 2002-10-01  Dick Porter  <dick@ximian.com>
22027
22028         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
22029         Only add the handle to the cleanup array when we're about to
22030         launch the thread.  Bug 31425 deadlocked when the test was run on
22031         mono under w32.
22032
22033 2002-10-01  Martin Baulig  <martin@gnome.org>
22034
22035         * debug-mono-symfile.c: Added support for properties.
22036
22037 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
22038
22039         * reflection.c: unaligned store fix from Mark Crichton
22040         <crichton@gimp.org>.
22041
22042 2002-09-27  Martin Baulig  <martin@gnome.org>
22043
22044         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
22045         New interncall.
22046
22047 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
22048
22049         * assembly.h, assembly.c: use a sane API to hook into the assembly
22050         loading process instead of a useless special-purpouse hack
22051         (ngen needs a hook, too, for example).
22052
22053 2002-09-27  Dick Porter  <dick@ximian.com>
22054
22055         * threads.c (mono_thread_init): Call GetCurrentProcess() so
22056         io-layer can set up some process handle info.  Not needed on w32,
22057         but doesn't hurt either.
22058
22059         * process.c: Pass the program name in the second parameter to
22060         CreateProcess, so the path is searched.  Include the working
22061         directory. Implemented process name, process enumeration, and some
22062         process detail internal calls.
22063         
22064         * icall.c: Added internal calls for process lookup, and some
22065         process details
22066
22067 2002-09-26  Martin Baulig  <martin@gnome.org>
22068
22069         * assembly.c (mono_install_open_assembly_hook): New global
22070         function to install a function to be invoked each time a new
22071         assembly is loaded.
22072         (mono_assembly_open): Run this callback function if set.
22073
22074         * debug-mono-symfile.c: Put back line numbers for the dynamic
22075         symbol file and also record the .il file as source file.  This
22076         allows us to install the temporary symbol file as `file.dbg' just
22077         like a compiler-generated one.
22078
22079 2002-09-26  Nick Zigarovich <nick@chemlab.org>
22080
22081         * Corrected typo in gc.c (BOHEM vs BOEHM).
22082
22083 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22084
22085         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
22086         GetProperties. Also avoid calling g_slist_length in GetProperties and
22087         GetMethods.
22088
22089 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
22090
22091         * reflection.c: avoid unaligned stores (bug spotted by
22092         Mark Crichton  <crichton@gimp.org>).
22093
22094 2002-09-25  Martin Baulig  <martin@gnome.org>
22095
22096         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
22097         instead of guint64 for addresses and added prologue/epilogue info.
22098
22099 2002-09-25  Martin Baulig  <martin@gnome.org>
22100
22101         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
22102         store line number info.  For the dynamic symbol file, we only need
22103         to provide the JIT generated dynamic line number info for the dynamic
22104         symbol file.
22105
22106 2002-09-25  Martin Baulig  <martin@gnome.org>
22107
22108         * debug-mono-symfile.h: Incremented version number.
22109
22110 2002-09-24  Martin Baulig  <martin@gnome.org>
22111
22112         * class.c (mono_debugger_class_init_func): New global function
22113         pointer variable.
22114         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
22115         call it.
22116
22117         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
22118         function.  This is called via the mono_debugger_class_init_func
22119         hook to add all types to the dynamic type table.
22120         (ves_icall_MonoDebugger_GetType): New interncall to get a class
22121         from its metadata token.
22122
22123         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
22124         New interncall for the debugger.
22125
22126 2002-09-24  Nick Drochak <ndrochak@gol.com>
22127
22128         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
22129         before using it in case it is null.
22130         
22131 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22132
22133         * metadata.c: allow custom modifiers in local var signatures
22134         (bug spotted by Zoltan Varga).
22135
22136 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
22137
22138         * class.c: deal with the <Module> class that may have a NULL vtable.
22139         Eliminate warnings.
22140
22141 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22142
22143         * image.c, image.h: more strong name helpers.
22144         * monosn.c: more work: convert pem keys to cryptoapi format.
22145
22146 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22147
22148         * string-icalls.c: speedup IndexOf.
22149
22150 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22151
22152         * icall.c: updates from Zoltan.2.Varga@nokia.com.
22153
22154 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22155
22156         * icall.c: cleanup: use mono_object_domain ().
22157
22158 2002-09-23  Martin Baulig  <martin@gnome.org>
22159
22160         * debug-mono-symfile.c: Improved type support.
22161
22162 2002-09-22  Martin Baulig  <martin@gnome.org>
22163
22164         * debug-mono-symfile.c: Added support for reference types and strings.
22165
22166 2002-09-22  Martin Baulig  <martin@gnome.org>
22167
22168         * debug-mono-symfile.c: Started to work on the type table.
22169
22170 2002-09-21  Martin Baulig  <martin@gnome.org>
22171
22172         * debug-mono-symfile.c: Largely reworked the symbol table format.
22173         The symbol table is now incrementally updated each time a new
22174         method is added.  We're now also using our own magic and version
22175         so that you don't need to recompile all your classes if the
22176         dynamic table changes.
22177         (mono_debug_update_mono_symbol_file): Removed.
22178         (mono_debug_symfile_add_method): New function to add a method.
22179
22180 2002-09-21  Martin Baulig  <martin@gnome.org>
22181
22182         * icall.c
22183         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
22184         New interncall.
22185
22186         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
22187         New interncall to get a method from its metadata token.
22188
22189 2002-09-21  Martin Baulig  <martin@gnome.org>
22190
22191         * debug-mono-symfile.c: Create type table.
22192
22193 2002-09-20  Martin Baulig  <martin@gnome.org>
22194
22195         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
22196
22197 2002-09-20  Martin Baulig  <martin@gnome.org>
22198
22199         * debug-mono-symfile.c: Provide information about params and locals.
22200
22201 2002-09-20  Martin Baulig  <martin@gnome.org>
22202
22203         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
22204         New interncall.
22205
22206         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
22207         interncall to get a method from its metadata token.
22208
22209 2002-09-20  Martin Baulig  <martin@gnome.org>
22210
22211         * debug-mono-symfile.c: Added a few checks for method->header
22212         being non-NULL.  This should never happen, but for the moment
22213         let's use a g_warning() rather than a g_assert().
22214
22215 2002-09-19  Mark Crichton  <crichton@gimp.org>
22216
22217         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
22218         even if support for it isn't present.  Added an #ifdef to fix this.
22219
22220         * socket-io.c: Added checks back for Solaris support.
22221
22222 2002-09-19  Martin Baulig  <martin@gnome.org>
22223
22224         * debug-mono-symfile.c (read_string, write_string): Reflect latest
22225         changes in the symbol file format.
22226
22227 2002-09-18  Martin Baulig  <martin@gnome.org>
22228
22229         * debug-mono-symfile.c: Set version number to 21.
22230
22231 2002-09-18  Dick Porter  <dick@ximian.com>
22232
22233         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
22234         on netbsd.  Fixes bug 30051.
22235
22236 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22237
22238         * reflection.c:
22239         (set_version_from_string): little fix.
22240
22241 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22242
22243         * monosn.c, Makefile.am: added strong name utility.
22244         * reflection.h, reflection.c: implemented delayed signing,
22245         locale, version and hash id assembly attributes.
22246
22247 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
22248
22249         * loader.c, metadata.c: load param attributes in signatures.
22250
22251 2002-09-16  Martin Baulig  <martin@gnome.org>
22252
22253         * debug-mono-symfile.c: Added string table with all method names.
22254
22255 2002-09-14  Martin Baulig  <martin@gnome.org>
22256
22257         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
22258         fast method lookup.
22259
22260 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
22261
22262         * reflection.c: record the public key token of referenced assemblies.
22263
22264 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22265
22266         * image.c, image.h: added functions to get the strong name and the
22267         public key of an assembly.
22268         * pedump.c: use them.
22269
22270 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
22271
22272         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
22273
22274 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
22275
22276         * marshal.c (mono_marshal_get_managed_wrapper): Added
22277         MONO_TYPE_BOOLEAN 
22278
22279 2002-09-11  Martin Baulig  <martin@gnome.org>
22280
22281         * gc.c: Call GC_unregister_disappearing_link() on all links when
22282         finalizing them, this is necessary to aviod a crash in boehm's
22283         finalize handler.
22284
22285 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22286
22287         * gc.c: handle GetTarget for finalized objects spotted and fixed by
22288         nick@chemlab.org.
22289
22290 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
22291
22292         * icall.c: implemented MonoType::Module.
22293         * reflection.c, reflection.h: mono_module_get_object () from
22294         Tomi Pakarinen <tomi.pakarinen@welho.com>.
22295
22296 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
22297
22298         * icall.c: ignore overridden methods in GetMethods ().
22299         Fix for FieldInfo::SetValue().
22300         * object.c: handle float/double in runtime invoke.
22301
22302 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
22303
22304         * object.c: allow a constructor to be called again on an object.
22305
22306 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22307
22308         * class.h, class.c: move field layout code to it's own function and
22309         export it. Get an interface id earlier. Move fields in MonoClass
22310         so they are more cache friendly and align the bitfields.
22311         * loader.c: temporary handle get_param_names() for a runtime method.
22312         * reflection.c, reflection.h: more code to handle runtime creation of
22313         types.
22314
22315 2002-09-09  Martin Baulig  <martin@gnome.org>
22316
22317         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
22318         signature with the pinvoke field being set for the actual call.
22319
22320 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22321
22322         * icall.c: removed some unused icalls. Start of map of glib charsets
22323         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
22324
22325 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
22326
22327         * debug-helpers.c: break infinite loop (found and fixed by
22328         Holger Arnold <harnold@gmx.de>).
22329
22330 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
22331
22332         * icall.c: target may be null in create_delegate.
22333
22334 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22335
22336         * marshal.c: handle a boolean return type.
22337
22338 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22339
22340         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
22341
22342 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
22343
22344         * gc.c: fix weakreferences.
22345
22346 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
22347
22348         * icall.c: added icall to get default codepage.
22349
22350 2002-09-03  Dick Porter  <dick@ximian.com>
22351
22352         * threads.h: 
22353         * threads.c: Use MonoThread instead of MonoObject where
22354         apropriate.
22355
22356         Store running thread objects in a hash table, so that we have all
22357         the info to hand when waiting for them to finish
22358         (means we don't need OpenThread() any more, so mingw builds should
22359         be fully functional again.)
22360
22361         * verify.c:
22362         * object.h: Added thread ID to MonoThread
22363
22364 2002-09-03  Martin Baulig  <martin@gnome.org>
22365
22366         * icall.c (System.Reflection.Assembly::get_location): New interncall.
22367
22368 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22369
22370         * icall.c: fixed leak in get_temp_path. Thanks lupus.
22371
22372 2002-09-03  Martin Baulig  <martin@gnome.org>
22373
22374         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
22375         argument to store the end address of the disassembled instruction.
22376
22377         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
22378         here from debug-symfile.h.
22379         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
22380         JIT into this struct.
22381         (MonoSymbolFile): Added `char *image_file' field.
22382         (MonoDebugGetMethodFunc): Removed.
22383         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
22384         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
22385         (mono_debug_find_method): New method.
22386
22387         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
22388         create a full symbol file.
22389         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
22390         and static symbol files.
22391         (mono_debug_find_method): The symbol file keeps an internal method hash,
22392         call this to get a MonoDebugMethodInfo from a MonoMethod.
22393
22394         * debug-symfile.[ch]: Removed.
22395
22396 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
22397
22398         * image.c (do_mono_image_open): Remove linker version check.
22399
22400 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
22401
22402         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
22403         wrappers for instance methods.
22404         
22405 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22406
22407         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
22408
22409 2002-08-28  Dick Porter  <dick@ximian.com>
22410
22411         * Makefile.am: Export HOST_CC for w32 builds
22412
22413 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
22414
22415         * file-io.c process.c: MonoString are null terminated, no
22416         need for mono_string_to_utf16() anymore.
22417
22418 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22419
22420         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
22421
22422 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
22423
22424         * icall.c, reflection.h: speedup System.MonoType.
22425
22426 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
22427
22428         * reflection.c: allow null as the value of a string argument in
22429         custom attributes constructors.
22430
22431 2002-08-27  Martin Baulig  <martin@gnome.org>
22432
22433         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
22434         `trampoline_address' field.
22435
22436 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
22437
22438         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
22439         check (fixes bug #29486) 
22440
22441 2002-08-27  Martin Baulig  <martin@gnome.org>
22442
22443         * debug-mono-symfile.c: Changed the file format in a way that allows us
22444         open it read-only and to use a specially malloced area for all the
22445         dynamic data.  We can now also generate a symbol file on-the-fly if we're
22446         debugging IL code and there is no MCS generated symbol file for it.
22447
22448 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
22449
22450         * object.c: added a define for a good string and array
22451         creation speedup (not enabled by default because we need to deal with
22452         the synch stuff).
22453
22454 2002-08-26  Martin Baulig  <martin@gnome.org>
22455
22456         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
22457         function to create a dynamic symbol file.  This is used by the
22458         debugger to create a symbol file for IL code on-the-fly.
22459
22460 2002-08-26  Martin Baulig  <martin@gnome.org>
22461
22462         * loader.c (mono_lookup_pinvoke_call): Include the error message
22463         from g_module_error() in the error message.
22464
22465 2002-08-24  Martin Baulig  <martin@gnome.org>
22466
22467         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
22468         function to update the symbol file.  The symbol file is mmap()ed
22469         writable, but private.  This allows us to install the symbol file
22470         together with the assembly.
22471
22472 2002-08-24  Martin Baulig  <martin@gnome.org>
22473
22474         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
22475         but they can read the new symbol file format which mcs is now creating.
22476
22477         * debug-symfile.c (mono_debug_find_source_location): Moved to
22478         debug-mono-symfile.c; this is now operating on the new symbol file.
22479
22480 2002-08-23  Martin Baulig  <martin@gnome.org>
22481
22482         * debug-helpers.c (mono_method_desc_from_method): New function to get
22483         a MonoMethodDesc from a MonoMethod.
22484
22485 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
22486
22487         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
22488         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
22489
22490 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
22491
22492         * string-icalls.[ch]: make helper methods static.
22493
22494 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22495
22496         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
22497         types to it and to SetValueInternal.
22498
22499         * object.c: Moved handle_enum label to its proper place. This was the
22500         f... bug! ;-)
22501
22502         This time i compiled mcs and gtk-sharp and they both work.
22503
22504 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22505
22506         * icall.c: reverted partially my previous patch until 
22507         object.c:set_value handles enums correcly.
22508
22509 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22510
22511         * icall.c:
22512         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
22513         (ves_icall_System_Environment_get_MachineName): removed warning when
22514         compiling under cygwin.
22515
22516 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22517
22518         * object.c: fixed field_get_value() for reference types.
22519
22520 2002-08-22  Dick Porter  <dick@ximian.com>
22521
22522         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
22523         Don't free a buffer while it's still needed.  Patch from Jonathan
22524         Liger <Jonathan.liger@wanadoo.fr>
22525
22526 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
22527
22528         * icall.c (ves_icall_System_Environment_get_Platform): Add new
22529         internal call.
22530
22531 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
22532
22533         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
22534         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
22535
22536         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
22537         we call unmanaged code which throws exceptions.
22538
22539 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22540
22541         * appdomain.h: added per-domain entry_assembly.
22542         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
22543         arguments.
22544         * icall.c: Assembly::GetEntryAssembly icall.
22545         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
22546         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
22547
22548 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22549
22550         * appdomain.h, gc.c: added mono_domain_finalize ().
22551
22552 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22553
22554         * object.c:
22555         (mono_print_unhandled_exception): changed g_warning by g_printerr
22556         because g_log has a 1024 characters limit (yeah, i got a big stack
22557         trace). Don't print exception name, that should be in ToString 
22558         returned string.
22559
22560 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22561
22562         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
22563         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
22564
22565 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22566
22567         * object.c:
22568         (mono_print_unhandled_exception): after previous commit, i realized
22569         that MS calls ToString on the exception. I changed this function to
22570         do that. This way we get stack_trace for free.
22571
22572 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22573
22574         * object.c:
22575         (mono_print_unhandled_exception): invoke Message property instead of
22576         getting 'message' field from Exception. Don't allocate memory for
22577         'trace' and 'message' if not needed.
22578
22579 2002-08-18  Dick Porter  <dick@ximian.com>
22580
22581         * unicode.c: Fix asserts to match Encoder.cs checks
22582
22583 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22584
22585         * marshal.c: fix unaligned store issue and a few wrong
22586         opcode argument types.
22587
22588 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22589
22590         * icall.c: added GetUninitializedObjectInternal internal call.
22591
22592 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
22593
22594         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
22595         to the right domain.
22596
22597 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
22598
22599         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
22600
22601         * class.c (class_compute_field_layout): set blittable to false for Strings
22602
22603         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
22604
22605 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22606
22607         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
22608         first chunk of code to create types at runtime. Code to
22609         handle ReflectedType/DeclaringType. Make reflection handles
22610         domain specific.
22611
22612 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
22613
22614         * class.c: set correct name in arrays.
22615
22616 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
22617
22618         * appdomain.c (mono_domain_transfer_object): make it work with
22619         valuetypes. bug fixes.
22620
22621 2002-08-12  Dick Porter  <dick@ximian.com>
22622
22623         * object.h: Rename some parameters to avoid c++ keywords (Patch
22624         from Joseph Wenninger <kde@jowenn.at>)
22625
22626 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
22627
22628         * icall.c: added icall to implement Assembly.GetFile*.
22629
22630 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22631
22632         * reflection.h, reflection.c: code to embed managed resources.
22633
22634 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
22635
22636         * class.c: move all the type size stuff into
22637         class_compute_field_layout().
22638
22639 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22640
22641         * class.c: ensure enums have always the correct instance size.
22642         * unicode.c: remove wrong assert.
22643
22644 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
22645
22646         * assembly.c: fix mem corruption issue.
22647         * image.h, image.c: added mono_image_get_resource () to access
22648         managed resources.
22649         * icall.c: implemented Assembly.EntryPoint property and some
22650         Managed Resources related internalcalls.
22651
22652
22653 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
22654
22655         * image.c, image.h: impemented mono_image_get_entry_point ().
22656         * appdomain.c: use mono_image_get_entry_point.
22657
22658 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22659
22660         * reflection.c: support the object type argument when loading
22661         custom attributes.
22662
22663 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
22664
22665         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
22666         String as return type.
22667
22668 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
22669
22670         * reflection.c: fix encoding of named args for custom attrs to match
22671         the ms implementation. Read them back when instantiating custom
22672         attributes.
22673
22674 2002-08-02  Radek Doulik  <rodo@ximian.com>
22675
22676         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
22677         by Dietmar as quick fix
22678         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
22679         16 as stack size, used on more places as quick fix before Dietmar
22680         will fix it properly
22681
22682 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22683
22684         * object.h, object.c: added accessors for fields and properties.
22685
22686 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22687
22688         * class.c, class.h: made mono_class_get_field_from_name ()
22689         loop on parent types.
22690         Added mono_class_get_property_from_name ().
22691
22692 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
22693
22694         * class.c, class.h: move the code to setup the type vtable in its own
22695         function so that it can be reused also for types created at runtime.
22696         Eliminate the "class" identifier from the header file.
22697         * reflection.c: setup the vtable for enums so that we can create
22698         objects for use in SetConstant ().
22699
22700 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
22701
22702         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
22703         instead of the delegate itself as this pointer (bug #28383)
22704
22705 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
22706
22707         * marshal.c (mono_marshal_get_managed_wrapper): added return type
22708         conversions.
22709
22710 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22711
22712         * loader.c: don't set the pinvoke bit on icalls.
22713
22714 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
22715
22716         * debug-helpers.c (mono_method_full_name): only print a number to
22717         indicate wrapper type (so that the output is more readable in traces).
22718
22719 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
22720
22721         * class.c (mono_class_init): include method override patch from Paolo
22722
22723 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
22724
22725         * icall.c: fixed GetTypeCode().
22726
22727 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
22728
22729         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
22730         use real delegate invoke function to make it work with multicast
22731         delegates (fix bug# 28291).
22732
22733 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
22734
22735         * object.c: load constant strings.
22736
22737 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
22738
22739         * reflection.c: no magic numbers.
22740         * tabledefs.h: security action enum.
22741
22742 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22743
22744         * assembly.c: fix possible memory corruption.
22745
22746 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22747
22748         * reflection.h, reflection.c: added support for linking resources.
22749         * verify.c: check we have an updated corlib.
22750
22751 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
22752
22753         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
22754         string arrays.
22755         (mono_marshal_string_array): null terminate unmanaged string arrays.
22756         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
22757
22758 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22759
22760         * icall.c: Type.GetType () can now return also types from the
22761         calling assembly.
22762
22763 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22764
22765         * loader.h, loader.c: stack walking support.
22766         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
22767         GetCallingAssembly.
22768
22769 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
22770
22771         * marshal.c: added optimisations for blittable types 
22772
22773         * class.c (mono_array_class_get): do not set blittable attribute on arrays
22774         (mono_class_setup_mono_type): set blittable attribute for single
22775         and double.
22776
22777         * marshal.c (mono_string_utf8_to_builder): impl.
22778         (mono_string_builder_to_utf8): impl.
22779         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
22780
22781 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
22782
22783         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
22784         (mono_marshal_get_managed_wrapper): impl. byref types
22785
22786 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22787
22788         * icall.c:
22789         (search_method): don't display debug message. 
22790
22791 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22792
22793         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
22794
22795 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22796
22797         * appdomain.c: set the missing filename when throwing exception.
22798
22799 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22800
22801         * metadata.c (mono_type_size): code cleanup
22802         (mono_type_stack_size): removed some test code
22803
22804 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
22805
22806         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
22807         mono_get_exception_file_not_found now.
22808
22809         * exception.c (mono_exception_from_name_two_strings): New version
22810         that will call a constructor with two string arguments. 
22811         (mono_get_exception_file_not_found): New helper routine, used to
22812         report file-not-found errors.
22813
22814 2002-07-20  Dick Porter  <dick@ximian.com>
22815
22816         * process.h:
22817         * process.c: Pass file handles to CreateProcess
22818         
22819         * icall.c:
22820         * file-io.h:
22821         * file-io.c: Implemented CreatePipe
22822
22823 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22824
22825         * metadata.c (mono_get_param_info): set alignment for value types
22826
22827 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22828
22829         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
22830         Constify mono_domain_assembly_open().
22831         * loader.c: handle null namespace in icalls.
22832
22833 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22834
22835         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
22836         (emit_str_to_ptr_conv): marshal object as structs
22837
22838         * metadata.c (mono_type_to_unmanaged): marshal object as structs
22839
22840         * marshal.c (mono_marshal_get_runtime_invoke): support value types
22841
22842 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
22843
22844         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
22845         (mono_marshal_get_native_wrapper): we an now return value types
22846
22847 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22848
22849         * verify.c: more checks implemented.
22850
22851 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
22852
22853         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
22854         (fix bug #27695)
22855         (mono_marshal_get_native_wrapper): allow byref arguments
22856         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
22857         impl. PtrToStringXXX methods
22858         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
22859         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
22860         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
22861         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
22862         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
22863
22864 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22865
22866         * reflection.c: fix buglet in parsing an assembly name.
22867
22868 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22869
22870         * marshal.c (emit_ptr_to_str_conv): first impl.
22871
22872 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
22873
22874         * object.c, class.h: cache the vtable in the class as suggested by
22875         vargaz@freemail.hu (Zoltan Varga).
22876
22877 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22878
22879         * class.h, loader.c: added mono_field_from_token().
22880         * verify.c: first cut of type checking code.
22881
22882 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22883
22884         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
22885
22886 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
22887
22888         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
22889         (fix bug #27782)
22890         (mono_marshal_get_remoting_invoke): impl.
22891         (mono_delegate_begin_invoke): impl.
22892         (mono_mb_emit_save_args): impl.
22893         (mono_delegate_end_invoke): impl.
22894         (mono_marshal_get_delegate_begin_invoke):
22895         (mono_marshal_get_delegate_end_invoke):
22896         (mono_marshal_get_delegate_invoke): generate a special name for
22897         those methods (including the signature) and associate them whith
22898         the delegate class. 
22899
22900 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
22901
22902         * reflection.[ch]: 
22903         (mono_reflection_type_from_name): now it has a MonoImage parameter
22904         which is used as the default image to search the type in. If the image
22905         is NULL or getting the type from it fails, it defaults to corlib.
22906
22907         * icall.c: changed 1 call to mono_reflection_type_from_name to match
22908         new parameter.
22909
22910 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22911
22912         * reflection.c: update the parameter table index.
22913
22914 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22915
22916         * domain.c: don't include the mark byte in the string hash.
22917
22918 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22919
22920         * icall.cs: icall for Type.GetTypeCode ().
22921         * verify: a couple of fixes and disabled local initialization checks.
22922
22923 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
22924
22925         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
22926
22927         * debug-helpers.c (mono_method_full_name): print the type of the
22928         runtime wrapper
22929
22930         * metadata.c (mono_signature_hash): a hash function for signatures
22931         (mono_signature_hash): better hash algorithm
22932
22933         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
22934
22935         * debug-helpers.c (mono_method_full_name): this can now generate
22936         method names with signatures
22937
22938         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
22939         method dont have this pointers.
22940
22941 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
22942
22943         * reflection.c: fixup typebuilder tokens.
22944         * image.c: fix buglet.
22945         * marshal.h: remove whitespace.
22946         * metadata.h, metadata.c: reinstate code that was removed.
22947         * verify.c: handle catch directives and fix another couple of bugs.
22948
22949 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
22950
22951         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
22952         (mono_marshal_get_native_wrapper): make it comp. with the old code
22953         (mono_marshal_get_native_wrapper): support boolean
22954         (mono_marshal_get_managed_wrapper): support more types
22955
22956 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
22957
22958         * class.c (class_compute_field_layout): compute class->blittable attribute.
22959
22960 2002-07-09  Dick Porter  <dick@ximian.com>
22961
22962         * threads.c: Make the thread cleaning up cope with threads that
22963         call ExitThread()
22964
22965 2002-07-08  Radek Doulik  <rodo@ximian.com>
22966
22967         * reflection.c (method_encode_code): use non-translated values to
22968         compute finally_start, this fixes exception handling on ppc, yay!
22969
22970         * decimal.h (struct signscale): fix endianess
22971
22972 2002-07-07  Radek Doulik  <rodo@ximian.com>
22973
22974         * reflection.c: swap box_val and not val
22975
22976 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
22977
22978         * reflection.c, reflection.h: handle full assembly info in type name.
22979         Handle Type arguments when loading custom attributes.
22980         * icall.c: updated to use new mono_reflection_type_from_name () method.
22981
22982 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22983
22984         * loader.c:
22985         (method_from_memberref): also print assembly name when method not found.
22986
22987 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22988
22989         * icall.c:
22990         (ves_icall_TypeGetProperties): fixed bug #27473. 
22991
22992 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22993
22994         * reflection.c: display image name and token when cannot find the
22995         .ctor for an attribute.
22996
22997 2002-07-05  Martin Baulig  <martin@gnome.org>
22998
22999         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
23000
23001 2002-07-04  Dick Porter  <dick@ximian.com>
23002
23003         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
23004         compile on mingw.  This will cause mingw builds to not wait for
23005         subthreads to terminate after the main thread does.  I've lodged a
23006         bug with the mingw developers for them to wrap OpenThread().
23007
23008 2002-07-03  Dick Porter  <dick@ximian.com>
23009
23010         * threads.c: Store thread IDs instead of handles, because
23011         GetCurrentThread() returns a pseudohandle and therefore stores
23012         useless values.  mono_thread_cleanup() continues checking the
23013         array of threads until it is empty, to cope with subthreads
23014         spawning new threads after the main thread has finished.
23015
23016         * profiler.h:
23017         * profiler.c:
23018         * profiler-private.h: Pass the thread ID to thread profiler
23019         functions, instead of a handle
23020
23021 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23022
23023         * verify.c: fixes to make it more usable.
23024         * pedump.c: added --verify code to verify IL code in an assembly.
23025
23026 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23027
23028         * reflection.c: turn errors into warnings to allow compiling corlib.
23029
23030 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23031
23032         * reflection.c: add special cases to compile corlib.
23033
23034 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23035
23036         * reflection.c: handle properties with only a set method.
23037
23038 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23039
23040         * opcodes.h: add enum with opcodes in opval order.
23041
23042 2002-07-01  Dick Porter  <dick@ximian.com>
23043         
23044         * object.h:
23045         * object.c (mono_runtime_run_main): Removed unneeded argument
23046
23047 2002-06-28  Martin Baulig  <martin@gnome.org>
23048
23049         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
23050
23051 2002-06-27  Dick Porter  <dick@ximian.com>
23052
23053         * threads.c: Store the handle in both the parent thread and in the
23054         subthread, to minimise the time between starting a new thread and
23055         storing its ID.
23056
23057 2002-06-26  Dick Porter  <dick@ximian.com>
23058
23059         * appdomain.c (mono_runtime_cleanup): Close the socket library
23060         after all the threads have finished, not before
23061
23062 2002-06-26  Martin Baulig  <martin@gnome.org>
23063
23064         * debug-symfile.c (mono_debug_find_source_location): Added
23065         `guint32 *line_number' argument.  If it's not NULL, store the line number
23066         there and return the file name without the line number.
23067
23068 2002-06-25  Dick Porter  <dick@ximian.com>
23069
23070         * icall.c:
23071         * process.h:
23072         * process.c: Process forking and other support functions
23073
23074 2002-06-25  Dick Porter  <dick@ximian.com>
23075
23076         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
23077         things dont happen when the image is closed.
23078         (mono_image_lookup_resource): Walk the resource section looking
23079         for a particular entry
23080
23081         * cil-coff.h: PE resource section decoding
23082
23083 2002-06-25  Dick Porter  <dick@ximian.com>
23084         
23085         * assembly.h:
23086         * assembly.c: 
23087         (mono_assembly_foreach): Accessor functions to walk the list of
23088         loaded assemblies
23089         (mono_assembly_set_main):
23090         (mono_assembly_get_main): Process methods need to know which
23091         assembly is the "main" one
23092
23093         * object.c (mono_runtime_run_main): Record the main assembly
23094
23095         * debug-helpers.c: Fix typo
23096
23097 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
23098
23099         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
23100         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
23101
23102 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23103
23104         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
23105
23106 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
23107
23108         * image.c (do_mono_image_open): Initialize reference count,
23109         otherwise we leak the MonoImage.
23110
23111 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23112
23113         * reflection.c: small tweak to handle self-hosting.
23114
23115 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23116
23117         * reflection.c: fix type name parse code.
23118
23119 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23120
23121         * reflection.c: break out of the loop.
23122         * image.c: special case corlib.
23123
23124 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23125
23126         * reflection.c: add all the custom attrs at the end to ensure the
23127         ctors have been properly initialized when the attributes are defined
23128         in the current assembly.
23129
23130 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23131
23132         * reflection.c: handle correctly multiple-nested types.
23133
23134 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23135
23136         * row-indexes.h: fix typos.
23137         * reflection.c: adjust for typos and fix method_def_or_ref
23138         encoding in MethodImpl table.
23139
23140 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23141
23142         * reflection.c: fix entry point patching (thanks Serge!).
23143
23144 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
23145
23146         * verify.c: add check for System.Exception
23147
23148 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23149
23150         * image.c, class.c: minifix for code just c&p'ed.
23151         * reflection.c: warning fix.
23152         * object.h, loader.h, domain.c: load also StringBuilder.
23153
23154 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23155
23156         * marshal.h, marshal.c: some support code to handle complex marshaling.
23157
23158 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23159
23160         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
23161         Better signatures with vtable error dump.
23162
23163 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
23164
23165         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
23166
23167 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
23168
23169         * icall.c (ves_icall_Type_GetField): impl.
23170
23171 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23172
23173         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
23174         to retrieve a marshal description blob for a field or param.
23175
23176 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23177
23178         * reflection.h, reflection.c: change order of nested type emission
23179         to avoid table corruption. The NestedTypes table is sorted.
23180         * icall.c: change order of GetConstructor results to workaround mcs bug.
23181
23182 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23183
23184         * reflection.h, reflection.c: handle field and param marshal
23185         information.
23186
23187 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23188
23189         * icall.c, marshal.c marshal.h: more Marshal class implementation.
23190
23191 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23192
23193         * reflection.c: fix call convention.
23194
23195 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23196
23197         * reflection.h, reflection.c: mono_image_get_memberref_token()
23198         takes a type instead of a class, now. Added
23199         mono_image_get_array_token() to create tokens for the special
23200         multi-dim array methods.
23201
23202 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23203
23204         * assembly.c: handle modules (no assembly table). Split
23205         loading references in its own function.
23206         * class.c: handle moduleref resolution scope.
23207         * image.c, image.h: cache module name in image.
23208
23209 2002-06-07  Martin Baulig  <martin@gnome.org>
23210
23211         * reflection.c (mono_image_get_type_info): Only add a class layout entry
23212         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
23213
23214 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23215
23216         * icall.c: more signature fixes that used uint instead of int.
23217
23218 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23219
23220         * reflection.c: fixed signature of field refs.
23221
23222 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23223
23224         * class.c, reflection.c: handle typerefs of nested types
23225         (both on read and when writing files).
23226
23227 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23228
23229         * icall.c: fix method signatures that tried to workaround the previous
23230         typo, d'oh!
23231
23232 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23233
23234         * debug-helpers.c: fix typo.
23235
23236 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23237
23238         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
23239         rewrote the PE/COFF writing code (our programs are understood by the
23240         ms runtime, now).
23241
23242 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23243
23244         * gc.c, gc.h, icall.c: weakreference support.
23245
23246 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23247
23248         * Makefile.am, mono-config.c: use $(sysconfdir).
23249
23250 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23251
23252         * icall.c: changed default precision of Double.ToString() to 15.
23253         Fixed memory leak. Unified with Single.ToString.
23254
23255 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
23256
23257         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
23258
23259 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23260
23261         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
23262         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
23263         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
23264         and myself.
23265
23266 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23267
23268         * debug-symfile.c, sysmath.c: yet more compilation fixes.
23269
23270 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23271
23272         * reflection.c, socket-io.c: more compilation fixes.
23273
23274 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23275
23276         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
23277         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
23278         unicode.c: warning and compiler compatibility fixes.
23279
23280 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23281
23282         * class.h, metadata.c: fixed warnings/compilation errors.
23283
23284 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23285
23286         * Makefile.am, mono-config.c, mono-config.h: configuration file
23287         support routines.
23288         * loader.c, loader.h: make Dll mapping configurable at runtime in the
23289         config file. Export methods to insert and lookup mappings.
23290
23291 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23292
23293         * reflection.c: handle types and boxed objects in custom attr
23294         constructors.
23295
23296 2002-05-30  Martin Baulig  <martin@gnome.org>
23297
23298         * debug-symfile.c
23299         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
23300
23301 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
23302
23303         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
23304         to lookup the implmap row for a P/Invoke method.
23305         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
23306         P/Invoke method from the runtime on an as needed basis.
23307
23308 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
23309
23310         * metadata.c (mono_metadata_parse_signature): impl.
23311
23312 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23313
23314         * class.c: handle .pack directive.
23315
23316 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23317
23318         * object.c: initialize static fields with RVA data.
23319
23320 2002-05-25  Martin Baulig  <martin@gnome.org>
23321
23322         * debug-symfile.c
23323         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
23324
23325 2002-05-24  Martin Baulig  <martin@gnome.org>
23326
23327         * debug-symfile.c
23328         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
23329         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
23330         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
23331
23332 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23333
23334         * object.c: special case string ctros in invoke.
23335         * gc.c: silly whitespace changes.
23336
23337 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
23338
23339         * threadpool.[ch]: impl. a threadpool that can
23340         be used by mint and mono.
23341
23342 2002-05-22  Martin Baulig  <martin@gnome.org>
23343
23344         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
23345         The first argument is now a `MonoReflectionModuleBuilder *', the return
23346         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
23347         `methods' field to get the method builder.  The `token' argument is the
23348         unfixed token.
23349
23350         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
23351         invalid characters instead of g_assert_not_reached()ing.  This seems
23352         to be the behaviour of mscorlib.
23353
23354 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
23355
23356         * object.c (mono_runtime_invoke_array): applied patch from Rachel
23357         Hestilow to fix bug #25104
23358
23359 2002-05-21  Martin Baulig  <martin@gnome.org>
23360
23361         * debug-symfile.c (mono_debug_find_source_location): New function.
23362         Looks up an IL offset in the line number table and returns the source
23363         location as a string.
23364
23365 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23366
23367         * icall.c:
23368         (mono_double_ToStringImpl): changed %f by %g until we have something
23369         better.
23370
23371 2002-05-21  Nick Drochak  <ndrochak@gol.com>
23372
23373         * icall.c : Use different name for Math.Pow's icall.  Needed to check
23374         parameters first in C#.
23375
23376 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23377
23378         * icall.c, reflection.h: added icall to get info about an event.
23379
23380 2002-05-20  Radek Doulik  <rodo@ximian.com>
23381
23382         * object.c (mono_value_box): don't use memcpy for boxing on BIG
23383         endian
23384         (mono_value_box): don't use memcpy for small sizes on
23385         architectures with unaligned access
23386
23387 2002-05-20  Martin Baulig  <martin@gnome.org>
23388
23389         * reflection.c (mono_reflection_setup_internal_class): Don't crash
23390         if `tb->parent == NULL'.
23391         (mono_reflection_create_internal_class): New function.  This is
23392         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
23393         for enum types.
23394
23395         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
23396         New interncall.
23397
23398 2002-05-19  Martin Baulig  <martin@gnome.org>
23399
23400         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
23401         argument to get the length, don't default to the array length.
23402
23403 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
23404
23405         * assembly.c (mono_assembly_setrootdir): New function used to
23406         override the MONO_ASSEMBLIES directory.
23407
23408 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23409
23410         * icall.c: ValueType_GetHashCode() initialize local var.
23411
23412 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23413
23414         * reflection.c: sort custom attributes table.
23415
23416 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23417
23418         * reflection.c: support named args in custom attributes (write support).
23419
23420 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
23421
23422         * reflection.c: fix finally position calculation.
23423
23424 2002-05-15  Radek Doulik  <rodo@ximian.com>
23425
23426         * reflection.c: fixed endianess at many places
23427
23428         * icall.c (ves_icall_InitializeArray): comment out debug msg
23429
23430 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
23431
23432         * object.c (mono_unhandled_exception): new function to handle
23433         unhandled exceptions.
23434         (mono_unhandled_exception): call the UnhandledException event.
23435         (mono_runtime_delegate_invoke): impl.
23436
23437 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
23438
23439         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
23440         returns the RVA, not the direct pointer to the data. Handle the case
23441         when the class size is fixed.
23442
23443 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23444
23445         * reflection.c: fix some endianess issues.
23446
23447 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
23448
23449         * object.c (mono_runtime_invoke): is now able to catch exceptions.
23450
23451         * threads.c (mono_thread_init): added a callback which is invoked
23452         at thread start.
23453
23454 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
23455         
23456         * icall.c: make GetHashCode return non-negative values.
23457
23458 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
23459
23460         * object.c, icall.c, gc.c: revert to address-based hashcode.
23461
23462 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
23463
23464         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
23465
23466 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23467
23468         * icall.c, class.c: special case <Module>.
23469
23470 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
23471
23472         * icall.c: fix bug in GetNow().
23473
23474 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
23475
23476         * object.c (mono_runtime_class_init): make sure that we call all
23477         static class constructors.
23478
23479 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23480
23481         * reflection.c: sort methodsemantics table.
23482
23483 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23484
23485         * reflection.h, reflection.c: honour init locals setting.
23486
23487 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
23488
23489         * icall.c: copied Double ToStringImpl for Single ToStringImpl
23490
23491 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23492
23493         * reflection.c: support ContructorBuilders in attribute blob creation.
23494
23495 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23496
23497         * reflection.c: some changes to build a binary that can be run
23498         directly in windows.
23499
23500 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
23501
23502         * loader.c: print a big message when an icall can't be found.
23503
23504 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * string-icalls.c: fix bug 24248.
23507
23508 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
23509
23510         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
23511         icall.c, reflection.h: separate assembly loading by pathname and by
23512         assembly name. Use the MONO_PATH env var to search for assemblies.
23513
23514 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23515
23516         * assembly.c, image.h: add some support for assemblies
23517         with multiple modules.
23518         * class.c, class.h: export mono_class_from_typeref().
23519         * loader.c: remove duplicated code and use mono_class_from_typeref(),
23520         instead.
23521
23522 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23523
23524         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
23525         documentation says (the ECMA one is correct).
23526
23527 2002-05-02  Dick Porter  <dick@ximian.com>
23528
23529         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
23530         Don't name the synchronisation mutex.
23531
23532 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
23533
23534         * rand.c
23535         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
23536         Make the prototypes match.
23537         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
23538         Same.
23539
23540         * icall.c
23541         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
23542         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
23543         all systems have tm.tm_zone, so use strftime() with %Z to print
23544         the timezone abreviation into a temp string.
23545
23546         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
23547         rather than mono_array_addr() on a MonoString on Big Endian
23548         machines.
23549
23550 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
23551
23552         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
23553         fix bug 24041
23554
23555 2002-04-30  Dick Porter  <dick@ximian.com>
23556
23557         * socket-io.c: Cope with SOCKET being an integer rather than a
23558         pointer now.
23559
23560         * threads.c: Added Thread_free_internal, to deal with thread
23561         handle cleanup.  Moved calls to handle_store() and handle_remove()
23562         to start_wrapper(), so each can only be called once.  Allocate
23563         synchronisation blocks with GC_malloc(), and use GC finalisation
23564         to close the handles.
23565
23566         * icall.c: added System.Threading.Thread::Thread_free_internal
23567
23568 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23569
23570         * icall.c: support Environment.Exit, CommandLineArgs().
23571
23572 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23573
23574         * object.c, object.h: added mono_runtime_run_main () and
23575         mono_runtime_get_main_args () for use in System.Environment.
23576
23577 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23578
23579         * gc.c: fix thinko, enable actual finalization since the jit is now
23580         fixed.
23581
23582 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23583
23584         * gc.c, object.c: take into account that an object may be offset wrt the address
23585         returned by GC_malloc().
23586
23587 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23588
23589         * image.c: handle files without entries in the assembly table (modules).
23590
23591 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
23592
23593         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
23594         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
23595         allowed to be null when it's System.Object class setup.
23596
23597 2002-04-27  Martin Baulig  <martin@gnome.org>
23598
23599         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
23600         if `tb->parent == NULL' rather than crashing.
23601
23602 2002-04-28  Nick Drochak  <ndrochak@gol.com>
23603
23604         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
23605         calling acos() where asin() should have been called.
23606
23607 2002-04-26  Martin Baulig  <martin@gnome.org>
23608
23609         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
23610         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
23611         there's a subdirectory called `System', but we don't want to read that
23612         subdirectory as an assembly.
23613
23614 2002-04-25  Martin Baulig  <martin@gnome.org>
23615
23616         * debug-symfile.c: Reflect latest MonoString changes.
23617
23618 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23619
23620         * rand.c, rand.h: instance method icalls need to have an explicit
23621         this pointer as first argument in the C implementation.
23622
23623 2002-04-25  Nick Drochak <ndrochak@gol.com>
23624
23625         * icall.c: Fix typo in map for GetNonZeroBytes
23626
23627 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23628
23629         * string-icalls.c : String does now passes unit tests without any 
23630         errors, the following changes has been made:
23631         
23632         Implemented replace methods.
23633         Renaming of methods to (try) follow the standard.
23634         Fixed compare ordinal
23635         Made all memory allocated directly to function instead of via icall function.
23636         Small performance fix in is_in_array function
23637                         
23638  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
23639
23640         c (mono_string_Internal_ctor_charp_int_int):
23641         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
23642         sindex < 0, throw ArgumentOutOfRangeException instead of
23643         ArgumentNullException.
23644
23645         Added new check for length == 0, however
23646         I need to make it return String.Empty from the C code.
23647         
23648         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
23649         that calculate the length for us here.
23650         
23651         (mono_string_Internal_ctor_sbytep_int_int): Replaced
23652         mono_string_new_utf16 with mono_string_new, since value is utf8.
23653
23654 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23655
23656         * object.c: register the object for finalization if needed.
23657         Allocate one more char in the string for the terminating 0 char.
23658
23659 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23660
23661         * class.c, class.h, image.c: check if a type implemenst a destructor.
23662         Use the proper key for array class lookups.
23663         * icall.c: register the icalls in the System.GC class.
23664         * gc.c, gc.h: GC-related functions and icalls.
23665
23666 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23667
23668         * icall.c:
23669         * socket-io.c:
23670         * unicode.c: free some strings gotten from mono_string_to_utf8 and
23671         changed a couple of free () by g_free ().
23672
23673         * decimal.c: one-liner in the comments for decimal2string ().
23674
23675 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23676
23677         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
23678
23679 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23680
23681         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
23682         * object.c (mono_runtime_invoke_array) : handle null in params
23683
23684 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23685
23686         * string-icalls.c: fixed bug in split (one off bug)
23687
23688 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23689
23690         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
23691         * icalls.c: added String::Equals as internal method
23692
23693 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23694
23695         * threads.c: fixed bug in the double interlocked functions
23696
23697 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
23698
23699         * threads.c: implemented all of the new interlocked icalls.
23700         * string-icalls.c: fix a bug in insert.
23701         * icalls.c: added the icalls for interlocked, removed old string functions.
23702         
23703 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23704
23705         * loader.c: fix off-by-one error when reading argument names.
23706
23707 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23708
23709         * profiler.c: win32 counter implementation (untested).
23710         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
23711         (the latter needs testing and more complete impl. from win32 folks).
23712
23713 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
23714
23715         * object.c: mono_array_new_full workaround mono_array_class_get
23716         problem.
23717
23718 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23719
23720         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
23721         * object.h (mono_string_chars): Changed casting type.
23722
23723 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23724
23725         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
23726                            method signatures to use gunichar2 instead of gint16.
23727
23728 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
23729
23730         * object.h, object.c: domain-specific versions of mono_object_new and
23731         mono_array_new.
23732
23733 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
23734
23735         * object.c: changed String layout
23736
23737         * string-icalls.c (mono_string_Internal_ctor_chara): added
23738         internal string constructors.
23739
23740 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
23741
23742         * threads.c: pass 'this' to the thread start routine.
23743
23744 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23745
23746         * string-icalls.c: fix IndexOf and LastIndexOf. Now
23747         InternalCompareStr don't call twice mono_string_cmp_char for the last
23748         character. Improved performance in mono_string_cmp_char.
23749
23750 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23751
23752         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
23753         code into its own library: libmonoruntime.
23754
23755 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
23756
23757         * object.h, object.c: changed array format so that szarrays do not
23758         require a bounds structure.
23759         * icall.c, appdomain.c: support for new szarray format.
23760
23761 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
23762
23763         * metadata.c: compare also the retuns type when comparing signatures:
23764         we didn't do this as an optimization since really overloaded methods
23765         must differ also in the arguments, but this doesn't work with
23766         low-level IL code (or when using explicit conversion operators: see
23767         bug#23498 for an example).
23768
23769 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23770
23771         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
23772
23773 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23774
23775         * icall.c: make MonoType::GetElementType its own icall.
23776
23777 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23778
23779         * icall.c: remove MonoMethod_get_Name().
23780         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
23781         object.
23782
23783 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23784
23785         * string-icalls.c: optimized a few methods.
23786
23787 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23788
23789         * icall.c: added all new string internal calls
23790         * string-icalls.c: added, new string internal call implementation.
23791         * object.c: added mono_string_new_size for allocating a string a size
23792
23793 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
23794
23795         * object.c (mono_object_isinst): use the same code as in the
23796         optimized x86 version.
23797
23798 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23799
23800         * profiler.c: TSC-based timer code (faster and more accurate).
23801         Not hooked up in configure, yet (set USE_X86TSC to 1).
23802
23803 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
23804
23805         * profiler.c, profiler.h: track time spent compiling methods.
23806         * threads.c: track thread creation/destruction.
23807
23808 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
23809
23810         * profiler.c, profiler.h, profiler-private.h: profiling interface
23811         and sample implementation. Moved here so that it can be used also by
23812         the jit.
23813
23814 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
23815
23816         * reflection.c, reflection.h: keep types and other handles separate in
23817         the hash tables for referred tokens. Add guid for modules.
23818
23819 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23820
23821         * assembly.c: fix bugs found with valgrind.
23822         * metadata.h, metadata.c: added mono_metadata_guid_heap().
23823
23824 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
23825
23826         * threads: added icall support for getting current domain for
23827                    the thread.
23828  
23829 2002-04-13  Martin Baulig  <martin@gnome.org>
23830
23831         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
23832         (MonoDebugVarInfo): Added `index' field for register based addresses.
23833         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
23834         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
23835         `MonoDebugVarInfo *params' and `guint32 this_offset' with
23836         `MonoDebugVarInfo *this_var'.
23837
23838         * debug-symfile.c (relocate_variable): New static function to write
23839         a location description for a local variable or method parameter.
23840
23841 2002-04-12  Martin Baulig  <martin@gnome.org>
23842
23843         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
23844         stack offset and begin/end scope address of a local variable.
23845         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
23846         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
23847         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
23848
23849         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
23850         Added new relocation types for start/end scope of a local variable.
23851
23852 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23853
23854         * object.h: add mono_object_domain() macro.
23855         * reflection.c: handle typespecs.
23856         * icall.c: MonoMethod::get_Name() implementation.
23857
23858 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23859
23860         * icall.c: String::GetHashCode() icall implementation.
23861
23862 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23863
23864         * icall.c: String::IndexOfAny icall.
23865         * object.c, object.h: make array->max_length more useful.
23866         Intrduced mono_object_class() and mono_string_length() macros.
23867
23868 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23869
23870         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
23871         instead of g_unichar_isdigit.
23872
23873 2002-04-11  Nick Drochak  <ndrochak@gol.com>
23874
23875         * icall.c: Implement a simple Double.ToString().
23876
23877 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23878
23879         * appdomain.h: only io-layer.h is supposed to be included.
23880         * icall.c: explicitly import environ. Fix warning.
23881
23882 2002-04-10  Nick Drochak  <ndrochak@gol.com>
23883
23884         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
23885                 return true even if it's not Daylight Savings time.
23886                 Only return false for the case where the function isn't
23887                 implemented for a plaform (read Windows).
23888
23889 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23890
23891         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
23892         data with a mutex.
23893
23894 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
23895
23896         * mempool.c (mono_mempool_alloc): only use g_malloc when
23897         absolutely necessary.
23898
23899 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23900
23901         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
23902
23903         * class.c (mono_class_vtable): use domain mempool to allocate vtable
23904         (mono_class_proxy_vtable): use domain mempool
23905
23906 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23907
23908         * appdomain.h, appdomain.c: split initialization that requires the
23909         execution engine support into mono_runtime_init().
23910
23911 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23912
23913         * class.c (mono_class_init): don't include vtable inside MonoClass
23914         to save some memory, gather some statistics.
23915         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
23916
23917 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23918
23919         * icall.c: internalcall implementation for ValueType.Equals().
23920
23921 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
23922
23923         * object.c (mono_message_init): moved 
23924         (mono_runtime_exec_main): new arch. independent impl.
23925         (mono_runtime_invoke_array): new method - like
23926         mono_runtime_invoke, but you can pass an array of objects.
23927         (mono_remoting_invoke): new arch. independent impl.
23928         (mono_message_invoke): new arch. independent impl.
23929         (mono_runtime_class_init): new arch. independent impl.
23930         (mono_runtime_object_init): new arch. independent impl.
23931
23932 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23933
23934         * metadata.c, object.c, reflection.c: documented the exported
23935         functions.
23936
23937 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23938
23939         * icall.c: simpler code to pass the assembly builder data to corlib.
23940         Implement GetNestedTypes() internalcall.
23941
23942 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23943
23944         * class.c: warn if a type can't be loaded.
23945
23946 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
23947
23948         * image.h: typedef MonoImageOpenStatus
23949         * types.h: removed unused file
23950         
23951 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
23952
23953         * icall.c: Enum_ToObject accepts enum value arguments.
23954
23955 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23956
23957         * class.c: move initialization of properties, events and nested
23958         classes, so that they happen for interfaces, too.
23959
23960 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23961
23962         * icall.c: cleanup some ugly casts in Array_SetValue*.
23963
23964 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23965
23966         * icall.c: the values array fro enums is of the correct type, now.
23967         Implement (correctly) getFullName instead of assQualifiedName for
23968         MonoType.
23969         * reflection.h, reflection.c: added mono_type_get_name ().
23970
23971 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23972
23973         * assembly.c, image.h: for each MonoImage, record from wich assembly
23974         it was loaded.
23975         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
23976         Make Type.Assembly work.
23977
23978 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
23979
23980         * debug-symfile.h: use char* instead of gpointer to avoid
23981         unnecessary casts.
23982
23983         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
23984
23985         * icall.c (ves_icall_InternalExecute): impl. FielSetter
23986         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
23987
23988 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
23989
23990         * icall.c (mono_message_init): impl. (code cleanup)
23991         (ves_icall_InternalExecute): impl. FieldGetter
23992
23993         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
23994         defined we call all (non-static)methods through the vtable. 
23995
23996 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
23997
23998         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
23999         finalizer even though the memory is still referenced (and the chunk of
24000         memory is not freed).
24001
24002 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
24003
24004         * assembly.c: fix brokeness.
24005
24006 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
24007
24008         * class.c: kill some warnings. Check explicit interface method
24009         implementation also without considering the namespace.
24010         Load also literal strings in static class data.
24011
24012 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
24013
24014         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
24015         (default_assembly_name_resolver): Make the resolver take the
24016         "base" directory where the assembly was originally defined, so we
24017         can load DLLs that are in the same directory as the assembly that
24018         is being referenced.
24019
24020 2002-03-28  Dick Porter  <dick@ximian.com>
24021
24022         * file-io.h: 
24023         * file-io.c:
24024         * socket-io.c: 
24025         * unicode.h: 
24026         * unicode.c: Warning cleanups
24027
24028 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
24029
24030         * object.h, reflection.h: use the correct type instead of MonoObject.
24031
24032 2002-03-28  Martin Baulig  <martin@gnome.org>
24033
24034         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
24035         (mono_debug_update_symbol_file): Initialize classes if necessary.
24036
24037 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
24038
24039         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
24040         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
24041
24042 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
24043
24044         * assembly.h: fix function prototype.
24045         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
24046         * mono-endian.h: use const cast.
24047
24048 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
24049
24050         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
24051
24052 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
24053
24054         * loader.c: don't assert when a typeref can't be loaded, give
24055         a chance to the runtime to trow an exception instead.
24056         * loader.h: fix warning.
24057
24058 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
24059
24060         * class.c (mono_class_proxy_vtable): added proxy support
24061
24062 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
24063
24064         * icall.c: removed last of PAL calls, added System.Environment
24065         * file-io.h, file-io.c: MonoIO implementation
24066         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
24067
24068 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
24069
24070         * appdomain.c: do not use the byte marker in ldstr table lookup.
24071         * debug-helpers.c: allow two ':' to separate class and method name.
24072         * object.c: allocate arrays bounds with the GC, too.
24073         * verify: add a few more checks.
24074
24075 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
24076
24077         * reflection.c: output also literal strings. Allocate parameter data
24078         with GC_malloc() (thanks, Martin, for catching this!).
24079
24080 2002-03-26  Martin Baulig  <martin@gnome.org>
24081
24082         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
24083         include the `this' offset in the `param_offsets'.
24084
24085 2002-03-25  Martin Baulig  <martin@gnome.org>
24086
24087         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
24088         mono_debug_get_class() function to get the classes. Added new
24089         relocation types for arrays and strings.
24090         (mono_debug_get_class): New static function to search in all
24091         referenced assemblies for a metadata token.
24092
24093         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
24094
24095 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
24096
24097         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
24098         hold gc-allocated objects. Make the string heap a stream like the
24099         others. Removed duplicated code when writing stream info.
24100         Added asserts to catch possible buffer overflows. Set the sorted map
24101         for tables that need sorting. Added some documentation.
24102
24103 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
24104
24105         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
24106         for interned strings and vtables.
24107
24108 2002-03-24  Martin Baulig  <martin@gnome.org>
24109
24110         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
24111         it in the array since it was created with g_slist_prepend().
24112
24113 2002-03-24  Martin Baulig  <martin@gnome.org>
24114
24115         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
24116         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
24117         (mono_debug_method_from_token): Renamed to
24118         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
24119         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
24120
24121         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
24122         relocation types.
24123
24124         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
24125
24126 2002-03-24  Martin Baulig  <martin@gnome.org>
24127
24128         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
24129         (mono_debug_method_from_token): New func.
24130
24131         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
24132         New interncall, calls mono_debug_local_type_from_signature().
24133         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
24134         calls mono_debug_method_from_token().
24135
24136 2002-03-23  Martin Baulig  <martin@gnome.org>
24137
24138         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
24139         specifies the number of bytes to be converted, not the array size.
24140         Return the number of chars, not the number of bytes.
24141         (ves_icall_iconv_get_chars): The `byteCount' argument
24142         specifies the number of bytes to be converted, not the array size.
24143
24144 2002-03-23  Martin Baulig  <martin@gnome.org>
24145
24146         * reflection.h (MonoReflectionSigHelper): New type.
24147
24148         * reflection.c (mono_reflection_sighelper_get_signature_local),
24149         (mono_reflection_sighelper_get_signature_local): New functions.
24150
24151         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
24152         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
24153         interncalls.
24154
24155 2002-03-23  Martin Baulig  <martin@gnome.org>
24156
24157         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
24158         is_writeable is set.
24159         (mono_raw_buffer_update): New function to write the modified map
24160         back to disk.
24161
24162         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
24163
24164         * debug-symfile.c (mono_debug_update_symbol_file): Call
24165         mono_raw_buffer_update() when done writing.
24166
24167 2002-03-23  Martin Baulig  <martin@gnome.org>
24168
24169         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
24170
24171         * debug-symfile.c: Added support for arguments and local variables.
24172
24173 2002-03-23  Dick Porter  <dick@ximian.com>
24174
24175         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
24176         protected by ifdefs, hence breaking the w32 build.
24177
24178 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24179
24180         * object.c: implement is_interned() the right way.
24181
24182 2002-03-21  Martin Baulig  <martin@gnome.org>
24183
24184         * debug-symfile.[ch]: New files to handle debugging information
24185         files. There's also support to dynamically update these symbol
24186         files to include machine dependent information.
24187
24188 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
24189
24190         * threads.c (mono_thread_create): new function to create thread
24191         from C
24192
24193 2002-03-20  Martin Baulig  <martin@gnome.org>
24194
24195         * icall.c (ves_icall_InternalInvoke): Create a new object if the
24196         method is a constructor.
24197         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
24198         points to ves_icall_InternalInvoke().
24199
24200 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
24201
24202         * file-io.c: Flush shouldn't throw exceptions.
24203
24204 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
24205
24206         * file-io.c: FileStream flush support; FileSetLength now
24207         restores file pointer.
24208
24209 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
24210
24211         * class.c: set image for pointer classes.
24212
24213 2002/03/19  Nick Drochak <ndrochak@gol.com>
24214
24215         * sysmath.c: Forgot one.
24216
24217 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
24218
24219         * sysmath.c: Avoid redefining existing names.
24220
24221 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
24222
24223         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
24224         handled by runtime as icall rather than dllimport from libm.so
24225         * file-io.c, file-io.h: fixed handle argument type.
24226
24227 2002-03-18  Dick Porter  <dick@ximian.com>
24228
24229         * reflection.c (mono_image_get_type_info): rename interface to
24230         iface, because of "#define interface struct" on windows.
24231
24232 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
24233
24234         * class.c, class.h: rename and export mono_ptr_class_get().
24235         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
24236         * reflection.c, reflection.h, icall.c: better/saner type name
24237         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
24238         method signatures.
24239
24240 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
24241
24242         * class.c (mono_class_init): removed hardcoded GHC_SLOT
24243
24244         * icall.c (ves_icall_InternalInvoke): impl.
24245
24246 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
24247
24248         * reflection.c: output the interface map table, too.
24249
24250 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
24251
24252         * class.c (class_compute_field_layout): separate computation of 
24253         static field layout
24254
24255 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
24256
24257         * icall.c: added System.Buffer support.
24258         * file-io.c: moved file icalls from PAL to FileStream.
24259
24260 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
24261
24262         * icall.c (ves_icall_System_Object_GetHashCode): impl.
24263
24264 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
24265
24266         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
24267
24268 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24269
24270         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
24271
24272 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
24273
24274         * debug-helpers.{c,h}: moved here from monograph some useful functions
24275         to locate a method by name/signature in a class or image. Included
24276         also a small and flexible IL disassembler.
24277
24278 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24279
24280         * reflection.c: fixup tokens in methods with small header size, too.
24281
24282 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
24283
24284         * object.c (mono_string_to_utf8): remove assert(!error), instead
24285         print a warning. 
24286
24287 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
24288
24289         * icall.c: update to the new mono_Array_class_get interface.
24290
24291 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
24292
24293         * appdomain.c, object.c: Boehm-GC enable.
24294         * icall.c: make get_data_chunk() support split data requests.
24295         Ensure a class is initialized in more cases. Return only the first
24296         property found in GetProperties() or the compiler gets confused. 
24297         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
24298         * reflection.h, reflection.c: add fixup mechanism for field and method
24299         tokens. Initialize assembly->typeref in a single place. Output
24300         properties after events. Support custom attributes for events, too.
24301         Typo fix for paramter custom attrs.
24302
24303 2002-03-07  Martin Baulig  <martin@gnome.org>
24304
24305         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
24306
24307 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
24308
24309         * class.c (mono_array_class_get): fix. for multi. dim. arrays
24310
24311 2002-03-06  Martin Baulig  <martin@gnome.org>
24312
24313         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
24314         non-zero lower bounds. See testcases #F10-#F13.
24315
24316 2002-03-05  Martin Baulig  <martin@gnome.org>
24317
24318         * exception.c (mono_get_exception_argument_out_of_range): New exception.
24319
24320         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
24321         ves_icall_System_Array_GetValue(), only calculate the absolute array position
24322         here.
24323         (ves_icall_System_Array_SetValue): Likewise.
24324         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
24325         as argument and does the actual work. This function is used when copying a
24326         multi-dimensional array.
24327         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
24328         now do all the widening conversions of value types.
24329         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
24330
24331 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24332
24333         * class.c: remove some magic numbers and use the smbolic names,
24334         instead. Added init_events() to load event info at class init time.
24335         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
24336         and mono_metadata_methods_from_event().
24337         * reflection.h, reflection.c: added support for writing out the evnets
24338         related information.
24339
24340 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
24341
24342         * reflection.h, icall.c: use a different method (GetInterfaces)
24343         to gather interface info and add isbyref, isprimitive and
24344         ispointer to the ves_icall_get_type_info() return value.
24345
24346 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
24347
24348         * class.h: stared adding support for events.
24349         * icall.c: split find_members implementation. Added debug icall to get
24350         the address of an object.
24351         * reflection.c: handle TypeBuilders in mono_type_get_object().
24352
24353 2002-03-01  Martin Baulig  <martin@gnome.org>
24354
24355         * icall.c (ves_icall_System_Array_GetLength): This must throw an
24356         ArgumentOutOfRangeException(), not an ArgumentException().
24357         (ves_icall_System_Array_GetLowerBound): Likewise.
24358         (ves_icall_System_Array_GetValue): Improved argument checking.
24359         (ves_icall_System_Array_SetValue): Improved argument checking.
24360
24361 2002-03-01  Martin Baulig  <martin@gnome.org>
24362
24363         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
24364         called with invalid arguments rather than just dying with g_assert().
24365         (ves_icall_System_Array_SetValue): Likewise.
24366         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
24367         raise a NotImplementedException instead.
24368         (ves_icall_System_Array_GetLength): Added argument checking.
24369         (ves_icall_System_Array_GetLowerBound): Added argument checking.
24370
24371 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
24372
24373         * object.h (mono_assert): new macros mono_assert and
24374         mono_assert_not_reached
24375
24376 2002-02-28  Martin Baulig  <martin@gnome.org>
24377
24378         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
24379         and "System::String::IsInterned" to "System::String::_IsInterned".
24380
24381 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
24382
24383         * icall.c: remove hacks for typebuilder. Added icall to create a
24384         modified type from a tybebuilder.
24385         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
24386         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
24387         to create a backing MonoClass for a TypeBuilder.
24388
24389 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24390
24391         * class.c, class.h: more refactoring of class init.
24392         Export mono_class_setup_mono_type() and mono_class_setup_parent().
24393
24394 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
24395
24396         * marshal.c, marshal.h: start of marshaling interface.
24397
24398 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
24399
24400         * icall.c: fix order in assembly qualified name icall.
24401
24402 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
24403
24404         * class.c: do not free str, since we store it in the hash table.
24405         * reflection.h: add label field to MonoILExceptionInfo.
24406         * reflection.c: handle references to more than one assembly. Handle
24407         case when there isn't a module created in the assembly.
24408
24409 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
24410
24411         * class.c: Fix typo. Start refactoring of class init code.
24412
24413 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
24414
24415         * appdomain.c: exit with 1 on error.
24416         * class.c: we already have the name in MonoClassField.
24417         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
24418         MonoStreamHeader instead of an offset of image->raw_metadata.
24419
24420 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
24421
24422         * appdomain.c (mono_init): Be even more descriptive about the error.
24423
24424 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
24425
24426         * appdomain.c: give the user an informative message when corlib can't
24427         be loaded.
24428
24429 2002-02-26  Martin Baulig  <martin@gnome.org>
24430
24431         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
24432         New icall to get the time zone data.
24433
24434 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24435
24436         * reflection.c: set virtual and raw size of section correctly.
24437         * threads.c: transfer domain information to newly created threads.
24438
24439 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
24440
24441         * class.c: when instancing a class in a domain, load the default
24442         vaules for static fields from the constant table. Fix System.Enum to
24443         not be an enum.
24444         * icall.c: implement Object::GetType() internalcall. Implemented
24445         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
24446         Fixed checking of binding flags in find_members().
24447         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
24448         * reflection.c: handle enumerations when writing to the constant
24449         table. Use a different object cache for types.
24450
24451
24452 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
24453
24454         * object.c (mono_object_isinst): fix for arrays
24455
24456         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
24457
24458 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
24459
24460         * object.c: don't use mprotect ()  and fix intern pool hash table
24461         lookup for big endian systems.
24462
24463 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24464
24465         * icall.c: change type_is_subtype_of () signature.
24466
24467 2002-02-21  Mark Crichton  <crichton@gimp.org>
24468
24469         * rand.c, rand.h: Added random number generator for
24470         System.Security.Cryptography classes.
24471
24472         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
24473
24474         * icall.c: Added System.Security.Cryptography calls.
24475
24476 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
24477
24478         * class.c, icall.c, metadata.c: better support for pointer types.
24479         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
24480         * reflection.c: Add support for getting custom attrs for properties
24481         and simplify some code.
24482
24483 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24484
24485         * icall.c: change getToken () and add custom attribute GetBlob()helper
24486         method.
24487         * reflection.h: add custom attrs array to the reflection builder structures.
24488         * reflection.c: encode and emit custom attributes for all the relevant
24489         reflection objects. Cache fieldref and methodref tokens. Change
24490         mono_image_create_token() interface to take a MonoDynamicAssembly.
24491         More complete custom attributes decoder. Load custom attributes for
24492         Assembly, Field, Method and Constructor objects, too. Make the
24493         returned array an Attribute[] one, not object[]. Added
24494         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
24495         custom attribute constructor.
24496
24497 2002-02-20  Dick Porter  <dick@ximian.com>
24498
24499         * icall.c:
24500         * rawbuffer.c:
24501         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
24502         problem code out for now).
24503
24504 2002-02-19  Radek Doulik  <rodo@ximian.com>
24505
24506         * object.c (mono_ldstr): use hash table to avoid multiple swapping
24507
24508 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
24509
24510         * icall.c: register the GetCustomAttributes method.
24511         * object.c, object.h: add mono_string_new_len ().
24512         * reflection.h, reflection.c: added mono_runtime_invoke(),
24513         mono_install_runtime_invoke(). Added
24514         mono_reflection_get_custom_attrs () to load custom attributes and
24515         create the attribute objects.
24516
24517 2002-02-19  Dick Porter  <dick@ximian.com>
24518         * threads-dummy-types.c:
24519         * threads-dummy-types.h:
24520         * threads-dummy.c:
24521         * threads-dummy.h:
24522         * threads-pthread-types.c:
24523         * threads-pthread-types.h:
24524         * threads-pthread.c:
24525         * threads-pthread.h:  Deleted obsolete files
24526
24527 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
24528
24529         * class.c (mono_class_vtable): runtime init the class when we
24530         allocate static class data.
24531
24532         * icall.c (ves_icall_System_Array_SetValue): check for null values.
24533
24534         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
24535         and String - but we will need generic marshalling support in the
24536         future. 
24537         (mono_init): set the domain name in a ms compatible way
24538
24539         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
24540         String[].
24541
24542 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
24543
24544         * object.c (mono_array_clone): use alloca() instead of g_malloc  
24545         for sizes
24546
24547         * appdomain.c (mono_domain_unload): impl.
24548
24549 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24550
24551         * appdomain.c, object.c: fix intern pool implementation.
24552         * class.c: fix alignment code.
24553
24554 2002-02-16  Radek Doulik  <rodo@ximian.com>
24555
24556         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
24557         and s2 > s1, just copy lower bytes to be compatible with little
24558         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
24559         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
24560
24561         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
24562         force big_endian to be 1 for big endian machines 
24563         (ves_icall_iconv_new_decoder): ditto
24564
24565 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
24566
24567         * socket-io.c (convert_sockopt_level_and_name): If the system
24568         doesn't define SOL_IP or SOL_TCP, get them by hand using
24569         getprotobyname() and caching the values (because this could be a
24570         slow operation).
24571         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
24572         Use the appropriate struct when the system does support it. Ie,
24573         not all systems have struct ip_mreqn so use struct ip_mreq when
24574         appropriate.
24575
24576 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
24577
24578         * reflection.c: handle finally clauses.
24579
24580 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
24581
24582         * socket-io.c: use g_snprintf() instead of snprintf.
24583
24584 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
24585
24586         * reflection.c (mono_param_get_objects): Cast second argument to
24587         mono_method_get_param_names to a const char** to silence the
24588         compiler warning.
24589
24590         * appdomain.c (mono_domain_assembly_open): Put parens around the
24591         truth statement in the for-loop.
24592
24593         * unicode.c (iconv_convert): Got rid of a compiler warning about
24594         int i being unused when the system has a new iconv.
24595         (iconv_get_length): Same.
24596
24597         * image.c (load_class_names): Cast the second argument to
24598         g_hash_table_insert() to char* to hush compiler warnings about the
24599         arg being a const.
24600         (mono_image_open): Same here.
24601
24602         * socket-io.c: Don't conditionally include sys/filio.h or
24603         sys/sockio.h here anymore since we now get them from
24604         io-layer/io-layer.h
24605         (inet_pton): If the system doesn't support inet_aton, implement
24606         using inet_addr and also #define INADDR_NONE if it isn't defined
24607         by the system.
24608
24609 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
24610
24611         * metadata.c, metadata.h: added function to get packing and size info
24612         of a typedef.
24613         * reflection.h, reflection.c: handle field RVA data. Save info about
24614         the table layout if needed. Assign typedef indexes to all the types
24615         before dumping the info about them to avoid forward reference problems.
24616
24617 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
24618
24619         * socket-io.c (convert_sockopt_level_and_name): ifdef
24620         SO_ACCEPTCONN because it is not defined on my system (old debian)
24621
24622 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
24623
24624         * opcode.c: use stddef.h to get NULL.
24625
24626 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
24627
24628         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
24629         for FIONBIO, FIONREAD and SIOCATMARK.
24630         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
24631         define INADDR_NONE and besides, inet_addr() is deprecated and
24632         should not be used. Use inet_pton() instead - it also has the
24633         added bonus that it can easily handle IPv6 addresses as well.
24634         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
24635
24636 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
24637
24638         * decimal.c: remove _MSC_VER conditional.
24639
24640 2002-02-13  Dick Porter  <dick@ximian.com>
24641
24642         * socket-io.c: 
24643         * icall.c: Internal calls for Blocking, Select, Shutdown,
24644         GetSocketOption and SetSocketOption
24645
24646 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24647
24648         * assembly.cs: better resolver: use it instead of some kludgy
24649         code.
24650
24651 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
24652
24653         * reflection.c: the best way to speed-up the compiler is to avoid
24654         infinite loops.
24655
24656 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
24657
24658         * class.c (mono_class_vtable): changed the object layout
24659         (obj->vtable->class). 
24660         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
24661
24662 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24663
24664         * assembly.c: look for assemblies in the assembly dir, too.
24665
24666 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24667
24668         * class.c: fix thinko in mono_class_from_type().
24669
24670 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24671
24672         * exception.h, exception.c: added TypeLoadException.
24673         * object.h, object.c: added mono_array_clone ().
24674         * icall.c: handle throwOnError in AssemblyGetType().
24675         Added Array.Clone().
24676         * opcode.h, opcode.c: use a single value for the opcode val.
24677         Compile fix for non-gcc compilers.
24678
24679 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
24680
24681         * opcodes.c, opcodes.h: export interesting info about opcodes.
24682
24683 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
24684
24685         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
24686         icalls. 
24687
24688         * class.c (class_compute_field_layout): set element_class for enums
24689         (mono_class_create_from_typedef): set element_class for normal classes
24690
24691         * icall.c (ves_icall_System_Enum_get_value): impl.
24692
24693         * class.c (mono_class_create_from_typedef): do not set valuetype
24694         flag for System.ValueType and System.Enum
24695
24696 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
24697
24698         * unicode.c (iconv_convert): fix big endian problem.
24699
24700 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24701
24702         * class.c: add asserts if we are ever going to scribble over memory.
24703         * socket-io.c: not all systems have AF_IRDA defined.
24704
24705 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
24706
24707         * class.c (class_compute_field_layout): do not consider static
24708         fields to compute alignment
24709
24710 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
24711
24712         * appdomain.c (mono_appdomain_get): impl.
24713         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
24714
24715 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
24716
24717         * icall.c: ignore "file://" prefix when loading an assembly.
24718
24719 2002-01-23  Dick Porter  <dick@ximian.com>
24720
24721         * socket-io.c:
24722         * icall.c:
24723         * Makefile.am: Added socket support
24724
24725 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24726
24727         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
24728         code back.  This should return the assemblies that are loaded by
24729         the runtime on behalf of an application domain. 
24730
24731         The current implementation is still broken, it just returns every
24732         assembly loaded, but until we get real applications domain this
24733         will do.
24734
24735 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
24736
24737         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
24738         AppDomain object.
24739
24740 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24741
24742         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
24743         the mono_class_from_name lookup.
24744         (ves_icall_get_parameter_info): ditto.
24745         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
24746         method.
24747         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
24748
24749 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
24750
24751         * class.c: load also nested classes on class init.
24752         System.ValueType instance methods gets passed boxed
24753         values, unless methods in derived classed that get a pointer to the
24754         data.
24755         * icall.c: use better name parsing code in GetType().
24756         * image.c, image.h: add mono_image_loaded ().
24757         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
24758         * reflection.c, reflection.h: added mono_reflection_parse_type().
24759
24760 2002-01-22  Veronica De Santis <veron78@interfree.it>
24761
24762         * icall.c : Added mapping of internal calls for Manual and Auto reset events
24763         * threads.c : Added the implementation of internal calls for events
24764         * threads.h : Added prototypes of internal calls for events
24765         
24766 2002-01-21  Radek Doulik  <rodo@ximian.com>
24767
24768         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
24769
24770 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
24771
24772         * class.c (mono_class_init): set min_align to 1 (instead of 0)
24773         (mono_class_value_size): use min_align
24774
24775 2002-01-20  Dick Porter  <dick@ximian.com>
24776
24777         * threads.h:
24778         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
24779         so it compiles on w32.
24780
24781 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
24782
24783         * metadata.c (mono_type_stack_size): impl.
24784
24785         * class.c (mono_class_get_field): impl. memberref token
24786
24787 2002-01-16 Veronica De Santis <veron78@@interfree.it>
24788
24789         * icall.h : Added the internal calls mapping for CreateMutex_internal
24790                     and ReleaseMutex_internal.
24791         * threads.h : Added the prototype of mutexes internal calls.
24792         * threads.c : Added the implementations of mutexes internal calls.
24793
24794 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
24795
24796         * metaparse.h: removed unused file.
24797         * reflection.c, reflection.h: added stream_data_align () function 
24798         to align data in streams and keep stream aligned. Add support for
24799         exception support in method headers.
24800
24801 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
24802
24803         * unicode.c: make iconv_convert () return the number of bytess written
24804         in the output buffer.
24805
24806 2002-01-15  Dick Porter  <dick@ximian.com>
24807         * threads.c: Make the runtime's idea of infinite timeouts coincide
24808         with the class library's
24809
24810         Fix a particularly egregious bug in mono_thread_cleanup(). That
24811         code was so utterly bogus it must have been written on a Monday.
24812
24813 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
24814
24815         * reflection.h: add subtypes field to TypeBuilder.
24816         * reflection.c: encode constants for literal fields.
24817         Handle subtypes. Fix user string token (and add a zero byte)
24818         at the end.
24819         
24820 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
24821
24822         * class.c (mono_class_init): bug fix: assign slot numbers for
24823         abstract methods.
24824
24825 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24826
24827         * reflection.c: don't try to output a code RVA for abstract methods.
24828         Small fixes for method header format. Output parameter info to the
24829         ParamDef table. Save method overriding info to MethodImpl table.
24830         Fix property support. Allow typedef.extends to be a type in the
24831         building assembly.
24832         * verify.c: fix off-by-one error.
24833
24834 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
24835
24836         * class.c: fix mono_class_from_mono_type () for szarray types.
24837         Remove unused cache check in mono_class_from_type_spec().
24838         * icall.c: *type_from_name () functions handle simple arrays and byref.
24839         * reflection.c: handle byref and szarray types. Handle methods without
24840         body (gets P/Invoke compilation working). Handle types and fields in
24841         get_token ().
24842         * reflection.h: add rank to MonoTypeInfo.
24843
24844 2002-01-10  Dick Porter  <dick@ximian.com>
24845
24846         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
24847         internal calls
24848
24849 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
24850
24851         * icall.c: initialize class in type_from_handle ().
24852         Loop also in parent classes for get_method ().
24853         * reflection.c: properly encode class and valuetype types.
24854         Start on encoding TypeBuilder types. Handle fieldrefs.
24855         Use correct length when registering a user string.
24856         Handle ConstructorBuilder and MonoMethod in get_token ().
24857         Make mono_type_get_object () aware of cached types.
24858         * object.c: back out change to mono_string_new ().
24859
24860 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
24861         * object.c: mono_string_new should return a NULL when the string 
24862         passed in is NULL -- not try to deference it.
24863         
24864 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
24865
24866         * icall.c: hack to make IsSubType work for TypeBuilders.
24867         * reflection.c: emit constructors before methods.
24868         Retrieve param names in mono_param_get_objects().
24869
24870 2002/01/05  Nick Drochak  <ndrochak@gol.com>
24871
24872         * Makefile.am: fix list of headers and sources so automake 1.5
24873         doesn't complain. Removed \# at end of list.
24874
24875 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
24876
24877         * reflection.c: get token for a method ref. Set return type of
24878         constructor to void.
24879         * loader.c: debug message.
24880         * class.c: typo fix.
24881
24882 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
24883
24884         * icall.c: fix array init with rank > 1. FindMembers
24885         loops in parent class as well.
24886         * image.c: do not insert nested types in name cache.
24887         * reflection.c: warning fix.
24888         * reflection.h: add override method (for interface impl).
24889
24890 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
24891
24892         * metadata.c: fix customattr decoding.
24893
24894 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
24895
24896         * rawbuffer.cs: Added native Win32 implementation, avoids using
24897         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
24898
24899 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
24900
24901         * class.c: make the low-level routines handle the cache.
24902
24903 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
24904
24905         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
24906
24907 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
24908
24909         * class.c: fix mono_array_element_size() for objects.
24910         * class.h, class.c: add properties to MonoClass and load them
24911         at init time.
24912         * icall.c: check with isinst() when assigning a value to an array
24913         instead of requiring the classes to match exactly.
24914         Implemented icall for System.Type::GetType().
24915         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
24916         enums. Handle bindingflags when looking for methods and fields.
24917         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
24918         and mono_metadata_methods_from_property().
24919         * reflection.h, reflection.c: added structures for propreties,
24920         parameters and enums. Implemented mono_property_get_object() and
24921         mono_param_get_objects().
24922
24923 2001-12-18  Dick Porter  <dick@ximian.com>
24924
24925         * file-io.c: Use mono_string_to_utf16() instead of
24926         mono_string_chars()
24927
24928         * object.c: Added mono_string_to_utf16(), which copies the non
24929         NULL-terminated MonoString into a new double-null-terminated
24930         buffer.
24931
24932 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
24933
24934         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
24935
24936 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
24937
24938         * file-io.c: raise exceptions if handle is invalid.
24939
24940 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
24941
24942         * assembly.c: yet another check for mscorlib.
24943         * class.c, class.h: load nesting info for classes.
24944         * icall.c: many new functions to support the Reflection classes.
24945         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
24946         * reflection.h, reflection.c: mono_image_create_token(),
24947         mono_assembly_get_object(), mono_type_get_object(),
24948         mono_method_get_object(), mono_field_get_object(): methods to return
24949         objects that parallel the C representation of assemblies, types,
24950         methods, fields.
24951
24952 2001-12-11  Dick Porter  <dick@ximian.com>
24953
24954         * icall.c:
24955         * file-io.c: Internal calls for file IO.
24956
24957 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
24958
24959         * tabledefs.h: missing FileAttributes.
24960         * verify.h, verify.c: use is_valid_string () to simplify and check for
24961         valid strings more correctly. Fix warnings and speeling.
24962         Check more tables: Filed, File, ModuleRef, StandAloneSig.
24963         Check code: branches, maxstack, method calls.
24964
24965 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
24966
24967         * object.c (mono_object_allocate): removed static, so that the jit
24968         can allocate value types.
24969
24970         * icall.c (ves_icall_System_DateTime_GetNow): impl.
24971
24972 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24973
24974         * class.c: init enum types right away and register the
24975         token->MonoClass map in mono_class_create_from_typedef ().
24976         * verify.h, verify.c: first cut of the verifier.
24977         * pedump.c: add --verify switch to verify metadata tables.
24978         * tabledefs.h: add some missing enums.
24979
24980 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
24981
24982         * class.c (mono_install_runtime_class_init): impl.
24983         (mono_class_init): renamed mono_class_metadata_init to
24984         mono_class_init, also removed the metadata_inited flag
24985
24986         * object.c (mono_object_isinst): use faster algorithm
24987
24988 2001-11-30  Radek Doulik  <rodo@ximian.com>
24989
24990         * mono-endian.h: reverted last change
24991         added function prototypes
24992
24993         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
24994         add mono-endian.c back
24995
24996         * mono-endian.c: returned back, as Paolo pointed out, it's needed
24997         for unaligned access, I've mistaked it with endianess. I am
24998         sorry.
24999         (mono_read16): fix reverted endianess
25000         (mono_read64): ditto
25001         (mono_read32): ditto
25002
25003 2001-11-30  Dick Porter  <dick@ximian.com>
25004
25005         * exception.c: Implement mono_exception_from_name()
25006
25007 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
25008
25009         * metadata.h, metadata.c: remove params_size and locals_size and their
25010         calculation from the metadata code: they are only usefult to the
25011         interp.
25012
25013 2001-11-29  Radek Doulik  <rodo@ximian.com>
25014
25015         * object.c (mono_ldstr): swap bytes here, it's probably not the
25016         best place, but works for me now, I'll redo it once I know mono
25017         better, also note that I add PROT_WRITE and don't reset back, also
25018         note that it's only affects big endians, so x86 should be OK
25019
25020         * mono-endian.h (read16): use just glib macros for both endians
25021
25022         * mono-endian.c: removed as glib macros are used in in
25023         mono-endian.h so we don't need to care about endianess for read
25024         macros as glib does that for us already
25025
25026 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
25027
25028         * class.h, class.h: take minimum alignment into consideration so
25029         that the fields of a class remain aligned also when in an array.
25030
25031 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
25032
25033         * loader.h, loader.c: add mono_method_get_param_names().
25034         * class.c: 0-init class fields.
25035
25036 2001-11-26  Dick Porter  <dick@ximian.com>
25037
25038         * icall.c:
25039         * threads-types.h:
25040         * threads.c: New file that handles System.Threading on all platforms
25041
25042         * object.c: 
25043         * object.h: Remove the synchronisation struct from MonoObject,
25044         replace it with a pointer that gets initialised on demand
25045
25046         * Makefile.am: Replace all the system-specific threading code with
25047         a single file that uses the new wrapper library
25048
25049 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
25050
25051         * class.c, class.h: add mono_install_trampoline() so that the runtime
25052         can register a function to create a trampoline: removes the ugly
25053         requirement that a runtime needed to export arch_create_jit_trampoline.
25054         * object.h, object.c: added mono_install_handler() so that the runtime
25055         can install an handler for exceptions generated in C code (with
25056         mono_raise_exception()). Added C struct for System.Delegate.
25057         * pedump.c: removed arch_create_jit_trampoline.
25058         * reflection.c: some cleanups to allow registering user strings and
25059         later getting a token for methodrefs and fieldrefs before the assembly
25060         is built.
25061         * row-indexes.h: updates and fixes from the new ECMA specs.
25062
25063 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
25064
25065         * class.h, class.c: add enum_basetype field to MonoClass.
25066         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
25067         to get index in the constant table reated to a field, param or
25068         property.
25069         * reflection.h, reflection.c: handle constructors. Set public-key and
25070         version number of the built assembly to 0.
25071         * row-indexes.h: update from new ECMA spec.
25072
25073 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
25074
25075         * class.h, class.c: add a max_interface_id to MonoClass.
25076         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
25077         since it's used to do that. Added mono_type_type_from_obj().
25078         Make GetType() return NULL instead of segfaulting if the type was not
25079         found. Handle simple arrays in assQualifiedName.
25080         * object.h: add a struct to represent an Exception.
25081         * reflection.c: output call convention in method signature.
25082         Add code to support P/Invoke methods and fixed offsets for fields.
25083
25084 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
25085
25086         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
25087         the value.
25088         * icall.c: use mono_array_addr instead of array->vector: fixes the
25089         reflection image writing.
25090         * reflection.c: init call convention byte to 0 in method signature.
25091         Encode the property signature. Don't output property-related methods
25092         twice. Really process the properties for a type (don't cast a field to
25093         a property, my mom always told me that).
25094         Fix 64 bit issues in pointer alignment in a different and more
25095         readable way.
25096
25097 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
25098
25099         * loader.h: Removed type class from MonoDefaults, added monotype
25100
25101         * loader.c: Loaded MonoType, removed loading of Type
25102
25103         * icall.c (my_mono_new_object): Now returns a System.MonoType,
25104         and fills in System.Type._impl with a RuntimeTypeHandle rather
25105         than the actual MonoClass *
25106
25107         (ves_icall_type_from_handle): change from type_class to
25108         monotype_class
25109
25110         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
25111         implemented
25112
25113         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
25114         implemented
25115
25116         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
25117
25118         (ves_icall_System_Reflection_Assembly_GetType): implemented
25119
25120         (ves_icall_System_MonoType_assQualifiedName): implemented
25121
25122         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
25123
25124 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
25125
25126         * assembly.c (mono_assembly_open): Implement a cache for the
25127         assemblies. 
25128
25129         (mono_assembly_close): only destroy the assembly when the last
25130         reference is gone.
25131         
25132 2001-11-09  Dick Porter  <dick@ximian.com>
25133
25134         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
25135
25136 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
25137
25138         * class.c (mono_class_metadata_init): bug fix: compute the right slot
25139
25140 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
25141
25142         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
25143         from Martin Weindel.
25144         * object.h: add mono_string_chars ().
25145
25146 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
25147
25148         * reflection.c (build_compressed_metadata): Eliminates warnings
25149         and uses 64-bit clean code.
25150
25151         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
25152         (mono_type_equal): Change signature to eliminate warnings.
25153
25154 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
25155
25156         * icall.c, loader.c: remove the internalcall array constructors.
25157         Changes to match the new MonoArray structure.
25158         * object.h, object.c: an array object doesn't allocate an extra
25159         vector. Add mono_array_new_full () to create jagged arrays easily.
25160
25161 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
25162
25163         * metadata.h, metadata.c: add mono_metadata_field_info () to
25164         retreive all the info about a field from vairous tables.
25165         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
25166         * class.h, class.c: augment MonoClassField with more info.
25167         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
25168         policy and load a field's RVA if needed.
25169
25170 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
25171
25172         * class.c (mono_class_metadata_init): create a trampoline for all
25173         virtual functions instead of actually compiling them.
25174
25175 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
25176
25177         * class.h, class.c: include name in MonoClassField.
25178         * class.c: fix fundamental type of System.Object and System.String.
25179         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
25180         tokens in ldtoken.
25181         * icall.c: remove internalcalls for the Reflection stuff that is now
25182         done in C# code.
25183         * loader.c: mono_field_from_memberref () implementation.
25184         * mono-endian.c: thinko (s/struct/union/g).
25185         * object.c, object.h: make the mono_string_* prototypes actually use
25186         MonoString instead of MonoObject.
25187         * reflection.c, reflection.h: updates for changes in the reflection
25188         code in corlib: we use C structures that map to the actual C# classes.
25189         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
25190         fat method header if needed and use the info from the ILGenerator for
25191         methods. Handle fields in types. Misc fixes.
25192
25193 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
25194
25195         * class.c (mono_class_metadata_init): bug fix: always allocate
25196         space for static class data
25197
25198 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
25199
25200         * class.c (mono_compute_relative_numbering): use relative
25201         numbering to support fast runtime type checks.
25202
25203 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
25204
25205         * class.c (mono_class_create_from_typeref): added debugging output
25206         to print class name when MonoDummy is returned instead of real class
25207
25208 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
25209
25210         * class.c (mono_class_metadata_init): interface offset table now
25211         contains pointers into the vtable - this is more efficient for the jit
25212
25213 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
25214
25215         * class.c (mono_class_metadata_init): use a temporary vtable (the
25216         old algorithm only worked for the interpreter, but not for the jit)
25217
25218 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
25219
25220         * loader.c (method_from_memberref): use mono_class_get to get the
25221         class of an array instead of using System.Array directly.
25222         (mono_get_method): also add MEMBERREF methods to the method cache
25223         which usefull for arrays.
25224
25225 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
25226
25227         * pedump.c (arch_compile_method): added to compute vtable entry
25228
25229         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
25230         number of interfaces.
25231         
25232         * class.h: merged MonoArrayClass into MonoClass
25233
25234         * class.c (mono_class_create_from_typedef): compute the vtable size and
25235         allocate space to include the vtable inside MonoClass
25236         (mono_class_metadata_init): initialize the vtable
25237
25238 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
25239
25240         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
25241         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
25242         * image.c: endian fixes by Laurent Rioux.
25243         * object.h, object.c: rename MonoStringObject to MonoString and
25244         MonoArrayObject to MonoArray. Change some function names to conform to
25245         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
25246         guint16* as first argument, so don't use char*.
25247         Provide macros to do the interesting things on arrays in a portable way.
25248         * threads-pthread.c: updates for the API changes and #include <sched.h>
25249         (required for sched_yield()).
25250         * icall.c: updates for the API changes above.
25251         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
25252         platforms that need them.
25253
25254 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
25255
25256         * class.c: set the correct type for all the fundamental
25257         type when loading the class.
25258
25259 2001-10-05  Dick Porter  <dick@ximian.com>
25260
25261         * threads-pthread.c (pthread_mutex_timedlock): Simple
25262         compatibility version for C libraries that lack this call.
25263
25264 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25265
25266         * class.c: MonoTypes stored in MonoClass are stored as
25267         fundamental MonoTypes when the class represents a
25268         fundamental type (System.Int32, ...).
25269         The TypeHandle return by ldtoken is a MonoType*.
25270         * icall.c: ves_icall_get_data_chunk () write out all the
25271         PE/COFF stuff. Implement ves_icall_define_method (),
25272         ves_icall_set_method_body (), ves_icall_type_from_handle ().
25273         * image.c: properly skip unknown streams.
25274         * loader.h, loader.c: add type_class to mono_defaults.
25275         * metadata.c, metadata.h: export compute_size () as
25276         mono_metadata_compute_size () with a better interface.
25277         Typo and C&P fixes.
25278         * pedump.c: don't try to print the entry point RVA if there is no entry point.
25279         * reflection.c, reflection.h: many cleanups, fixes, output method
25280         signatures and headers, typedef and typeref info, compress the metadata
25281         tables, output all the heap streams, cli header etc.
25282         * row-indexes.h: typo fixes.
25283
25284 2001-10-04  Dick Porter  <dick@ximian.com>
25285
25286         * object.h: Add a synchronisation mutex struct to MonoObject
25287
25288         * object.c (mono_new_object): Initialise the object
25289         synchronisation mutexes
25290
25291         * icall.c: System.Threading.Monitor internal calls
25292         
25293         * threads-pthread.h:
25294         * threads-pthread.c: System.Threading.Monitor internal calls
25295
25296         * threads-types.h: New file, includes the system-specific thread
25297         structures
25298         
25299         * threads-pthread-types.h:
25300         * threads-pthread-types.c: New files, handle pthread-specific
25301         synchronisation types
25302
25303         * threads-dummy-types.h: 
25304         * threads-dummy-types.c: New files of dummy support for
25305         thread-specific types
25306
25307         * metadata.c:
25308         * image.c:
25309         * pedump.c: include mono-endian.h not endian.h
25310         
25311         * Makefile.am: More threads files.
25312         Name mono-endian.h not endian.h
25313
25314 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
25315
25316         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
25317         stuff and implement a few more bits.
25318         * icall.c: a field needs to be dereferenced twice. Do not use the same
25319         name for two variables in the same scope.
25320         * image.c, image.h: cleanups.
25321
25322 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
25323
25324         * class.c (mono_class_metadata_init): bug fix: compute the right size
25325
25326 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
25327
25328         * icall.c: implemented some of the Reflection internalcalls.
25329         * image.c, image.h: start writing out the PE/COFF image.
25330         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
25331         that does the reverse than decode_blob_size ().
25332         * object.c: use mono_metadata_encode_value (). Move here
25333         temporary implementation of mono_string_to_utf8 ().
25334         * rawbuffer.c: make malloc_map static.
25335
25336 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25337
25338         * metadata.c: fix type comparison for arrays.
25339         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
25340         Added a couple of new classes to monodefaults.
25341         * icall.c: added a couple of Reflection-related internalcalls.
25342         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
25343         Added a byval_arg MonoType to MonoClass.
25344
25345 2001-09-28  Dick Porter  <dick@ximian.com>
25346
25347         * icall.c:
25348         * threads-pthread.h: 
25349         * threads-pthread.c: Implemented internal calls for
25350         LocalDataStoreSlot operations.  Applied mutexes around all shared
25351         data.  Reworked the thread creation and Start() operations to
25352         avoid a race condition.
25353         
25354         * threads-dummy.h:
25355         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
25356
25357 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
25358
25359         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
25360
25361 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
25362
25363         * class.c, loader.c: warn and return NULL instead of erroring out.
25364         * icall.c: added System.AppDomain::getCurDomain().
25365         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
25366
25367 2001-09-25  Dick Porter  <dick@ximian.com>
25368
25369         * threads-pthread.h:
25370         * threads-pthread.c: Implemented timed thread joining and added
25371         System.Threading.Thread::Join_internal internal call
25372
25373         * icall.c: Added System.Threading.Thread::Join_internal internal call
25374
25375         * threads-dummy.h:
25376         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
25377
25378 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
25379
25380         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
25381         mono_string_intern () to implement the semantics of the ldstr opcode
25382         and the interning of System.Strings.
25383         * icall.c: provide hooks to make String::IsIntern and String::Intern
25384         internalcalls.
25385
25386 2001-09-23  Dick Porter  <dick@ximian.com>
25387
25388         * threads-dummy.c: 
25389         * threads-dummy.h: New files of dummy threading routines
25390
25391         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
25392         support code based on system specifics
25393
25394         Rename PTHREAD_LIBS to THREAD_LIBS
25395         
25396 2001-09-23  Dick Porter  <dick@ximian.com>
25397
25398         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
25399         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
25400         internal calls.
25401         (mono_thread_init): Set up a Thread object instance to return when
25402         the main thread calls Thread.CurrentThread
25403         (mono_thread_cleanup): Wait for all subthreads to exit
25404
25405         * icall.c: New internal calls for System.Threading.Thread::Sleep
25406         (including Schedule) and CurrentThread
25407
25408         * threads.h: New file, to insulate thread-specific stuff from the
25409         rest of the code
25410
25411 2001-09-21  Dick Porter  <dick@ximian.com>
25412
25413         * threads-pthread.h: 
25414         * threads-pthread.c: New file, for handling pthreads-style
25415         threading support.  Start() now starts a new thread and executes
25416         the ThreadStart delegate instance.
25417
25418         * icall.c: Added the internalcall for
25419         System.Threading.Thread::Start_internal
25420
25421         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
25422
25423 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
25424
25425         * loader.c: work around the different signatures for delegates
25426         constructors csc generates in compiled code vs the ones compiled in mscorlib.
25427
25428 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
25429
25430         * class.h, class.c: add mono_class_get_field_from_name ().
25431         * *: Fix C comments and other ANSI C issues.
25432
25433 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
25434
25435         * endian.h, assembly.c: fix some endianness issues.
25436
25437 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
25438
25439         * loader.h, load.c: add delegate_class to mono_defaults.
25440         Handle runtime provided methods in mono_get_method ().
25441
25442 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
25443
25444         * loader.c (mono_get_method): use pinvoke for internal call
25445
25446         * icall.c: use pinvoke for internal call
25447
25448         * loader.c (method_from_memberref): set the method name
25449
25450 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
25451
25452         * metadata.c: help the compiler generate better code for
25453         mono_class_from_mono_type ().
25454
25455 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
25456
25457         * class.c (mono_class_metadata_init): delayed computing of the
25458         class size to mono_class_metadata_init ()
25459
25460 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
25461
25462         * class.c, class.h: add an interfaces member to MonoClass.
25463         * image.c, image.h: add assembly_name field to MonoImage
25464         from the assembly table.
25465         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
25466
25467 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
25468
25469         * class.c: Handle Array in mono_class_from_mono_type ().
25470         * metadata.c, pedump.c: some endian fixes.
25471
25472 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
25473
25474         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
25475         * metadata.c: fix small problem introduced with the latest commit.
25476
25477 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
25478
25479         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
25480         We don't need a MonoMetadata pointer anymore to compare signatures in
25481         mono_metadata_signature_equal (), update callers.
25482         Reduced memory usage an number of allocations for MonoMethodHeader and
25483         MonoMethodSignature.
25484
25485 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
25486
25487         * metadata.c: added compare for szarray.
25488
25489 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
25490
25491         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
25492         and add a couple more types to it and mono_defaults. Give an hint on
25493         classes that need implementing in our corlib and are referenced
25494         in mscorlib.
25495
25496 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
25497
25498         * class.h, class.c: keep track if a class is also an Enum.
25499         * loader.c: Implement a couple more types for use in libffi
25500         marshalling. Gives better diagnostics when failing to dlopen
25501         a library. Set method->klass for P/Invoke methods, too.
25502
25503 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
25504
25505         * class.c, class.h: add a MonoType this_arg to MonoClass that
25506         represents a pointer to an object of the class' type that
25507         can be used by the interpreter and later the type cache.
25508         Add best guess alignment info for valuetype objects.
25509
25510 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
25511
25512         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
25513         into MonoType: one less level of indirection and allocation and
25514         simplifies quite a bit of code. Added cache for MonoTypes that are
25515         used frequently, so that we don't need to allocate them all the time.
25516
25517 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
25518
25519         * class.c (mono_class_create_from_typedef): System.Enum is also a
25520         value type, although it does not derive from System.ValueType
25521         (maybe a bug in the ms compiler?)
25522
25523         * metadata.c (mono_type_size): return the right size for value types
25524
25525         * loader.c (mono_get_method): only initialize method header if not abstract
25526
25527         * class.c (mono_class_from_mono_type): use mono_default values. 
25528
25529 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
25530
25531         * *: use MonoClass pointers instead of <type_tokens>
25532         
25533         * class.h: new flag: metadata_inited.
25534
25535         * class.c (mono_class_metadata_init): impl.
25536         (mono_class_instance_size): impl.
25537         (mono_class_data_size): impl.
25538
25539 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25540
25541         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
25542         MonoClass now has the name and name_space fields. 
25543         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
25544         mono_get_method () takes and optional MonoClass as argument.
25545         Removed mono_typedef_from_name() and added mono_class_token_from_name()
25546         instead that takes advantage of a map from class names to typedef
25547         tokens in MonoImage.
25548
25549 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
25550
25551         * metadata.c: zero is not a valid alignment boundary.
25552         Merge MONO_TYPE_VOID in default decoding code.
25553
25554 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
25555
25556         * image.h: merged MonoMetadata into MonoImage
25557
25558         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
25559         identify the type of elements.
25560
25561 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
25562
25563         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
25564         * cil-coff.h: split MonoMSDOSHeader and add size info.
25565         * image.c: add some consistency checks.
25566         * metadata.c: fix row size computation: one programmer
25567         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
25568         add explanation for the locator routine.
25569         Fix decoding of size in method header.
25570         
25571 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
25572
25573         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
25574         (g_concat_dir_and_file): Bring g_concat_dir_and_file
25575         function from gnome-libs.  This uses the right path separator
25576         based on the OS, and also works around a bug in some systems where
25577         a double slash is not allowed. 
25578         (default_assembly_name_resolver): Use g_concat_dir_and_file
25579         (mono_assembly_open): ditto.
25580
25581 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
25582
25583         * metadata.c (mono_metadata_signature_equal): impl.
25584
25585         * *: void is now a realy MonoType (instead of using NULL)
25586         
25587         * metadata.c (do_mono_metadata_parse_type): use
25588         mono_metadata_parse_type to parse void value.
25589
25590 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
25591
25592         * metadata.c, metadata.h: in the signature and method header store
25593         only the space required for holding the loca vars and incoming arguments.
25594
25595 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
25596
25597         * metadata.c (do_mono_metadata_parse_type): treat void like any
25598         other type (instead of assigning NULL);
25599
25600 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
25601
25602         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
25603
25604 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
25605
25606         * image.c (do_mono_image_open): added a cache for arrays.
25607
25608 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
25609
25610         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
25611         decode a single column from a row in a metadata table and changes
25612         to take advantage of it in the typedef locator (gives a nice speed up).
25613         Store offset info for function params.
25614
25615 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
25616
25617         * image.h (MONO_IMAGE_IS_CORLIB): removed 
25618
25619 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
25620
25621         * assembly.c: how could mono_assembly_close () had ever worked?
25622         * metadata.c, metadata.h: provide offset info for local vars.
25623         Implement mono_type_size () to take care of alignment as well
25624         as size (it was mono_field_type_size in cli/class.c before).
25625
25626 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
25627
25628         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
25629
25630         * assembly.h (CORLIB_NAME): set to corlib.dll
25631
25632         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
25633
25634 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
25635
25636         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
25637         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
25638         tokentype.h: massive namespace cleanup.
25639
25640 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
25641
25642         * metadata.h, metadata.c: decode exception clauses when parsing method header.
25643
25644 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
25645
25646         * metadata.c (mono_metadata_free_type): added check for type !=
25647         NULL (void) before calling mono_metadata_free_type()
25648
25649 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
25650
25651         * metadata.h, row_indexes.h: added header with enumerations to use
25652         to index in the columns from tables in metadata and to decode coded
25653         tokens: we should start using this instead of embedding magic numbers
25654         all over the code.
25655
25656 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
25657
25658         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
25659         Move metadata_t info from cli_image_info_t to MonoImage, where
25660         it's easily accessible. Changed all the uses accordingly.
25661         Added the method and class caches to MonoImage.
25662         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
25663         and mono_metadata_decode_value () signature to be more consistent
25664         with the other parse functions (and simplify code). Taken advantage
25665         of zero-length array allocation with GCC. Removed reduntant (and
25666         wrong) MonoFieldType struct and use MonoParam instead. Changed
25667         mono_metadata_parse_field_type () to use common code for parsing.
25668         Added mono_metadata_typedef_from_field () and
25669         mono_metadata_typedef_from_method () to lookup a typedef index from a
25670         field or method token.
25671         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
25672
25673 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
25674
25675         * metadata.c (mono_metadata_parse_field_type): Implement. 
25676         (do_mono_metadata_parse_type): Split engine from
25677         mono_metadata_parse_type, so that we can create smaller structures
25678         for things that just have one pointer to the MonoType (look at
25679         the MonoFieldType)
25680
25681 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
25682
25683         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
25684         as Jan Gray found out, it is incorrect. 
25685
25686 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
25687
25688         * assembly.c: Implement asssembly loading.  This loads an image
25689         and loads all the referenced assemblies.  Come to think of it, we
25690         could always do lazy loading of the assemblies. 
25691
25692         * image.c (mono_image_open): Keep loaded images in a hashtable.
25693
25694         * image.h (MonoImage): Add reference count.
25695
25696 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
25697
25698         * assembly.c (mono_assembly_open): Keep track of the file name in
25699         case the assembly has no ASSEMBLY table.
25700
25701         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
25702         from get.c here.
25703
25704 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
25705
25706         * metadata.c, metadata.h: decode local vars in method header
25707         parse function. Change callers accordingly.
25708
25709 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
25710
25711         * metadata.h, cil-coff.h: protect against multiple inclusion.
25712         Added some new structures to hold information decoded from metadata:
25713         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
25714         and relevant decoding/free functions.
25715         * metadata.c: implement decoding functions. Add warning for out of bounds
25716         index in mono_metadata_locate(). Implement mono_get_method () to retreive
25717         all the info about a method signature and invocation. Remove check on
25718         uninitialized local var in parse_mh() and fix memory leak.
25719
25720 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
25721
25722         * metadata.h: More macros.
25723
25724         * tokentype.h: New file.
25725
25726 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
25727
25728         * assembly.c: added a consistency check and initialize
25729         some structures with g_new0().
25730         * metadata.c: fixed a couple more bugs in table size computation
25731         and add other checks for out-of bound access to metadata.
25732
25733 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
25734
25735         * metatada.c: fix bugs computing table sizes. Spew a
25736         warning when index in string heap is out of bounds.
25737
25738 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
25739
25740         * metadata.h: Add a couple of macros to manipulate tokens. 
25741
25742 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
25743
25744         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
25745         cli_section_tables).
25746
25747 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
25748
25749         * metadata.c (mono_metadata_user_string): New function, provides
25750         access to the UserString heap. 
25751
25752 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
25753
25754         * metadata.c: Add inline documentation.
25755
25756 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
25757
25758         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
25759         files. 
25760
25761 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
25762
25763         * typeattr.h: New file, TypeAttribute flags. 
25764
25765 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
25766
25767         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
25768         mono_assembly_ensure_section): Section loading code.
25769         (load_section_tables): Load the sections.
25770
25771         * mono/metadata/metadata.c (mono_metadata_locate_token,
25772         mono_metadata_locate): Functions to locate the information
25773         definition given a token or a table and an index.
25774         (mono_metadata_compute_table_bases): New.
25775         (compute_size): New function to compute the sizes of the various
25776         tables.
25777
25778         * mono/metadata/metadata.h: Finish listing the different index
25779         types. 
25780
25781         * mono/metadata/pedump.c: Improve to dump new information.
25782
25783 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
25784
25785         * mono/metadata/metadata.c: Entered all the tables matching
25786         Beta2. 
25787
25788         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
25789
25790
25791