2010-07-14 Miguel de Icaza <miguel@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-14  Miguel de Icaza  <miguel@novell.com>
2
3         * reflection.c (load_cattr_value): Add support for encoding
4         DateTime constants into the blob.    Turns out that this is
5         required by .NET, it was only documented post 1.0.
6
7         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
8         System.Decimal and System.DateTime inside a mono_is_corlib_image
9         call.   A sample program showed that we could return the wrong
10         TypeCode just by creating a class with those names. 
11
12         * class.c (mono_is_corlib_image): Exposed this to other metadata/
13         code.
14
15 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
16
17         * security-core-clr.c: Don't abort (only warn) if we cannot find 
18         a caller for relfecting code (transparent is assumed). Fix
19         get_method_access_exception to accept a NULL caller.
20
21 2010-07-14  Mark Probst  <mark.probst@gmail.com>
22
23         * sgen-gc.c: Heavy statistics on the internal allocator.
24
25 2010-07-13  Mark Probst  <mark.probst@gmail.com>
26
27         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
28         properly and in a thread-safe way.
29
30 2010-07-13  Mark Probst  <mark.probst@gmail.com>
31
32         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
33
34 2010-07-13  Mark Probst  <mark.probst@gmail.com>
35
36         * sgen-gc.c: Versions of safe_object_get_size() and
37         copy_object_no_checks() that work without the object's vtable
38         intact, by passing the correct vtable as an argument.
39
40 2010-07-13  Mark Probst  <mark.probst@gmail.com>
41
42         * sgen-marksweep.c: Make allocation of major sections thread-safe.
43
44 2010-07-13  Mark Probst  <mark.probst@gmail.com>
45
46         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
47         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
48         free if parallel mark is enabled.
49
50 2010-07-13  Mark Probst  <mark.probst@gmail.com>
51
52         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
53         allocator if parallel mark (not committed yet) is enabled.
54
55 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
56
57         * reflection.c (inflate_mono_method): Handle dynamic
58         generic instances that have method.count set but
59         methods not. Fixes another crash from boo's test suite.
60
61 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
62
63         * icall.c (ves_icall_MonoMethod_get_base_method): If
64         the method slot is bigger than the class vtable, return
65         the original method. Makes booc work again.
66
67 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
68
69         * verify.c (mono_generic_param_is_constraint_compatible):
70         The candidate type itself might satisty the required
71         constraints.
72
73         Fixes #621599.
74
75 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * reflection.c (fix_partial_generic_class): Inflate the
78         generic instance parent in case it was changed after
79         MonoGenericClass was instantiated.
80
81         Fixes one of the issues from #389886.
82
83 2010-07-10  Mark Probst  <mark.probst@gmail.com>
84
85         * sgen-gray.c: Store only a pointer to one end of the gray queue.
86
87 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
88
89         * loader.c (mono_method_signature_checked): Release the domain
90         lock on failure.
91
92 2010-07-10  Mark Probst  <mark.probst@gmail.com>
93
94         * sgen-gc.c: Store the forwarding address in the first word of an
95         object, where the forwarding bit is stored.
96
97 2010-07-10  Mark Probst  <mark.probst@gmail.com>
98
99         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
100         interface to register our Mach exception thread which will not be
101         suspended by stop-the-world.
102
103 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
104
105         * loader.c (mono_get_method_constrained): Properly unlock the
106         domain lock on failure. Use checked variant of
107         inflate_generic_signature.
108
109 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
110
111         * loader.c (mono_method_signature_checked): Use checked
112         variant of inflate_generic_signature.
113
114         Fixes #606353.
115
116 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
117
118         * metadata.c (mono_metadata_parse_type_internal): Don't use
119         cannonical types when a transient type was requested.
120
121         Fixes #608626.
122
123 2010-07-10  Mark Probst  <mark.probst@gmail.com>
124
125         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
126         All functions that touch the gray queue directly or indirectly now
127         take it as an argument.
128
129 2010-07-10  Mark Probst  <mark.probst@gmail.com>
130
131         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
132         Put the gray queue data into a struct and pass it around.
133
134 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
135
136         * class.c (mono_method_can_access_method_full): Handle type
137         accessibility with very deep nested types.
138
139         * class.c (mono_method_can_access_field_full): Ditto.
140
141         Fixes #619300.
142
143 2010-07-10  Mark Probst  <mark.probst@gmail.com>
144
145         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
146         sgen-scan-object.h: Use a macro for rounding up sizes and
147         addresses to ALLOC_ALIGN.
148
149 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
150
151         * file-io.c: fix GetFileSystemEntries for patterns containing
152         directories.
153
154 2010-07-09  Mark Probst  <mark.probst@gmail.com>
155
156         * sgen-marksweep.c (major_finish_major_collection): Don't free
157         major heap blocks on 32 bit platforms because it can lead to
158         address space fragmentation.  We'll figure this out later.
159
160 2010-07-09  Mark Probst  <mark.probst@gmail.com>
161
162         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
163         heap blocks for mark&sweep eventually.
164
165 2010-07-09  Mark Probst  <mark.probst@gmail.com>
166
167         * sgen-protocol.c: Fix build when binary protocol is disabled.
168
169 2010-07-09  Mark Probst  <mark.probst@gmail.com>
170
171         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
172         thread-safe.
173
174 2010-07-08 Neale Ferguson <neale@sinenomine.net>
175
176         * sgen-archdep.h: Add support for s390x
177         * domain.c: Use gsize so that 64-bit big endian systems produce 
178         bitmap.
179
180 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * pedump.c (verify_image_file): Initialize the vtable as well.
183
184 2010-07-07  Geoff Norton  <gnorton@novell.com>
185
186         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
187         header.
188
189 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
190
191         * assembly.c (mono_assembly_load_reference): Replace a g_warning
192         with a mono_trace calls. This makes compiling MD a lot less scary.
193
194 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * verify.c (do_stobj): Improve error message.
197
198 2010-07-08  Mark Probst  <mark.probst@gmail.com>
199
200         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
201         from the object because it might have pinned/forwarding bits set.
202
203 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
204
205         * Makefile.am (sgen_sources): Add missing sgen files.
206
207 2010-06-07  Martin Baulig  <martin@ximian.com>
208
209         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
210         New helper function since mono_thread_get_abort_signal() is now
211         internal.
212
213 2010-06-07  Martin Baulig  <martin@ximian.com>
214
215         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
216
217 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
218
219         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
220         public, as mono_string_to_utf_8 is deprecated.
221
222         * object.(c|h): Added mono_object_to_string, a public helper function 
223         that calls ToString on a MonoObject and returns a MonoString.
224
225         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
226
227 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
228
229         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
230         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
231         match their declarations and vice-versa.
232
233
234 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
235
236         * class-internals.h, domain-internals.h: mark functions that are
237         needed by the llvm module.
238
239 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
240
241         * assembly.c (framework_assemblies): Add 3.5 assemblies.
242
243         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
244         by one to have room to remap 3.5 assemblies.
245
246         * domain.c (supported_runtimes): Add 3.5 remapping information.
247
248 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
249
250         * reflection.c (mono_image_create_token): Handle a
251         FieldBuilder from a different assembly.
252
253         Fixes #611836.
254
255 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
256
257         * verify.c (do_store_static_field): Improve error
258         message.
259
260 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
261
262         * assembly.c: Revert r159692 since it breaks loading 3.5
263         assemblies under 2.0.
264
265 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
268         TypedByRef is passed.
269
270         * icall.c (ves_icall_Type_make_byref_type): Ditto.
271
272         * icall.c (ves_icall_Type_MakePointerType): Ditto.
273
274         Fixes #612780.
275
276 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
277
278         * assembly.c: Add a few more assemblies to the list of framework
279         assemblies.
280
281         Fixes #617714.
282
283 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
284
285         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
286         fails.
287
288 2010-06-25  Mark Probst  <mark.probst@gmail.com>
289
290         * class.c (mono_class_inflate_generic_method_full_checked): Added
291         a comment regarding a hack in mini-trampolines.c.
292
293 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
294
295         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
296         sizeof(SIZEOF_VOID_P) which is 4.
297
298         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
299
300 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
301
302         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
303         GCs too.
304
305         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
306
307         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
308         objects.
309
310         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
311         desktop mode.
312
313 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
314
315         * *-gc.c (mono_gc_get_description): New function returning a human readable
316         description of the current GC.
317
318 2010-06-24  Miguel de Icaza  <miguel@novell.com>
319
320         * mono-hash.c: Moved here from mono/utils as this file is
321         GC-aware, and the utils directory is not.
322
323 2010-06-23  Miguel de Icaza  <miguel@novell.com>
324
325         * Makefile.am: Add support for building a sgen-aware versions of
326         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
327         they share all the components of the default, but use a differen
328         set of CFLAGS to enable SGEN instead.
329
330         Put the BOEHM defines in the CFLAGS definition. 
331
332         * domain-internals.h (MonoJitInfo): this structure used to have
333         different sizes depending on the GC that was configured (Boehm vs
334         SGen).   I have removed this difference for the sake of avoiding
335         the complexity of dealing with the mono/arch directory requiring
336         GC-specific changes to their Makefiles.
337
338 2010-06-23  Mark Probst  <mark.probst@gmail.com>
339
340         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
341
342 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
343
344         * metadata.c (mono_metadata_type_hash): Don't hash
345         the type kind for dynamic types since it can change.
346
347 2010-06-22 Geoff Norton  <gnorton@novell.com>
348
349         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
350         alloca instead to prevent a deadlock.
351
352 2010-06-22  Geoff Norton  <gnorton@novell.com>
353
354         * domain.c: Allow gettings the tls key, since we need it for
355         cross thread tls poking in sgen-mach
356         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
357         in external files for platform specific STW support.
358         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
359         * sgen-os-posix.c: Move the existing posix signal based STW here.
360
361 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
362
363         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
364
365 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
366
367         * object-internals.h: Map new PropertyBuilder fields.
368
369         * reflection.c (property_encode_signature): Emit an instance
370         signature if property's callconv is hasthis.
371
372         * appdomain.c: Bump corlib version.
373
374 2010-06-20  Jb Evain  <jbevain@novell.com>
375
376         * metadata-verify.c: do not consider the assembly invalid if it
377         doesn't have a #Blob stream as resource assemblies don't
378         necessarily have one.
379
380 2010-06-17  Geoff Norton  <gnorton@novell.com>
381
382         * sgen-archdep.h: sgen support for arm linux and darwin.
383
384 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
385
386         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
387         has a faulty header.
388
389 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
390
391         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
392         way to mono_gc_wbarrier_value_copy but takes a bitmap that
393         indicates which slots need a write barrier.
394
395 2010-06-14  Jonathan Pryor <jpryor@novell.com>
396
397         * Makefile.am (EXTRA_DIST): Add runtime.h.
398
399 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
400
401         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
402
403 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
404
405         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
406         IMT slot which is passed to callbacks.get_imt_trampoline.
407
408 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
409
410         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
411         imt trampoline per imt slot when using LLVM.
412
413 2010-06-10  Jonathan Pryor <jpryor@novell.com>
414
415         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
416           runtime.c:mono_runtime_shutdown().
417         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
418           AppDomain.ProcessExit event in all AppDomains.
419
420 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
421
422         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
423         done by the caller.
424
425 2010-06-05  Mark Probst  <mark.probst@gmail.com>
426
427         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
428         up freeing.
429
430 2010-06-05  Mark Probst  <mark.probst@gmail.com>
431
432         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
433         segments of memory at once, to reduce the number of mmap/munmap
434         calls.
435
436 2010-06-05  Mark Probst  <mark.probst@gmail.com>
437
438         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
439         allocations and distinguish between normal, degraded and pinned
440         allocations.
441
442 2010-06-05  Mark Probst  <mark.probst@gmail.com>
443
444         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
445         allocations count toward major collections and trigger major
446         collections from degraded allocations if appropriate.
447
448 2010-06-05  Mark Probst  <mark.probst@gmail.com>
449
450         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
451
452 2010-06-05  Mark Probst  <mark.probst@gmail.com>
453
454         * sgen-gc.c: Enable mark&sweep again.
455
456 2010-06-05  Mark Probst  <mark.probst@gmail.com>
457
458         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
459
460 2010-06-05  Mark Probst  <mark.probst@gmail.com>
461
462         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
463         major heap allowance for minor collections, instead of two
464         separate ones for small and large objects.  This reduces the
465         number of major collections.
466
467 2010-06-04  Marek Habersack  <mhabersack@novell.com>
468
469         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
470         the BFLAGS_IgnoreCase is raised
471
472 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
473
474         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
475         all information in a single structure. Return information about scopes as well.
476
477         * mono-debug.c (mono_debug_lookup_locals): Ditto.
478
479 2010-06-02  Geoff Norton  <gnorton@novell.com>
480
481         * appdomain.c: If we are running with IOMAP we might
482         have been provided a string that isn't case-aware for our file-
483         system, so we need to use io-portability to check if the file 
484         exists, rather than a simple glib test.
485
486         Fixes #608849
487
488 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * verify.c (verify_generic_parameters): Verify if
491         there are not loops in constraints.
492
493 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
494
495         * verify.c (is_compatible_boxed_valuetype): Constaints
496         must be recursively checked if one generic argument
497         has a constraint on another.
498
499         Fixes #610625.
500
501 2010-05-31  Miguel de Icaza  <miguel@novell.com>
502
503         * console-unix.c (terminal_get_dimensions): Fix my previous
504         botched commit and return the actual value obtained from the ioctl.
505
506 2010-05-29  Mark Probst  <mark.probst@gmail.com>
507
508         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
509         references so that we don't have to do the cache-cold fetch of the
510         class in copy_object_no_checks().
511
512 2010-05-29  Robert Jordan  <robertj@gmx.net>
513
514         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
515         mono_marshal_string_to_utf16_copy () to avoid memory allocation
516         mismatches under Windows. Fixes pinvoke2:test_0_asany.
517
518 2010-05-28  Mark Probst  <mark.probst@gmail.com>
519
520         * sgen-gc.c: Change default nursery size to 4MB, because it
521         improves performance on many applications and benchmarks.
522
523 2010-05-28  Mark Probst  <mark.probst@gmail.com>
524
525         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
526         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
527         the GC descriptor by one bit, and don't encode the size for value
528         types not containing references.  Also get rid of
529         DESC_TYPE_STRING.
530
531 2010-05-28  Mark Probst  <mark.probst@gmail.com>
532
533         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
534         other than for remset processing.
535
536 2010-05-28  Mark Probst  <mark.probst@gmail.com>
537
538         * sgen-gc.c: More and better remset consistency checks.
539
540 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * sgen-gc.c: Add a note about the int[] trick to avoid some
543         memset.
544
545 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
546
547         * sgen-gc.c (sort_addresses): Use heap sort since it has better
548         performance.
549
550         This helps programs with lots of threads or thread with big stacks
551         since the bottleneck the pin queue can get quite big.
552
553 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
554
555         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
556         a separate function called setup_fragment.
557
558         * sgen-gc.c (search_fragment_for_size_range): Variant of
559         search_fragment_for_size that does search for a secondary smaller
560         size.
561
562         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
563         for tlab allocation so small fragments are used.
564
565         This patch uses small fragments for tlab allocation when possible in order
566         to improve nursery utilization. With a fixed size tlab this patch is not very
567         usefull but once size gets dynamically adjusted, this will be invaluable.
568
569         Performance under pystone 500k is unchanged. Nursery utilization improves by
570         3.5% and 18 more fragments are used per minor GC.
571
572         Performance under modified binary-tree is unchanged. Nursery utilization
573         improves by 0.5% and 3 more fragments are used per minor GC.
574
575         These numbers make sense since as more pinning happens, more fragments are
576         created and so are the chances of having a bunch of small ones.
577
578 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
579         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
580         the current fragment when allocating a TLAB.
581
582         Reduces number of pystone 500k minor collections by 7%.
583
584 2010-05-25  Martin Baulig  <martin@ximian.com>
585
586         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
587
588         * debug-mono-symfile.c: Release memory from symfiles that were
589         loaded from memory.
590
591 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
592
593         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
594         during shutdown.
595
596 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
597
598         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
599         target class and remove some dead code.
600
601 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
602
603         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
604         the MonoTypes inside method headers can be freed when the header is freed.
605
606 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
607
608         * threadpool.c: Fix the DISABLE_SOCKETS build.
609
610 2010-05-19 Martin Baulig  <martin@novell.com>
611
612         Fix #604911.
613
614         * threads.c (wait_for_tids_or_state_change): Use an
615         alertable WaitForMultipleObjectsEx().
616         (wait_for_tids): Likewise.
617
618 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
619
620         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
621         icall.
622
623         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
624         gc tracked memory.
625
626         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
627         argument from a gchandle.
628
629         * marshal.c: Get rid of the delegate_target_locations hash table.
630
631         Fixes #605295.
632
633 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
634
635         * sgen-gc.c: Use _fast variants for string and array length.
636
637 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
638
639         * sgen-gc.c: Fix counters to be 64 bits.
640
641         * sgen-gc.c (dump_heap): Fix formating strings.
642
643 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
644
645         * sgen-gc.c (global_remset_location_was_not_added): New
646         function that implements a 2 element LRU cache for just
647         added remsets. It is used to avoid adding duplicate ones.
648
649         * sgen-gc.c (add_to_global_remset): Check cache before
650         adding new entry.
651
652         * sgen-gc.c (scan_from_remsets): Don't process global remsets
653         that fail the cache test.
654
655         * sgen-gc.c (scan_from_remsets): Simplify the global remset
656         loop removing one condtion that is not possible.
657
658         A 2 element LRU cache was chosen by profiling IronPython 2.6
659         pytones with 1M passes and corlib compilation.
660
661         For the ipy test duplication was originally 940.92, measured
662         by "Store remsets" divided by "Unique store remsets".
663
664         With a 2-element LRU, duplication went to 1.007. Without the
665         check in scan_from_remsets 1.438.
666
667         With a 16-elements LRU, duplication reduction was negligibe.
668         A single element cache was basically of no use.
669
670         With corlib compilation duplication went from  1.4 to 1.02.
671
672         Performance results is a 20% time decrease for ipy and 2%
673         with corlib.
674 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
675
676         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
677
678 2010-05-15  Geoff Norton  <gnorton@novell.com>
679
680         * mono-debug.c: Fix a leak of the global table on shutdown.
681
682 2010-05-15  Geoff Norton  <gnorton@novell.com>
683
684         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
685         to clean up MonoDebugSourceLocation's.
686
687 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
688
689         * class.c (mono_class_create_from_typedef): Fail a class
690         if there is a loop with its parent.
691
692         Fixes #598239.
693
694 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
695
696         * loader.c (mono_loader_set_error_type_load): Convert
697         a g_warninig to mono_trace_warning.
698
699 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
700
701         * class.c (mono_class_get_full): Release strings on failure
702         to avoid leaking them.
703
704 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
705
706         * class.c (mono_class_create_from_typedef): Only return
707         the class if no exceptions were detected.
708
709         * class.c (mono_class_create_from_typedef): Don't remove
710         broken classes from class_cache. Just set failure and
711         bail out.
712
713         This fixes a memory a memory leak where resolving the same
714         broken class multiple times resulted in a memory leak.
715
716         The right behavior would be to actually return the class
717         a let the caller figure it out.
718
719 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
720
721         * mono-ptr-array.h: Add mono_ptr_array_sort.
722
723         * reflection.c (mono_image_build_metadata): Replace that ugly
724         qsort call with mono_ptr_array_sort.
725
726 2010-05-13  Mark Probst  <mark.probst@gmail.com>
727
728         * sgen-gc.c: Switch to the copying major collector, because
729         Mark&Sweep is still buggy.
730
731 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
732
733         * reflection.c (mono_image_build_metadata): Don't put managed
734         references on non-tracked memory.
735
736 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
737
738         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
739
740 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
741
742         * icall.c: Switch to mono-ptr-array.h.
743
744 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * Makefile.am: Add mono-ptr-array.h.
747
748         * mono-ptr-array.h: New header that implements
749         a GC tracked equivalent of g_ptr_array. 
750
751 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
754         method to avoid initializing the class.
755
756         Fixes #605115.
757
758 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
759
760         * icall.c (ves_icall_System_MonoType_getFullName): It
761         doesn't require to init the class.
762
763 2010-05-11  Miguel de Icaza  <miguel@novell.com>
764
765         * console-unix.c: Signal handlers now save and restore errno.   We
766         have never had a bug report about this, ioctl does change errno. 
767
768         Hide the unused method.   
769
770         Remove internal declarations from public headers.
771
772         Document what the signal handler is doing
773
774 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
775
776         * sgen-gc.c (clear_unreachable_ephemerons): Clear
777         unreachable keys with a tombstone.
778
779         * sgen-gc.c (mark_ephemerons_in_range): Ignore
780         tombstone keys.
781
782 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
783
784         * icall-def.h:
785         * gc-internals.h:
786         * gc.c: New GC:get_ephemeron_tombstone.
787
788 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
789
790         * appdomain.c (create_exceptions): Rename to
791         create_domain_objects. Create the ephemeron tombstone object.
792
793         * domains-internals.h (MonoDomain): Add new field for the
794         ephemeron tombstone.
795
796         * domain.c (mono_domain_free): Set ephemeron_tombstone to
797         NULL.
798
799 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
802         and dislinks must be processed before LOS since they
803         could end up with pointers to memory returned to the
804         OS.
805
806 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
807
808         * class.c (mono_class_alloc): New helper function to centralize memory allocation
809         for classes, allocates either from the image mempool or from the heap.
810
811         * class.c: Use mono_class_alloc to allocate memory owned by classes.
812
813         * metadata.c (free_generic_class_dependents): Free more items belonging to
814         generic classes.
815
816 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
817
818         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
819         as well. Fixes #604054.
820
821 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
822
823         * metadata-verify.c: MS doesn't mind duplicates in the
824         typeref table. Move it to full verification.
825
826         Fixes #600508.
827
828 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * image.c (do_mono_image_load): Report verification
831         errors when loading an image fails.
832
833 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * reflection.c (mono_type_get_object): Remove chunk of code
836         no longer in use.
837
838 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
839
840         * icall-def.h
841         * icall.c: Delete some unused icalls.
842
843 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
844
845         * appdomain.c (mono_domain_has_type_resolve): Check for
846         NULL domain objects to make pedump happy.
847
848         * object.c (mono_field_get_value): Assert on NULL object.
849         It's the caller resposibility to check for this.
850
851         * object.c (mono_field_get_value_object): Ditto.
852
853         Fixes #601384.
854
855 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
856
857         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
858         checks can avoid doing a mono_class_init.
859
860         * icall.c: Remove mono_class_init from a bunch of icalls that
861         don't need it.
862
863         Hopefully we're now lazy enough to fix most victims of #601431.
864
865 2010-05-07  Mark Probst  <mark.probst@gmail.com>
866
867         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
868
869 2010-05-07  Mark Probst  <mark.probst@gmail.com>
870
871         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
872
873 2010-05-07  Marek Habersack  <mhabersack@novell.com>
874
875         * culture-info-tables.h: updated to include en-TT culture. Fixes
876         bug #594035
877
878 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
879
880         Move mono_class_init from mono_type_get_object to icalls.
881         This causes massive memory savings for Assembly::GetTypes () and
882         make it fail a lot less due to missing dependencies.
883
884         This is a conservative, naive change as it doesn't remove some
885         mono_class_init from places that might not need them. Carefull
886         review of those should follow.
887
888         * reflection.c (mono_type_get_object): Don't mono_class_init the
889         returning type.
890
891         * reflection.c:
892         * cominterop.c:
893         * icall.c:
894         * marshal.c: Call mono_class_init in functions receiving a MonoType
895         object.
896
897         First step into fixing #601431.
898
899 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
900
901         * gc-internal.h: Add new functions required for ephemeron support.
902
903         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
904
905         * icall-def.h: Add GC::register_ephemeron_array.
906
907         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
908         under sgen. Its fields must not be marked.
909
910         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
911
912         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
913         handling finalizable objects. Clean dead ones after all finalizable
914         handling.
915
916         * sgen-gc.c (dump_heap): Add new kind of internal memory.
917
918         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
919         arrays from the dead domain.
920
921         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
922
923         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
924         whose keys are reachable.
925
926         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
927         list of live ephemeron arrays.
928
929 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * class.c (mono_class_layout_fields): Don't perform alignment
932         if align is zero.
933
934         * class.c (mono_class_layout_fields): Init field related information
935         to sane defaults.
936
937 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
938
939         * verify.c (mono_verifier_verify_class): Verify the constraint
940         of generic type definitions.
941
942 2010-05-04  Mark Probst  <mark.probst@gmail.com>
943
944         * sgen-marksweep.c: Simplify free list maintenance in sweep.
945
946 2010-05-02  Mark Probst  <mark.probst@gmail.com>
947
948         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
949         major_do_collection() across the two major collectors.
950
951 2010-05-02  Mark Probst  <mark.probst@gmail.com>
952
953         * sgen-gc.c: Add heavy statistics counter for re-added global
954         remsets.
955
956 2010-05-02  Mark Probst  <mark.probst@gmail.com>
957
958         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
959         get rid of a division in critical code.
960
961 2010-04-29  Mark Probst  <mark.probst@gmail.com>
962
963         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
964         blocks for objects without references in mark&sweep, to improve
965         performance.
966
967 2010-04-28  Mark Probst  <mark.probst@gmail.com>
968
969         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
970         statistics up-to-date.
971
972 2010-04-27  Mark Probst  <mark.probst@gmail.com>
973
974         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
975         heap-dump for mark&sweep.
976
977 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
978
979         * loader.c (mono_method_get_header): Move the is_inflated case before the
980         wrapper case, as a method can be both.
981
982 2010-04-27  Mark Probst  <mark.probst@gmail.com>
983
984         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
985         separate pass to scan pinned and large object but use the gray
986         queue like for regular objects.
987
988 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
989
990         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
991         string.h for memmove.
992
993         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
994         ipaddress_to_struct_in6_addr() is only needed when
995         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
996
997 2010-04-25  Mark Probst  <mark.probst@gmail.com>
998
999         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1000         separate copy_object functions for major vs nursery.  Allows us to
1001         get rid of a few checks and the start and end parameters for many
1002         functions.
1003
1004 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1005
1006         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1007         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1008         collector.
1009
1010 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1013         calling setup_mono_type () since the nested parent could recursively reference
1014         the nested class using generic constraints. Fixes #599469.
1015
1016 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1017
1018         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1019         abstraction.
1020
1021 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1022
1023         * sgen-gc.c: Remove more unneeded code.
1024
1025 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1026
1027         * sgen-gc.c: Disable managed allocator and wbarrier when the
1028         binary protocol is enabled.
1029
1030 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1031
1032         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1033
1034 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1035
1036         * sgen-gc.c: Remove a few commented out and unneeded bits.
1037
1038 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1039
1040         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1041         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1042
1043 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1044
1045         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1046         types.
1047
1048         Fixes #331126
1049
1050 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1051
1052         * sgen-gc.c: Turn off semi-precise stack mark.
1053
1054 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1055
1056         * reflection.c (mono_custom_attrs_from_index): Use right function
1057         to free 'list' (i.e. g_list_free) if the verifier fails.
1058
1059 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1062                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1063                 and MONO_TYPE_VALUETYPE in those case.
1064
1065                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1066
1067                 Hopefully Fixes #564253.
1068
1069 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1070
1071         * domain-internals.h: made threadpool_jobs volatile.
1072         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1073         all local jobs.
1074         * threadpool.c:
1075                 -When two threads try to initialize the socket IO pool,
1076                 the second one waits until the intialization is finished
1077                 instead of continuing right away.
1078                 -Add checks for domain unload: no items added in this case.
1079                 -Only measure the time every 10 elements added to the queue.
1080                 This is an experiment since linux x86 gettimeofday() sucks.
1081                 -Create new thread if there are none waiting for work items.
1082                 -There was a missing decrement of the busy threads.
1083                 -Make sure the local queue is cleaned up before exiting the
1084                 thread when the program ends.
1085
1086 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1087
1088         * reflection.c (mono_type_get_object): Normalize generics types
1089         as to how managed code expect them to be. A generic instance over
1090         the GTD arguments must have the same mirror as the GTD itself.
1091
1092         Fixes #473289.
1093
1094 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * locales.c: Implement support for DISABLE_NORMALIZATION.
1097
1098 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1101         since it is not a MonoMethod.
1102
1103 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1104
1105         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1106         System.Security.SecurityManager - used only by Moonlight
1107         * security-core-clr.c|h: Add Elevated Trust/Permission support
1108         for CoreCLR / Moonlight
1109
1110 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1113         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1114
1115 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1116
1117         * mono-perfcounters.c: added code for the "Mono
1118         Memory/Total Physical Memory" performance counter.
1119
1120         * mono-perfcounters-def.h: added definition of the "Mono
1121         Memory/Total Physical Memory" performance counter.
1122
1123 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * class.c (mono_class_get_method_by_index): Return NULL
1126         on type load failures.
1127
1128 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * class.c (mono_class_from_typeref): Check if the supplied
1131         image has an assembly bound to it.
1132
1133         Fixes #567884.
1134
1135 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1136
1137         * loader.c (mono_method_get_signature_full): Use new function
1138         inflate_generic_signature_checked to check for errors.
1139
1140         Fixes #560839.
1141
1142 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * loader.c (inflate_generic_signature): Add _checked variant
1145         and move this function to use it.
1146
1147 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1148
1149         * class.c (mono_class_setup_vtable_general): Use error checking
1150         version of mono_class_inflate_generic_method_full.
1151
1152         Fixes #596975.
1153
1154 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1155
1156         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1157         error handling passing MonoError around.
1158
1159         Fixes #560336.
1160
1161 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1162
1163         * socket-io.c: make GetHostByName ("") work on windows.
1164         Fixes bug #456723.
1165
1166 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1167
1168         * object-internals.h:
1169         * threads.c: use a spin lock when accesing the per-thread appdomain
1170         list.
1171
1172 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1173
1174         * threads.c: no need to take the threads lock in push/pop appdomain.
1175
1176 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1177
1178         * reflection.c (_mono_reflection_parse_type): MS supports
1179         non-assembly-qualified types in a generic type parameter list
1180         when enclosed in '[]' (which signals that they should be a fqn).
1181
1182         This breaks ECMA specs for how type names are encoded in cattr
1183         blobs but F# does it.
1184
1185         Fixes #576342.
1186
1187 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1188
1189         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1190         for instance methods/ctors.
1191
1192         Fixes #422113.
1193
1194 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1195
1196         * reflection.c: Use the new verifier support for checking
1197         custom attributes.
1198
1199         Fixes #595306.
1200
1201 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1202
1203         * metadata-verify.c: Implement structural verification
1204         of custom attributes. This check requires access to the
1205         loader since to resolve the size of an enum we have to
1206         look it up.
1207         We don't check if named argumenments are encoded in a
1208         compatible fashion to their underlying field/prop.
1209         Maybe we should?
1210
1211         * verify-internals.h: Add two new cattr verification API.
1212
1213 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1214
1215         * metadata-verify.c (decode_signature_header): Fix signature.
1216
1217 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1218
1219         * verify.c (mono_verifier_is_enabled_for_method): Handle
1220         assembly less images.
1221
1222         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1223
1224 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * loader.c (mono_method_signature_checked): Properly
1227         init MonoError.
1228
1229         * loader.c (mono_method_signature): It's the calee
1230         resposibility to init the error object.
1231
1232 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1233
1234         * metadata-verify.c (decode_signature_header): Do proper
1235         overflow checking.
1236
1237 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1238
1239         * reflection.c: maintain the invariants required by
1240         mono_class_layout_fields() also in typebuilder_setup_fields ().
1241
1242 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1243
1244         * security-core-clr.c: Call mono_class_setup_methods in 
1245         get_default_ctor before checking klass->methods. Fix typo in
1246         comment
1247
1248 2010-04-10  Jb Evain  <jbevain@novell.com>
1249
1250         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1251         add .net 4.0 RTM version.
1252
1253 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1254
1255         * reflection.c (resolve_object): Properly inflate generic
1256         methods when a context is supplied.
1257
1258         Fixes #591226.
1259
1260 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * verify.c (mono_method_verify): A switch op don't empty
1263         the stack for the next one. Fixes a bug when running fsi
1264         under --verify-all.
1265
1266 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1269         fields as valid standalone sig too. F# does generate them.
1270
1271         * metadata-verify.c (verify_typedef_table_full): Ignore
1272         what <module> extends.
1273
1274 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1275
1276         * verify.c (do_invoke_method): It's ok to do use call with
1277         virtual, non-final methods if their class is sealed.
1278
1279 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1280
1281         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1282         is a near identical copy of mono_field_get_value_object. So simply
1283         call it.
1284
1285         * object.c (mono_field_get_value_object): Handle literal fields
1286         on open generic classes.
1287
1288         Fixes #594942.
1289
1290 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1291
1292         * reflection.c (mono_reflection_create_runtime_class): Setup
1293         parent/supertype information again since it can be changed
1294         without notice.
1295
1296 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1297
1298         * verify.c (verify_type_compatibility_full): Properly handle
1299         stores between arrays of primitives.
1300
1301         Fixes the verifier side of #555950.
1302
1303 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1304
1305         class.c (mono_bounded_array_class_get): Properly init
1306         cast_class to take the fact that uint[] and int[] can be
1307         casted between each other.
1308
1309         Fixes #555950.
1310
1311 2010-04-07  Geoff Norton  <gnorton@novell.com>
1312
1313         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1314
1315 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1318         builders. Fixes #594464.
1319
1320 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1323         waiting for all threads to suspend, as those threads can't be suspended.
1324
1325 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1328         to avoid crashes on newly created threads.
1329
1330 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1331
1332         * file-io.c: reset the MonoIOStat structure in case of error.
1333         Fixes bug #582667.
1334
1335 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1336
1337         * class.c (print_implemented_interfaces): Print proper type name.
1338
1339         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1340         the override map for generic instances since it later ignored.
1341
1342         * class.c (mono_class_implement_interface_slow): Don't break for
1343         dynamic generic instances.
1344
1345         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1346
1347         * reflection.c (mono_reflection_method_get_handle): New method that
1348         resolves a method handle.
1349
1350         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1351         case when we override methods from a dynamic generic instance interface.
1352
1353         Fixes #575941.
1354
1355 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1356
1357         * threadpool.c: don't attempt to close the pipe when it has not been
1358         created.
1359
1360 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1361
1362         * threadpool.c: if there are no waiting threads, try to start a new
1363         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1364         No need to use InterlockedCompareExchange to read volatile variables.
1365
1366 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1367
1368         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1369         and reference types that point to the same class.
1370
1371         Fixes #565598.
1372
1373 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1376         when verifying compatibility between a generic instance and a generic
1377         parameter.
1378
1379         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1380
1381         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1382         name.
1383
1384         Fixes #587849.
1385
1386 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1387
1388         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1389
1390 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1393
1394 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1395
1396         * process.c: when cross-compiling with MinGW, force GetProcessId
1397         lookup using GetProcAddress.
1398
1399 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1400
1401         * sgen-gc.c: parse_environment_string_extract_number() must be
1402         static.
1403
1404 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1405
1406         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1407         gray_object_dequeue(), to make sure they're inlined.
1408
1409 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1410
1411         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1412         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1413
1414 2010-04-02  Jb Evain  <jbevain@novell.com>
1415
1416         * exception.c: remove dead code.
1417
1418 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1421         with mono-gc.h.
1422
1423 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1424
1425         * sgen-gc.c: Make the nursery size adjustable by the
1426         MONO_GC_PARAMS environment variable.
1427
1428         Code is contributed under MIT/X11 license.
1429
1430 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1431
1432         * threadpool.c: threadpool threads wait is alertable.
1433         Fixes bug #592964.
1434         Reduced the stack size of the *poll_wait thread.
1435
1436 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1437
1438         * exception.c|metadata-internals.h: Add new mono_get_exception_
1439         field_access_msg and mono_get_exception_method_access_msg 
1440         functions that accept a const char* parameter to provide more 
1441         details when the exception is thrown.
1442         * security-core-clr.c|h: Rework code to allow logging exceptions
1443         (export MONO_LOG_MASK="security") and to supply more details in
1444         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1445         mono_security_core_clr_is_field_access_allowed and 
1446         mono_security_core_clr_is_call_allowed to return an exception,
1447         with messages and logging, that can be emitted by method-to-ir.c
1448
1449 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1450
1451         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1452         pinned object.
1453
1454 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1457         the assembly name is not well formed utf8. Fixes #567882.
1458
1459 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1462         the generic parameters from the builder. Fixes #473298.
1463
1464 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1465
1466         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1467
1468         * marshal.c (emit_marshal_boolean): Eliminate possible
1469         uninitialized local warning. 
1470
1471 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1472
1473         * class.c (mono_class_init): Postpone coreclr inheritance check
1474         until the end of the initialization (so we can check up the 
1475         default ctor manually for the core-clr inheritance rules).
1476         * security-core-clr.c: Add the missing (undocumented) checks on
1477         default constructors when verifying inheritance rules.
1478
1479 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1480
1481         * domain-internals.h (MonoJitExceptionInfo): Add new field
1482         handler_end to the data union. To be used to point the end
1483         of a finally block.
1484
1485 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1486
1487         * reflection.c: Add support for new v4 type
1488         System.Reflection.MonoModule that is the concrete version
1489         of Module which is abstract unver v4.
1490
1491 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1492
1493         * class.c (mono_class_init): Don't set class failure after
1494         inited = 1 is set. It must be done before.
1495
1496 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1497
1498         * mono-config.c: Add support for OS "haiku"
1499         * ChangeLog: Fix UTF-8 encoding
1500
1501         Code is contributed under MIT/X11 license.
1502
1503 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1504
1505         * console-unix.c: fixed include logic for sys/ioctl.h.
1506
1507 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1508
1509         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1510         systems.
1511
1512 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1515         unfinished/broken typebuilders.
1516
1517 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1518
1519         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1520         for the minor section allowance.
1521
1522 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1523
1524         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1525         "NoOptimization".
1526
1527 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1528
1529         * sgen-gc.c: Count bytes allocated with heavy statistics.
1530
1531 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1532
1533         * sgen-gc.c: More detailed time statistics.
1534
1535 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1536
1537         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1538         fix the user defined mark interface to pass a pointer
1539         to the object location and not the object itself.
1540
1541 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1542
1543         * reflection.c (mono_method_body_get_object): Release
1544         the method header before the call to CACHE_OBJECT since
1545         this is a macro that returns.
1546
1547 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * class.c (inflate_generic_type): mono_metadata_type_dup
1550         already dupes array information, the g_memdup was just
1551         leaking memory.
1552
1553 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1554
1555         * verify.c: Add stack_peek function. Fix CEE_DUP
1556         to not read from invalid memory if push did expand
1557         the stack.
1558
1559 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * verify.c: Remove old table verification code that has
1562         been superseeded by the new metadata verifier.
1563
1564         * verify.h: Remove mono_image_verify_tables from the public
1565         API.
1566
1567         * pedump.c: Fix for removed bits.
1568
1569 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * verify.c: Allocate stack slows lazily to reduce stack usage
1572         in case of methods with huge stacks. Reduces memory consumption
1573         for mcs yyparse from 459Mb to 1.8Mb.
1574
1575 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1576
1577         * threadpool.c: don't try executing items from domains being
1578         unloaded. Fixes appdomain-async-invoke test.
1579
1580 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1581
1582         * threadpool.c: spin while the threadpool initializes.
1583         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1584         down, don't do anything.
1585
1586 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * threads.c (mono_thread_create_internal): Set the GC type of the
1589         threads_starting_up hash table.
1590
1591 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1592
1593         * threadpool.c: reset 'state' to avoid returning non-null when the
1594         event type is not found.
1595
1596 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1597
1598         * sgen-gc.c: make copy_object () take the address of the
1599         slot holding the reference. This allows saving memory stores
1600         when not needed and it allows keeping track of oldspace->nursery
1601         references for the card table code.
1602
1603 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1604
1605         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1606
1607         Code is contributed under MIT/X11 license.
1608
1609 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1610
1611         * object.c, threads.c, threads-types.h, threads.h: make the
1612         managed thread local storage references precisely tracked.
1613
1614 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1615
1616         * threadpool.[ch]: reworked the threadpool:
1617                 -Threadpool threads use a work-stealing queue. Adding a work
1618                 item from a threadpool thread will queue it in the thread
1619                 local queue without locking (in most cases).
1620                 -epoll events are coalesced before being added to the IO
1621                 queue.
1622                 -Dynamically change the number of active threads
1623                 -Changed the global queue to be more GC friendly
1624
1625         * class-internals.h: add 2 new performance counters for the number of
1626         threads in the threadpool and the IO threadpool.
1627
1628         * object-internals.h: new field in MonoAsyncResult.
1629         * icall-def.h: new internal call for queueing work items.
1630
1631         * Makefile.am: add 2 new files.
1632
1633         * appdomain.c: bump up corlib version.
1634
1635         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1636
1637         * mono-perfcounters-def.h:
1638         * mono-perfcounters.c: added 2 new performance counters.
1639
1640 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1641
1642         * sgen-gc.c: More FIXME/TODO updates.
1643
1644 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1645
1646         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1647         function mono_gc_invoke_with_gc_lock() which invokes a function
1648         with the guarantee that no collection will occur during its execution.
1649
1650 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1651
1652         * sgen-gc.c: Update a few comments.
1653
1654 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1655
1656         * reflection.c: Add support for new v4 type
1657         System.Reflection.MonoAssembly that is the concrete version
1658         of Assembly which is abstract unver v4.
1659
1660 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1661
1662         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1663         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1664
1665         Expose a few macros that are needed for SR but not SRE to the
1666         world (previous inside the SRE ifdef)
1667
1668 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1669
1670         * sgen-gc.c (gc_register_current_thread): We need
1671         stack_start_limit as well in the non-attribute pthread case.
1672
1673 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * threads.c: Fix windows build.
1676
1677 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1678
1679         * thread-types.h: Add mono_thread_resume_interruption.
1680
1681         * threads.c: Add mono_thread_resume_interruption, this
1682         function should be called after the last protected handler
1683         found at interruption time has finished.
1684
1685 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1686
1687         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1688         Check MonoInternalThread's ::state instead of ::abort_exc
1689         since the later can be lazily created.
1690
1691         This is specially problematic when running a finally block
1692         under AbortRequested state. ResetAbort must work, but the
1693         abort_exc object has not been created because interruption
1694         has not began.
1695
1696 2010-03-22  Geoff Norton  <gnorton@novell.com>
1697
1698         * locales.c: Its possible for CFStringGetCStringPtr
1699         to return null and not convert encodings.  Use
1700         CFStringGetCString instead.
1701
1702 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1703
1704         * class-internals.h, class.c, object.c: introduce compressed
1705         interface bitmaps (for now only under small config): this saves
1706         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1707         startups.
1708
1709 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1710
1711         * mono-debug.c: don't try to get the method header, it causes a
1712         deadlock and it is not used for anything anymore.
1713
1714 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1717         broken by the last change.
1718
1719 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1720
1721         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1722         SOCK_RDM.
1723         
1724         Code is contributed under MIT/X11 license.
1725
1726 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1727
1728         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1729         nursery.
1730
1731         Code is contributed under MIT/X11 license.
1732
1733 2010-03-19  Martin Baulig  <martin@ximian.com>
1734
1735         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1736         dummy field, containing an empty string.
1737         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1738
1739
1740 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1741
1742         * class.c: setup_interface_offsets() refactor to not call
1743         mono_class_get_implemented_interfaces () more times than needed and
1744         to reduce the runtime memory requirements to be O(num_interfaces)
1745         instead of O(max_interface_id).
1746
1747 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1748
1749         * mono-mlist.[ch]: add mono_mlist_set_next ().
1750
1751 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1752
1753         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1754         associated changes to support holes in the protected range of a
1755         try block.
1756
1757         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1758         retrieves the holes table from a given MonoJitInfo.
1759
1760 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1761
1762         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1763         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1764         hide the contents of the MonoString and MonoArray structs from the
1765         public API. Change the accessor macros to accessors functions where
1766         needed. Adjusted the array API to allow for pointer-sized lengths and
1767         starting positions, so 64 bit arrays can be optionally provided in an
1768         API compatible way if needed on 64 bit systems.
1769
1770 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1771
1772         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1773         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1774
1775 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1776
1777         * class-internals.h: remove the method header from MonoMethod since
1778         from now on it will be transient. We have a header pointer for method
1779         wrappers, since in that case we need to keep track of it. For this
1780         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1781         structs now. The same happens with MonoMethodInflated.
1782         * class.c: reset the sre_method flag for inflated method structures:
1783         this makes the code that cares look at the header in the MonoMethodInflated
1784         structure.
1785         * loader.c: lookup the method header in the appropriate field now that
1786         it is removed from MonoMethod.
1787         * metadata-internals.h: add a flag to the method header to know if it
1788         can be freed inside mono_metadata_free_mh ().
1789         * method-builder.c: updates after moving the header field from
1790         MonoMethod to MonoMethodWrapper.
1791         * reflection.c: MonoMethods generated from Reflection.Emit use
1792         MonoMethodWrapper structs if they need a method header now (later take
1793         advantage of this and remove all the current unsafe uses of method_aux_hash).
1794         * metadata.c: make method header parsing not leak when verification
1795         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1796         These changes save a few hundred KB of runtime memory in a mcs
1797         bootstrap or a monodevelop startup.
1798
1799 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         * verify.c: Improve error message.
1802
1803 2010-03-12  Jb Evain  <jbevain@novell.com>
1804
1805         * reflection.c (add_exported_type): populate the exported
1806         table with the type's nested type.
1807
1808 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1809
1810         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1811         can't read parentheses.
1812
1813 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1814
1815         * threads.c (thread_cleanup): Add a guard to dereferencing
1816         "thread" to avoid an unlikely race condition.
1817
1818 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1819
1820         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1821         instead of an empty string.
1822
1823 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1826         convert to a boolean, recent gcc versions compile this differently.
1827
1828 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1829
1830        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1831        inlined.
1832
1833 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1834
1835         * sgen-gc.c (STRING_SIZE): Off by one.
1836
1837 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1838
1839         * sgen-archdep.h: Fix the signal context register access for
1840         AMD64.
1841
1842 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1843
1844         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1845
1846 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1847
1848         * verify.c: Store the initial basic block returned by mono_basic_block_split
1849         so we can release the whole list and not just the first one.
1850
1851 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1852
1853         * verify.c, debug-helpers.c, profiler.c, loader.c,
1854         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1855         MonoMethodHeader a transient entity.
1856
1857 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1860         uncontrolled growth of the gray stack.
1861
1862         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1863         added items are removed first, improving cache locality. Avoid freeing queue
1864         segments in the fast path, use the list of segments as the free list, truncate
1865         it to its max size at the start of collection.
1866
1867 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1868
1869         * metadata-internals.h: more memory savings, both with small config and without.
1870
1871
1872 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1873
1874         * appdomain.c, domain-internals.h, domain.c, object.c:
1875         make class_vtable_hash into an array to reduce memory usage.
1876
1877 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1878
1879         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1880         object-internals.h, object.c, reflection.c, threadpool.c:
1881         reduce resource usage when the small config is selected.
1882         In particular, up to 64K of methods/fields/properties/events
1883         are allowed and "other" methods in events are ignored.
1884
1885 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1886
1887         * threads.c: reduce resource usage when compiled for a small config.
1888
1889 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1890
1891         * sgen-gc.c: Also collect number of degraded-alloced objects with
1892         heavy statistics.
1893
1894 2010-03-04  Geoff Norton  <gnorton@novell.com>
1895
1896         * assembly.c: Only support OSX bundling if the bundle is 
1897         actually detectable.
1898
1899 2010-03-04  Geoff Norton  <gnorton@novell.com>
1900
1901         * loader.c: The marshal specs are freed at the end of the call
1902         but it explicitly frees the strings as well as the container,
1903         so we need to dup them too to avoid referencing free'd memory.
1904
1905 2010-03-04  Geoff Norton  <gnorton@novell.com>
1906
1907         * icall-def.h:
1908         * icall.c: Add a new private internal icall to construct
1909         an object from its type without running the ctor.
1910
1911 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1912
1913         * profiler.c: allow multiple profiler engines to be loaded
1914         at the same time.
1915
1916 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1917
1918         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1919         profiler event to track object moves.
1920
1921 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1922
1923         * object.c, profiler.c, profiler.h, string-icalls.c:
1924         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1925
1926 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1927
1928         * decimal.c (mono_double2decimal): Add support for reducing the
1929         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1930         expected.
1931
1932 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1933
1934         * icall-def.h:
1935         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1936
1937 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1938
1939         * mono-config.c (mono_config_parse_assembly_bindings): added -
1940         parses assembly binding redirections from appdomain's config
1941         file.
1942
1943         * metadata-internals.h: added definition of a new function -
1944         mono_config_parse_assembly_bindings - to support parsing assembly
1945         binding redirections defined in appdomain's config file.
1946
1947         * domain-internals.h: added two new fields to _MonoDomain - a list
1948         of assembly bindings and a flag to parse the config file only
1949         once.
1950
1951         * assembly.c (assembly_binding_maps_name): empty culture name and
1952         NULL culture name are considered equal.
1953         (mono_assembly_apply_binding): added support for domain specific
1954         assembly binding redirections, read from the appdomain's
1955         configuration file. Fixes bug #580185
1956
1957 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1958
1959         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1960         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1961         support.
1962
1963 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1964
1965         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1966         from this function. The new function receive the parent token instead of a type.
1967
1968         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1969         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1970         typebuilders. This make it possible to properly encode generic type builders since
1971         their unmanaged type don't have generics data while unfinished.
1972
1973         Fixes #583655.
1974
1975 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1976
1977         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1978         writing binary log files (can be enabled by #define'ing
1979         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1980         bugs in longer running programs.
1981
1982 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1983
1984         * metadata.c: added some API documentation.
1985
1986 2010-03-01  Robert Jordan  <robertj@gmx.net>
1987
1988         * filewatcher.h: Include glib.h to fix the MSVC build.
1989
1990 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1993         a GC handle instead. This is a bit slower to access, but avoids burdening the
1994         GC with 100s of individual roots.
1995
1996         * reflection.c (mono_class_get_ref_info):
1997         (mono_class_set_ref_info):
1998         (mono_class_free_ref_info): New internal helper fuctions.
1999
2000         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2001         of accessing klass->reflection_info directly.
2002
2003         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2004         words.
2005
2006         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2007         the previous array.
2008
2009 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2012         needs an indirection.
2013
2014 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2017         so all generic sharing code is in one place.
2018
2019         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2020         we don't call setup_interface_offsets () for unfinished types.
2021
2022 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * class.c (mono_class_generic_sharing_enabled): Move this to
2025         generic-sharing.c.
2026
2027         * image.c: Add an unload hook which is called before an image is unloaded.
2028
2029         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2030         metadata.c having to depend on generic sharing.
2031
2032 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2033
2034         * class.c: reduce size of ridiculously large cache.
2035
2036 2010-02-26  Martin Baulig  <martin@ximian.com>
2037
2038         * mono-debug.h
2039         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2040
2041         * threads.c (mono_thread_internal_reset_abort): New method; resets
2042         the abort, but doesn't throw any exception if no abort was requested.
2043
2044 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * class.c (get_implicit_generic_array_interfaces): Call
2047         mono_class_setup_interface_offsets () before accessing
2048         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2049         some reason.
2050
2051 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2052
2053         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2054         icall internal.
2055
2056 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2057
2058         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2059         direct access to the MonoType fields.
2060
2061 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * threads.h: Move some internal functions which were added to this header by
2064         mistake to threads-types.h.
2065
2066         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2067
2068 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2069
2070         * class-internals.h, class.h, object.h: make MonoRemoteClass
2071         and mono_remote_class() internal.
2072
2073 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2074
2075         * metadata-internals.h, class-internals.h, metadata.h: make the
2076         MonoType guts internal as well.
2077
2078 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2079
2080         * reflection.h: the MonoTypeNameParse guts are internal now.
2081         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2082         are internal now, provide accessors as needed.
2083         * metadata.h, metadata-internals.h: the MonoMethodSignature
2084         guts are internal now.
2085         * Makefile.am: mempool.h is an internal header now.
2086         * *.h, *.c: remove glib.h usage from the public headers.
2087
2088 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2089
2090         * culture-info-table.h : regenerated.
2091
2092 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2093
2094         * metadata.c: Add mono_method_get_header_summary which returns minimal
2095         information about the header of a method. This is the information used
2096         by the inline oracle to reject methods.
2097
2098         This method doesn't decode local variables and doesn't cache it's result,
2099         so it should cause a minimal reduction in memory usage.
2100
2101         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2102         mono_method_get_header_summary.
2103
2104 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2105
2106         * threads.c (mono_thread_exit): Make sure that the main thread is
2107         non-null before dereferencing it.
2108
2109 2010-02-21  Geoff Norton  <gnorton@novell.com>
2110
2111         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2112         locale.
2113         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2114         before falling back to the posix lookup.
2115
2116 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2119         the DONT_MANAGE flag set.
2120
2121 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2122
2123         * domain.c: Remove old v1 version strings. Let the runtime
2124         default to 2.0 instead of failing because it can't find a
2125         working 1.0 instalation.
2126
2127 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2128
2129         * domain.c: Add v4 RC version string.
2130
2131 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2132
2133         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2134         of overflow checking function.
2135
2136 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2139         generic methods.
2140
2141         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2142         cases for ParameterInfo.
2143
2144         Fixes #579493.
2145
2146 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2149         have has_cctor set. Fixes #575946.
2150
2151 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2152
2153         * appdomain.c: display a warning if the parsing the config file
2154         produces any error.
2155         Skip the BOM in UTF-8 files.
2156         Copy the AppDomainSetup before setting the privateBinPath so that the
2157         correct configuration file is read.
2158
2159 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2162         vtable trampoline per vtable slot index. Not used yet.
2163
2164 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2165
2166         * icall-def.h:
2167         * icall.c: add internal call that returns the system page size.
2168
2169 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2172         'int' for system classes.
2173
2174 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2175
2176         * icall.c, icall-def.h: new icall to check for sufficient
2177         stack space.
2178
2179 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2180
2181         * reflection.c (ensure_complete_type): Check that reflection_info
2182         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2183
2184 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2185
2186         * attrdefs.h:
2187         * tabledefs.h: Add NoOptimization flag.
2188
2189 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2190
2191         * sgen-gc.c: Don't consider it a missing remset if the target
2192         object is pinned - we might have done the store but not added the
2193         remset yet.
2194
2195 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2196
2197         * sgen-gc.c: When checking for missing remsets, don't assert on
2198         the first one, but print them all and then assert.
2199
2200 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2201
2202         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2203
2204 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2205
2206         * console-unix.c: On OSX Control-Y is assigned to
2207         VDSUSP (non-Posix), the
2208         suspend-program-next-time-it-tries-to-read-input command (this is
2209         different than C-z, which suspends immediately).
2210
2211         Do the same thing that bash does and ignore this setting,
2212         making our repl/getline support pasting.
2213
2214 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2215
2216         * sgen-gc.c: Simple plausibility check for scan_starts.
2217
2218 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2219
2220         * sgen-gc.c: Round up when calculating the number of scan starts.
2221
2222 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * reflection.c: Export mono_get_object_from_blob.
2225
2226         * object-internals.h: Ditto.
2227
2228         * icall.c: New icall property_info_get_default_value to get the default
2229         value of a property. Since using this is not common, no caching is done.
2230
2231         * icall-def.h: Add new icall.
2232
2233 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2234
2235         * class.c: Add mono_class_get_property_default_value.
2236
2237         * class-internal.h: Export mono_class_get_property_default_value.
2238
2239 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2240
2241         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2242
2243 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2244
2245         * sgen-gc.c: introduced critical regions to allow some lockless
2246         operations and increase scalability.
2247
2248 2010-02-10  Geoff Norton  <gnorton@novell.com>
2249
2250         * reflection.c: Support building with DISABLE_REFLECTION
2251
2252 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2253
2254         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2255         Closes bug #566057.
2256
2257         * exception.c: fix typo in comment.
2258
2259 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2262         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2263
2264         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2265
2266         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2267         the internal API.
2268
2269         Fixes #574434.
2270
2271 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2272
2273         * threads.c: Removed two assertions that were too strict.  Added a
2274         clarifying comment.  Fixes #577090.
2275
2276 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2279         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2280
2281         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2282
2283         * verify.c (mono_type_get_stack_name): Fix a warning.
2284
2285 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2288         mono_marshal_wrapper_info_from_wrapper.
2289
2290         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2291         mono_marshal_method_set_wrapper_data, and export.
2292
2293         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2294         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2295         by calling mono_marshal_get_wrapper_info ().
2296
2297         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2298         small objects which does no size checks.
2299
2300 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2301
2302         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2303
2304 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2305
2306         * verify.c (mono_method_verify): Use the new basic block formation pass
2307         to avoid verifying dead basic blocks. This is the same behavior as the
2308         runtime MS verifier.
2309
2310 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2311
2312         * mono-basic-block.c:
2313         * mono-basic-block.h: New implementation of a basic block formation pass.
2314         The formation pass does static liveness analysis as well to detect dead
2315         basic blocks.
2316
2317 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2318
2319         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2320         'this' argument in icalls.
2321
2322 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2325
2326 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2327
2328         * object.c, domain.c: When using SGen, we must register
2329         vtable->type as a root if it's not a MonoType, because then it
2330         wasn't pin-alloced.
2331
2332 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2333
2334         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2335         at the start of nursery collections, because we might have had
2336         degraded allocations which changed next_data.
2337
2338 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2341         custom attr so this function works in cross-compiling mode.
2342
2343 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * class.c (make_generic_param_class): Initialize interface offsets since we
2346         set klass->inited. Fixes #574819.
2347
2348 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2351         calling the JIT domain cleanup hook.
2352
2353 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2354
2355         * pedump.c (main): Properly set the verifier mode when running the metadata
2356         verifier.
2357
2358 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2359
2360         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2361         overlapping fields now that we're called before has_references is set.
2362
2363         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2364         method. Otherwise all sort of weird stuff happens.
2365
2366 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2369         Fixes #572874.
2370
2371 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2372
2373         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2374         Fixes #573322.
2375
2376 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2377
2378         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2379         pin_staging_area_index is greater than 0.
2380
2381 2010-01-22 Miguel de Icaza (miguel@novell.com)
2382
2383         * loader.c: Since we do nothing with the error returned, pass NULL
2384         to ignore the error.
2385
2386 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2387
2388         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2389         happened before starting to encode the actual fields. This avoid ciclic
2390         dependencies and eventual crashes.
2391
2392         Fixes #572660.
2393
2394 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2395
2396         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2397         atomic and remove the half-constructed hack in SGen.
2398
2399 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2400
2401         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2402         has a recursive reference to itself.
2403
2404         Fixes #571863.
2405
2406 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2407
2408         * loader.c (mono_method_signature): Fix error message.
2409
2410 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2411
2412         * sgen-gc.c: Reuse to-space sections between nursery collections.
2413
2414 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2415
2416         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2417         from the current assembly or mscorlib. Fixes bug #322957.
2418
2419 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2422         get_wrapper_target_class.
2423
2424 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2425
2426         * sgen-gc.c: Fix warnings.
2427
2428 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2429
2430         * verify.c (store_local): Better error message.
2431
2432 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2433
2434         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2435         arguments.
2436
2437 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2438
2439         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2440         function is generics variance aware.
2441
2442 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2443
2444         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2445         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2446
2447 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2448
2449         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2450           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2451
2452         Code is contributed under MIT/X11 license.
2453
2454 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2455
2456         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2457         on a GTD.
2458
2459 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2462         return a point to a wrapper specific info structure describing the wrapper.
2463         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2464  
2465 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2466  
2467         * sgen-gc.c: Make minor collection section allowance adaptive,
2468         depending on the amount of memory reclaimed in the last major
2469         collection.  If more memory was reclaimed (i.e. more garbage
2470         produced), do the next collection earlier.
2471
2472 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2473
2474         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2475         to itself.
2476
2477         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2478         the token as parameter.
2479
2480         * verify-internals.h: Ditto.
2481
2482         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2483
2484         Fixes #571460.
2485
2486 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2487
2488         * sgen-gc.c: Make store_remset_buffer_index long.
2489
2490 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2493
2494         Fixes #569579.
2495
2496 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2499         off precise marking if it is available.
2500         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2501
2502 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2503
2504         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2505
2506         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2507         pinned objects.
2508
2509         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2510         to the array allocator.
2511
2512 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2515         result of mono_compile_method (), it already includes an ftnptr.
2516
2517 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2520
2521 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2524         hash value which doesn't depend on glib/eglib versions.
2525         (mono_metadata_type_hash): Use it.
2526
2527         * object.c (mono_method_get_imt_slot): Ditto.
2528
2529 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2530
2531         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2532         independently of the GTD.
2533
2534         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2535
2536         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2537         to the upper limit since instance_size includes this amount.
2538
2539         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2540
2541         Fixes #569544.
2542
2543 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2546         with static methods.
2547
2548         * object.c (build_imt_slots): Avoid asserting when static methods are
2549         encountered in an interface.
2550
2551 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2552
2553         * sgen-gc.c (to_space_expand): Fix assertion.
2554
2555 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2556
2557         * string-icalls.c: missing declaration fixes.
2558         * sgen-gc.c: portability fixes.
2559
2560 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2563
2564         * class.c:
2565         * cominterop.c:
2566         * icall.c:
2567         * object.c: 
2568         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2569
2570 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2571
2572         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2573         it can fail loading the type.
2574
2575         * class.c: Add mono_class_inflate_generic_class_checked.
2576
2577         * class.c:
2578         * verify.c:
2579         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2580
2581 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2582
2583         * loader.c (mono_method_signature_checked): New internal function taking an
2584         MonoError argument.
2585
2586         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2587         Fixes build on rh 7.3.
2588
2589 2010-01-10  Aaron Bockover  <abockover@novell.com>
2590
2591         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2592         at runtime in the same way as on Windows, which yields a relocatable
2593         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2594         of the running mono process.
2595
2596         On TARGET_ARM, fallback () will always be executed.
2597
2598 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2599
2600         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2601
2602 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * class.c (mono_class_is_assignable_from_slow): Support variant
2605         generic delegates.
2606
2607         * class.c (mono_class_implement_interface_slow): Support types with
2608         variant generic arguments.
2609
2610 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * verify.c: Remove some code duplication.
2613
2614 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2615
2616         * object.c: Update docs.
2617
2618 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2619
2620         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2621
2622         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2623         fallback trampoline as well.
2624
2625         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2626         out argument that is set to TRUE if the match was direct. 
2627
2628         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2629
2630         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2631
2632 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2633
2634         * class.c: Add mono_class_interface_offset_with_variance function that does same
2635         as mono_class_interface_offset but takes variance into account.
2636
2637         * class-internal.h: Export mono_class_interface_offset_with_variance.
2638
2639         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2640
2641 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2642
2643         * object.c:
2644         * icall.c:
2645         * class.c: Add some FIXME for due to variant generic arguments.
2646
2647         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2648         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2649         the bitfield check fails.
2650
2651 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2652
2653         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2654         to be easier to read and fix bugs in the case a non generic type implements a variant
2655         interface.
2656
2657         * class.c (mono_class_has_variant_generic_params): Make non static.
2658
2659         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2660         the private API.
2661
2662 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2663
2664         * assembly.c: fix MONO_PATH debug output.
2665
2666 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2667
2668         * culture-info-table.h : regenerated.
2669
2670 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2671
2672         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2673         types that are meant to not have a parent.
2674
2675 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2676
2677         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2678         from the image mempool, so it is not leaked.
2679
2680 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2683
2684 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2685
2686         * verify.c (verify_valuetype_layout_with_target): Fix case
2687         that can lead to infinite recursion. Fix bug #567861
2688
2689 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * pedump.c: Run code verifier even if image verification fails
2692         due to a failed type we. This allows more errors to be shown.
2693
2694 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2695
2696         * class.c (count_virtual_methods): Remove the assert and now
2697         fail properly.
2698         
2699         * class.c (setup_interface_offsets): This can fail now.
2700
2701         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2702         errors. Check setup_interface_offsets errors.
2703
2704         * class.c (setup_interface_offsets): Simplify the return error logic
2705         and remove class_init_ok.
2706
2707         Fixes #560327.
2708
2709 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2710
2711         * class.c (mono_class_init): Do class verification at the beginning. Add
2712         some asserts to avoid tripping into invalid memory.
2713
2714         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2715         g_error and a decent message.
2716
2717         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2718
2719         Fixes #567548.
2720
2721 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2724         as inline functions instead of defining them in mempool.c.
2725
2726         * metadata-internals.h (MonoImageSet): New structure representing a set of
2727         MonoImages, which own a collection of generic instances.
2728
2729         * metadata.c: Get rid of the global generic caches, instead assign each generic
2730         instance to the image set which consists of all the images referenced by the
2731         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2732         the memory used by generic instances to be allocated from a per image-set mempool
2733         later.
2734
2735 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2738
2739 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * appdomain.c (zero_static_data): Fix a warning.
2742
2743         * locales.c (construct_culture_from_specific_name): Applied patch from
2744         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2745         not found. Fixes #567900.
2746
2747 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2748
2749         * loader.c (mono_method_get_signature_full): Remove two asserts.
2750         Return NULL instead so that the verifier can handle both cases 
2751         gracefully.
2752
2753 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2754
2755         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2756         so we can properly fail types instead of crashing.
2757
2758         Fixes #567676.
2759
2760 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2761
2762         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2763         generic method.
2764
2765 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2766
2767         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2768
2769 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2772         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2773         we can't remove it from it since we don't hold the lock.
2774         (mon_new): Free the orphaned events here when a mon structure is added to the
2775         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2776         this down.
2777
2778 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2779
2780         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2781         as max stack might be zero.
2782
2783         Fixes #562320.
2784
2785 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2788
2789         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2790         instances if the GTD did.
2791
2792         * class.c (mono_class_setup_properties): Ditto.
2793
2794         * class.c (mono_class_setup_events): Ditto.
2795
2796         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2797
2798         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2799         error setting.
2800
2801         * class.c (mono_class_init): Fail if GTD did.
2802
2803         * cominterop.c:
2804         * generic-sharing.c:
2805         * icall.c:
2806         * loader.c:
2807         * object.c:
2808         * verify.c: Properly handle failure of mono_class_setup_methods.
2809
2810 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2811
2812         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2813         mono_class_inflate_generic_method_full internal.
2814
2815         * class.c (inflate_generic_context): Now takes a MonoError argument.
2816
2817         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2818         errors.
2819
2820 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2821
2822         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2823         they cannot be patched. Partly fixes #564408.
2824
2825 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2826
2827         * metadata-internals.h, reflection.c: Use the
2828         MonoDynamicImage.handleref hash table only with unmanaged keys,
2829         and add a managed hash table handleref_managed for managed keys.
2830
2831 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2832
2833         * sgen-gc.c: Unset to-space bumper between collections.  It might
2834         become invalid due to degraded allocations.
2835
2836 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2837
2838         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2839         with the one from the original method.
2840
2841         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2842         compatibility.
2843
2844         * verify-internals.h: Add new function to the internal API.
2845
2846 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2847
2848         * culture-info-tables.h: regenerated it to include the Georgian culture.
2849
2850 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * sgen-gc.c: Include mono/utils/memcheck.h.
2853
2854         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2855         instead of the current domain, since the two might not match if this is called
2856         from the debugger.
2857
2858         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2859         domain which created this assembly.
2860
2861 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2862
2863         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2864
2865 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2866
2867         * sgen-gc.c: Managed implementation of the specialized generic
2868         store write barrier.
2869
2870 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2871
2872         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2873         A private virtual newslot method is used to implement an interface method without exposing
2874         it to users. When querying for public instance methods, such method would hide a public one
2875         on a parent type.
2876
2877         Fixes #564379.
2878
2879 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2880
2881         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2882         conventions.
2883
2884 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2885
2886         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2887
2888 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2889
2890         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2891         as they are no longer used.
2892         
2893          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2894
2895         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2896
2897 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2898
2899         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2900         if the owner class has not been finished before returning reflection_info.      
2901
2902         Fixes #565127.
2903
2904 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2907         param doesn't have custom attributes. Fixes #565117.
2908
2909         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2910         #565120.
2911
2912 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2913
2914         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2915
2916 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2917
2918         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2919         same amount done by a core-clr enabled runtime.
2920
2921 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2922
2923         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2924         the target files is reset to writable by owner and readable by
2925         everyone else to prevent problems when updating shadow copies of
2926         files whose source is read-only. Fixes bug #556884
2927
2928 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2929
2930         * class.c (mono_generic_class_get_class): Allocate the generic
2931         class via malloc again, so that it can be freed when any one of
2932         the images of its constituent types is closed.
2933
2934         * metadata.c: When closing an image, don't free generic insts and
2935         generic classes right away, but put them into a list for later
2936         freeing.
2937
2938         * image.c, metadata-internals.h: Store the free list and in the
2939         second pass of closing an image, free it.
2940
2941 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2944
2945         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2946         types in type_hash.
2947
2948         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2949
2950 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2953         user type.
2954
2955         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2956         is used.
2957
2958 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2959
2960         * verify.c (mono_method_verify): The Unused opcodes produce an
2961         InvalidProgramException on .NET
2962
2963 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2964
2965         * loader.c (mono_method_get_header): Move assert after the verifier
2966         has been called on the method header.
2967
2968 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2971
2972         * appdomain.c: Bump corlib version.
2973
2974 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2975
2976         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2977         types as well since otherwise generic instances would not return UT as arguments but
2978         their undelying system type.
2979
2980         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2981         to reflect the fact that they can have now multiple different types.
2982
2983         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2984
2985         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2986
2987         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2988
2989         * reflection.c (mono_reflection_register_with_runtime): Init super types
2990         if the image is not dynamic.
2991
2992         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2993         check if the generic type definition is a TypeBuilder.
2994
2995         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2996         doesn't belong to a dynamic image, skip initialization.
2997
2998         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2999         base definition is not a dynamic type.
3000
3001 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3002
3003         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3004         mono_profiler_string_allocation
3005
3006         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3007         if string profiling is enabled, call
3008         mono_profiler_string_allocation
3009
3010         * profiler.h: added two MonoProfileFlags -
3011         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3012         installation functions for the hooks below.
3013
3014         * profiler-private.h, profiler.c: added two hooks:
3015         mono_profiler_string_allocation called whenever a string is
3016         allocated by InternalAllocateStr and mono_profiler_iomap called
3017         whenever IOMAP code performs an adjustement on a file path.
3018
3019 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3020
3021         * boehm-gc.c: fixed race condition while getting the target of a
3022         disappearing link (bug #522233).
3023
3024 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3025
3026         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3027         the error.
3028
3029 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3030
3031         * reflection.c: Add mono_reflection_register_with_runtime icall to
3032         allow a MonoGenericClass to register itself as the managed mirror of
3033         a given generic instance.
3034         This is a temporary workaround until all MGC instantiation happens in
3035         managed code.
3036
3037         * object-internals.h: Ditto.
3038
3039         * icall-def.h: Ditto.
3040
3041 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3042
3043         * sgen-gc.c (find_in_remsets): Also search the generic store
3044         remsets.
3045
3046 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3047
3048         * sgen-gc.c: Don't access class names in debugging code when
3049         unloading a domain, because they might not be valid anymore.
3050
3051 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3052
3053         * domain.c, domain-internals.h: New function mono_domain_unset().
3054
3055         * appdomain.c (unload_thread_main): Detach the thread again at the
3056         end.
3057
3058         * threads.c: When a thread exists or is detached, unset its domain
3059         so that it's NULL when, for example, a pthread destructor runs.
3060
3061         * sgen-gc.c: Assert that there is no domain set after a thread is
3062         done.
3063
3064 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3065
3066         * class.c (mono_generic_class_get_class),
3067         metadata.c (free_generic_class): Allocate generic MonoClass's from
3068         the image mempool, not via malloc.  The problem with malloc is
3069         that when unloading a domain those classes are freed before
3070         clearing the heap and SGen needs the classes.  Rewriting the
3071         unloading code to do the free later would be more work and there's
3072         no point in using malloc anyway.
3073
3074 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3075
3076         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3077         before returning.
3078
3079 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3080
3081         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3082         user string blobs.
3083
3084         * verify-internals.h: Add new function to the internal API.
3085
3086         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3087         check if it's a valid string.
3088
3089         * object.c (mono_ldstr): Ditto.
3090
3091         Fixes #561943.
3092
3093 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3094
3095         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3096         from a method before returning it. This is the expected behavior.
3097
3098 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100         * reflection.c (inflate_method): Handle the case of a regular system type.
3101
3102 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3103
3104         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3105         gathering code.
3106
3107         * mempool.c, mempool-internals.h: New function
3108         mono_mempool_get_bytes_allocated().
3109
3110         * Makefile.am: sgen-pinning-stats.c added.
3111
3112 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3113
3114         * sgen-gc.c (create_allocator): Only use the fast path if the
3115         object size is within the small object size limit.
3116
3117 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3118
3119         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3120         possibly adding padding to sizeof (GCMemSection).
3121
3122 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3123
3124         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3125         reference is not in the nursery.
3126
3127 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3128
3129         * class.c (mono_class_from_typeref): Bounds check idx against the 
3130         assemblyref table.
3131
3132 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3133
3134         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3135         through the potential roots, then sort the results and find the
3136         pinned objects from there.
3137
3138         * Makefile.am: sgen-pinning.c added.
3139
3140 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3141
3142         * sgen-gc.c: Record generic stores in specialized remset buffers.
3143
3144 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3145
3146         * sgen-gc.c: Make pinned chunks the same size as major heap
3147         sections, and align them as well, so that we can check whether an
3148         object is in a pinned chunk or a major section in constant time.
3149
3150 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3151
3152         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3153
3154 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3155
3156         * sgen-gc.c: Make all major heap sections the same size (currently
3157         128k) and allocate them on aligned addresses.  Small heap sections
3158         give us better granularity with pinned objects - we can free up
3159         much more memory.
3160
3161 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3162
3163         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3164         output removed.
3165
3166 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3167
3168         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3169
3170         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3171         names in addition to the runtime generated one.
3172
3173         * mono/metadata/image.h: Add a function to take the real name of the assembly
3174         image.
3175
3176         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3177         use it instead of the runtime generated one.
3178
3179         Code is contributed under MIT/X11 license.
3180
3181 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3184         before the other checks to prevent problems if the DateTime class is blittable.
3185         Hopefully fixes #559600.
3186
3187 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3188
3189         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3190         returns the largest string length that will not be put into the
3191         LOS.
3192
3193         * sgen-gc.c, gc-internal.h: New function that returns the largest
3194         object size that will not be put into the LOS.
3195
3196         * appdomain.c: Bump corlib version.
3197
3198 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3201
3202         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3203
3204 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3205
3206         * reflection.c (inflate_method): Fix signature.
3207
3208         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3209         in managed code.
3210
3211 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3212
3213         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3214
3215 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3216
3217         * sgen-gc.c: Abstract to-space handling.
3218
3219 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3220
3221         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3222
3223         Fixes #559906.
3224
3225 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3226
3227         * sgen-gc.c: Only add references from outside the nursery to
3228         within the nursery to the global remset list.
3229
3230 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3231
3232         * appdomain.c (create_exceptions): Set the domain temporarily if
3233         necessary to avoid cross-domain references.
3234
3235 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3236
3237         * verify.c (get_stack_type): Return that the type is invalid instead of
3238         asserting.
3239
3240         * verify.c (mono_method_verify): Verify that all locals and arguments
3241         have valid stack types.
3242
3243         Fixes #559913.
3244
3245 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3246
3247         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3248         bounds checking overflow aware.
3249
3250         Fixes #559910.
3251
3252 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * verify.c (do_invoke_method): Check for invalid method signatures.
3255
3256         Fixes #553450.
3257
3258 2009-12-02  Jb Evain  <jbevain@novell.com>
3259
3260         * appdomain.c (MONO_CORLIB_VERSION): bump.
3261         * icall-def.h (get_base_definition): renamed to get_base_method
3262         and add a boolean argument indicating we want the original
3263         method definition, or the immediate base method.
3264         * icall.c: apply the get_base_definition to get_base_method change.
3265
3266 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3267
3268         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3269
3270         Fixes #558042.
3271
3272 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3273
3274         * class.c: remove asserts for invalid type token in
3275         mono_class_name_from_token(), mono_assembly_name_from_token() and
3276         mono_class_create_from_typedef () (fixes bug #553318).
3277
3278 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3279
3280         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3281         incorrect assemblies (bug #553322).
3282
3283 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3286
3287         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3288
3289         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3290
3291         * class.c (inflate_generic_context): Ditto.
3292
3293         * loader.c (method_from_methodspec): Ditto.
3294
3295         Fixes #558230.
3296
3297 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3298
3299         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3300
3301         * class.c (mono_class_create_from_typespec): Ditto.
3302
3303         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3304
3305         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3306
3307         Fixes #558184.
3308
3309 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3312
3313         * verify.c (verify_delegate_compatibility): Ditto.
3314
3315         * verify.c (do_newobj): Ditto.
3316
3317         Fixes #558046.
3318
3319 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3320
3321         * sgen-gc.c: Use a gray queue instead of requiring that gray
3322         objects are in a contiguous region.
3323
3324         * sgen-gray.c: The gray queue implementation.
3325
3326         * Makefile.am: sgen-gray.c added.
3327
3328 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3329
3330         * appdomain.c: When unloading a domain, zero its static data and
3331         perform a minor collection when using SGen.  That will get rid of
3332         all the remsets pointing into that domain's static data.
3333
3334         * sgen-gc.c: Allow remsets into static data.  By doing this we
3335         need less checks so we're more efficient.
3336
3337 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3338
3339         * verify.c (mono_method_verify): Check for catch clauses with broken
3340         types.
3341
3342         Fixes #558465.
3343
3344 2009-12-01  Jb Evain  <jbevain@novell.com>
3345
3346         * class.c (make_generic_param_class): set the namespace of
3347         the generic parameter class from its owner, if available.
3348
3349 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * verify.c (code_bounds_check): Do proper overflow checking.
3352
3353         * verify.c (mono_method_verify): The number of switch entries is
3354         an unsigned int. Properly bounds check it.
3355
3356         Fixes #558594.
3357
3358 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3359
3360         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3361         mono_metadata_method_has_param_attrs which only checks if a given param
3362         list has a non zero flags entry.
3363
3364         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3365         to inform how many params should we expect to decode.
3366
3367         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3368         as it's faster than mono_metadata_get_param_attrs.
3369
3370         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3371         add mono_metadata_method_has_param_attrs.
3372
3373 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3374
3375         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3376         failures.
3377
3378         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3379         is -1 but its class is broken.
3380
3381         Fixes #558522.
3382
3383 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3384
3385         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3386         for parameter overflow.
3387
3388         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3389         of mono_metadata_get_param_attrs.
3390
3391         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3392         API.
3393
3394         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3395
3396 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3397
3398         * class.c (mono_class_setup_fields): Check for fields with broken types.
3399
3400         Fixes #558741.
3401
3402 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3403
3404         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3405         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3406         its TypeBuilder::CreateType ().
3407
3408         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3409         if not needed.
3410
3411         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3412         to make setup_interface_offsets happy.
3413
3414         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3415         compilation now works.
3416
3417 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * appdomain.c (create_exceptions): New helper function extracted from
3420         mono_runtime_init () to precreate objects used during exception handling.
3421         (mono_runtime_init): Call it.
3422         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3423
3424 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3425
3426         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3427         compilation until the proper one is found.
3428
3429 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * class.c (mono_class_setup_vtable_general): Cache the result of
3432         get_virtual_methods () since it can be slow because of the metadata
3433         optimization.
3434
3435         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3436         from a MonoValueHashTable for now, since the later is based on an earlier
3437         version of hpj's internal probing code and seems to have serious collision
3438         issues.
3439
3440         * loader.c (mono_get_method_full): Update after the change above.
3441
3442 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3445
3446 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3447
3448         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3449         the GTD instead of the DGC instead of crashing.
3450
3451         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3452         required. Inflate fields if needed.
3453
3454         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3455         finished. Renamed.
3456
3457 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3458
3459         * class.c (check_interface_method_override): Check for NULL signatures and fail
3460         the type.
3461
3462         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3463
3464         Fixes #553428.
3465
3466 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3469         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3470
3471 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3472
3473         * loader.c (field_from_memberref): Resolve the class first then the field
3474         signature. Remove a lot of duplicated code and make sure we don't pass valid
3475         values to mono_loader_set_error_field_load.
3476
3477         Fixes #553306.
3478
3479 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3480
3481         * class.c (inflate_generic_type): Change code to use new signature of
3482         mono_error_set_bad_image.
3483
3484         Fixes #558124.
3485
3486 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3487
3488         * verify.c (mono_method_verify): Don't free ctx.params items if 
3489         we aborted while inflating the ctx.locals. Complete previous fix
3490
3491 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3492
3493         * verify.c (mono_method_verify): Use the uninflated type name, 
3494         when the inflated is null, to report errors. Also take care when
3495         freeing, not to free everything since, in case of an error, some
3496         stuff would be copies (i.e. not allocated by the function itself)
3497         Fix bug #558145
3498
3499 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3500
3501         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3502         or overflow. The caller must have done this check explicitly. This guard us
3503         from accessing invalid memory.
3504
3505         * verify.c (do_push_static_field): Check for stack overflow.
3506
3507         Fixes #553333.
3508
3509 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3510
3511         * loader.c (find_method_in_class): Don't crash if the signature cannot
3512         be resolved.
3513
3514         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3515         of asserting for the case of invalid params.
3516
3517         Fixes #553304.
3518
3519 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3520
3521         * image.c (mono_image_load_module): Fix crash when a bad assembly
3522         has no module at all (fix bug #553412) and also replace the 
3523         g_assert with a return NULL (documented return value for failure)
3524
3525 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3528
3529 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3530
3531         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3532         file attribute to managed code and avoid doing the mask/attribute
3533         checks here. 
3534
3535 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3536
3537         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3538         the managed world.
3539
3540         * icall-def.h: New entry points.
3541         
3542 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3543
3544         * process.c: Don't put references to managed objects into a
3545         g_ptr_array.
3546
3547 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3548
3549         * class.c (can_access_internals): Allow CoreCLR to participate in
3550         allowing (or not) [InternalsVisibleTo] between assemblies.
3551         * security-core-clr.c|h: Make sure that only trusted code (a 
3552         superset of platform code) can access the internals of platform
3553         code.
3554
3555 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3556
3557         * reflection.c: use the correct base class to get the virtual method
3558         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3559
3560 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3561
3562         * security-core-clr.c (get_caller_no_reflection_related): 
3563         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3564         it's still reflection and must be filtered correctly.
3565
3566 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3567
3568         * object.c (compute_class_bitmap): Fix for large bitmaps.
3569
3570 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3571
3572         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3573
3574         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3575         koush@koushikdutta.com). Disable GC_no_dls on android.
3576
3577 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3578
3579         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3580         tlab_next points outside the TLAB because the allocator was
3581         interrupted.
3582
3583 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3584
3585         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3586
3587 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * object-internals.h: Change signature for mono_string_to_utf8_image.
3590
3591         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3592         argument.
3593
3594         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3595         exceptions due to mono_string_to_utf8.
3596
3597 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3598
3599         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3600
3601         * object.c (mono_remote_class): Make sure all resources are released before
3602         raising an exception.
3603
3604         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3605
3606 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3607
3608         * mono-perfcounters.c (network_get_impl): Change variable initialization
3609         ordering to fix potential memory leak in case of exceptions.
3610
3611         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3612         encoded strings.
3613         
3614 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3615
3616         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3617         variable initialization ordering to fix potential memory leak in case
3618         of exceptions.
3619
3620 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3623         needed.
3624
3625 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3626
3627         * appdomain.c: Fix shadow path code to better deal with exceptions.
3628
3629 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3630
3631         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3632         exception in the middle of the runtime code.
3633
3634 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3635
3636         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3637         leak memory with broken envvar value.
3638
3639 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3640
3641         * reflection.c (mono_reflection_setup_internal_class): Because
3642         nested classes are not added to the name cache, we must put them
3643         in the reflection_info_unregister_classes list.
3644
3645 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3646
3647         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3648         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3649         platform (trusted) code. Instead we return a TypeLoadException to
3650         be thrown later. This is the exception thrown by Silverlight 2 if
3651         a type, inside application (user) code is marked with [ComImport]
3652
3653 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3656         mono_is_debugger_attached () too.
3657
3658         * mono-debug.c (mono_is_debugger_attached): New helper function.
3659         (mono_set_is_debugger_attached): Ditto.
3660
3661 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * object-internals.h: Add mono_string_to_utf8_checked.
3664
3665         * object.c: Implement mono_string_to_utf8_checked.
3666
3667 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3668
3669         * class.c: Add missing check for load errors after every
3670         call to mono_class_setup_fields
3671
3672         Fixes #552282.
3673
3674 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3675
3676         metadata-verify.c (verify_tables_schema): Fix the error message.
3677
3678 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3679
3680         * metadata.c: Change event table schema to use TDOR for event type
3681         as this is what it's meant to be.
3682
3683         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3684         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3685         entry.
3686
3687         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3688         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3689         rows in MONO_TABLE_GENERICPARAM.
3690
3691         Fixes #552289.
3692
3693 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3694
3695         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3696         insertion.
3697
3698         * reflection.c (mono_reflection_setup_internal_class): Avoid
3699         registering a gc root the same MonoClass multiple times.
3700         Don't register nested types on the global scope as they should
3701         not be available there.
3702
3703 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3704
3705         * culture-info-tables.h: regenerated.
3706
3707 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3708
3709         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3710
3711 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3712
3713         * string-icalls.c|h: Remove string internal calls that are not 
3714         used anymore by the class libraries.
3715         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3716         which is not used in the class librairies.
3717         * icall-def.h: Update tables.
3718
3719 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3720
3721         * class.h: Move mono_class_inflate_generic_type_checked...
3722
3723         * class-internals.h: to here and make it internal. We don't want to
3724         further expose MonoGenericContext. 
3725
3726 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * verify.c (mono_method_verify): Improve error message.
3729
3730 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3731
3732         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3733         the token is already properly encoded. Fixs 4.0 build.
3734
3735 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3736
3737         * locales.c (construct_number_format): Check if the number index is
3738         valid before trying to use it, if not, just return.
3739         
3740 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3741
3742         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3743         since that loses the abort state. Fixes #539394.
3744
3745 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3746
3747         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3748         explicit this argument to the call signature.
3749         (mono_marshal_get_icall_wrapper): Ditto.
3750
3751 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3752
3753         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3754         to indicate which assembly to use when resolving a custom-mod.
3755
3756         Fixes handling of volatile fields used across assemblies as reported in #551513.
3757
3758 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3759
3760         * loader.c: Improve error messages.
3761
3762 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3763
3764         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3765         of interfaces. Fixes IKVM.
3766
3767         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3768
3769 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3770
3771         * verify.c (verifier_inflate_type): Return the inflated type on success.
3772
3773 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3776
3777         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3778
3779         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3780
3781         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3782         flag set.
3783
3784         * profiler.c: Add new profiler callbacks for runtime invoke.
3785
3786         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3787
3788 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3789
3790         * sgen-gc.c: Keep track of the reason for a major collection and
3791         write it to the heap-dump file.
3792
3793 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3794
3795         * threads.c: refactor the code that initializes the
3796         thread_start_args into a reusable function and use this in the two
3797         methods that start up threads.
3798
3799 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3802         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3803
3804 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3805
3806         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3807         Until now, we only had the per-cpu(core) counters.
3808
3809 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3810
3811         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3812         mono_gc_get_suspend_signal(), which returns the suspend signal
3813         number used by the GC.
3814
3815 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3816
3817         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3818
3819         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3820         signalling start_notify.
3821
3822 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3823
3824         * appdomain.c: do not test the st_mode field for shadow-copies.
3825         Fixes bug #545276.
3826
3827 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3828
3829         * threadpool.[ch]: added hooks for thread start/finish and item
3830         processing begin/end. For monotouch use only.
3831
3832 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * threads.c (mono_thread_get_name): New helper function.
3835
3836         * reflection.c (resolve_object): Set handle_class for strings too.
3837         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3838         a cattr blob into a set of arrays and structures without creating the custom
3839         attributes themselves.
3840         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3841
3842         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3843
3844         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3845         function.
3846
3847 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3848
3849         * verify.c: Replace calls to mono_class_inflate_generic_type with
3850         mono_class_inflate_generic_type_checked. Fixes #480005.
3851
3852 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3853
3854         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3855         object since not all paths lead to callees initing it.
3856
3857 2009-10-23  Alp Toker  <alp@nuanti.com>
3858
3859         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3860         header and should not be shipped:
3861
3862         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3863         which is specific to the mono build. Not going to work.
3864
3865 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3866
3867         * security-manager.c: Report if core-clr is active from
3868         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3869         to allow Moonlight BCL to behave appropriately (both in browser
3870         and outside, e.g. smcs)
3871
3872 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3873
3874         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3875         Fixes bug #549108.
3876
3877 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3878
3879         * class.c: fix typo.
3880
3881 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3882
3883         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3884         a MonoError parameter.
3885
3886         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3887         version that can does proper error handling.
3888
3889         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3890
3891         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3892
3893         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3894
3895 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3898         NO_UNALIGNED_ACCESS is defined.
3899
3900 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3903         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3904         Fixes #549173.
3905
3906 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3907
3908         * sgen-gc.c: Shorten sections whenever possible.
3909
3910 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3911
3912         * sgen-gc.c: Use our portable semaphore #defines.
3913
3914 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3915
3916         * sgen-gc.c: A debug option for dumping the heap layout to a file
3917         after each collection.
3918
3919 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3920
3921         * sgen-gc.c: Make managed write barriers atomic via
3922         thread-restarts.
3923
3924 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3925
3926         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3927         methods. Fixes #543021.
3928
3929 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3930
3931         * socket-io.[ch]: fix VS build.
3932
3933 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3934
3935         * icall-def.h:
3936         * socket-io.[ch]: implemented SendFile.
3937
3938 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3941         before the interfaces to avoid crashes later if class initialization fails.
3942         Fixes #548417.
3943
3944         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3945         Fixes #548276.
3946
3947 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3948
3949         * domain.c: Bump 4.0 version.
3950
3951 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3952
3953         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3954         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3955         check since 'pubkey' can't be NULL at this stage
3956         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3957         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3958         initialization of 'iter'
3959
3960 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3961
3962         * cominterop.c : Search the interface parts of vtable to find 
3963           method matches.  Fixes 547030.
3964
3965         Code is contributed under MIT/X11 license.
3966
3967 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3968
3969         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3970         multiple targets. Fixes bug #574426.
3971
3972 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3973
3974         * profiler.h: Put here the definition of
3975         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3976         (and fix the build...).
3977
3978 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3979
3980         * profiler.c, profiler.h, profiler-private.h:
3981         Added support for different ways of getting call chains in stat mode.
3982
3983 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3984
3985         * object.c, object-internals.h: New function for computing the
3986         size of an array, factored out of mono_array_new_full().  Use
3987         SGen's functions for allocating arrays and vectors.
3988
3989         * sgen-gc.c, gc-internal.h: Special functions for allocating
3990         arrays and vectors without race conditions.  A managed array
3991         allocator method.
3992
3993         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3994
3995 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3996
3997         * object.c, object.h, icall.c: Write barriers do the copying now,
3998         as well, so no need for an additional memcpy.
3999
4000         * sgen-gc.c: Lock when storing remsets.  Do the memory
4001         copying/moving in the write barriers.
4002
4003         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4004
4005         * reflection.c: Added an assert.
4006
4007 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4008
4009         * threads.c, process.c: A few missing write barriers.
4010
4011 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4012
4013         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4014         network performance counters for bytes sent per second, bytes
4015         received per second, and bytes total per second.
4016
4017         Code is contributed under MIT/X11 license.
4018
4019 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4020
4021         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4022         Fix warning.
4023
4024 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4025
4026         * threads.c, object-internals.h, object.c: Move code for
4027         transferring an object to a different domain (via
4028         serialization/remoting) to object.c.
4029
4030         * object.c (call_unhandled_exception_delegate): If the exception
4031         is in a different domain than the delegate, transfer the exception
4032         to that domain.
4033
4034 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4037         Fixes #322934.
4038
4039 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4042
4043 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4044
4045         * object.c (mono_method_return_message_restore): Handle the case
4046         where the argument is an instance of a generic type.  Fixes
4047         #544446.
4048
4049 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4050
4051         * object.c (set_value): Write barrier fix - we must pass the
4052         count, not the size.
4053
4054 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * domain.c (mono_init_internal): Print a useful error message when encountering
4057         an old mscorlib, instead of crashing. Fixes #544307.
4058
4059 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4060
4061         * appdomain.c (copy_app_domain_setup): Fix a warning.
4062
4063         * debug-helpers.c (dis_one): Ditto.
4064
4065 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4066
4067         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4068         into the new domain, instead of referencing the original one.
4069
4070         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4071         non-static.
4072
4073         * appdomain.c: Corlib version bump.
4074
4075 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4076
4077         * threadpool.c: one more...
4078
4079 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4080
4081         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4082         threads to die because we're shutting down. delgate5.exe works again.
4083
4084 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4085
4086         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4087           ccw_interface_hash table when a ccw is finalized.
4088
4089         Code is contributed under MIT/X11 license.
4090
4091 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4092
4093         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4094         domain and image unloading into two steps.  We must do this
4095         because clearing the domain in SGen requires the class metadata to
4096         be intact, but we need to free the mono_g_hash_tables in case a
4097         collection occurs during domain unloading and the roots would trip
4098         up the GC.
4099
4100 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4101
4102         * object-internals.h: Remove serialized culture fields from
4103         MonoInternalThread.
4104
4105         * icall-def.h, thread-types.h, threads.c: Remove serialized
4106         culture icalls.
4107
4108         * appdomain.c: Corlib version bump.
4109
4110 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4113         Fixes #543133.
4114
4115 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4116
4117         * sgen-gc.c: Try to shorten the new section after a major
4118         allocation to avoid ever-growing sections.
4119
4120 2009-10-13  Martin Baulig  <martin@ximian.com>
4121
4122         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4123         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4124         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4125         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4126
4127         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4128
4129 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4130
4131         * threadpool.c: fixed the order in which 'completed' and the wait
4132         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4133         No need to use the wait_handle field of ASyncCall. Make sure the
4134         threadpool is active when adding a job or queueing an idle thread.
4135
4136 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4139
4140         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4141         when using --compile-all.
4142
4143 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4144
4145         * metadata.c (free_generic_class): Unregister the field_objects
4146         roots if we're using SGen.
4147
4148 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4149
4150         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4151         for GenericParamTableEntry.gparam.
4152
4153 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4154
4155         * marshal.c: don't create the handle when calling. It is created later
4156         if needed.
4157
4158 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4159
4160         * sgen-gc.c: Warning fixes.
4161
4162 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4163
4164         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4165         whole heap for cross-domain references before each collection.
4166
4167         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4168         object.
4169
4170         * threadpool-internals.h, threadpool.c: New function
4171         mono_thread_pool_is_queue_array() for checking whether a given
4172         array is used as a (cross-domain) queue by the thread pool code.
4173
4174 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4175
4176         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4177         searches the whole heap for objects containing a specific
4178         reference.  Only for debugging.
4179
4180 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4181
4182         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4183
4184         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4185         byte arrays between domains.
4186
4187 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4188
4189         * threadpool.c:
4190         * class-internals.h:
4191         * mono-perfcounters-def.h:
4192         * mono-perfcounters.c:
4193         -There is a list of idle threads
4194         -Each of those idle threads wait on their own WaitHandle instead
4195         of all of them using the same semaphore. When a new work item is
4196         added, the job is assigned directly to an idle thread or a newly
4197         created one if possible and then the handle for that thread is
4198         signaled. Compare that to the current approach where all the
4199         threads in the pool compete to dequeue a job from the same
4200         queue.
4201         -New struct ThreadPool that brings together the bunch of static
4202         variable for each threadpool (IO and regular).
4203         -New performance counters: # of items added and its rate per
4204         threadpool. The rate will be used later, perhaps together with
4205         other perf. counters, to decide when idle threads should exit.
4206
4207 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4208
4209         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4210         Fix typo on Windows build.      
4211         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4212         
4213         Code is contributed under MIT/X11 license.
4214
4215 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4216
4217         * object-internals.h: The Thread class is split up into Thread and
4218         InternalThread now.  We have exactly one InternalThread per
4219         thread, and at most one Thread per appdomain per thread.  Most
4220         data is stored in InternalThread.  All InternalThread objects live
4221         in the root domain.
4222
4223         * class-internals.h: Add internal_thread_class to MonoDefaults.
4224
4225         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4226         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4227         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4228         resulting from the split of the Thread class.
4229
4230         * gc-internal.h: Prototype for new function for checking whether a
4231         thread is the finalizer thread.
4232
4233         * appdomain.c: Corlib version bump.
4234
4235 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4236
4237         * appdomain.c|h: Add a mono_domain_try_unload method which is
4238         equivalent to mono_domain_unload, except that it returns an exception
4239         instead of throwing it. Make mono_domain_unload use the
4240         mono_domain_try_unload method to avoid code-duplication.
4241
4242 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4245         a problem.
4246
4247 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4250         aborting when a conversion is not implemented.
4251
4252 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4253
4254         * verify.c: when comparing culture strings, use g_ascii_strcmp
4255
4256         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4257         when comparing public key tokens to use memcmp on 16 bytes.   I do
4258         not believe this ever worked as advertised in the past.
4259
4260         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4261         which would have always failed earlier.
4262
4263 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4264
4265         * gc.c: Raise a NullArgumentException if the object passed is
4266         null.
4267
4268 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * image.c (mono_image_close): Atomically decrement the reference count and
4271         remove the image from the hash tables, to prevent another thread from seeing a
4272         dying MonoImage. Fixes #541194.
4273
4274 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4275
4276         * threadpool.c: actually use the minimum number of 'completion ports'
4277         (for us is just a potential worker thread).
4278
4279 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4280
4281         * threadpool.c: remove ares_htable. It does not make sense any more
4282         since the same objects are now stored in GC-tracked arrays while they are
4283         in the queue.
4284
4285 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4286
4287         * threadpool.c: increase the minimum length of the queues to 128.
4288         Remove warning.
4289
4290 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4293         return the modified signature used by string ctors.
4294
4295 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4298         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4299         method, to be used by full-aot.
4300
4301 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4302
4303         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4304         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4305         be known to be good.
4306
4307         * class.c (mono_class_init): Fail array types if their element type fails initialization
4308         as well.
4309
4310         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4311         initialization, additionally we request the element_type vtable to be initialized as well.
4312
4313         This is fine and should not increase the working set in any meaningful way since it's reasonable
4314         to assume       that most code will create an array and eventually populate it, which will require the
4315         type's vtable to be initialized.
4316
4317         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4318
4319 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4320
4321         * normalization-tables.h : regenerated.
4322
4323 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4326         a leb128 encoding can take up to 5 bytes.
4327
4328 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4329
4330         * class.c (verify_class_overrides): Remove useless argument.
4331
4332         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4333         before interface enumeration as this is no longer required.
4334
4335 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4336
4337         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4338         used under mono_class_init context. This functions avoid any code path that
4339         calls mono_class_init, which leads it to be slow as some things like the interface
4340         bitmap are not available.
4341
4342         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4343         of it's own broken version. Fixes the verifier part of #538588.
4344
4345         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4346         API.
4347
4348 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4349
4350         * class.c (mono_class_init): Always set an exception in a class if
4351         vtable setup fails.  Fixes #538577.
4352
4353         * generic-sharing.c: Raise an exception if mono_class_vtable()
4354         returns NULL.
4355
4356 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4359         methods of vtypes, as they could be incorrectly shared with static methods
4360         taking an IntPtr argument.
4361
4362 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4363
4364         * domain.c:
4365         * object.c:
4366         * class-internals.h: renamed waithandle_class to
4367         manualresetevent_class.
4368         * marshal.c: propagate the exception if a remoting BeginInvoke call
4369         fails.
4370
4371 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4372
4373         * object.c: Properly handle vtable failures.
4374
4375 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4376
4377         * socket-io.c: Assert on vtable failure.
4378
4379         * mono-mlist.c: Assert on vtable failure.
4380
4381 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4382
4383         * marshal.c: Assert on vtable failure.
4384
4385 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4386
4387         * icall.c: Properly handle vtable failures.
4388
4389 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4390
4391         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4392
4393 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4394
4395         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4396
4397         * console-unix.c (do_console_cancel_event): Same.
4398
4399 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4400
4401         * class-internals.h: Add mono_class_vtable_full function that allows control
4402         if an exception should be raised or not.
4403
4404         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4405         to do what its documentation say, that is to return NULL and set exception_type on
4406         failure.
4407
4408         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4409         and change the code to honor it.
4410
4411 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * verify.c: Fix typo in error message.
4414
4415 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4416
4417         * security-core-clr.c: Fix default_platform_check so it can run
4418         the runtime coreclr tests (without an infinite recursion when
4419         throwing an exception).
4420
4421 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4422
4423         object.c (mono_delegate_ctor_with_method): Guard against null method.
4424
4425 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4428         that should be replaced with error handling later.
4429
4430 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * marshal.c (mono_delegate_end_invoke): Fix warning.
4433
4434 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4435
4436         * loader.c (mono_field_from_token): Properly handle invalid
4437         dynamic tokens.
4438
4439 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4440
4441         * pedump.c (verify_image_file): Skip types that can't be
4442         decoded.
4443
4444 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4445
4446         * verify.c: Look for recursive valuetypes only against the
4447         type been initialized as this is a lot simpler and works.
4448
4449 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4450
4451         * verify.c: Ensure that fields are properly loaded before
4452         checking them.
4453
4454 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4455
4456         * object.c (mono_object_get_virtual_method) : Call 
4457           mono_cominterop_get_invoke if the object is a COM object.
4458
4459         Code is contributed under MIT/X11 license.
4460
4461 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * verify.c: Check for recursive valuetype definitions.
4464
4465 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4466
4467         Use inheritance-aware interface offsets. Inherited types use the same offsets
4468         of their parents. This reduce offset duplication in case more than one type in
4469         the inheritance tree explicitly implements the same interface.
4470
4471         This also removes a source of vtable bubbles found in #532409. An abstract type
4472         isn't required to provide abstract methods to all interfaces it implements, which
4473         resulted in a bubble with the previous scheme as the child would get a non-full
4474         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4475         should be fixed.
4476
4477         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4478         it's expected to not cause any significant increase beyond that.
4479
4480         * class.c (setup_interface_offsets): Compute super class iface offsets
4481         first to force sharing.
4482
4483         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4484         dumping only the relevant ones.
4485
4486         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4487         methods a new slot regardless if they belong to an interface or not. This allows
4488         an inherited type to override the iface method separately from the class one.
4489
4490 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4491
4492         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4493         applications that take less than 2s to execute.
4494         Bug #524984 fixed.
4495
4496 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4497
4498         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4499
4500         * object.c (mono_get_runtime_callbacks): New helper function to return
4501         the runtime callbacks.
4502
4503         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4504         mono_get_runtime_build_info () as the display name.
4505         
4506 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4509         argument, since NEWARR expects a native int. Fixes #481559.
4510
4511 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4512
4513         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4514         against broken SRE methods.
4515
4516 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4517
4518         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4519         a NULL variable. Abort early on failure.
4520
4521 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4522
4523         * class.c (can_access_type): Fail visibility test for non nested
4524         types with nested visibility.
4525
4526 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4527
4528         * assembly.c (parse_public_key): Avoid allocating (and not 
4529         freeing) the public key array when it's not requested by the 
4530         caller.
4531         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4532         ves_icall_System_Threading_Thread_Thread_internal): Free 
4533         allocated memory on error.
4534
4535 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4536
4537         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4538
4539 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4540
4541         * class.c (mono_class_setup_fields): Remove duplicated local variable
4542         named gklass.
4543         Rename gklass to gtd to reflect the fact that it points to the generic
4544         type definition.
4545         Remove the duplicated call to mono_class_setup_fields on gtd and move
4546         the error check to the beginning.
4547
4548 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4549
4550         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4551         Remove cruft of the previous patch.
4552
4553 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4554
4555         * metadata-verify.c (verify_method_table): Check for abstract + final.
4556         Fixes #534175.
4557
4558 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4559
4560         * verify.c (verify_class_fields): Check for duplicate fields.
4561
4562 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * metadata-verify.c: Verify the typeref table for duplicates.
4565
4566 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         This reverts r140936 and properly handles interfaces with static methods. The
4569         right fix is to ensure vtables without bubles which is an easier to verify
4570         constraint. We should avoid such special cases as of the reverted patch as those
4571         only make the runtime more brittle.
4572
4573         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4574         static methods on interfaces.
4575
4576         * class.c (setup_interface_offsets): Use the number of virtual methods when
4577         calculating interface offsets instead of the number of methods. This way we
4578         avoid bubles on the layout.
4579
4580 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * metadata-verify.c (verify_metadata_header): Some very smart
4583         obfuscators like to add extra stream headers. Ignore them.
4584
4585 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4586
4587         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4588         methods correctly.
4589
4590 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * metadata-verify.c: Verify for duplicated types.
4593
4594 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * metadata-verify.c (verify_typedef_table): Verify for nested types
4597         without an entry on the nested class table.
4598
4599 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4602         <tom_hindle@sil.org>. Add locking around hash table accesses.
4603
4604 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4605
4606         * verify.c (mono_verifier_verify_class): Verify all interface if
4607         really are interfaces. Fixes #534184.
4608
4609 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * pedump.c: Initialize all types during metadata validation so we report
4612         errors only detected as part of class initialization.
4613
4614 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4615
4616         * metadata-verify.c (verify_method_table): PInvoke requires method to
4617         be static. Fixes #534189
4618
4619 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4620
4621         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4622         being NULL.
4623
4624 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4625
4626         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4627         for holes or bad methods. Fixes #525314.
4628
4629 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * class.c (setup_interface_offsets): Don't allocate slot
4632         for the same interface multiple times. This creates bubbles
4633         that waster space and make vtable verification harder.
4634
4635         The same interface get a slot multiple times since we need
4636         to get the closure of all implemented interfaces, which means
4637         the same interface is reported multiple times.
4638
4639 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4640
4641         * verify.c (mono_verifier_verify_class): Don't check the fields
4642         of generic instances since the context on which they got expanded
4643         might lead to false positives.
4644
4645         Such thing happens when a generic type is inflated in the context
4646         of a generic method and the inflated type of a field turns into a
4647         generic method argument, which causes the checking code to think
4648         it's an invalid class when it's not.
4649
4650 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4651
4652         * verify.c (mono_type_is_valid_in_context): Verify if type
4653         is NULL and remove duplicate test.
4654
4655 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4656
4657         * verify.c (mono_verifier_verify_class): Check fields for
4658         invalid generic arguments.
4659
4660 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * class.c (verify_class_overrides): Verify if for static
4663         and non virtual methods.
4664
4665 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4668         Check for errors after retrieving the vtable.
4669
4670 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4671
4672         * class.c (mono_class_setup_vtable_general): Verify
4673         if method overrides are valid before processing them.
4674
4675 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4676
4677         * marshal.c (mono_array_to_lparray): Fix minimal build with
4678         cominterop disabled.
4679
4680         * marshal.c (mono_free_lparray): Same.
4681
4682 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4683
4684         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4685         the hash function for the ares_htable.
4686
4687 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4690         bit for assembly flags. MS is ok with it but there is no spec anywhere
4691         on its mean
4692
4693 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4694
4695         * class.c (mono_class_create_from_typedef): Emit profiler events
4696         in all cases.
4697
4698 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4701         Release memory on failure.
4702
4703 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4704
4705         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4706         to the internal API.
4707
4708         * metadata.c (get_constraints): Use a single-linked table as we don't
4709         traverse it backward. Fail and return FALSE if only of the contraint types
4710         is not found.
4711
4712         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4713         to mono_metadata_load_generic_param_constraints except for having a return value.
4714         This has to be done since the later is part of the public API.
4715
4716         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4717         and fail the type.
4718
4719         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4720         and fail the method.
4721
4722 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4723
4724         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4725         with MS broken behavior of emmitting EH section sizes without the
4726         header size added.
4727
4728 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4729
4730         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4731         memory until we're sure that we'll need it. This avoids leaking for
4732         broken types or duplicated instantiation.
4733
4734 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4735
4736         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4737         mistake.
4738
4739 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4740
4741         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4742         and expected size calculation.
4743
4744 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * class.c (mono_class_get_field_idx): Add fixme for broken
4747         behavior for types with multiple fields with the same name.
4748         I would rather fix it, but have no idea on how to generate
4749         such artifact for testing.
4750
4751 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4752
4753         * verify.c (verifier_load_field): We should allow references to
4754         fields to be made using the generic type definition. It's up to
4755         the loader system to fail invalid ops.
4756
4757         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4758         are invalid.
4759
4760 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4761
4762         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4763
4764         * metadata-internals.h: Fix declaration of 
4765         mono_metadata_interfaces_from_typedef_full.
4766
4767         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4768         heap_alloc_result parameter that controls if the result should be
4769         g_malloc'd.
4770
4771         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4772         array be g_malloc'd and properly document this public API function.
4773
4774 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4775
4776         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4777         remove METHOD_HEADER_TINY_FORMAT1.
4778
4779         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4780
4781         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4782
4783         Both spec and MS uses only 2 bits to enumerate the kind of header.
4784         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4785         is superfluous, only used for tiny headers with odd code lengths.
4786
4787         This change also make sure that mono doesn't wronly interpret bit 2
4788         of fat header flags, which is currently reserved.
4789
4790 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4791
4792         * metadata.c (do_mono_metadata_parse_type): Do error
4793         checking for element types. Don't abort if presented
4794         with a broken type kind.
4795
4796 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4797
4798         * metadata.c (mono_metadata_parse_method_signature_full):
4799         Gracefully fail bad vararg signatures.
4800
4801 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4802
4803         * profiler.c:
4804         * class.c: Fix warnings for uninitialized variables.
4805
4806 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4807
4808         * icall.c: Fix _NSGetEnviron method declaration warning.
4809
4810 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4811
4812         * icall.c:
4813         * reflection.c: Make bitwise checks explicit.
4814
4815 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4816
4817         * debug-helpers.c:
4818         * marshal.c: Fix printf warnings.
4819
4820 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * reflection.c (encode_cattr_value): Fix a warning.
4823
4824 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4825
4826         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4827         of array bounds.
4828
4829 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4830
4831         * loader.c (mono_method_signature): Don't assert on broken
4832         signature. Print a more useful error message.
4833
4834 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4835
4836         * loader.c (mono_method_get_marshal_info): Assert if
4837         signature is invalid. Bounds check stores to the
4838         mspecs array;
4839
4840 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4841
4842         * loader.c (field_from_memberref): Fix warning.
4843
4844 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4845
4846         * loader.c (mono_method_get_param_names): Check if signature
4847         is null. Don't store beyond the size of the name array.
4848
4849 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4850
4851         * loader.c (mono_get_method_constrained): Check if signature
4852         is null.
4853
4854 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * loader.c (mono_loader_set_error_bad_image): Improve
4857         error messages.
4858
4859 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4860
4861         * loader.c (mono_get_method_full): Convert an assertion
4862         into a loader error.
4863
4864 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * class-internals.h, class.c: Better naming and documentation.
4867
4868 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4871         obj is NULL.
4872
4873 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4874
4875         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4876         parsing fails.
4877
4878 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4879
4880         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4881         errors with no class set.
4882
4883         * loader.c (field_from_memberref): If the field signature is of the wrong
4884         type fail with a MissingFieldException instead of a BadImageException as
4885         this is the behavior observed on MS. 
4886
4887 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * loader.c (field_from_memberref): Don't crash if either the field
4890         signature or the typespec class are invalid.
4891
4892 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4893
4894         * verify.c (verifier_load_field): Don't allow field related
4895         ops to reference fields on generic type definition.
4896
4897 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4898
4899         * metadata-verify.c: Add new warning level for errors specified
4900         by ECMA 335 but that MS ignores.
4901
4902         * metadata-verify.c (verify_method_table): Make compiler controled
4903         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4904         this check is safe because the end result will only be some visibility
4905         exceptions been thrown.
4906
4907 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4908
4909         * verify.c (get_boxable_mono_type): Don't allow the
4910         use of the generic type definition on boxed type positions.
4911
4912         Fixes #531237.
4913
4914 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4915
4916         * threadpool.c: Make sure no cross-domain references remain in
4917         ares_htable or the arrays that are thrown away when resizing.
4918
4919 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4920
4921         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4922         list of classes for which we have to unregister reflection_info
4923         with the GC and which are not in the namespace cache.
4924
4925         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4926         the class to the list.
4927
4928 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4929
4930         * domain.c (mono_domain_free): Unregister the GC roots in
4931         MonoDomain.
4932
4933 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4934
4935         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4936
4937 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4938
4939         * class.c: Add mono_class_get_field_from_name_full which does
4940         the same as mono_class_get_field_from_name but does check field
4941         signature as well.
4942
4943         * class-internals.h: Export mono_class_get_field_from_name_full as
4944         part of the internal API.
4945
4946         * loader.c (field_from_memberref): Search fields by name and signature
4947         as it's valid to have two fields with same name but different types.
4948
4949         Fixes #528055.
4950
4951 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4954
4955         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4956
4957         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4958         System.Type.
4959
4960 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4963
4964         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4965
4966 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4967
4968         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4969         to sgen-scan-object.h, which can be included and parameterized via
4970         macros.
4971
4972         * Makefile.am: sgen-scan-object.h added.
4973
4974 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4975
4976         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4977
4978 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4979
4980         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4981         before clearing a domain in the GC.
4982
4983 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4984
4985         * exception.c (mono_exception_from_name_domain): Actually create
4986         the exception in the specified domain.
4987
4988         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4989         OutOfMemoryException a bit later so that the domain is inialized
4990         "enough" that it works.
4991
4992 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4993
4994         * threads.c (thread_cleanup): Clean up the cached_culture_info
4995         array to prevent cross-domain references.
4996
4997 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4998
4999         * metadata.c: more documentation for MonoType accessors.
5000
5001 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5002
5003         Fix incorrect size definitions where the tail array isn't a list
5004         of pointers
5005         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5006         define size.
5007         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5008         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5009         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5010
5011 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5012
5013         * reflection.h:
5014         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5015
5016 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5017
5018         * metadata.c:
5019         * loader.c:
5020         * metadata-internals.h:
5021         * method-builder.c:
5022         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5023
5024 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5025
5026         * cominterop.c:
5027         * metadata.c:
5028         * metadata.h:
5029         * loader.c:
5030         * marshal.c:
5031         * reflection.c: #define for sizeof in MonoType and
5032         MonoMethodSignature.
5033
5034 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5035
5036         * domain.c:
5037         * domain-internals.h: add and use #define's instead of sizeof()
5038         for MonoJitInfo and MonoJitInfoTable.
5039
5040 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5041
5042         * object.c:
5043         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5044
5045 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5046
5047         * metadata.c:
5048         * metadata.h:
5049         * object.c:
5050         * class-internals.h:
5051         * generic-sharing.c:
5052         * marshal.c: use a #define instead of sizeof() for a few
5053         structures that use a zero-length array.
5054
5055 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5058         to handle inflated generic methods.
5059
5060         * appdomain.c: Bump corlib version.
5061
5062         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5063         instances.
5064
5065         * reflection.c (fixup_method): Same
5066
5067         * reflection.c (resolve_object): Same.
5068
5069         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5070         g_error and a decent message.
5071
5072 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5073
5074         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5075         from the object because it could not yet be available globally
5076         (it happens if the profiler tries to create a gchandle on the
5077         MonoThread object of a thread that is still registering itself
5078         with the runtime).
5079
5080 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5081
5082         * reflection.c (mono_generic_class_get_object): Initialized the
5083         managed type arguments array.
5084
5085         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5086
5087         * appdomain.c: Bump corlib version.
5088
5089 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5092         #527902.
5093
5094 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5097         Avoid a crash if synch_cs is not set.
5098         
5099         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5100         Handle the case when the handle is 0.
5101
5102         * appdomain.c: Bump corlib version.
5103
5104 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * reflection.c (mono_type_get_object): Fix a warning.
5107
5108 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5109
5110         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5111         descriptor here.  We assume it's already been computed.
5112
5113         * generic-sharing.c (instantiate_other_info): Compute the GC
5114         descriptor for info type MONO_RGCTX_INFO_KLASS.
5115
5116 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5117
5118         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5119         type, so don't use MONO_OBJECT_SETREF to set a field.
5120
5121 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5122
5123         * gc.c: We were missing one case where invoking a finalizer would
5124         not reset the domain.  Also, in the finalizer thread loop, assert
5125         that we're in the root domain.
5126
5127 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5128
5129         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5130         if the type is not an array.
5131
5132 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5133
5134         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5135         method bound to the declaring type of the method. Raise an exception
5136         if the type is not a generic param.
5137
5138 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5139
5140         * class.c (print_unimplemented_interface_method_info): Print the
5141         full type name.
5142
5143         * class.c (mono_class_setup_vtable_general): When dealing with a
5144         generic instance first check if the generic type definition is
5145         not broken.
5146
5147 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5148
5149         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5150
5151         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5152
5153         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5154
5155         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5156
5157         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5158
5159         Code is contributed under MIT/X11 license
5160
5161 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * verify.c: Fix naming of stelem and ldelem.
5164
5165 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5166
5167         * generic-sharing.c: Replace the templates lock with the loader
5168         lock because of very hard to resolve deadlock issues.
5169
5170 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5171
5172         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5173         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5174         directly. Fixes #525338.
5175
5176         * class.c (mono_class_get_vtable_size): New helper function.
5177
5178         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5179         the field belongs to the type. Fixes #525733.
5180
5181 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5182
5183         * sgen-gc.c: When we stop a thread and its stack top is not within
5184         its allocated stack (because it's in an altstack signal handler),
5185         restart it and stop it again, until it is.
5186
5187 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5188
5189         * sgen-gc.c: Take a thread's stack top and registers from the
5190         sigcontext in the suspend signal handler.
5191
5192         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5193         stuff to sgen-archdep.h.
5194
5195         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5196         caller, because have code in sgen-archdep.h to acquire that data.
5197
5198 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5199
5200         * profiler.c, profiler.h, profiler-private.h:
5201         Added support for keeping track of code chunks and buffers.
5202
5203 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5204
5205         * metadata-verify.c: Fix endianness problems on decoding functions.
5206         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5207
5208 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5209
5210         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5211         schema for vectors and one dimension SZARRAY.
5212
5213 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5214
5215         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5216         schema for vectors and one dimension SZARRAY.
5217
5218 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5219
5220         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5221         Interlocked.(Compare)Exchange with object arguments, which invoke
5222         write barriers.
5223
5224 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5225
5226         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5227         passed invalid arguments.   Fixes another crasher in the
5228         Silverlight test suite.
5229
5230         * class.c (mono_class_array_element_size): Return 0 for the size
5231         of the class;  This fixes the crasher exposed by :
5232
5233         typeof (void).MakeArrayType ();
5234
5235         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5236         if there is no method to dereference.    Put all the code that
5237         depends on this inside the if (method) block.
5238
5239         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5240         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5241
5242         With this change, we pass the test.
5243         
5244         * reflection.c (mono_reflection_sighelper_get_signature_local):
5245         Only dereference the assembly if it has been set.    Fixes a
5246         crasher exposed by #525328
5247
5248 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5249
5250         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5251         don't perform the store in mono_gc_wbarrier_generic_nostore().
5252         Remove the second argument (value), which is not needed.
5253
5254 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5257         the build.
5258
5259         * boehm-gc.c: Ditto.
5260         
5261 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5262
5263         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5264         not perform the store itself.  Introduce
5265         mono_gc_wbarrier_generic_nostore(), which is the same as
5266         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5267         store.
5268
5269 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5270
5271         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5272         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5273         we still need the memcpy().
5274
5275 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5276
5277         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5278         so that big arrays are handled correctly.  Always use
5279         safe_object_get_size() to calculate array object sizes, which
5280         takes bounds into account.
5281
5282 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5283
5284         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5285         GC descriptor is computed before we use it.
5286
5287 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5288
5289         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5290         write barrier if necessary.
5291
5292 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5293
5294         * icall-def.h, icall.c, thread-types.h: New separate icall for
5295         VolatileWrite(object&,object) that uses a write barrier.
5296
5297         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5298         barriers in icalls which write to "ref" or "out" arguments.
5299
5300 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5301
5302         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5303         handler in a separate icall, to reduce the size of the wrappers.
5304
5305 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5306
5307         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5308
5309 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5310
5311         * metadata-verify.c (parse_field): Allow byref field.
5312
5313         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5314
5315         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5316
5317 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5320         Fixes #522784.
5321
5322 2009-07-20  Robert Jordan  <robertj@gmx.net>
5323
5324         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5325         Fix invalid IL in valuetype handling (STOBJ must push the
5326         corresponding class). Fixes bug #523149.
5327
5328         Code is contributed under MIT/X11 license.
5329
5330 2009-07-20  Geoff Norton  <gnorton@novell.com>
5331
5332         * gc.c: Use proper semaphores where available on posix and darwin.
5333
5334 2009-07-19  Geoff Norton  <gnorton@novell.com>
5335
5336         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5337
5338 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * refletion.c (is_sre_usertype): Change name to is_usertype and
5341         invert it's result so it returns true if the type is an user type
5342         and not the opposite.
5343
5344         * reflection.c (is_*_type): Change all of those to use new macro
5345         check_corlib_type_cached that cached the type lookup so we don't
5346         need to do string comparisons all the type. Changed the signature
5347         to take a MonoClass instead.
5348
5349         * reflection.c: Change mono_image_create_token and resolve_object
5350         to use is_sre_* functions.
5351
5352 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5353
5354         * sgen-gc.c: Check for writes to the stack in the managed
5355         wbarrier as well.
5356
5357 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5358
5359         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5360         but put them on a list which is processed with the other thread's
5361         remsets.
5362
5363 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5364
5365         * sgen-gc.c: Fix and enable the internal allocator instead of
5366         using malloc/free (which causes deadlocks).
5367
5368 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5369
5370         * refletion.c: Fix builds with SRE disabled by adding a minimal
5371         implementation of mono_reflection_type_get_handle.
5372
5373 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5374
5375         * refletion.c: Make mono_reflection_type_get_handle non static.
5376
5377         * object-internals.h: Export mono_reflection_type_get_handle.
5378
5379         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5380         unmanaged handle using mono_reflection_type_get_handle.
5381
5382 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5383
5384         * refletion.c: Replace all reads of MonoReflectionType::type with
5385         calls to mono_reflection_type_get_handle. Only the functions that
5386         deal with constructing TypeBuilder::type have not been changed
5387         because they have to deal with NULL values.
5388
5389         This is a first step into supporting reflection types that don't
5390         map directly into their unmanaged counterpart.
5391
5392 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5393
5394         * metadata-verify.c (parse_locals_signature): Don't complain
5395         on signature with zero locals since MS generates it and doesn't
5396         bother with.
5397
5398 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5399
5400         * reflection.c (mono_image_get_array_token): Resolve return
5401         type using mono_reflection_type_get_handle.
5402
5403         * reflection.c (mono_image_get_array_token): Resolve array method
5404         parent type using mono_reflection_type_get_handle.
5405
5406 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * reflection.c (mono_image_basic_init): Applied patch from
5409         <Dax@daxxfiles.net>. Set the public key token from the assembly
5410         builder. Fixes #518909.
5411
5412         * appdomain.c: Bump corlib version.
5413
5414 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * class.c (mono_class_needs_cctor_run): Make this return false if
5417         the class has no cctor.
5418
5419 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5420
5421         * sgen-gc.c: When the minor GC needs to allocate a new section,
5422         invoke the major GC afterwards.
5423
5424 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5425
5426         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5427           Applying the window_style field to the SHELLEXECUTEINFO struct.
5428
5429         Code is contributed under MIT/X11 license.
5430
5431 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5432
5433         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5434         locking earlier.  Fix it in the managed allocator by making sure
5435         that no thread is stopped there before the GC runs.  If we do stop
5436         a thread there, we restart it and let it run a but, until it stops
5437         somewhere else.
5438
5439         * gc-internal.h, gc.c: Function for getting the IP from a signal
5440         context via a function registered by mini.
5441
5442 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * object-internals.h (MonoIntPtr): New structure describing a boxed
5445         IntPtr.
5446
5447         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5448         returns. Fixes #519953.
5449
5450         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5451
5452 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5453
5454         * class-internals.h, generic-sharing.c: New RGCTX info type for
5455         getting a remoting invoke with check wrapper.
5456
5457 2009-07-07  Geoff Norton  <gnorton@novell.com>
5458
5459         * icall-def.h: Fix the enable-minimal build.
5460
5461 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5462
5463         * object-internals.h: Add MonoReflectionDerivedType.
5464
5465         * reflection.c: Implement support for PointerType.
5466         Fixed tons of warnings.
5467
5468 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5469
5470         * object-internals.h: Add MonoReflectionByRefType.
5471
5472         * reflection.c: Implement support for ByRefType.
5473
5474 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5475
5476         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5477
5478         * object-internals.h: Add MonoReflectionArrayType and
5479         mono_reflection_create_unmanaged_type.
5480
5481         * reflection.c: Implement support for ArrayType.
5482
5483 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5484
5485         * metadata-verify.c (is_valid_method_header): Parse EH block
5486         flags correctly.
5487
5488 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5489
5490         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5491         processing the disappearing links, and process disappearing links
5492         in a loop until no new objects are copied.
5493
5494 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5495
5496         * object.c (handle_enum): Invoke the write barrier when copying
5497         value type instances.
5498
5499         * sgen-gc.c: Register remsets for unmanaged write barriers only
5500         when the address written to is actually on the heap.  This makes
5501         set_value() in object.c work without requiring that the result be
5502         on the heap.
5503
5504 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5505
5506         The runtime wrappers are all bound to a given type that must
5507         exist in the same image. For regular images we use the <Module>
5508         type, which is required to exist for all images.
5509
5510         The <Module> type can't be used for dynamic images because it
5511         might not exist at the time the wrapper is required, so we create
5512         a synthetic type to use instead.
5513
5514         The current code works because of the 2 stage setup of MonoClass,
5515         but once this is gone it will no longer work.
5516
5517         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5518
5519         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5520
5521         * object-internals.h: Export mono_image_set_wrappers_type icall
5522         as part of the internal API.
5523
5524         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5525         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5526
5527         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5528         image wrappers_type to the provided value.
5529
5530 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * appdomain.c (deregister_reflection_info_roots): No need
5533         to use the image lock here.
5534
5535 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5536
5537         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5538
5539 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5540
5541         * threads.c: Store the thread start argument in a hash table instead of
5542         registering it as a root, as libgc doesn't support unregistering roots
5543         under windows, leading to 'too many root sets' errors when many threads
5544         are created.
5545
5546         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5547         shutdown, they can still be referenced by the other dying objects.
5548         Fixes #514506.
5549
5550 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5551
5552         * socket-io.c: DontLinger does not allow LingerOptions.
5553
5554 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5555
5556         * metadata-verify.c: The spec doesn't mention that it's possible to add
5557         custom attribute to a generic parameter. Fixed.
5558
5559 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * class.c (inflate_generic_type): Don't crash while trying to output a message
5562         on why we're aborting.
5563
5564 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5565
5566         * socket-io.c: DontLinger can take an int or a boolean too.
5567
5568 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5569
5570         * gc.c: check for a null argument to SuppressFinalize () and
5571         ReRegisterForFinalize ().
5572
5573 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * loader.c (method_from_methodspec): Call into the verifier to check
5576         the signature.
5577
5578         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5579
5580         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5581         part of the internal API.
5582
5583 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5586         the signature.
5587
5588         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5589
5590         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5591         part of the internal API.
5592
5593 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5594
5595         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5596         the signature.
5597
5598         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5599         blob verification.
5600
5601         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5602         part of the internal API.
5603
5604 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5605
5606         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5607         when doing basic verification. 
5608
5609         This check must be done since the runtime peeks into signatures in much
5610         more places than it does decoding so it makes sense to ensure that all
5611         pointers to blob objects are well formed.
5612
5613 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5614
5615         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5616         Use proper overflow dectection. Fix usage of it.
5617
5618 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5619
5620         * loader.c (field_from_memberref): Call into the verifier to check
5621         the signature.
5622
5623         * loader.c (mono_method_get_signature_full): Same.
5624
5625         * loader.c (method_from_memberref): Same.
5626
5627         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5628
5629         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5630         part of the internal API.
5631
5632 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5633
5634         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5635         or unloaded, still return an AsyncResult, but don't add it to the
5636         threadpool.
5637
5638 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5639
5640         * threads.c: fix missing colon when DEBUG is defined.
5641
5642 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5643
5644         * threadpool.c: Don't add new calls to a threadpool if the domain
5645         of the call is unloading or unloaded.  When dequeuing a job, null
5646         the reference in the queue.
5647
5648 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5649
5650         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5651         generation if an object was moved.
5652
5653 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5654
5655         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5656           parameters of type SAFEARRAY[VARIANT].
5657
5658         * reflection.c (encode_marshal_blob): Properly generate element type
5659           (SafeArraySubType marshal attribute option).
5660
5661         Code is contributed under MIT/X11 license.
5662
5663 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5664
5665         * reflection.c: in mono_method_clear_object () really ensure all the
5666         objects are removed.
5667
5668 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * loader.c (mono_method_signature): Call into the verifier to check
5671         the method signature.
5672
5673         * metadata-verify.c (verify_method_table): Move signature verification
5674         to verify_method_table_full.
5675
5676         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5677
5678         * verify-internals.h: Export mono_verifier_verify_method_signature as
5679         part of the internal API.
5680
5681 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5682
5683         * loader.c (mono_method_get_header): Call into the verifier to
5684         check the method header.
5685
5686         * metadata-verify.c: Add mono_verifier_verify_method_header.
5687
5688         * verify-internals.h: Export mono_verifier_verify_method_header as
5689         part of the internal API.
5690
5691 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5692
5693         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5694         check the field signature. Replace an assert with an explicit check.
5695
5696         * class.c (mono_class_setup_fields): Call into the verifier to check
5697         the field signature.
5698
5699         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5700
5701         * verify-internals.h: Export mono_verifier_verify_field_signature as
5702         part of the internal API.
5703
5704 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5705
5706         * class.c (mono_class_find_enum_basetype): Simplify this function
5707         by moving code outside of the loop and not decoding static fields.
5708
5709 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5710
5711         * metadata-verify.c (verify_typedef_table): Check the extends
5712         token here. Move to here a flags check from verify_typedef_table_full.
5713
5714 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * metadata-verify.c (is_valid_method_header): Fix a warning.
5717
5718         * metadata-internals.h (MonoImage): Remove the unused 
5719         static_rgctx_invoke_wrapper_cache.
5720
5721         * image.c marshal.c: Ditto.
5722
5723 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5724
5725         * image.c (do_mono_image_load): Enable table data verification.
5726
5727 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5728
5729         * metadata-verify.c (is_valid_constant): Fix nullref check.
5730
5731 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5734
5735 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5736
5737         * sgen-gc.c: Managed allocation with pthreads TLS.
5738
5739         * threads.c, threads-types.h: Functions for the JIT to tell the
5740         runtime whether it supports the MONO_TLS opcode.
5741
5742 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5743
5744         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5745         without methods.
5746
5747 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5748
5749         * metadata-verify.c (is_valid_constant): Fix the string length check.
5750         Use safe overflow checking. Add decent error messages.
5751
5752 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5753
5754         * metadata-verify.c: Move remaininh blob checks to the offline
5755         verification path.
5756
5757 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5758
5759         * metadata-verify.c: Move more blob checks to the offline verification
5760         path.
5761
5762 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5763
5764         * object-internals.h : Adding interrupt_on_stop field.
5765
5766         * threads.c (mono_thread_request_interruption) : On Windows exit the
5767           thread if interrupt_on_stop is set.
5768
5769         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5770          Removing old interrupt logic and setting the interrupt_on_stop for the
5771          thread when calling accept.
5772
5773         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5774          setting the interrupt_on_stop for the thread when calling accept.
5775
5776         Contributed under MIT/X11 license.
5777
5778 2009-06-20  Martin Baulig  <martin@ximian.com>
5779
5780         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5781
5782 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5785         running in no-exec mode.
5786
5787 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5788
5789         * metadata-verify.c (verify_method_table): Move header
5790         checking to verify_method_table_full.
5791
5792         * metata-verify.c (mono_verifier_verify_full_table_data):
5793         Call verify_method_table_full.
5794
5795 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * metadata-verify.c (verify_field_table): Move signature
5798         checking to verify_field_table_full.
5799
5800         * metata-verify.c (mono_verifier_verify_full_table_data):
5801         Call verify_field_table_full.
5802
5803 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5804
5805         * metadata-verify.c (verify_typedef_table): Move remaining
5806         stuff to verify_typedef_table_full.
5807
5808 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5809
5810         * metadata-verify.c: Kill is_corlib from VerifyContext.
5811         It is only used by the offline mode.
5812         So we better remove it from the runtime path.
5813
5814 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5815
5816         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5817         function that perform the offline metadata verification steps.
5818
5819         * metadata-verify.c (verify_typedef_table): Move some checks to
5820         verify_typedef_table_full and make it been called by new function
5821         mono_verifier_verify_full_table_data.
5822
5823         * pedump.c: Call mono_verifier_verify_full_table_data.
5824
5825         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5826         part of the internal API.
5827
5828 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5829
5830         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5831         check.
5832
5833         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5834         flags bits. SupportLastError was confused as bit 7 instead of 6.
5835
5836         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5837         to check against the module ref table instead of module.
5838
5839         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5840
5841         * pedump.c: Call mono_image_load_names.
5842
5843 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5844
5845         * image.c: Extract mono_image_load_names from do_mono_image_load.
5846
5847         * metadata-internals.h: Export mono_image_load_names as part of
5848         the internal API.
5849         
5850 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5853         first, as it could reference data in the other caches.
5854
5855 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5856
5857         * metadata-verify.c: Finished with method header verification.
5858
5859 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5860
5861         * metadata-verify.c: Added more header verification code.
5862         Now only EH clauses are missing.
5863
5864 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5867         for return values.
5868
5869 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5870
5871         * metadata-verify.c: Initial method header verification.
5872
5873 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5874
5875         * metadata-verify.c (verify_import_table): The IAT contents
5876         might end been patched by the windows DL when running with
5877         coree enabled.
5878
5879 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5880
5881         * class.c (mono_class_from_typeref): If the enclosing type is not
5882         found return null instead of crashing. Fixes #508487.
5883
5884 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5885
5886         * normalization-tables.h : updated to the latest unicode charcter
5887           data.
5888         * appdomain.c : bump corlib version.
5889
5890 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * class.c (mono_class_from_name): Fix support for assembly references
5893         in the EXPORTEDTYPE table. Fixes #511704.
5894
5895 2009-06-13  Geoff Norton  <gnorton@novell.com>
5896
5897         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5898         assembly in the target domain.
5899
5900 2009-06-12  Robert Jordan  <robertj@gmx.net>
5901
5902         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5903         because "this" of the managed signature has become an
5904         ordinary parameter in the unmanaged signature.
5905
5906 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5907
5908         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5909         field for owner-less generic containers.
5910
5911         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5912         image field of the owner-less generic containers created here.
5913
5914         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5915         contain is ownerless until the caller sets its owner.
5916
5917         * metadata.c (type_in_image): Handle owner-less generic containers
5918         correctly.
5919         
5920 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * image.c (mono_image_close): Support debug_assembly_unload for
5923         dynamic images too.
5924
5925 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5926
5927         * class.c: Fix some typos in comments.
5928
5929 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5930
5931         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5932
5933         * threads.c (mono_thread_execute_interruption): Avoid creating the
5934         abort exception object while holding the synch_cs lock.
5935
5936 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * metadata-verify.c: Verify basic cattr content.
5939
5940 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5943         nested types.
5944         
5945         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5946         support for nested types. Fixes #511704.
5947
5948 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5949
5950         * metadata-verify.c: Verify methodspec signatures.
5951
5952 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5953
5954         * metadata-verify.c: Verify typespec signatures.
5955
5956 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5957
5958         * metadata.c (free_inflated_method): Call 
5959         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5960
5961 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5962
5963         * mono-config.c: Small change to report the PPC64/ILP32 model.
5964
5965 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5966
5967         * metadata-verify.c (parse_type): Check szarray.
5968
5969 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5970
5971         * metadata-verify.c (parse_type): Check fnptr.
5972
5973 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5974
5975         * metadata-verify.c (parse_type): Check generic instances.
5976
5977 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5978
5979         * metadata-verify.c (parse_type): Check array shape.
5980
5981 2009-06-05  Robert Jordan  <robertj@gmx.net>
5982
5983         * class.c (mono_class_create_from_typedef): Check only for
5984         mscorlib's System.Array.
5985
5986 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5987
5988         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5989         and generic params. 
5990
5991         * metadata-verify.c (parse_field): Check the signature.
5992
5993 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5994
5995         * metadata-verify.c: Implement locals signature check.
5996
5997 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5998
5999         * domain.c: Add .NET 4.0 Beta 1 version.
6000
6001 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6002
6003         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6004           For QueryInterface on CCWs consider the base class
6005           interfaces as well.
6006
6007         Code is contributed under MIT/X11 license.
6008
6009 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6010
6011         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6012
6013         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6014         used.
6015
6016         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6017         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6018
6019         * generic-sharing.c (inflate_other_data): Ditto.
6020         
6021 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6022
6023         * metadata-verify.c: Implement property signature check.
6024
6025 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6026
6027         * sgen-gc.h: Register saving support for PPC.
6028
6029 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6030
6031         * sgen-gc.c: Fixed a pthread TLS screwup.
6032
6033 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6034
6035         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6036         supported.
6037
6038 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6039
6040         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6041         keyword is not supported.
6042
6043 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6046         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6047         the inflated method is freed. Fixes #508389.
6048
6049         The code is contributed under the MIT/X11 license.
6050         
6051 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * marshal.c (get_wrapper_target_class): New helper function.
6054         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6055         the <Module> class of the image. Fixes #509049.
6056
6057 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6058
6059         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6060         Check if the thread was interrupted and proccess it straight away.
6061         Makes abortion much more responsive.
6062
6063 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6066         MonoThread::interruption_requested to match it's counterpart.
6067
6068         Fixes a hang in abort-stress-1 on a 2 core x86.
6069
6070         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6071         Fix warning.
6072
6073 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6074
6075         Change MonoImage::name_cache to be protected by the image lock
6076         instead of the loader lock.
6077
6078         * appdomain.c (deregister_reflection_info_roots): Protect access
6079         to name_cache.
6080
6081         * class.c (mono_image_init_name_cache): Change from the loader lock
6082         to the image lock. Check if the cache wasn't already created.
6083
6084         * class.c: Change from the loader to the image lock.
6085
6086         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6087         the code to hold the image lock while iterating over name_cache and
6088         not go into mono_array_new holding it.
6089
6090         * metadata-internals.h: Add a comment about this change.
6091
6092 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6093
6094         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6095         Under the 2.0 profile raise the loader error.
6096
6097         Fixes #508532.
6098
6099 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6100
6101         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6102         of ldind opcode for generic instances so we don't fail for direct wrappers.
6103         This only affect direct calls.
6104
6105 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * reflection.c (create_dynamic_mono_image): Fix warnings.
6108
6109         * generic-sharing.c (other_info_equal): Ditto.
6110         
6111 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6112
6113         * metadata-verify.c: Implement field signature check.
6114
6115 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * metadata-verify.c: Implement standalone signature check.
6118
6119 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6120
6121         * metadata-verify.c: Implement methodref signature check.
6122
6123 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6126         callbacks supplied by the runtime.
6127
6128         * object.c (mono_install_callbacks): New internal function to install
6129         the callbacks.
6130
6131         * object.c (mono_create_ftnptr): Move the implementation of this to
6132         mini/.
6133
6134         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6135
6136 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6137
6138         * metadata-verify.c (parse_return_type): Proper byref check.
6139         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6140         generic signatures and method params.
6141
6142 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6143
6144         * metadata-verify.c (decode_signature_header): Fix bounds check.
6145
6146         * metadata-verify.c (parse_custom_mods): Check custom mods.
6147
6148         * metadata-verify.c (parse_type): Do initial basic verification
6149         of valid values.
6150         
6151         * metadata-verify.c (is_valid_method_signature): Parse the generic
6152         param count.
6153
6154 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6155
6156         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6157         discarded based on their most specific definition so we set the method_slots
6158         array before checking if the method is acceptable or not.
6159
6160         Fixes #506757.
6161
6162 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6163
6164         * icall.c: Free the old array when resizing a mono_ptr_array.
6165
6166 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6167
6168         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6169         for the hashes whose keys are managed objects.
6170
6171 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6172
6173         * object-internals.h, threads.c: Set the execution context on
6174         thread start here, not in corlib.
6175
6176         * appdomain.c: Bump corlib version.
6177
6178 2009-05-27  Martin Baulig  <martin@ximian.com>
6179
6180         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6181         if `_mono_debug_using_mono_debugger' is set to make things work
6182         properly when embedding Mono.
6183
6184 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         * class.c (mono_class_setup_fields): Don't mark simd types as having
6187         16 bytes alignment as the whole runtime doesn't support.
6188
6189 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         * metadata-verify.c (safe_read): Use endian safe read macros.
6192
6193 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6196         it is read-only when using full aot.
6197
6198 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6199
6200         * metadata-verify.c (is_valid_method_signature): Verify parts
6201         of the return type. Provide an error message in case of failure.
6202
6203 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6204
6205         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6206
6207 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6208
6209         * metadata-verify.c: Include the size prefix in the bounds check.
6210
6211 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6212
6213         * icall.c: Remove warnings.
6214
6215         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6216         prevent auto-detection based on GCC defines.
6217
6218         Add PS3
6219
6220         * metadata-verify.c: Do not include signal.h
6221
6222         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6223         messages.  Not sure why the g_assert_not_reached is not enough to
6224         quiet the compiler.
6225         
6226
6227         * appdomain.c: Remove code that is not used when
6228         DISABLE_SHADOW_COPY is set.
6229
6230         * image.c: use g_getenv
6231
6232 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6233
6234         * reflection.c: Remove code that it not used with
6235         DISABLE_REFLECTION_EMIT is defined.
6236
6237 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6240         invoke wrappers.
6241
6242 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6243
6244         * socket-io.c
6245         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6246         the ifdef here and instead put that on io-layer
6247
6248 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6249
6250         * metadata-verify.c: Verify the generic param constraint table.
6251
6252 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6253
6254         * metadata-verify.c (verify_generic_param_table): Fix
6255         thinko on the valid flags bits for generic params.
6256
6257 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * metadata-verify.c: Verify the methodspec table.
6260
6261 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * metadata-verify.c: Verify the generic param table.
6264
6265 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6266
6267         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6268
6269 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6270
6271         * sgen-gc.c: Use generation enum more consistently and use the
6272         correct generation in mono_gc_register_for_finalization().
6273
6274 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         * metadata-verify.c: Verify the nested class table.
6277
6278 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         * metadata-verify.c: Verify the manifest resource table.
6281
6282 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6285
6286 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6287
6288         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6289         wrappers, this is now done in the JIT.
6290         
6291         * class.c (mono_set_generic_sharing_supported): New internal function.
6292         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6293
6294 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6295
6296         * metadata-verify.c: Verify the exported type table.
6297
6298 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6299
6300         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6301
6302 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6303
6304         * metadata-verify.c: Verify the file table.
6305
6306 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6307
6308         * metadata-verify.c (verify_assembly_table): Fix an error message.
6309
6310         * metadata-verify.c: Verify the assemblyref table.
6311
6312 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * metadata-verify.c (verify_assembly_table): Fix the valid
6315         bits mask for flags.
6316
6317 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6320         generic methods as well.
6321
6322 2009-05-15  Geoff Norton  <gnorton@novell.com>
6323
6324         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6325         use-case and is significantly more performant than the wapi layer.
6326
6327 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * metadata-verify.c: Verify the assembly table.
6330
6331 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * metadata-verify.c: Fix rows limit check.
6334
6335 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         * metadata-verify.c: Verify the fieldrva table.
6338
6339 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6340
6341         * sgen.c: Speed up weak links and finalizers by grouping them by
6342         generation.
6343
6344 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6345
6346         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6347         free the old GCHandle (only applies to SGen).
6348
6349 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6352         mono_metadata_load_generic_params () for non-generic methods.
6353
6354 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6355
6356         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6357         New function for returning a monitor's weak link if it has one.
6358
6359         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6360         one) when clearing a domain.  These can still be around because
6361         the object might not have been collected.
6362
6363 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6364
6365         * gc.c: Fix a warning.
6366
6367 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6368
6369         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6370         prevous wait that resulted in a deadlock on Windows when initializing
6371         the runtime form DllMain. Also results in improved startup time.
6372         (finalizer_thread): Get rid of thread_started_event.
6373         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6374         resulting MonoThread.
6375
6376         Contributed under MIT/X11 license.
6377
6378 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6379
6380         * metadata-verify.c: Verify the implmap table.
6381         Don't require that #US and #Strings be present.
6382
6383 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6384
6385         * security-core-clr.c: Delegate checks are done at creation time,
6386         not a invocation time. Fix exception for Telerik Silverlight demo
6387
6388 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6389
6390         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6391         case for the Thread class.
6392
6393         * threads.c: Do clean-up of abort exception/state in
6394         thread_cleanup() instead of Thread.free_internal().  Also clean up
6395         current_appcontext.  The reason we have to do that is because
6396         those references might point into another domain and if that
6397         domain is unloaded before the thread is finalized, they point to
6398         invalid data.
6399
6400 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6401
6402         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6403         stub signatures.
6404         
6405         Contributed unter MIT/X11 license.
6406
6407 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6408
6409         * verify.c, metadata-verifier.c: Add support for disabling the
6410         verifier in some builds.
6411
6412         [ Sorry, my previous commit accidentally commited some work in
6413         progress ]
6414
6415 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6416
6417         * class.c (mono_class_setup_fields): Set class->field.first for
6418         generic instances.
6419
6420 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6421
6422         * metadata-verify.c: Verify the typespec table.
6423
6424 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6425
6426         * metadata-verify.c: Verify the module table.
6427
6428 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6429
6430         * metadata-verify.c: Verify the methodimpl table.
6431
6432 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6433
6434         * metadata-verify.c: Verify the property table.
6435
6436 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6437
6438         * debug-helpers.c (mono_method_desc_match): Add support for generic
6439         glob patterns.
6440
6441 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6442
6443         * metadata-verify.c: Verify the propertymap table.
6444
6445 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * metadata-verify.c: Verify the event table.
6448
6449         * metadata-verify.c (search_sorted_table): Fix offset
6450         calculation.
6451
6452 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6455
6456 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6457
6458         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6459         because mono_delegate_free_ftnptr() needs it.
6460
6461 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * metadata-verify.c: Verify the eventmap table.
6464
6465 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * metadata-verify.c: Verify the standalonesig table.
6468
6469 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6470
6471         * metadata-verify.c: Verify the field layout table.
6472
6473 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6474
6475         * class.c (mono_type_get_name_recurse): Don't crash
6476         for ownerless generic params.
6477
6478         * debug-helpers.c (mono_type_get_desc): Correct the format
6479         for ownerless generic params.
6480
6481 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6482
6483         * metadata-verify.c: Verify the class layout table.
6484
6485 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6486
6487         * metadata-verify.c: Verify the decl security table.
6488
6489 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6490
6491         * domain.c (mono_domain_set_internal_with_options): Don't do
6492         anything if the old domain is the same as the old one.  Fixes
6493         #499326.
6494
6495 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6496
6497         * appdomain.c: Deregister the reflection_info roots when unloading
6498         a domain.
6499
6500         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6501         memory allocated by a domain and frees its disappearing links.
6502
6503         * boehm-gc.c, null-gc.c: Empty implementation of
6504         mono_gc_clear_domain().
6505
6506 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6507
6508         * appdomain.c (clear_cached_vtable): Free the static fields memory
6509         block.
6510
6511 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6512
6513         * gc.c: Set the correct domain when invoking finalizers.
6514
6515         * appdomain.c: Set the correct domain when creating threads.
6516
6517 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6518
6519         * sgen-gc.c: Fix skip size for vectors.
6520
6521 2009-05-03  Martin Baulig  <martin@ximian.com>
6522
6523         * mono-debug-debugger.c
6524         (mono_debugger_check_breakpoints): Check class init handlers even
6525         if we don't have any method load handers.
6526
6527 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6528
6529         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6530         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6531
6532 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6533
6534         * metadata-verify.c: Verify the field marshal table.
6535
6536 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         * metadata-verify.c: Verify the custom attribute table.
6539
6540 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * metadata-verify.c: Verify the constant table.
6543
6544 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * metadata-verify.c: Verify the memberef table.
6547
6548 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * metadata-verify.c (get_coded_index_token): Remove
6551         dead argument.
6552
6553 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         * metadata-verify.c: Verify the interfaceimpl table.
6556
6557 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6558
6559         * verify.c: Improve error message.
6560
6561         * debug-helpers.c (mono_type_get_desc): Harden the code that
6562         deals with VAR and MVAR.
6563
6564 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6565
6566         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6567         part of #498692.
6568
6569 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6570
6571         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6572         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6573
6574 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6575
6576         * security-core-clr.c: Avoid redundant checks for platform code, 
6577         e.g. check for method and for class (very common) and check
6578         for class and outer class (less common)...
6579
6580 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * reflection.c: Avoid returning random cattrs for synthetic methods.
6583         Fixes #498545.
6584
6585 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6586
6587         * assembly.c: assemblies in the GAC should never be shadow-copied.
6588
6589 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6590
6591         * domain.c, domain-internals.h: Disable
6592         track_resurrection_{objects,handles}_hash in MonoDomain if using
6593         SGen.
6594
6595 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * metadata-verify.c: Verify the param table.
6598
6599 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6600
6601         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6602         MethodList.
6603
6604         * metadata-verify.c (verify_method_table): Proper check the ParamList
6605         field.
6606
6607 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         * metadata-verify.c (verify_method_table): Check for runtime
6610         implemented functions such as delegate .ctors. Remove spurious
6611         printf.
6612         
6613 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6614
6615         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6616
6617 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6618
6619         Don't allocate MonoGenericInfo for ownerless generic params.
6620         * class-internals.h (MonoGenericParam::info): Move field to ...
6621         (MonoGenericParamFull): ... this.  New struct.
6622         (MonoGenericContainer::type_params): Change type to
6623         MonoGenericParamFull.
6624         (MonoGenericParam, MonoGenericContainer): Update accessors.
6625         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6626         'info' field for ownerless generic param.
6627         (mono_metadata_load_generic_params): Update to changes.
6628         * reflection.c (mono_reflection_create_generic_class): Likewise.
6629         (reflection_methodbuilder_to_mono_method): Likewise.
6630         (mono_reflection_initialize_generic_parameter): Likewise.
6631
6632 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6633
6634         Don't use MonoGenericParamInfo for ownerless generic params.
6635         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6636         use ParamInfo class at all.
6637         (mono_class_from_generic_parameter): Use them.
6638         (make_generic_param_class): Fix a couple of instances where 'pinfo
6639         == NULL' wasn't handle.
6640
6641 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6642
6643         * class.c (make_generic_param_class): Carve out of ...
6644         (mono_class_from_generic_parameter): ... here.
6645
6646 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6647
6648         Simplify mono_class_from_generic_parameter
6649         * class-internals.h (MonoGenericParamInfo::token): New field.
6650         * metadata.c (mono_metadata_load_generic_params): Initialize it
6651         from metadata.
6652         * class.c (mono_class_from_generic_parameter): Use it instead of
6653         searching through metadata.
6654
6655 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6656
6657         * metadata-verify.c: Add verification of the method table.
6658
6659 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6660
6661         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6662         Delegate::Invoke optimization.
6663
6664 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6667         string returned by get_shadow_assembly_location_base.
6668
6669         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6670         about caller's ownership.
6671
6672 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6675         reflection memory on domain unload.
6676
6677         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6678         reflection cleanup code do it.
6679
6680         * domain-internals.h: Add mono_reflection_cleanup_domain.
6681
6682         This fixes a memory leak for managed mirrors of reflection objects
6683         on domain unload. 
6684
6685 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * metadata-verify.c: Implement more verification of the field table.
6688
6689 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6692         doesn't try to parse the input assembly, which can be broken.
6693
6694 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6695
6696         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6697         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6698         by using the lowest bit in the link to store whether the link is
6699         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6700
6701 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6702
6703         * Makefile.am: Split the console support in platform specific code
6704         and put together a framework for making this easy in the future so
6705         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6706
6707 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * pedump.c: Fix a warning.
6710
6711 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6714         mono_class_from_mono_type to avoid bad interactions with the dual representation
6715         of the generic type definition.
6716
6717 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6718
6719         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6720         get the MonoClass for the call context type as it might be a generic
6721         instance.
6722
6723         Fixes #491483.
6724
6725 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6726
6727         * object-internals.h: The Thread object has no execution_context
6728         member anymore.
6729
6730         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6731         the execution context.
6732
6733         * appdomain.c: Bump corlib version.
6734
6735 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6736
6737         * verify.c (do_newobj): Improve error message.
6738
6739 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6742         is nested in the filter block.
6743
6744         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6745         block is not fully nested.
6746
6747         Fixes #495656.
6748
6749 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6750
6751         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6752         not MonoType to check for equality of valuetypes as the generic type
6753         definition allows for two different encodings: the generic type definition
6754         class or a generic instance over the GTD arguments.
6755
6756         Fixes #496175.
6757
6758 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6759
6760         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6761
6762         * verify.c (do_initobj): Improve error message.
6763
6764 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6765
6766         * metadata-verify.c: Enable pe verification as the issue with #496453
6767         is that the authenticode data directory have a different unspecified
6768         format. Ignore it for now.
6769
6770         * pedump.c: Run the metadata verifier together with the IL verifier.
6771
6772         Fixes ##496453.
6773
6774 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6775
6776         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6777
6778 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6779
6780         * class.c (can_access_type): Check visibility against
6781         the element type for pointers and arrays.
6782
6783         Fixes #496150.
6784
6785 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6786
6787         * metadata-verify.c: Fix cli and table verification to use information
6788         from the MonoImage. A lot of duplicated code got killed.
6789
6790 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6791
6792
6793         This patch starts to integrate the metadata verifier with the runtime code.
6794
6795         This patch causes major regression in functionality for the metadata verifier
6796         as cli and table verification are disabled since they require to be ported to
6797         use MonoImage information.
6798
6799         * image.c (do_mono_image_load): Split the code in this function
6800         into mono_image_load_pe_data and mono_image_load_cli_data.
6801         Add     care_about_pecoff parameter to not load pecoff data.
6802         Call into the metadata verifier for pecoff and cli verification.
6803
6804         * image.c (mono_image_open_raw): New function that doesn't perform
6805         any parsing of the image contents.
6806         
6807         The reason for the 3 new functions is to give pedump better control
6808         into the interaction with the verifier.
6809
6810         * metadata-internals.h: Add new functions from image.c as part of the
6811         internal mono API.
6812
6813         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6814         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6815         to make those functions work together with the runtime.
6816
6817         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6818         true if the image needs to be verified.
6819
6820         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6821
6822         * pedump.c: Use new metadata verifier API.
6823
6824 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * object.c (mono_install_vtable_trampoline): Make this receive a
6827         trampoline creation function instead of trampoline, allowing the JIT
6828         to use a different trampoline for each vtable.
6829
6830 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6831
6832         * object.c (mono_raise_exception): Don't reset the thread abort
6833         exception state here.
6834
6835 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6836
6837         * icall-def.h: New icall for getting the thread abort exception
6838         state for a thread.
6839
6840         * object.c, thread.c, object-internals.h: A thread's abort
6841         exception state is now a GC handle.  To get the object it stands
6842         for, we must move it into the current app domain, if it's
6843         different than the one where it originated from.
6844
6845         * appdomain.c: Bump corlib version.
6846
6847         * domain.c, domain-internals.h: New function for setting the
6848         domain and migrate the thread abort exception or not.
6849
6850 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852         * metadata-verify.c: Add initial verification of the
6853         field table.
6854
6855 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6856
6857         * metadata-verify.c: Add a macro to conditionally enable
6858         dumping of verification information. Add  make_coded_token
6859         and search_sorted_table to enable search sorted tables
6860         by a given coded token.
6861
6862 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6863
6864         * metadata-verify.c: Add array mapping from table index
6865         to description offset. Add get_col_offset and get_col_size
6866         functions.
6867
6868 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6869
6870         * metadata-verify.c: Add remaining table descriptions offsets.
6871         Add remaining coded index descriptions.
6872
6873 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6874
6875         * metadata-verify.c: Fixed constant table description.
6876         Fixed calculation of HasCustomAttribute coded index size.
6877         Fixed calculation of size for many table indexes. 
6878
6879 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6880
6881         * pedump.c (dump_metadata): Dump table offset instead
6882         of useless pointer in memory.
6883
6884 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6885
6886         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6887
6888 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6889
6890         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6891         a missing of for interface types.
6892
6893 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6894
6895         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6896         the code is commented.
6897
6898         * metadata-verify.c (verify_resources_table): Remove spurious printf
6899         and don't fail if there are unmanaged resources. Gmcs generates a useless
6900         one     for all assemblies - I bet it's some MS compatibility junk.
6901
6902 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6903
6904         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6905
6906         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6907
6908         * verify-internals.h: Same.
6909
6910         * pedump.c: Fix for mono_image_verify new signature.
6911
6912 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6915         flags combinations.
6916
6917 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6918
6919         * metadata-verify.c (verify_module_table): Ignore the generation field.
6920
6921 2009-04-15  Martin Baulig  <martin@ximian.com>
6922
6923         * debug-mono-symfile.c
6924         (mono_debug_symfile_lookup_location): Don't print a warning for
6925         unknown extended opcodes if they're within 0x40 and 0x7f.
6926
6927 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6928
6929         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6930         invoke signatures returning an enum. Fixes #494847.
6931
6932 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6933
6934         * metadata-verify.c: Initial code to verify the typedef table.
6935
6936 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6937
6938         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6939         with non empty stack happens before the beginning of a try block.
6940
6941         Fixes #494812.
6942
6943 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * metadata-verify.c: Verify typename and typenamespace fields of
6946         the typeref table.
6947
6948 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6949
6950         * metadata-verify.c: Initial code to verify the typeref table.
6951
6952 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6953
6954         * verify.c (verify_delegate_compatibility): Fix error message.
6955
6956 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6957
6958         * security-core-clr.c: Fix typo
6959
6960 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6963         a MonoGHashTable to keep its values alive.
6964         (emit_marshal_boolean): Fix a warning.
6965
6966 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6967
6968         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6969         not have any interface configured for IPv4/IPv6.
6970
6971 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6972
6973         * assembly.c: fix typo in error message.
6974
6975 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6978         allocating the location holding the this argument to prevent
6979         'too many root sets' errors.
6980
6981         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6982         to mark fields as special static.
6983         (mono_field_static_get_value): Handle special static fields.
6984         (mono_field_static_set_value): Ditto.
6985
6986         * class-internals.h (struct _MonoClassField): Document this.
6987
6988 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6989
6990         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6991           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6992           case.  This will handle when managed code returns null to native code.
6993
6994         Code is contributed under MIT/X11 license.
6995
6996 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6997
6998         * object.c (build_imt_slots): Changing a free to a g_free to match
6999           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7000
7001         Code is contributed under MIT/X11 license.
7002
7003 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7004
7005         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7006           the correct TRUE value is passed through the marshaling layer.
7007
7008         Code is contributed under MIT/X11 license.
7009
7010 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7011
7012         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7013         correctly. Fixes #492330.
7014         
7015         * marshal.c: Fix the embedding of object pointers into JITted code in
7016         the native-to-managed wrappers by allocating some GC tracked memory, and
7017         embedding the address of that.
7018
7019 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7020
7021         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7022         pointers into the vtable.
7023
7024 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7025
7026         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7027
7028         * verify.c (verify_ldftn_delegate): Improve error message.
7029
7030 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7031
7032         * reflection.c (my_mono_class_from_mono_type): Remove.
7033
7034 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7035
7036         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7037         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7038         and constraints fields into ...
7039         (MonoGenericParamInfo): ... this.
7040         (mono_generic_param_info, mono_generic_container_get_param_info):
7041         New accessors.
7042         * class.c, debug-helpers.c, icall.c: Update to changes.
7043         * metadata.c, reflection.c, verify.c: Likewise.
7044
7045 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7046
7047         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7048
7049         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7050         
7051         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7052         booleans with sbytes.
7053
7054 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * class.c (can_access_instantiation): Verify accesibility of element types
7057         for arrays and pointers.
7058
7059         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7060
7061         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7062
7063         Fixes #493068.
7064
7065 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * verify.c (do_invoke_method): Improve error messages.
7068
7069 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7070
7071         * verify.c:  Fixing the MSVC build.
7072
7073         Code is contributed under MIT/X11 license.
7074
7075 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7076
7077         * security-core-clr.c: Simplify get_reflection_caller not to call
7078         mono_method_get_last_managed (another stack walk) and adjust the
7079         callers to handle a (should not happen) NULL return value.
7080
7081 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7082
7083         Add accessors to some MonoGenericParam fields
7084         * class-internals.h (mono_generic_param_owner): New accessor.
7085         (mono_generic_param_num): Likewise.
7086         (mono_type_get_generic_param_owner): New helper.
7087         (mono_type_get_generic_param_num): New helper.
7088         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7089
7090 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7091
7092         * class-internals.h (mono_generic_container_get_param): New wrapper.
7093         * class.c, icall.c, metadata.c, verify.c: Use it.
7094
7095 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7096
7097         Fix gtest-252.cs
7098         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7099         the standard case/loop.  In particular, don't complain about
7100         references to generic type definitions.
7101
7102 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7103
7104         * debug-helpers.c (dis_one): Decode string arguments.
7105
7106 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * pedump.c (dump_verify_info): Dump type name correctly.
7109
7110 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7111
7112         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7113         are larger than code size.
7114
7115         This can happen in valid code if the try/catch block is not followed by any instruction
7116         and do a backward branch on the leave instruction.
7117
7118         Fixes #492494.
7119
7120 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7121
7122         * security-core-clr.c: Fix typo while comparing second method names
7123         in can_avoid_corlib_reflection_delegate_optimization
7124
7125 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7126
7127         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7128
7129         Fixes #487738.
7130
7131 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7132
7133         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7134         a MVAR using a class context.
7135
7136         Fixes #490335.
7137
7138 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7139
7140         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7141
7142         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7143
7144         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7145         functions supplied by the JIT for the SGEN GC.
7146
7147         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7148         
7149 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7150
7151         monitor.c (mono_monitor_try_enter_internal):
7152         Added calls to profile monitor contentions.
7153         Also duplicated a small piece of code (the "get the monitor" logic)
7154         from the fast path to the slow path, and changed the relevant goto
7155         statements, so that monitor acquisition events can be emitted from the
7156         slow path (this is by Paolo Molaro).
7157
7158 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7159
7160         * profiler.c, profiler.h, profiler-private.h:
7161         Added support for profiling monitor contentions.
7162
7163 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7164
7165         * metadata-verify.c: Verify the modules table.
7166
7167 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7168
7169         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7170         using the context of the method been verifier and not of the method been called.
7171
7172         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7173         safely inflate generic types. 
7174
7175 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7176
7177         * security-core-clr.c: Change the strategy for checking the 
7178         "reflection using delegates optimization" to avoid unneeded 
7179         attributes in multiple class libraries.
7180
7181 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7182
7183         * sgen-gc.c: Remove object element in the disappearing link struct
7184         by storing the object pointer in the link.
7185
7186 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7187
7188         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7189
7190 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7191
7192         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7193
7194         * verify.c (mono_method_verify): Do proper bounds checking of exception
7195         clause ranges.
7196
7197 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7198
7199         * loader.c (mono_field_from_token): Don't crash if the field parent could
7200         not be decoded.
7201
7202 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7203
7204         * sgen-gc.c: Execute critical finalizers after ordinary
7205         finalizers.
7206
7207         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7208         mono_defaults.
7209
7210 2009-03-31 Jb Evain <jbevain@novell.com>
7211
7212         * verify.c (do_ldstr): don't check if a string is in the user strings
7213         heap if the current image is dynamic.
7214
7215 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7216
7217         * sgen-gc.c: Wait until the last finalizer has executed when
7218         returning from WaitForPendingFinalizers.
7219
7220 2009-03-31  Martin Baulig  <martin@ximian.com>
7221
7222         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7223         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7224         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7225         (mono_debugger_event_create_appdomain): New function.
7226         (mono_debugger_event_unload_appdomain): New function.
7227
7228         * appdomain.c (mono_domain_create_appdomain_internal): Call
7229         mono_debugger_event_create_appdomain().
7230
7231 2009-03-31  Martin Baulig  <martin@ximian.com>
7232
7233         * mono-debug-debugger.c
7234         (mono_debugger_register_class_init_callback): Also register the
7235         class init callback if the class is already initialized to make
7236         things work with shadow copied assemblies.
7237
7238 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7239
7240         * security-core-clr.c
7241         (mono_security_core_clr_ensure_reflection_access_field): Let 
7242         critical code access the field (just like we do for methods). Use
7243         check_field_access helper.
7244         (mono_security_core_clr_ensure_reflection_access_method): Use 
7245         check_field_access helper.
7246
7247 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7248
7249         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7250         call the run-finalize function directly.
7251
7252         * gc.c, gc-internal.h: Make run_finalize() non-static.
7253
7254 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7255
7256         * sgen-gc.c: Use a separate struct for disappearing links.
7257
7258 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7259
7260         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7261         * MaxIOVectorLength enabled, just ignore them.
7262         Fixes bug #349688.
7263
7264 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7265
7266         * metadata-verify.c: Fix eglib build.
7267
7268 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * threads-types.h: Fix the win32 build.
7271
7272 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7273
7274         * class.c: move coreclr inheritance/override checks to 
7275         security-core.clr.c
7276         * security-core.clr.c|h: add code from class.c with additional
7277         documentation. Fix override check when the method is not critical.
7278
7279 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7280
7281         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7282         (match_class): Ditto.
7283
7284 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7287
7288         * metadata-verify.c: Implement table layout row size calculation. Verify
7289         the total size of the tables.
7290
7291 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7292
7293         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7294
7295 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7296
7297         * appdomain.c:
7298         * console-io.[ch]: added new mono_console_init() to make sure that
7299         file descriptors 0, 1 and 2 are opened.
7300         Bug #489019 fixed.
7301
7302 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7303
7304         * appdomain.h: Export a new callback type and a new function to
7305         set this callback. This allow a mono host to provide it's own
7306         definition for "platform code".
7307         * metadata-internals.h: Add a core_clr_platform_code flag on 
7308         _MonoImage to (cache and) know if it is representing platform 
7309         code.
7310         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7311         on platform code images.
7312         * security-core-clr.c|h 
7313         (mono_security_set_core_clr_platform_callback): Allow the host
7314         to provide it's own platform check definition.
7315         (mono_security_core_clr_determine_platform_image): Detect if an 
7316         image is platform code (using the specified callback).
7317         (mono_security_core_clr_is_platform_image): Return cached value 
7318         for platform code.
7319
7320 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7323         which has different parameter types for the 'tid' argument in windows and
7324         the io-layer.
7325
7326         * appdomain.c attach.c threads.c: Use the new helper.
7327
7328 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * metadata-verify.c: Verify valid table bits.
7331
7332 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7333
7334         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7335
7336         * metadata-verify.c: Add initial table schema verification.
7337
7338 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7341         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7342         #488383.
7343
7344         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7345
7346         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7347
7348 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7349
7350         * security-core-clr.c: Add/update documentation
7351
7352 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * marshal.c (emit_marshal_object): Generate code to throw an exception
7355         instead of throwing it. Fixes #488670.
7356
7357 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7358
7359         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7360         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7361         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7362         and add a call to mono_security_core_clr_ensure_delegate_creation
7363         to do the extra checks required by CoreCLR.
7364         * security-core-clr.c|h: Add function to check delegate creation,
7365         both in the binding and accessibility, under CoreCLR.
7366
7367 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7368
7369         * reflection.c (mono_reflection_create_dynamic_method): when 
7370         coreclr is enabled make sure that every resolved object are
7371         checked (e.g. field and method access).
7372         * security-core-clr.c|h: Add function to check objects resolved
7373         when a dynamic method is created.
7374
7375 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7376
7377         * metadata-verify.c: Cache directory rva translations.
7378
7379         * metadata-verify.c: Add cli-header and streams verification.
7380
7381 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7382
7383         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7384         the wrong offset (8 instead of 6).
7385
7386 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7387
7388         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7389         methods, return the native function address itself. Fixes
7390         #487758.
7391
7392 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7393
7394         * console-io.c: some of the values for control characters might not be
7395         present.
7396
7397 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7398
7399         * exception.c|h: Add helpers to create [Field|Method]AccessException
7400         * icall.c: Add required coreclr check calls for field reflection.
7401         Move the existing (method) check logic into security-core-clr.c
7402         * security-core-clr.c: Add functions to check if the access of a
7403         field or method is allowed when reflecting under coreclr. This is
7404         mostly done using a stack walk to find the "real" caller: i.e. the
7405         code that is calling the reflection
7406
7407 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * gc-internal.h: Change location of gc_wrapper.h
7410
7411 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7412
7413         * class.c: Simplification to coreclr checks for overrides that
7414         makes it easier to set breakpoints.
7415
7416 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7417
7418         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7419         mono_security_core_clr_method_level): Avoid potential 
7420         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7421         user/application code) and make it easier to set breakpoints
7422
7423 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7424
7425         * metadata-verify.c: Reject cli header tables that mono don't handle.
7426
7427 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7428
7429         * pedump.c: Fix CLI header dumping.
7430
7431 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7432
7433         * metadata-verify.c: More CLI header verification.
7434
7435 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7436
7437         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7438
7439 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7440
7441         * metadata-verify.c: Initial verification of the CLI header.
7442
7443 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * metadata-verify.c (verify_resources_table): Fix verification of zero
7446         sized resource section and id entries count.
7447
7448 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7451
7452 2009-03-17  Jb Evain  <jbevain@novell.com>
7453
7454         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7455
7456 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7459         (mono_gc_make_descr_for_array): Ditto.
7460
7461 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7462
7463         * verify.c (mono_verifier_is_class_full_trust): Add support for
7464         CoreCLR security mode where trusted assemblies are defined as
7465         "platform code".
7466
7467 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7468
7469         * metadata-verify.c: Add minimal PECOFF resource verification.
7470
7471 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7472
7473         * metadata-verify.c: Be less restrictive with some coff fields.
7474
7475 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7478         params as boxed values on stack. Fixes #485706.
7479
7480 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7481
7482         * console-io.c: the termios values may vary in different flavors of unix.
7483
7484 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7485
7486         * console-io.[ch]: return the entire set of control characters when
7487         initializing the terminal.
7488         * appdomain.c: bump corlib version.
7489
7490 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7491
7492         * mono-perfcounters.c: added support for in-process custom
7493         performance counters.
7494
7495 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7496
7497         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7498
7499 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7500
7501         * metadata-verify.c: Verify the data pointed by the import table. 
7502
7503 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7504
7505         * metadata-verify.c (load_data_directories): Store data
7506         directory contents.
7507
7508         * metadata-verify.c: Verify the import table. 
7509
7510 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7511
7512         * metadata-verify.c: Verify data directories.
7513
7514 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7515
7516         * metadata-verify.c: Check section header flags.
7517
7518 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7519
7520         * appdomain.c: if the assembly name is a shadow-copied file, return
7521         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7522         in mono_make_shadow_copy.
7523         * icall.c: if the assembly name is a shadow-copied file, replace it
7524         with the original assembly path.
7525
7526         Bug #484244 fixed. NUnit tests for corlib can be run without
7527         --noshadow now.
7528
7529 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7530
7531         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7532         entries when the table is reallocated.
7533
7534         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7535         mono_gc_alloc_fixed () since it contains GC refs.
7536
7537 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7538
7539         * reflection.c (ensure_complete_type): New helper function to call
7540         type resolve handlers for unfinished dynamic types.
7541         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7542
7543 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7546         #483247.
7547
7548 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7549
7550         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7551
7552 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7553
7554         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7555         between GCHandles of type WeakTrackResurrection and the objects they
7556         point to.
7557
7558         * gc.c: Partly implement the sematics of GCHandles of type 
7559         WeakTrackResurrection: these handles should only be cleared after the
7560         finalizer of the object they are pointing to has ran.
7561
7562 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7563
7564         * icall.c: Partially revert r126631 because using the jump
7565         trampolines for generic shared methods makes it superfluous.
7566
7567 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7568
7569         * threads.c (handle_store): Create the 'threads' hash table with the proper
7570         MONO_HASH_VALUE_GC type.
7571
7572 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7575         FIRST_GC_TRACKED.
7576
7577         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7578         and LAST_GC_TRACKED as a GC root.
7579
7580         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7581
7582         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7583         the static data even if it consists of 1 reference.
7584
7585         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7586         if there is a GC descriptor.
7587
7588         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7589         instead of through the GC since they contain no object references.
7590
7591 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7592
7593         * generic-sharing.c (instantiate_other_info): Always return a jump
7594         trampoline for method code.
7595
7596 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7597
7598         * culture-info-tables.h: generated to include the en-tt culture.
7599
7600 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7601
7602         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7603         capture the thread context.
7604
7605         * object.c (mono_async_result_new): Cache the invoke wrappers to
7606         ExecutionContext::Capture.
7607
7608 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7609
7610         * marshal.h: Add a prototype for what mono_compile_method returns
7611         for invoke wrappers.
7612
7613         * gc.c: Use the new prototype declaration.
7614
7615 2009-03-04  Geoff Norton  <gnorton@novell.com>
7616
7617         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7618         * gc-internal.h:
7619         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7620
7621 2009-03-04  Martin Baulig  <martin@ximian.com>
7622
7623         * mono-debug.h
7624         (mono_debugger_runtime_invoke): Removed.
7625
7626         * mono-debug-debugger.c
7627         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7628
7629 2009-03-02  Martin Baulig  <martin@ximian.com>
7630
7631         * mono-debug.h
7632         (mono_debugger_unhandled_exception): Removed.
7633         (mono_debugger_handle_exception): Removed.
7634         (mono_debugger_throw_exception): Removed.
7635
7636         * mono-debug.c
7637         (mono_debug_debugger_version): Bump to 5.
7638
7639         * mono-debug-debugger.c: Moved the exception handling code to
7640         ../mini/debug-mini.c
7641
7642 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7643
7644         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7645         finalize_objects_hash.
7646
7647         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7648         
7649         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7650         field.
7651
7652         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7653         cache.
7654
7655         * image.c (mono_image_close): Free it.
7656         
7657         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7658         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7659         on the this argument.
7660
7661         * gc.c (run_finalize): Optimize the calling of the finalizers.
7662
7663 2009-03-03  Martin Baulig  <martin@ximian.com>
7664
7665         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7666         of the `MonoGenericInst' changes.
7667
7668 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7671         mono_array_class_get_cached to reduce locking contention. Extract
7672         a domain var.
7673
7674         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7675         intermediary managed arrays. Use caching version of mono_array_new
7676         to allocate the result array.
7677
7678         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7679
7680         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7681
7682         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7683         to reduce locking contention.
7684
7685 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7686                 
7687         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7688         thunk builder code for the non-interface case.
7689
7690 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7691
7692         * object.c (get_generic_virtual_entries): New helper function to collect
7693         the virtual generic method instances which need to be added to an IMT
7694         thunk.
7695         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7696         Instead of creating a new IMT thunk, reset the vtable slot to the
7697         trampoline, the thunk will be created the next time the trampoline is called.
7698         (build_imt_slots): Add support for virtual generic methods in interfaces by
7699         adding to the IMT thunk all the methods registered using 
7700         mono_method_add_generic_virtual_invocation ().
7701
7702         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7703         (struct _MonoIMTCheckItem): Ditto.
7704
7705         * object.c (mono_method_add_generic_virtual_invocation): Take a
7706         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7707         the IMT thunk to include all items.
7708         
7709         * object.c (mono_class_create_runtime_vtable): Add a missing
7710         mono_loader_unlock ().
7711
7712 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7715
7716         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7717
7718 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * object-internals.h: Rename _MonoReflectionEvent to
7721         MonoReflectionMonoEvent so it reflects the right managed type.
7722         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7723
7724         * icall.c:
7725         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7726         type.
7727
7728 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7731         intermediary managed arrays. Use caching version of mono_array_new
7732         to allocate the result array.
7733
7734 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7735
7736         * reflection.c: Use cached version of mono_array_new alongside
7737         the mono_reflection_get_custom_attrs_by_type call path.
7738
7739 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7740
7741         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7742         intermediary managed arrays. Use caching version of mono_array_new
7743         to allocate the result array.
7744
7745         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7746
7747 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7748
7749         * icall.c: Add small implementation of a growable stack bound array.
7750
7751         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7752
7753         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7754         intermediary managed arrays. Use caching version of mono_array_new
7755         to allocate the result array.
7756
7757 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7758
7759         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7760         helps Enum::CompareTo to be implemented without reboxing all enums
7761         to their underlying type.
7762 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7763
7764         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7765         since it acquires a global lock leading to scalability problems.
7766
7767         * profiler.c: Make the stat profiler work with multiple appdomains, this
7768         currently only works when no appdomains are unloaded.
7769
7770 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7771
7772         * appdomain.c: make the check to avoid copying when the assembly is
7773         already shadow copied actually work.
7774
7775 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7776
7777         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7778
7779         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7780         changes to the managed side.
7781
7782 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7783
7784         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7785         classes + a separate lock for it, as it is used frequently at runtime, not
7786         just during metadata loading/JIT compilation.
7787
7788         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7789         for szarrays.
7790         
7791         * object-internals.h (mono_class_from_name_cached): New macro to cache
7792         the results of the lookup locally without having to declare a static
7793         variable to hold it.
7794         (mono_class_get_field_from_name_cached): Ditto.
7795         (mono_array_class_get_cached): Ditto.
7796
7797         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7798         the new macros.
7799         
7800         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7801         slower search in metadata.
7802
7803         * pedump.c: Fix a warning.
7804
7805 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * reflection.c (encode_locals): Add checks for user types.
7808         (method_encode_clauses): Ditto.
7809         (method_encode_code): Ditto.
7810         (mono_image_create_token): Ditto.
7811
7812         * object-internals.h: Change the type of more fields from MonoReflectionType*
7813         to MonoObject*.
7814
7815 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7818         the a thread does not suspend within 100ms.
7819
7820         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7821         in addition to StopRequested as well.
7822
7823         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7824
7825         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7826         search the method_hash before inserting a new entry, to avoid crashes when
7827         the same method is inserted multiple times, causing the old 
7828         MonoDebugMethodInfo structure to be freed by the value dtor function.
7829
7830 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7831
7832         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7833         SO_EXLUSIVEADDRUSE where available.
7834
7835 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7838         runtime invoke wrappers, this time it is string ctor wrappers, which
7839         pass a dummy string as 'this' instead of their obj argument. Fixes
7840         #478473.
7841
7842 2009-02-21  Jb Evain  <jbevain@novell.com>
7843
7844         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7845         only get create_culture once.
7846
7847 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7850         check before the locking.
7851         
7852         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7853         (mono_reflection_create_runtime_class): Ditto.
7854         (mono_reflection_sighelper_get_signature_local): Ditto.
7855         (mono_reflection_sighelper_get_signature_field): Ditto.
7856
7857         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7858         is a System.MonoType object or similar.
7859         (monotype_cast): New helper function to cast a MonoObject to a 
7860         MonoReflectionType object.
7861
7862         * object-internals.h: Change MonoReflectionType* members in structures to
7863         MonoObject* members to force the usage of the monotype_cast () function.
7864
7865         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7866         structures/arrays. This causes us to assert instead of crashing when 
7867         instances of user defined subclasses of System.Type are encountered.
7868
7869 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7870
7871         * cil-coff.h:
7872         * icall-def.h:
7873         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7874         win32 resource loaded from a PE file.
7875
7876         * image.c: fix mono_image_lookup_resource.
7877
7878 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7879
7880         * icall-def.h:
7881         * threads-types.h:
7882         * threads.c: added internal call for WaitHandle.SignalAndWait.
7883
7884 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7885
7886         * cominterop.c : Adding cominterop_type_from_handle and 
7887           registering it as an icall.  Replacing all references
7888           to type_from_handle.
7889
7890         Code is contributed under MIT/X11 license.
7891
7892 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7893
7894         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7895
7896         * appdomain.c: Call the tracer init function.
7897
7898         * domain-internals.h: Enable the tracer for the domain locks.
7899
7900         * image.c: Enable the tracer for image locks.
7901
7902         * loader.c: Enable the trace for the loader lock.
7903
7904         * lock-tracer.h:
7905         * lock-tracer.c: Initial implementation of the lock trace utility.
7906         The tracer requires a compile time define to be enabled and a env var
7907         to be enabled at runtime.
7908
7909 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * domain.c (mono_domain_code_foreach): Improve documentation.
7912
7913 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7914
7915         * appdomain.c:
7916         * generic-sharing.c:
7917         * object.c:
7918         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7919         comes first.
7920
7921 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7922
7923         * domain.c: Add mono_domain_code_* functions that perform locking
7924         around the domain codeman.
7925
7926         * domain-internals.h: Export those functions.
7927
7928         * object.c: Use new functions instead of acquiring the domain lock.
7929
7930 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7931
7932         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7933         delegate. Fixes #477396.
7934
7935 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * reflection.c (create_custom_attr): Get rid of alloca.
7938
7939 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7940
7941         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7942           Adding exception handling for all CCW calls.
7943
7944         Code is contributed under MIT/X11 license.
7945
7946 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7949
7950         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7951         native->managed marshalling code. Fixes #476247.
7952
7953 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * class.c (mono_class_get_vtable_entry): Move the addition of
7956         static rgctx invoke wrappers for vtable methods here, this simplifies
7957         a lot of code and causes fewer rgctx wrappers to be created.
7958
7959         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7960         name of the statistics to begin with an uppercase.
7961
7962 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7963
7964         * reflection.c: Revert previous change as it breaks the build.
7965         
7966 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7967
7968         * verify.c: Properly handle SZARRAY element type.
7969
7970         Fixes #474271.
7971
7972 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7973
7974         * reflection.c (mono_image_create_method_token): Correctly encode
7975         MethodDef MemberRefParent token.
7976
7977         Fixes #472845.
7978
7979 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * image.c (mono_image_close): Delete the critical section before
7982         freeing the memory holding it.
7983
7984 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7985
7986         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7987         Fixes #476257.
7988
7989 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7990
7991         * pedump.c (main): Call mono_marshal_init so pedump
7992         doesn't crash.
7993
7994 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7995
7996         * loader.c (method_from_memberref): Properly fix #474271 and
7997         don't break the runtime bad.
7998
7999 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8002         (mono_domain_alloc0): Ditto.
8003
8004 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8005
8006         * loader.c (method_from_memberref): Don't abort if the array
8007         method is not found. A regular loader failure is more informative
8008         and correct.
8009
8010         Fixes #474271.
8011
8012 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8013
8014         *loader.c: Guard MonoImage::method_cache/methodref_cache
8015         using the image lock instead of the loader lock.
8016
8017         * metadata.h: Add comments about which fields are protected by
8018         the image lock.
8019
8020 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8021
8022         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8023
8024         * generic-sharing.c (mono_method_construct_object_context): Remove the
8025         wrapper_type == NONE assert, it is not needed.
8026
8027 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8028
8029         * reflection.c (clear_cached_object): New helper function.
8030         (mono_method_clear_object): New function to clear the cached reflection
8031         objects for a dynamic method.
8032
8033         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8034         Partly fixes # 463323.
8035         
8036 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8037
8038         * class.c:
8039         * loader.c:
8040         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8041
8042 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8043
8044         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8045         take the image lock instead of the loader lock.
8046
8047         * metadata-internals.h: Export new functions.
8048
8049 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8050
8051         * domain.c (app_config_parse): Remove another use of stat that is
8052         not necessary as g_file_get_contents already does the presence
8053         check. 
8054
8055 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8056
8057         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8058
8059         * marshal.c: Move the bstr handling code to cominterop.c.
8060
8061         * marshal.c: Remove some COM interop code missed previously.
8062
8063 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8064
8065         More Paolo patches from the Wii port:
8066         
8067         * security.c: Remove ves_icall_System_Environment_get_UserName
8068         from here.
8069
8070         * icall.c: And put ves_icall_System_Environment_get_UserName
8071         here. 
8072
8073         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8074         redundant call to stat that was only used to test for the file
8075         existence.   Patch from Paolo.
8076
8077         * gc.c (run_finalize): If COM is disabled, do not link in
8078         mono_marshal_free_ccw.
8079
8080         * generic-sharing.c: Use alloca.h here as well.
8081
8082 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8083
8084         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8085
8086 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8087
8088         * cominterop.c cominterop.h: New files.
8089
8090         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8091         function/typedefs which are needed by cominterop.c global.
8092
8093 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8094
8095         * generic-sharing.c: Don't take the loader lock to guard image
8096         mempool allocs.
8097
8098 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8099
8100         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8101         called without the loader lock which is required to guard MonoImage:tokens.
8102
8103 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8104
8105         * class.c:
8106         * metadata.c:
8107         * method-builder.c:
8108         * marshal.c:
8109         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8110
8111 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8112
8113         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8114         Rework the code to use regular mono_image_alloc/0.
8115
8116         * loader.c: Rework the code to use regular mono_image_alloc/0.
8117
8118         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8119
8120 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8121
8122         * object-internals.h : Fixing a typo in the 
8123           MonoReflectionComVisibleAttribute struct.
8124
8125         * marshal.c (cominterop_com_visible): Check the implemented 
8126           interfaces for ComImport.
8127
8128         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8129           assume that bools should be treated as VARIANTBOOLs.
8130
8131         * marshal.c (emit_marshal_boolean): Adding cases for 
8132           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8133
8134         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8135           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8136
8137         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8138           should be treated as VARIANTBOOLs.    
8139
8140         Code is contributed under MIT/X11 license.
8141
8142 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8143
8144         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8145         allocation with the image lock.
8146
8147 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8148
8149         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8150         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8151
8152         * object.c: Add mono_string_to_utf8_image.
8153
8154         * object-internals.h: Export mono_string_to_utf8_image.
8155
8156         * reflection.c: Rework all explicit references to the the image mempool to go thought
8157         the mono_image_alloc set of functions.
8158
8159 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8160
8161         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8162         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8163         and generics-sharing.c.
8164
8165         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8166         as first argument. Note that this function remains broken as it doesn't perform locking around the
8167         mempool allocation.
8168
8169         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8170
8171         * image.c: Add g_slist_append_image.
8172
8173         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8174         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8175
8176         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8177         Fix all related code to do the same.
8178
8179         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8180
8181         * metadata-internals.h: Fix the signatures.
8182
8183 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8184
8185         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8186         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8187         and similar to work using MonoImage.
8188
8189         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8190         MonoMemPool.
8191
8192         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8193
8194         * class.c (mono_metadata_signature_deep_dup): Same.
8195
8196         * class.c (inflate_generic_type): Same.
8197
8198         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8199
8200         * metadata.c (mono_metadata_signature_dup_full): Same.
8201
8202         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8203         mono_metadata_signature_dup_full.
8204
8205         * metadata.c (mono_metadata_type_dup): Same.
8206
8207         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8208
8209         * reflection.c: Same.
8210
8211         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8212
8213         * metadata-internals.h: Fix the signatures.
8214
8215         * class-internals.h: Same.
8216
8217 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8218
8219         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8220         and use mono_image_alloc set of functions instead. 
8221
8222         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8223         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8224         of a MonoMemPool.
8225
8226         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8227
8228         * class.c (g_list_prepend_mempool): Removed.
8229
8230         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8231
8232         * image.c: Add g_list_prepend_image.
8233
8234         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8235
8236         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8237
8238
8239 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8240
8241         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8242         mono_image_unlock.
8243
8244         * image.c (mono_image_init): Init the lock field.
8245  
8246         * image.c (mono_image_init): Cleanup the lock field.
8247
8248         * image.c: Add mono_image_(un)lock functions.
8249
8250 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8251
8252         * class.c, class-internals.h: mono_method_get_context_general()
8253         combines the functionality of mono_method_get_context() and
8254         mini_method_get_context().
8255
8256         * generic-sharing.c, domain-internals.h:
8257         mono_method_construct_object_context() and
8258         mono_domain_lookup_shared_generic() moved from mini.
8259
8260         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8261         method doesn't have the correct instantiation because it's shared
8262         generic code.  Fixes #473999.
8263
8264 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8265
8266         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8267
8268         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8269         
8270 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8271
8272         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8273
8274         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8275
8276         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8277         and recheck the cache for dups after it.
8278
8279         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8280
8281         Fixes one of the deadlocks found in #473150.
8282
8283 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8284
8285         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8286           For Win32, add additional break conditions for accept.
8287
8288         Code is contributed under MIT/X11 license.
8289
8290 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8291
8292         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8293         lazily initialize the native wrapper cache.
8294         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8295         cache, since they are different from the normal wrappers.
8296
8297         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8298
8299         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8300         AOT compiled native wrappers.
8301
8302 2009-02-09  Geoff Norton  <gnorton@novell.com>
8303
8304         * appdomain.h:
8305         * security-core-clr.c: Allow enabling core-clr from the embedding
8306         API.
8307
8308 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8309
8310         * socket-io.c: when requesting all the local ips, if there are no
8311         interfaces up and running, MS returns 127.0.0.1.
8312
8313 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8314
8315         * mono-perfcounters-def.h: processor time is an inverse time.
8316         Fixes bug #468625.
8317
8318 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8319
8320         * socket-io.c: an empty host name returns the list of local IPs.
8321         Fixes bug #386637 part 1/2.
8322
8323 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8324
8325         * verify.c (mono_class_interface_implements_interface): Call
8326         mono_class_setup_interfaces ().
8327         (merge_stacks): Ditto.
8328
8329 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8330
8331         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8332         klass->interfaces.
8333         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8334         (mono_generic_class_get_class): Ditto.
8335
8336 2009-02-06  U-QUACK\miguel  <miguel@quack>
8337
8338         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8339         they live in security.c
8340
8341         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8342         another bit from Paolo's code.
8343
8344 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8345
8346         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8347         methods which will be discarded by add_imt_builder_entry ().
8348
8349         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8350         need to be boxed.
8351
8352         * loader.c: Add a statistics for the size of the memberref signature cache.
8353         
8354         * loader.c (find_cached_memberref_sig): New helper function.
8355         (cache_memberref_sig): Ditto.
8356
8357         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8358         they will be parsed again for every generic instantiation, leading to unbounded
8359         memory growth.
8360
8361 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8364         parameters of generic methods.
8365
8366         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8367         after the original method is copied to the inflated method.
8368         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8369
8370         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8371         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8372
8373         * class.c metadata.c: Update after the changes above.
8374
8375 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8376
8377         * metadata-verify.c: Simplified error handling and added
8378         section table validation.
8379
8380 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * class-internals.h (MonoClassExt): New structure containing rarely used
8383         fields of MonoClass.
8384         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8385         through a new 'ext' field.
8386
8387         * class.c (mono_class_alloc_ext): New helper function to allocate 
8388         class->ext.
8389
8390         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8391
8392 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8393
8394         * object.c (mono_object_get_virtual_method): Properly inflate
8395         generic methods.  Fixes #472692.
8396
8397 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8400         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8401         for the parent type, the created type must be ready to be used on a generic
8402         instantiation.
8403         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8404         we won't have duplicated entries in generic_inst_cache.
8405
8406         Fixes #469553.
8407
8408 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8409
8410         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8411         replace with plain BSD per the comments on the bug MONO77637.
8412
8413 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * class.c (mono_class_get_generic_class): New accessor function.
8416         (mono_class_get_generic_container): Ditto.
8417
8418         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8419         fields, similar to the ones in MonoMethod.
8420
8421         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8422         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8423
8424         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8425         
8426         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8427         the same information as element_class->byval_arg.
8428
8429         * class.c reflection.c: Remove references to class->byval_arg.
8430
8431         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8432         klass->enum_basetype directly.
8433
8434         * verify.c metadata.c object.c icall.c reflection.c: Use 
8435         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8436         directly.
8437
8438 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8439
8440         * icall-def.h: Remove internal calls for sockets when
8441         DISABLE_SOCKET is defined, file system writing features when the
8442         OS only support reading and not writing data and Policy support if
8443         the Policy is disabled.
8444         
8445         * image.c (do_mono_image_open): Apply Paolo's patches for using
8446         mono_file_map_ APIs here.
8447
8448         * assembly.c: Add support for platforms to avoid prefix
8449         auto-detection. 
8450
8451 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8452
8453         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8454         warning.
8455
8456         * class.c (mono_class_inflate_generic_class): New helper function.
8457
8458         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8459         statistics for inflated methods/classes.
8460
8461         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8462
8463         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8464         the call is made from Delegate.CreateDelegate () for the invoke method of
8465         a delegate.
8466
8467         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8468
8469         * metadata.c (mono_metadata_signature_size): New helper function.
8470
8471         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8472         generic instances.
8473
8474         * metadata.c (inflated_method_in_image): Avoid calling 
8475         mono_method_signature () if the method does not already have a signature.
8476
8477 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8478
8479         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8480         valuetype is compatible with target type, check by inheritance as a
8481         VT is not really compatible with System.ValueType, for example.
8482
8483         * verify.c (do_invoke_method): Improve error message.
8484
8485         * verify.c (do_box_value): If boxing a nullable, use the type argument
8486         on stack instead.
8487
8488         * verify.c (do_newobj): Improve error message.  
8489
8490         Fixes #469549.
8491
8492 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8493
8494         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8495
8496 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8497
8498         * generic-sharing.c: Don't hold domain lock when calling
8499         instantiate_other_info().  Fixes #471958.
8500
8501         * domain-internals.h, loader.c: Describe locking policy of domain
8502         lock vs loader lock.
8503
8504 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8505
8506         * verify.c (mono_delegate_signature_equal): Make it possible to check
8507         first-arg-bound delegates to static method.
8508
8509         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8510         static methods with the first arg bound.
8511
8512         Fixes #469529.
8513
8514 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8515
8516         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8517         errors.
8518
8519         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8520         under strict mode. Any type, when boxed can be seen as a reference type.
8521
8522         Fixes #469528.
8523
8524 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8525
8526         * object.h: The lower bound of an array is a signed integer value.
8527         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8528         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8529
8530         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8531         calculate the upper bound.
8532         
8533         Fixes #471252.
8534
8535 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8536
8537         From Paolo's work, refactored, cleared up:
8538         
8539         * threadpool.c, icall.c: ifdef code that requires a working socket
8540         stack.
8541
8542         * metadata.c (mono_metadata_field_info): Do not attempt to return
8543         a value from a function declared as void.
8544
8545         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8546         from the console stack.
8547
8548         * assembly.c: use strrchr instead of rindex.
8549
8550         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8551         alloca.h on systems that have it.
8552
8553         * environment.c: Avoid code that uses stuff from
8554         HAVE_SYS_UTSNAME_H
8555         
8556         * appdomain.c: Include sys/time.h.
8557
8558         * console-io.c: include sys/ioctl.h if it is available.
8559
8560 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8561
8562         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8563
8564         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8565         the method builder.
8566
8567         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8568         after it was created and cached, as the later is not thread safe.
8569         
8570 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8571
8572         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8573         called while the debugging module is not initialized. Fixes #471669.
8574
8575 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8576
8577         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8578
8579         Fixes #471255.
8580
8581 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8582
8583         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8584         loader lock is not taken while the templates lock is held.  Fixes
8585         #471089.
8586
8587 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8588
8589         * metadata.c (type_in_image): Added a check to fix a monodis
8590         crash.
8591
8592 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8595         nullable arguments.
8596
8597         * object.c (mono_runtime_invoke_array): Ditto.
8598         
8599         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8600         freeing wrappers of dynamic methods.
8601
8602         * loader.c (mono_free_method): Call it. Fixes #463323.
8603         
8604         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8605         methods taking vtype/byref arguments, to fix yet another bug caused by
8606         the sharing of runtime invoke wrappers. Partly fixes #471259.
8607
8608 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8611         <first file in file table>:1 when the IL offset does not have an associated
8612         line number.
8613
8614 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8615
8616         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8617         variable info for a method.
8618
8619         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8620         
8621 2009-01-30  Jb Evain  <jbevain@novell.com>
8622
8623         * pedump.c: reuse code from monodis to make sure pedump honors
8624         MONO_PATH, which is needed to verify net_2_1 assemblies.
8625
8626 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8627
8628         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8629         there is no line number info.
8630
8631 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8632
8633         Avoid some MonoType allocations
8634         * reflection.c (mono_reflection_initialize_generic_parameter):
8635         Reuse MonoType from param->pklass rather than allocating one.
8636         (mono_dynamic_image_free): Update to changes.
8637
8638 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8639
8640         Rearrange some code to improve consistency
8641         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8642         (mono_reflection_initialize_generic_parameter): ... here.
8643
8644 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8645
8646         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8647         with type constraints as an experiment.
8648
8649         * boehm-gc.c (on_gc_notification): Update mono_stats.
8650
8651 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8652
8653         Avoid some allocations
8654         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8655         pointer to tail array to avoid extra allocation.
8656         * metadata.c (free_generic_inst): Update to changes.
8657         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8658         on-stack struct.
8659
8660 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8661
8662         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8663         return TRUE if the two type objects are the same.
8664
8665 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8668         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8669         klass->min_align, since klass->min_align contains the managed alignment,
8670         while the native alignment can be different, like for longs on x86.
8671         Fixes #469135.
8672
8673         * class-internals.h (MonoMarshalType): Add a min_align field.
8674
8675 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8676
8677         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8678         the 1.0 format.
8679
8680 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8681
8682         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8683         some comments about the usage of the used_regs field.
8684
8685         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8686         Fixes #469217.
8687
8688 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8689
8690         * appdomain.c: return NULL instead of throwing FileNotFoundException
8691         when LoadAssembly() fails.
8692
8693 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8694
8695         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8696         image if the owner is NULL.  Fixes the AOT failures.
8697
8698 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8701         MonoGenericParam structure using memset so the image field is initialized
8702         as well.
8703
8704 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8705
8706         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8707         a plain store.
8708
8709 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8710
8711         * class.c (mono_class_setup_vtable_general): In the generic instance
8712         optimization, set method->slot for abstract virtual methods. Fixes part of
8713         #467834.
8714
8715 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8718         which signals that the unloading has started but all appdomain services must
8719         remain operational.
8720
8721         * appdomain.c (mono_domain_unload): The initial state for unloading now
8722         is unloading_start and we switch to unloading after the managed call to
8723         AppDomain::DomainUnload has finished.
8724
8725         The new unloading state has to be created because managed code in the
8726         DomainUnload event can depend on things like the threadpool still working.
8727         The domain must remain fully functional while the event executes.
8728
8729         This shown as an issue due to Process::WaitForExit, which waits for
8730         async reads of stdout and stderr to complete. Since those are processed
8731         in the threadpool the code deadlocks because the DomainUnload callback 
8732         waits for the async read finished event, which should have been set by a
8733         threadpool job but has been discarded due to the domain been in unload
8734         state.
8735
8736 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8737
8738         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8739         image must match.
8740
8741 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8742
8743         * reflection.c (resolve_object): For fields, inflate the class and
8744         then get the field in the inflated class.
8745
8746 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8747
8748         * object-internals.h (struct _MonoException): Added a comment
8749         explaining the new use of trace_ips.
8750
8751 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8752
8753         * generic-sharing.c (inflate_other_data): Inflate array methods
8754         correctly.
8755
8756         * loader.c, class-internals.h: Rename search_in_array_class() to
8757         mono_method_search_in_array_class() and make it non-static.
8758
8759 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8762         Hopefully fixes #458168.
8763
8764 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8765
8766         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8767         as it is performed elsewhere.
8768
8769         Code is contributed under MIT/X11 license
8770
8771 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8772
8773         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8774         requests queued.
8775         * object.c (mono_raise_exception): Increment the exceptions total
8776         counter when an exception is thrown.
8777         * class-internals.h: Add a location for storing the total number of
8778         asp.net requests served.
8779         * mono-perfcounters.c: Implement update support for asp.net counters
8780         from the class libraries. Implement read support for asp.net counters
8781         and exceptions total counter.
8782
8783 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8786         accessing klass->methods. Fixes #467385.
8787
8788 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8791         for byval arguments without an [Out] attribute. Fixes #467212.
8792
8793         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8794         Fix compilation under android.
8795         
8796         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8797         processed, scan them directly after they are copied, to achieve better locality
8798         and cache usage.
8799
8800         * socket-io.c: Applied patch from Koushik Dutta
8801         (koush@koushikdutta.com). Disable IPV6 when running under android.
8802
8803 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8804
8805         * icall.c (ves_icall_InternalExecute): Add write barriers.
8806
8807         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8808         the GC code.
8809
8810         * sgen-gc.c: Implement write barriers in IL code.
8811
8812 2009-01-17  Geoff Norton  <gnorton@novell.com>
8813
8814         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8815
8816 2009-01-17  Geoff Norton  <gnorton@novell.com>
8817
8818         * image.c: When unloading the image->references table, there can be gaps
8819         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8820         when unloading an appdomain.
8821
8822 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8825         speed up ptr-in-nursery checks.
8826
8827         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8828         threads_lock () to prevent deadlocks.
8829
8830         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8831         does not need to be scanned during minor collections, since writes to it
8832         must use write barriers.
8833
8834 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8835
8836         * metadata-verify.c: Add pe nt header verification.
8837         
8838 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * gc.c: Fix a few warnings when using SGEN.
8841
8842 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8843
8844         * metadata-verify.c: Add pe optional header verification.
8845
8846 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * sgen-gc.c: Add support for user defined marker functions, used by
8849         MonoGHashTable to avoid registering a GC root for every hash node.
8850
8851 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8852
8853         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8854         non-pinned roots into separate hashes to avoid having to traverse them
8855         in functions which are only interested in one kind.
8856
8857 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8858
8859         * metadata-verify.c: Add pe header machine field verification.
8860         
8861 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * metadata-verify.c: Add pe header size verification.
8864
8865 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8868         using the GC, they don't contain references.
8869
8870         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8871
8872 2009-01-13  Geoff Norton  <gnorton@novell.com>
8873
8874         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8875         AppDomains created on the native side can be cleaned up on the native side.
8876
8877 2009-01-13  Geoff Norton  <gnorton@novell.com>
8878
8879         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8880         as well as the managed api.
8881
8882 2009-01-13  Geoff Norton  <gnorton@novell.com>
8883
8884         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8885         with a MonoAppDomain initialized against it.
8886
8887 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8890         
8891         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8892
8893         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8894         into the wrapper caches. Fixes #465700.
8895
8896         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8897         method builder.
8898         (mono_mb_create_method): Set the clauses from the method builder.
8899
8900 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8901
8902         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8903         Patch from Makoto Kishimoto.
8904
8905 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8906
8907         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8908         encoding them as ROOT_DESC_COMPLEX.
8909         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8910
8911 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8914         no longer point to the nursery.
8915
8916         * sgen-gc.c: Add a few comments/FIXMEs.
8917         
8918         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8919
8920         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8921         initialization of the various _method variables thread safe. Fixes
8922         #465377.
8923
8924 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8925
8926         * domain.c, domain-internals.h: Remove the shared_generics_hash
8927         and its lookup functions.
8928
8929 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8930
8931         * socket-io.c:  Fixing the MSVC build. 
8932
8933         Code is contributed under MIT/X11 license.
8934
8935 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937         * metadata-verify.c: Add pe header watermark verification.
8938
8939 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * metadata-verify.c: Add lfanew verification.
8942
8943 2009-01-12  Jb Evain  <jbevain@novell.com>
8944
8945         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8946         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8947
8948 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8949
8950         * socket-io.c: Fix the build.
8951
8952         * environment.c: Fix an #ifdef.
8953
8954 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * threadpool.c (async_invoke_thread): Handle the wait function returning
8957         WAIT_IO_COMPLETION as well.
8958         (async_invoke_io_thread): Ditto.
8959
8960 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8961
8962         * threads.c: Fixing the Windows build.
8963
8964         Code is contributed under MIT/X11 license.
8965
8966 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8967  
8968         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8969         interrupt a wait.
8970         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8971         the thread to wait again.
8972
8973 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8974
8975         * metadata-verify.c: Initial skeleton of the metadata verifier.
8976
8977         * pedump.c: Add support for the metadata verifier.
8978
8979         * verify-internal.h: Export the whole assembly metadata verifier function.
8980
8981 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8982
8983         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8984
8985 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * Makefile.am: Upgrade dtrace-prelink.sh location.
8988
8989 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8990
8991         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8992         well. Otherwise the shutdown deadlock that happens on unix will can happen
8993         as well.
8994         If the main thread code finishes too fast it's possible that the finalizer
8995         thread won't have executed yet, won't record itself as the finalizer thread
8996         and the shutdown sequence will wait on it forever.
8997
8998 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9001         with MSVC.
9002
9003 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9004
9005         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9006         Robert Jordan for pointing this out.
9007
9008 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9009
9010         * icall.c
9011         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9012         ves_icall_System_IO_DriveInfo_GetDriveType.
9013
9014 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9015
9016         * icall.c: Wrap calls to mono_strtod in CriticalSection
9017         invocations when using eglib, to work around #464316.
9018
9019 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9020
9021         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9022         return value of GetCurrentDirectory to never access unitialized memory.
9023
9024 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9025
9026         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9027         return value of GetCurrentDirectory and expand the buffer if needed.
9028
9029         Fixes #459094.
9030
9031 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9032
9033         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9034           Adding a call to mono_init_com_types.
9035
9036         Code is contributed under MIT/X11 license.
9037
9038 2009-01-07  Geoff Norton  <gnorton@novell.com>
9039
9040         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9041         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9042         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9043         be the value of the ip buffer.
9044
9045 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9046
9047         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9048         interfaces_packed here.
9049
9050         Fixes part of #463294.
9051
9052 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9053
9054         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9055
9056         Fixes part of #463294.
9057
9058 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9059
9060         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9061         is a boxed complex as well.
9062
9063         Fixes part of #463294.
9064
9065 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9068         control if a methodspec should be created for the generic method definition from external assemblies.
9069         Caching of methodspec is done using the handleref hash table.
9070
9071         Fixes #462592.
9072
9073 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9074
9075         * loader.c (find_method): When searching the interfaces of a class
9076         check the transitive closure of implemented interfaces.
9077
9078         Fixes #463303.
9079
9080 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9081
9082         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9083         
9084 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9085
9086         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9087         interfaces calculation to fill_valuetype_array_derived_types.
9088
9089         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9090         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9091         for example.
9092
9093         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9094         interfaces for valuetypes if needed.    
9095
9096         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9097         for their basetype as well. Types are array expanded if rank is > 0.
9098
9099         Fixes #400716.
9100
9101 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9102
9103         * socket-io.h : Changing the signature of
9104           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9105           the blocking state.
9106
9107         * icall-def.h :  Changing the signature of
9108           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9109
9110         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9111           For Windows only.  Avoid blocking when calling accept by
9112           querying for a connection via select.  The loop also queries
9113           the thread state every 1000 micro seconds for the thread
9114           stop state.  This will avoid the process hanging on shutdown
9115           when using a TcpChannel that is never connected to.
9116
9117         Code is contributed under MIT/X11 license.
9118
9119 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9120
9121         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9122
9123 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * class.c (get_implicit_generic_array_interfaces): Extract common
9126         code to a helper function making it a lot easier on the eyes.
9127
9128 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9129
9130         * class.c (get_implicit_generic_array_interfaces): If the internal
9131         enumerator is an interface inflate System.Object instead of itself.
9132
9133         Fixes #461261.
9134
9135 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9136
9137         * object.c (mono_runtime_invoke_array): Don't assert with
9138         byref nullable types.
9139
9140         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9141         byref nullables we unbox the object and store it on the
9142         stack. 
9143         We can't use the boxed object since it is the T of Nullable<T>
9144         and the boxed representation of a nullable it's underlying type
9145         or null.
9146         We could cheat and create a boxed nullable and use the same
9147         machinery of other byref VTs but this feels like a hack and
9148         using the stack has the bonus of reducing heap pressure.
9149
9150         Fixes #461941.
9151
9152 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9155         return value.
9156
9157         Fixes #461867.
9158
9159 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9160
9161         * icall-def.h : Adding an internal call definition for 
9162           System.Environment.internalBroadcastSettingChange.
9163
9164         * icall.c : Adding a Windows only implementation to broadcast a 
9165           WM_SETTINGCHANGE when an environment variable has changed.
9166
9167         Code is contributed under MIT/X11 license.
9168
9169 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9170
9171         * class.c, class-internals.h: Made
9172         mono_class_has_parent_and_ignore_generics() non-static.
9173
9174 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9175
9176         * image.c: deal with the mmap failing when loading an image.
9177
9178 2008-12-17  Geoff Norton  <gnorton@novell.com>
9179
9180         * threadpool.c: Ensure that the io_queue_lock is initialized
9181         in all circumstances, as we always attempt to cleanup against it.
9182
9183 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9184
9185         * icall.c (ves_icall_System_Environment_get_Platform): For
9186         compatibility reasons for existing client code we will keep
9187         returning 4 for a while.   
9188
9189         For how long will depend on the documentation being updated, and
9190         for us to give client code a chance to be updated.
9191
9192         This reverts the original decison on #433108 since we did not
9193         catch roughly 33 instances of the broken code in our own source
9194         code base, we did not catch failures on the buildbots, and QA did
9195         not bring this as a problem.
9196
9197         Only today I found some customer's code breaking due to our own
9198         class libraries not being fully updated and tracked it down to
9199         this change.  I am reverting it because if we could not even get
9200         our story straight in our own code base, how can we hope that our
9201         end user code be fixed?
9202
9203         As of this morning, our Wiki page that documents how to detect
9204         Unix had not been fixed.    
9205
9206 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9207
9208         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9209
9210         * class.c (mono_class_get_fields): Handle loading errors.
9211
9212 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9213
9214         * metadata.c (mono_type_stack_size_internal): If SIZEOF_REGISTER > SIZEOF_VOID_P then use SIZEOF_REGISTER as the size and alignment of the stack slots.
9215         
9216 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9217
9218         * mono-perfcounters.c: avoid warning.
9219
9220 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9221
9222         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9223         make sure all interfaces have MonoClass::interface_id set.
9224
9225         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9226         method table is property set.
9227
9228 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * class.c: New function mono_class_setup_interface_id that setup
9231         MonoClass::interface_id if needed.
9232
9233         * class-internals.h: Export new function.
9234
9235 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9236
9237         * class.c: Add code to sanity check the vtable after setup_vtable_general
9238         has done it's work.
9239
9240 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9241
9242         * icall.c: make Assembly.GetExecutingAssembly work properly when
9243         reflection is used to invoke the method.
9244         Bug #321781 fixed.
9245
9246 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9247
9248         * metadata/generic-sharing.c: Look for constraints in all type
9249         arguments, not just the first one.
9250
9251 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9252
9253         * appdomain.c: return the correct CodeBase for an Assembly instance
9254         that was loaded from the shadow-copy directories.
9255         Bug #458190 fixed.
9256
9257 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9258
9259         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9260
9261         * sgen-gc.c (check_object): New debugging helper function.
9262
9263         * object.c: Fix calls to mono_value_copy_array ().
9264
9265 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9266
9267         * class.c (mono_class_setup_fields): If working on an inflated class
9268         first check if the generic definition did init with success.
9269
9270         Fixes #445361.
9271
9272 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9273
9274         pedump.c (main): Fix a warning.
9275
9276 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9277
9278         * object-internals.h : Adding a definition for 
9279           MonoReflectionComVisibleAttribute.
9280
9281         * marshal.c (cominterop_com_visible) :  Method added to check the 
9282           ComVisible attribute of a class.
9283
9284         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9285           cominterop_raise_hr_exception added to consolidate common code 
9286           to raise hr exceptions.
9287
9288         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9289           if a managed class should support IDispatch.
9290
9291         * marshal.c 
9292           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9293           Added additional checks for managed object when getting 
9294           an IDispatch interface.
9295
9296         Code is contributed under MIT/X11 license.
9297
9298 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9299
9300         pedump.c (main): Handle mono_get_method () returning NULL. 
9301
9302 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9303
9304         * marshal.h: Fix a warning.
9305
9306 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9307
9308         * marshal.c : Adding cominterop_release_all_rcws to release all
9309           runtime callable wrappers held by the runtime.
9310
9311         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9312           
9313         Code is contributed under MIT/X11 license.
9314
9315 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * metadata.c (mono_image_alloc_lock): New helper function.
9318         (mono_image_alloc0_lock): Ditto.
9319
9320         * metadata.c: Use the alloc_lock () helper functions for allocating
9321         memory from the image mempool.
9322
9323 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9324
9325         * class.c (mono_class_from_generic_parameter): Document it's
9326         locking behavior. Fix double checked locking here, we stored in
9327         param->pklass a partially initialized MonoClass and no membar was used.
9328
9329 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9330
9331         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9332         (3) functions are present in the C library use them to do the
9333         job. If they are absent, make sure that the sum of int_part and
9334         dec_part is rounded before returning. This is necessary due to the
9335         division of dec_part by the power of 10 before the final addition
9336         is performed - if the result is not rounded in some cases it will
9337         yield invalid results.
9338
9339 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9342         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9343         instruction instead of a pointer constant.
9344
9345 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * loader.c (mono_method_get_header): Do most of the work outside the
9348         loader lock, to avoid assembly load hook deadlocks.
9349
9350         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9351         (mono_metadata_parse_type_full): Ditto.
9352
9353 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9354
9355         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9356         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9357         funtions. Finally, use a lock to produce well ordered output.
9358
9359         The lock looks silly, as all calls to the corlib mempool should be guarded
9360         with the loader lock, but for some reason this fact doesn't help. 
9361
9362         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9363
9364 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9365
9366         * socket-io.c: 64 bit big-endian fixes.
9367
9368 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9369
9370         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9371         targets that require strict compatibility between the types.
9372
9373         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9374         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9375         Kill the strict argument and create a new one valuetype_must_be_boxed.
9376
9377         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9378         state that all valuetypes must be boxed.
9379
9380         Fixes #448560.
9381
9382 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9383
9384         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9385         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9386
9387         Contributed under MIT/X11 license.
9388
9389 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9390
9391         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9392         the inflate_generic_type machinery should handle it.
9393
9394         This avoids a crash when the field's flags is zero and it's type is
9395         a primitive.
9396         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9397         is zero and will return one of the cached built-in primitive types. Since
9398         those types live in read-only memory, the code that copies it crashes.  
9399
9400 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9401
9402         * object.c: Don't put function descriptors into generalized IMT
9403         thunks.
9404
9405 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9406
9407         * class.c: Enable generic code sharing on PPC64.
9408
9409 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9410
9411         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9412         from mini/mini.c.
9413
9414         * generic-sharing.c: Allocate the method template slists from the
9415         image mempool so it doesn't leak.
9416
9417 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9418
9419         * class.c (generic_array_methods): Release the linked list.
9420
9421 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9422
9423         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9424         invocation to g_utf16_to_utf8().
9425
9426 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9427
9428         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9429         arguments on big endian archs.
9430
9431 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9432
9433         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9434         the type name (test added in corlib).
9435
9436 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9437
9438         * pedump.c: initialize perf. counters. Fixes a segv.
9439
9440 2008-11-25  Martin Baulig  <martin@ximian.com>
9441
9442         * mono-debug-debugger.c
9443         (mono_debugger_runtime_invoke): Return the exception object if an
9444         exception was thrown.  Visual Studio displays the exception object
9445         in the locals window.
9446
9447 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9448
9449         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9450         ftnptr.
9451
9452 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9453
9454         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9455         MONO_TYPE_U are sizeof (gpointer), too.
9456
9457 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9458
9459         * marshal.c (mono_type_native_stack_size): Fixed size and
9460         alignment for reference types.
9461
9462 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9463
9464         * class.c (mono_class_generic_sharing_enabled): Disable generic
9465         code sharing for PPC64.
9466
9467 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9468
9469         * icall.c (mono_method_get_equivalent_method): Make sure
9470         method->klass->methods is inited before looping over it.
9471
9472 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9473
9474         * object.c: when calling ExecuteAssembly in a newly created domain,
9475         the configuration file and application base are already set up.
9476         Bug #446353 take 2 fixed.
9477
9478 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9479
9480         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9481         Fixes #444715. Fix a warning.
9482
9483 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9484
9485         * appdomain.c: write the full path of the assembly to the .ini file
9486         created when "shadow-copying"
9487         Bug #446353 fixed.
9488
9489 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9490
9491         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9492         if signature==FALSE.
9493
9494 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9495
9496         * marshal.h : Fix the cygwin build.
9497            marshal.c:12442: undefined reference to `_IID_IMarshal'
9498           
9499         Code is contributed under MIT/X11 license.
9500
9501 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9502
9503         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9504           free threaded marshaler when QueryInterface is called on a COM callable
9505           wrapper requesting the IMarshal interface.
9506           
9507         Code is contributed under MIT/X11 license.
9508
9509 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9510
9511         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9512
9513         * reflection.c (mono_type_get_object): Special case the very common
9514         void type.
9515
9516         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9517         hold typeof(void).
9518
9519 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9520
9521         * process.h : Adding method declaration for
9522           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9523           
9524         * process.c : Adding implementation for
9525           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9526           
9527         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9528           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9529
9530         Code is contributed under MIT/X11 license.
9531
9532 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * appdomain.c (unload_thread_main): Clean up threadpool by
9535         calling mono_thread_pool_remove_domain_jobs.
9536
9537         * domain-internals.h (struct _MonoDomain): Add new fields to
9538         help coordinate the cleanup of the threadpool.
9539
9540         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9541         that cleans up the threadpool of all jobs associated with an appdomain.
9542         It does that by cleaning up the queues and making sure all active
9543         threads are accounted.
9544
9545         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9546         unloaded or in the process of. Take this is such way that there is
9547         no race condition between another thread starting the unload and the
9548         current thread acknowledging it.
9549
9550         * threadpool.c (async_invoke_thread): Same.
9551
9552         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9553         firing the new thread.
9554
9555         * threadpool.c (start_tpthread): Same.
9556
9557         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9558
9559         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9560
9561 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9562
9563         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9564         Add support for DuplicateHandle.
9565         
9566         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9567         Add support for DuplicateHandle.
9568         
9569         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9570         Add support for DuplicateHandle.
9571
9572         Code is contributed under MIT/X11 license.
9573
9574 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9575
9576         * class-internals.h: Make min_align into a whole byte.
9577
9578         * class.c: Set min_align for SIMD types to 16.
9579
9580 2008-11-05  Geoff Norton  <gnorton@novell.com>
9581
9582         * attach.c: Default the attacher to enabled for all cases including
9583         embedded.
9584
9585 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9586
9587         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9588         change r117650.
9589
9590 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9591
9592         * monitor.c, monitor.h: New function for querying offsets of
9593         members of MonoThreadsSync.
9594
9595 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9596
9597         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9598         to speed up this function and to avoid the boundless memory growth caused by
9599         the signature_dup () calls.
9600
9601 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9602
9603         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9604         wrapper.
9605
9606         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9607         by 1 bit.
9608
9609         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9610
9611 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9612
9613         * appdomain.c:
9614         * domain-internals.h: made mono_set_private_bin_path_from_config()
9615         "internal".
9616         * object.c: call the above function after setting the configuration
9617         file path for the root domain.
9618         Fixes bug #314478.
9619
9620 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9621
9622         * assembly.c: when the assembly is loaded from an absolute path, end
9623         basedir with a directory separator.
9624         Bug #440781 fixed.
9625
9626 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9627
9628         * monitor.c (mono_monitor_get_fast_enter_method): If
9629         CompareExchange is not available, don't create the fastpath
9630         instead of asserting.  (The method is missing in the 1.1 profile.)
9631
9632 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9633
9634         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9635
9636         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9637         Monitor.Exit IL fastpaths.
9638
9639 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9640
9641         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9642
9643 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9644
9645         * class.c (mono_class_create_from_typedef): Added Vector2l.
9646
9647 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9648
9649         * class.c (mono_class_create_from_typedef): Added Vector2d.
9650
9651 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9652
9653         * appdomain.c: translate \ into / for cache_path.
9654         * domain-internals.h: new mono_is_shadow_copy_enabled().
9655         * icall.c: (fill_reflection_assembly_name) do the same path
9656         manipulations that get_code_base does.
9657         (get_code_base) use mono_is_shadow_copy_enabled.
9658
9659 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9660
9661         * appdomain.c: shadow-copied assemblies go to CachePath +
9662         ApplicationName when both are set. DynamicBase has nothing to do with
9663         shadow copies.
9664         Bug #406877 fixed.
9665
9666 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9669         STANDALONESIG table.
9670
9671         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9672         standalone signatures.
9673
9674         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9675         comparison code: instead of comparing the signatures using a custom
9676         equals function, transform them to a common signature and compare that. This
9677         works better with AOT.
9678
9679 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9680
9681         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9682
9683         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9684         call for generic instances.
9685         (mono_class_setup_properties): Call setup_properties () before accessing
9686         gklass->properties.
9687
9688         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9689         over the virtual methods of a class using metadata if possible, avoiding the
9690         creation of MonoMethod's for non-virtual methods.
9691         
9692         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9693         get_virtual_methods () to iterate over the virtual methods of classes.
9694
9695 2008-10-25  Martin Baulig  <martin@ximian.com>
9696
9697         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9698
9699 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9700
9701         * class.c (mono_class_create_from_typedef): Added Vector4i.
9702
9703 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9704
9705         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9706         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9707         special-casing applies to eliminate the call completely.
9708
9709 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9710
9711         * class.c (mono_class_create_from_typedef): Added Vector8s.
9712
9713 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9714
9715         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9716
9717 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9718
9719         * icall.c: get rid of annoying warning.
9720
9721 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9722
9723         * threadpool.c: in 1.x, if you change the background status of the
9724         threadpool thread, it's not reset.
9725         Remove unnecessary calls to SetState.
9726
9727 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9728
9729         * threadpool.c: asynchronously create a set of idle threads upon first
9730         use of the threadpool. SetMinThreads will now start the appropriate
9731         number of idle threads if they are not already running. The default is
9732         1 threadpool thread per CPU. Increased the maximum number of threads
9733         per CPU to 10.
9734
9735 2008-10-22  Martin Baulig  <martin@ximian.com>
9736
9737         Revert r116521 from Zoltan, it breaks the debugger:
9738
9739         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9740         over the virtual methods of a class using metadata if possible, avoiding the
9741         creation of MonoMethod's for non-virtual methods.
9742         
9743         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9744         get_virtual_methods () to iterate over the virtual methods of classes.
9745
9746 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9747
9748         * threads.c: when creating a threadpool thread, set its state to
9749         'background'.
9750         * threadpool.c: reset the background state of a threadpool thread
9751         after finishing each work item
9752         Bug #437888 fixed.
9753
9754 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9755
9756         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9757         
9758         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9759         generic instances which works by inflating the methods in the container
9760         class's vtable.
9761
9762         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9763         variant which doesn't make a copy if no inflation was done.
9764         (mono_class_setup_fields): Use it.
9765
9766         * metadata.c (mono_metadata_get_shared_type): New helper function to
9767         return a shared instance of a given MonoType.
9768
9769         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9770         a copy of most non-generic types.
9771
9772 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9773
9774         * threadpool.c: remove one more GetSystemInfo () call.
9775
9776 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9777
9778         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9779         use the code in mono-proclib.h to get processor information.
9780
9781 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9782
9783         * appdomain.c: fixed the logic that determines whether assemblies in a
9784         directory are "shadow-copied" or not. Bug #433483 fixed.
9785
9786 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9789         warning.
9790
9791 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9792
9793         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9794         returning a vtype.
9795
9796         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9797         reflection.c: Use mono_field_get_name () for accessing a field's name.
9798
9799         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9800         class.c
9801
9802         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9803         field.
9804
9805         * loader.c (find_method_in_class): Reenable the metadata optimization by
9806         not using it for generic instances.
9807
9808         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9809         data/def_type fields from MonoClassField into a separate structure.
9810         (struct MonoClassField): Remove data/def_type fields.
9811         (struct _MonoClass): Add a 'field_def_values' array to store the default
9812         values/RVA for fields.
9813
9814         * class.c reflection.c: Update after the changes.
9815         
9816         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9817         for accessing field->data.
9818
9819         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9820
9821         * loader.c (find_method_in_class): Revert the last change for now as
9822         it breaks Mono.C5 unit tests.
9823
9824         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9825         'field_generic_types' and 'field_objects' which contain the information
9826         previously stored in MonoInflatedField.
9827         (MonoInflatedField): Delete.
9828         (struct _MonoClassField): Delete 'generic_info' field.
9829
9830         * reflection.c: Store the information which was previously in 
9831         field->generic_info in MonoDynamicGenericClass instead.
9832
9833         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9834         MonoClassField changes.
9835
9836 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9837
9838         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9839         store the value inside the data array of the MonoMethodWrapper.
9840         This saves memory, is faster and fixes the lifetime issues (methods
9841         were never removed from the hash previously). May also fix bug#436996.
9842
9843 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9844
9845         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9846         generic instances, compute the type from the generic definition instead of
9847         looking in field->generic_info.
9848
9849         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9850         for inflated fields, the only user was get_fieldref_token () which no
9851         longer needs it.
9852
9853         * class.c (mono_class_init): Revert the last change as it seems to cause
9854         crashes.
9855
9856         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9857         bytes on 64 bit platforms.
9858
9859         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9860         
9861         * object.c (mono_class_create_runtime_vtable): Don't initalize
9862         field->data/field->def_type here, it is done lazily by 
9863         mono_class_get_field_default_value ().
9864
9865         * icall.c (ves_icall_get_enum_info): Call 
9866         mono_class_get_field_default_value () instead of directly accessing
9867         field->data and field->def_type.
9868
9869         * object.c (get_default_field_value): Ditto.
9870
9871         * class.c (mono_field_get_data): Ditto.
9872         
9873         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9874         call for generic instances.
9875
9876         * loader.c (find_method_in_class): If klass != from_class, then inflate
9877         the method with the context of from_class, since the caller assumes this.
9878
9879 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9880
9881         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9882         for accessing method->slot.
9883
9884 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9885
9886         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9887
9888 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * class.c (mono_method_get_vtable_index): Use
9891         mono_method_get_vtable_slot () for accessing method->slot.
9892
9893         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9894         accessing klass->methods.
9895
9896         * class.c (mono_method_get_vtable_slot): New helper function.
9897         (mono_class_get_vtable_entry): Ditto.
9898         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9899         accessing method->slot.
9900
9901         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9902         method to get_inflated_method ().
9903
9904         * class.c (mono_class_get_inflated_method): New helper method to obtain
9905         a method of an inflated class without calling setup_methods ().
9906         (mono_class_get_cctor): Use get_inflated_method.
9907
9908         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9909         
9910         * marshal.c image.c: Lazily create all the marshal caches.
9911
9912         * image.c (mono_image_init): Move initialization of runtime_invoke
9913         caches to marshal.c.
9914
9915         * marshal.c (get_cache): New helper function to lazily initialize a 
9916         wrapper cache.
9917         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9918
9919         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9920
9921 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9922
9923         * loader.c: fixed check for interface type.
9924
9925 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9926
9927         * appdomain.c: check for NULL setup before it's referenced.
9928
9929 p
9930 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9931
9932         * class.c: remove the unused old vtable setup code.
9933
9934 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9935
9936         * class.c: don't depend on interface order in
9937         setup_interface_offsets (bug #435777).
9938         * reflection.c: sort the InterfaceImpl table (patch from
9939         Jb Evain  <jbevain@novell.com>).
9940
9941 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9942
9943         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9944         the low level assemblies lock.
9945
9946 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9947
9948         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9949         object.c, reflection.c, socket-io.c, threads.c: introduced
9950         mono_framework_version () to return the major framewrok version,
9951         changed the code that was using more complex patterns to use it.
9952         Return the correct value for PlatformID for OSX.
9953
9954 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9955
9956         * icall-def.h, process.h, process.c: added an icall to get info about
9957         processes using mono-proclib.
9958
9959 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9960
9961         * mono-perfcounters.c: use the mono-proclib functions to
9962         access process information.
9963
9964 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9965
9966         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9967         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9968         reflection.c: remove rawbuffer usage: mmap support is more sanely
9969         provided by utils/mono-mmap.
9970
9971 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9972
9973         * gc.c: use posix semaphores when possible so that
9974         mono_gc_finalize_notify() is signal safe.
9975
9976 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9979         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9980         be #ifdef-ed out, the linker will remove the rest.
9981
9982         * marshal.c: Implement DISABLE_COM.
9983
9984         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9985
9986 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9987
9988         * locales.c (string_invariant_compare_char): Optimization: do not
9989         call g_unichar_type unless we actually need the information.
9990
9991 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9992
9993         * object.c, class-internals.h: Also create remoting trampolines
9994         for generic methods.  Pass the domain to the remoting trampoline
9995         creation function, too.
9996
9997 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9998
9999         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10000
10001 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10002
10003         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10004         Vector4ui.
10005
10006 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10007
10008         * assembly.c:
10009         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10010
10011 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10012
10013         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10014         for the least possible amount of time (extending the fix in r113458).
10015
10016 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10017
10018         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10019
10020 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10021
10022         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10023         as possible simd intrinsic types.
10024         Optimized the test to check for the common prefix first.
10025
10026 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10027
10028         * class.c: back out part of a broken optimization committed on
10029         May 23th (bug #433908).
10030
10031 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10032
10033         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10034         Win32.  Should fix #432388 for most cases until we have the new
10035         profiler on Win32.
10036
10037 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10038
10039         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10040         instead of using inst->id so the hash is stable for AOT.
10041
10042 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10043
10044         * appdomain.c:
10045         * icall.c: create a .ini file for shadow-copied assemblies that
10046         contains the location of the original assembly. Use this to return the
10047         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10048         Also fix the number of '/' for windows when returning the CodeBase.
10049         Fixes bug #430920.
10050
10051 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10052
10053         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10054
10055         Code is contributed under MIT/X11 license.
10056
10057 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10058
10059         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10060           if if the class vtable needs initialized.
10061
10062         Code is contributed under MIT/X11 license.
10063
10064 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10065
10066         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10067           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10068           STRING->BSTR, and CLASS->INTERFACE.
10069
10070         Code is contributed under MIT/X11 license.
10071
10072 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10073
10074         * sysmath.h: changed the declaration of the
10075         ves_icall_System_Math_Round2 icall by adding an extra
10076         away_from_zero parameter.
10077
10078         * sysmath.c (ves_icall_System_Math_Round2): added support for
10079         away from zero rounding. The icall now takes an extra boolean
10080         parameter to signal that away from zero operation is requested.
10081
10082 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10085         the delegate klass so it can work with full-aot.
10086         (mono_marshal_get_delegate_end_invoke): Ditto.
10087         (mono_marshal_get_delegate_invoke): Ditto.
10088
10089 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10090
10091         * gc.c, attach.h, attach.c: remove a bad pattern:
10092         add_finalizer_callback () is not implemented correctly, it can't
10093         without adding more overhead to the finalizer loop and it's not
10094         even needed, since we know exactly what we need to call, so there is
10095         no need to do so through an expensive function pointer.
10096
10097 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10098
10099         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10100         for the no-gc case.
10101         * attach.c (mono_attach_init): Remove the #ifdef.
10102
10103 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10104
10105         * attach.c (mono_attach_init): Don't use
10106         mono_gc_add_finalizer_thread_callback when compiling without GC.
10107         Fixes #432306.
10108         
10109         Code is contributed under MIT/X11 license.
10110
10111 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * class.c (mono_class_create_from_typedef): Remove the 
10114         #ifndef DISABLE_SIMD stuff.
10115
10116 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10117
10118         * class-internals.h (MonoClass): Added simd_type bit field.
10119
10120         * class.c (mono_class_create_from_typedef): Check if type is a simd
10121         intrinsic.
10122
10123 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10124
10125         * object.c (mono_method_add_generic_virtual_invocation): Only add
10126         instantiations to the thunk whose count is at least as large as
10127         the threshold.
10128
10129 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10130
10131         * icall.c: changed the Type of the exception thrown when trying to
10132         invoke a constructor on an abstract class. Part of the fix for bug
10133         #324185.
10134
10135 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10136
10137         * class.c, class-internals.h (mono_method_get_vtable_index): New
10138         function which returns the index into the vtable and properly
10139         handles inflated virtual generic methods.
10140
10141 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10142
10143         * object.c, domain.c, object-internals.h, domain-internals.h:
10144         Generalize IMT thunk machinery to also handle thunks for virtual
10145         generic method invokes.  When a virtual generic method is invoked
10146         more than a number of times we insert it into the thunk so that it
10147         can be called without lookup in unmanaged code.
10148
10149         * generic-sharing.c, class-internals.h: Fetching a
10150         MonoGenericInst* for a method from an (M)RGCTX.
10151
10152 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10155         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10156         marshalling. Fixes #431304.
10157
10158 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10159
10160         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10161           handle when ref is specified without In or Out.
10162
10163         Code is contributed under MIT/X11 license.
10164
10165 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10166
10167         * loader.c (mono_get_method_constrained): Don't expand method with
10168         the class's context, because it's already a method of that class.
10169
10170 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10171
10172         * attach.c : should be correct build fix.
10173
10174 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10175
10176         * attach.c: Fix the previous change.
10177
10178 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10179
10180         * attach.c : quick w32 build fix.
10181
10182 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10183
10184         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10185         crashes MonoDevelop: #430455.
10186
10187 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10190         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10191
10192         * domain.c: Remove initialization/cleanup of the removed fields.
10193
10194 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10195
10196         * class.c (mono_class_generic_sharing_enabled): Enable generic
10197         code sharing for PPC.
10198
10199 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10200
10201         * attach.c : Fixing the Windows builds.
10202
10203         Code is contributed under MIT/X11 license.
10204
10205 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10208         the default generic sharing mode to 'all'.
10209
10210 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10211
10212         * generic-sharing.c, class-internals.h: New function for checking
10213         whether a method needs a static RGCTX invoke wrapper.  A few
10214         funtions moved from mini/generic-sharing.c.
10215
10216         * icall.c: New function used.
10217
10218 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10219
10220         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10221         Static RGCTX invoke wrapping applies to value type methods, too.
10222
10223         * class.c (mono_class_setup_vtable_general): In generic-shared
10224         value types, wrap methods with a static RGCTX invoke wrapper.
10225
10226 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10227
10228         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10229         osx build.
10230
10231 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10232
10233         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10234         register a callback which is called when the finalizer thread is woken
10235         up.
10236         (finalizer_thread): Call the callback if it exists.
10237
10238         * attach.h attach.c: New files, implementing the attach mechanism.
10239
10240         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10241         
10242         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10243         by the previous change.
10244
10245 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10246
10247         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10248         loader.c, marshal.c, metadata-internals.h, metadata.c,
10249         method-builder.c, object.c, reflection.c: introduced specific functions
10250         to allocate from the domain and image mempools and cleaned up most of
10251         the code to use them (still missing a few in reflection.c).
10252         Keep the loader bytes counter updated.
10253
10254 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10255
10256         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10257         loader-related counters.
10258
10259 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10260
10261         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10262         added more MS-compatible counters.
10263
10264 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10265
10266         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10267         class->blittable. Fixes #428217.
10268
10269 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * reflection.c (mono_image_get_field_on_inst_token): Call 
10272         field_encode_signature () since that handles custom modifiers too.
10273         Fixes #424663.
10274
10275 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10276
10277         * reflection.c (add_custom_modifiers): New helper function to merge custom
10278         modifiers stored in objects to a MonoType.
10279         (fieldref_encode_signature): Encode custom modifiers.
10280         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10281         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10282
10283 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10284
10285         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10286         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10287         64-bit IL only images because imports are not resolved for IL only images.
10288         Special thanks to Bill Holmes for finding this bug and testing the patch.
10289         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10290
10291         Contributed under MIT/X11 license.
10292
10293 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10294
10295         * mono-config.c (dllmap_start): Add support for the bits keyword
10296         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10297
10298 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10299
10300         * reflection.c (inflate_mono_method): When the class the method is
10301         to be inflated for is itself not inflated, just return the method.
10302
10303 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10304
10305         * mono-perfcounters.c: use more user friendly process instance names.
10306
10307 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10308
10309         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10310           handle "[in] ref" and "[in][out] ref" cases.
10311
10312         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10313           to mono_mb_create_method.  This was causing problems calling native to
10314           managed passing Variants by value.
10315
10316         Code is contributed under MIT/X11 license.
10317
10318 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10321         before accessing the friend_assembly_names field.
10322
10323         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10324         times.
10325         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10326         called lazily when it is needed.
10327
10328         * metadata-internals.h (struct _MonoAssembly): Add 
10329         'friend_assembly_names_inited' flag.
10330
10331 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10332
10333         * mono-perfcounters-def.h: fix the types of a few counters.
10334         * mono-perfcounters.c: implemented the instance names getter
10335         and a few bugfixes.
10336
10337 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10338
10339         * culture-info-table.h : regenerated.
10340
10341 2008-09-17  Robert Jordan  <robertj@gmx.net>
10342
10343         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10344         context bound objects. Fixes #415577.
10345
10346         Code is contributed under MIT/X11 license.
10347
10348 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10349
10350         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10351         implementation (bug #423582).
10352
10353 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10356         is not set. Fixes #426309.
10357
10358 2008-09-16  Jb Evain  <jbevain@novell.com>
10359
10360         * class.c (mono_class_from_name): fix the exported type look up
10361         when the type is defined in a referenced assembly.
10362
10363 2008-09-16  Jb Evain  <jbevain@novell.com>
10364
10365         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10366         increment the next index counter on each iteration to make that work
10367         for more than one type forwarder. Unmanaged part to fix #422929.
10368
10369 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10370
10371         * object-internals.h: enum ComInterfaceType in
10372         MonoInterfaceTypeAttribute is guint32, not guint16.
10373
10374 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10375
10376         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10377         writing code.
10378
10379 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10380
10381         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10382         not gboolean.
10383
10384 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10385
10386         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10387         Endianness fixes for MonoSymbolFileOffsetTable.
10388
10389 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10390
10391         * process.c (complete_path) : Removing quotes from the 
10392           input path.  The glib file routines do not handle file paths
10393           that have quotes around them.
10394
10395         Code is contributed under MIT/X11 license.
10396
10397 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10398
10399         * socket-io.h : Adding a comment to provide locations where 
10400           changes to MonoSocketAsyncResult need to be synced.
10401
10402         Code is contributed under MIT/X11 license.
10403
10404 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10407         parameters as well. Fixes #425001.
10408
10409 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10410
10411         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10412         windows build.
10413
10414 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10415
10416         * console-io.c: Add support for tracking the window size if it
10417         changes.
10418
10419         The setup is very simple: the TtySetup function will now return a
10420         pointer to a location in memory that tracks the current console
10421         size.  The managed code checks its current value every time its
10422         queried against the last value set, and updates accordingly.
10423
10424         With this setup we can work with multiple consoles, and we do not
10425         require to poke into managed code from a signal handler.
10426
10427         Additionally, the environment for COLUMNS and LINES is now handled
10428         in unmanaged code.
10429
10430         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10431
10432 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10433
10434         * marshal.c (mono_type_native_stack_size): Treat
10435         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10436
10437 2008-09-04  Jb Evain  <jbevain@novell.com>
10438
10439         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10440         to nullables.
10441
10442 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10443
10444         * verify.c (verify_type_compatibility_full): Revert change
10445         to allow converting a native int to unmanaged pointer be verifiable
10446         under non-strict mode.
10447         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10448
10449         * verify.c: Added some TODOs.
10450
10451 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10452
10453         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10454           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10455           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10456
10457         Code is contributed under MIT/X11 license.
10458
10459 2008-09-02  Jb Evain  <jbevain@novell.com>
10460
10461         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10462
10463 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10464
10465         reflection.c (typebuilder_setup_fields): Handle classes with
10466         explicit size.
10467
10468 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10469
10470         class.c (mono_class_setup_events): Add memory barrier due to
10471         double checked locking.
10472         
10473         class.c (mono_class_setup_properties): Same.
10474
10475 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * class.c (mono_class_is_assignable_from): Fix the build.
10478         
10479         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10480         before accessing klass->interface_bitmap. Fixes #421744.
10481
10482 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10485         the runtime into no-exec mode, useful when running the AOT compiler.
10486
10487         * appdomain.c gc.c object.c: Avoid executing managed code when running
10488         in no-exec mode.
10489         
10490         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10491
10492         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10493         special case when the mono_assembly_loaded () returns NULL because the 
10494         search hook is not installed.
10495
10496 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10499         crashes in bstr marshalling on linux.
10500
10501 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10502
10503         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10504         with more than one parameter.
10505
10506 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10507
10508         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10509         start/stop flow control as well when turning off ICANON (allows
10510         C-s and C-q to be read by Console.ReadKey).
10511
10512 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * class.c (mono_class_init): Move the initialization of nested classes
10515         into mono_class_get_nested_types (). Fixes #418433.
10516
10517         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10518         flag.
10519
10520         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10521         iterating tough the nested classes of a class.
10522
10523 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10524
10525         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10526         on arm.
10527
10528 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10529
10530         * console-io.c (sigcont_handler): Support signal chaining for
10531         SIGCONT.
10532
10533         (console_set_signal_handlers): Use best practices with sigaction,
10534         clear the structure before using it. 
10535
10536 2008-08-22  Robert Jordan  <robertj@gmx.net>
10537
10538         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10539         Fix the Windows build.
10540
10541 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * class.c (mono_class_generic_sharing_enabled): Make the default
10544         sharing mode 'corlib'.
10545
10546 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * console-io.c (console_set_signal_handlers): Fix a warning.
10549
10550         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10551         method normally, the JIT will take care of avoiding recursion.
10552
10553 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10554
10555         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10556
10557         Code is contributed under MIT/X11 license.
10558
10559 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10560
10561         * console-io.c (sigcont_handler): We need to restore the entire
10562         termios state, not only the original settings, as things like echo
10563         can be controlled after this (Booish exposes this issue with its
10564         own ReadLine implementation).
10565
10566         Additionally, we need to set the terminal back into keypad_xmit
10567         mode.
10568         
10569         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10570         string as a paramter as well.   Otherwise we get different
10571         keyboard sequences.
10572
10573 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10574
10575         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10576         delegates with byref out parameter passing. Fixes #351520.
10577
10578         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10579         a generic context.
10580         (mono_type_get_desc): Add the type arguments for GENERICINST.
10581         (mono_method_full_name): Stringify the class name using mono_type_full_name
10582         so it picks up generic arguments.
10583
10584 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10585
10586         * console-io.c: Removed debug output.
10587
10588 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10589
10590         reflection.c (mono_reflection_create_runtime_class): Alloc
10591         the nested classes linked list using the dynamic image mempool.
10592         Fixes leak in corlib compilation.
10593
10594 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10595
10596         * console-io.c: Fix incredibly annoying behavior on the console
10597         after resuming execution after control-z.   This affected every
10598         console application.
10599
10600 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10601
10602         * mempool-internals.h: Header for mono private mempool functions. The first
10603         two function are for allocating glib linked lists using pools.
10604
10605         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10606
10607         * Makefile.am: Added mempool-internals.h.
10608
10609 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10612         (mono_domain_free): Ditto.
10613
10614         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10615         be used by the JIT to store its domain-specific information, instead of putting
10616         it directly into MonoDomain.
10617
10618         * domain.c (mono_install_create_domain_hook): New helper function to install
10619         a hook which initializes domain->runtime_info.
10620
10621         * domain.c (mono_install_free_domain_hook): Ditto.
10622         
10623 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10624
10625         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10626         asserting if the ares parameter is null.
10627
10628         * mono-perfcounters.c: Fix warnings.
10629
10630         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10631         is not needed, don't check for interruptions either.
10632         (mono_marshal_get_delegate_end_invoke): Ditto.
10633
10634 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10635
10636         * mono-perfcounters.c (predef_readonly_counter): added support for
10637         reading the ASP.NET Requests Queued counter from another process.
10638
10639 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10640
10641         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10642         MonoImage to simplify the AOT code.
10643
10644 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10647         marshalling. Fixes #416078.
10648
10649 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10650         
10651         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10652         it is set, looking up the icall address is deferred to the JIT, since 
10653         in embedded scenarios, the icall might not be registered in the runtime
10654         doing the AOT compilation. Backported from the 2.0 branch.
10655
10656 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10657
10658         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10659         Fixes #415621.
10660
10661 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10662
10663         * Makefile.am: added support for cross-compilation.
10664
10665 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10666
10667         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10668
10669 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10670
10671         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10672
10673 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10674
10675         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10676         mono-perfcounters.c: performance counters implementation.
10677
10678 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10681         to gpointer, letting the AOT code decide what to store in it.
10682
10683 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10684
10685         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10686           mono_class_setup_methods if the methods are not initialized.
10687
10688         Code is contributed under MIT/X11 license.
10689
10690 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10691
10692         * verify.c: Remove some debug code I commited by accident.
10693
10694         * verify.c (mono_method_is_valid_in_context): Change the return value
10695         to make possible to distinguish between invalid and unverifiable.
10696
10697         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10698         methods.
10699
10700 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10701
10702         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10703         constraints. Fixes regression in gtest-253.
10704
10705 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10706
10707         * verify.c (mono_verifier_verify_class): Don't allow generic types
10708         with explicit layout.
10709
10710         * verify.c (mono_method_verify): Check locals and argument types.
10711
10712 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10713
10714         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10715         wait if the thread is in StopRequested state.
10716
10717         * class.c (mono_class_from_name): Refactor the module searching code into
10718         a separate function so it can be reused in the AOT case too.
10719
10720 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10721
10722         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10723         Check both the type and it's generic type definition for loader errors.
10724         
10725         * verify.c (mono_method_is_valid_in_context): Don't generate another
10726         error when a type errors occur, this leads to the wrong exception been
10727         thrown.
10728
10729 2008-07-28  Dick Porter  <dick@ximian.com>
10730
10731         * icall-def.h
10732         * process.c
10733         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10734         New internal calls to duplicate and close a process handle.
10735
10736 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10737
10738         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10739
10740 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10741
10742         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10743
10744 2008-07-27  Robert Jordan  <robertj@gmx.net>
10745
10746         * class.c (mono_class_init): Don't compute class.has_finalize for
10747         valuetypes. Fixes #412477.
10748
10749 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10750
10751         * verify.c: Implement constraint equivalence checking.
10752         This is required when a generic parameter is used as
10753         argument to a constrained one.
10754
10755         Fixes #410637.
10756
10757 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10758
10759         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10760
10761         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10762
10763         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10764         synch with managed object layout.
10765
10766 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10767
10768         * verify.c (do_branch_op): Handle valuetypes and generic
10769         arguments properly.
10770
10771         * verify.c (do_cmp_op): Same.
10772
10773         Fixes #410383.
10774
10775 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10776
10777         * generic-sharing.c: Fix memory leaks.
10778
10779         * class.c, class-internals.h: Make
10780         mono_class_inflate_generic_type_with_mempool() non-static.
10781
10782 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10783
10784         * pedump.c (dump_verify_info): Dump full class name.
10785
10786 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10787
10788         * generic-sharing.c: Removed some old code that didn't do anything.
10789
10790 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10791         * profiler.c: Added runtime_initialized_event,
10792         mono_profiler_install_runtime_initialized and
10793         mono_profiler_runtime_initialized. This new hook tells the profiler
10794         when the runtime is sufficiently initialized to be able to call
10795         mono_thread_attach on the root appdomain.
10796         * profiler.h, profiler-private.h: Likewise.
10797
10798 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10799
10800         * verify.c (do_cast): Do boxing for generic arguments as well.
10801
10802         * class.c (is_nesting_type): Drop generic instantiations before
10803         checking for nesting.
10804
10805         * class.c (can_access_instantiation): Allow access to generic
10806         arguments.
10807
10808 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10809
10810         * verify.c (verify_class_for_overlapping_reference_fields):
10811         On some cases, the field size might be zero, guard against that.
10812         Fix the explicit layout check to work as expected.
10813
10814 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10817         mono_thread_resume () during shutdown, since the thread we want to abort
10818         might be suspended.
10819
10820 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10823         warning.
10824
10825         * debug-mono-symfile.c: Fix a warning.
10826
10827         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10828
10829         * object.c (mono_class_vtable): Check if exception_type is set, and return
10830         NULL as defined by the function comments.
10831
10832 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10833
10834         * mempool.c: Use malloc for every single mempool allocation if the
10835         configure option is set.  This makes it easier to track mempool
10836         allocations with tools like Valgrind.
10837
10838 2008-07-22  Jb Evain  <jbevain@novell.com>
10839
10840         * reflection.c (create_dynamic_mono_image): emit the same
10841         metadata version that SL2 does when creating a SL2 image.
10842
10843 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10844
10845         * icall-def.h:
10846         * icall.c: New icall System.Enum:get_hashcode. This function
10847         avoids the overhead of boxing the enum to the underlying type.
10848
10849 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10850
10851         * reflection.c (mono_method_get_object): Don't let static RGCTX
10852         invoke wrappers get into MonoReflectionMethods.
10853
10854 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10855
10856         * object-internals.h:
10857         * object.c: New mono_runtime_class_init_full function
10858         that makes throwing the exception optinal.
10859
10860         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10861         for the case where the exception object is supplied.
10862
10863 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10864
10865         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10866         old ld versions.
10867
10868         Contributed under MIT/X11 license.
10869
10870 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10871
10872         * string-icalls.c (ves_icall_System_String_InternalSplit):
10873         Optimize array allocation by caching the MonoClass of the
10874         array type.
10875
10876         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10877
10878         * reflection.c (mono_param_get_objects): Same.
10879
10880 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10881
10882         * icall-def.h:
10883         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10884         It inflates the given type using the class context.
10885
10886 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10887
10888         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10889         the vtable if it already exists.
10890
10891         * object-internals.h: Add mono_class_try_get_vtable as part of the
10892         internal API.
10893
10894         * reflection.c (mono_type_get_object): Use the MonoObject from the
10895         vtable when possible. Reduces locking contention on reflection heavy
10896         code.
10897
10898 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10899
10900         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10901         g_bit_nth_msf () since that macro is not implemented in eglib.
10902
10903 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10906         on platforms which do not support it.
10907
10908 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10909
10910         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10911
10912 2008-07-11  Martin Baulig  <martin@ximian.com>
10913
10914         * mono-debug-debugger.h
10915         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10916
10917         * mono-debug-debugger.c
10918         (_mono_debugger_interruption_request): New global volatile variable.
10919         (mono_debugger_check_interruption): New public function.
10920
10921         * threads.c
10922         (mono_thread_current_check_pending_interrupt): Call
10923         mono_debugger_check_interruption().
10924         (mono_thread_interruption_checkpoint_request): Likewise.
10925
10926 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10927
10928         * verify.c: Add more type checks for loaded types. Verify the result
10929         handle from ldtoken.
10930
10931 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10932
10933         * loader.c (field_from_memberref): Don't crash if the field
10934         wasn't found.
10935
10936 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10937
10938         * verify.c: Verify if type and method instantiations
10939         don't have invalid VAR or MVAR arguments.
10940
10941 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10942
10943         * verify.c: Fix double free of function pointer list.
10944
10945 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10946
10947         * object.c (mono_string_to_utf8): Comment the new code as it
10948         breaks under eglib.
10949
10950 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10951
10952         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10953
10954 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10955
10956         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10957           is not throw too many times.
10958
10959         Code is contributed under MIT/X11 license.
10960
10961 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10964         debugging is turned off.
10965
10966 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10967
10968         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10969
10970 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10971
10972         * class-internals.h, class.c: Added new generic sharing option:
10973         Share only stuff in System.Collections.Generic, which is now the
10974         default.
10975
10976 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10977
10978         * generic-sharing.c, class-internals.h: New function for getting a
10979         generic method in a generic class given the corresponding method
10980         for a different instantiation of the class.  Partly refactored
10981         from mini-trampolines.c.
10982
10983         * class.c: Make sure generic methods have a class_inst if they are
10984         part of a generic class.
10985
10986         * metadata.c (mono_type_stack_size_internal): Handle type
10987         variables.
10988
10989 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10990
10991         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10992         Signifies whether information on the this/vtable/mrgctx variable
10993         is available.
10994
10995 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10996
10997         * object.c, object-internals.h, icall.c: New function
10998         mono_delegate_ctor_with_method(), which does the same as
10999         mono_delegate_ctor(), but takes an explicit method argument
11000         instead of taking the method from the jit info.
11001
11002         * marshal.c: When creating a delegate with an inflated method take
11003         the "this" argument as the target class for the castclass.
11004
11005 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11006
11007         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11008         mono_jit_info_table_find() to perform very badly in some cases.
11009
11010 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11011
11012         * icall.c (type_from_typename): Handle 'string'.
11013
11014         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11015         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11016
11017 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11018
11019         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11020
11021         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11022         number of available managed allocator types.
11023
11024         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11025         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11026
11027 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11030         which is a low level lock protecting just the 'jit_code_hash' hash table.
11031
11032         * domain.c: Initialize+cleanup jit_code_hash_lock.
11033         
11034 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11035
11036         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11037         after initialization.
11038
11039         * coree.h: Make MonoFixupExe internal.
11040
11041         Contributed under MIT/X11 license.
11042
11043 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11044
11045         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11046         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11047         as well.
11048         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11049         image being loaded is a CLI image and _CorValidateImage gets called.
11050
11051         * coree.h: Add MonoLoadImage.
11052
11053         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11054         instead of LoadLibrary.
11055
11056         Contributed under MIT/X11 license.
11057
11058 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11059
11060         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11061         for any primitive type.
11062
11063 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * object.c (mono_array_new_specific): Optimize this and the other allocation
11066         functions a bit.
11067         
11068         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11069         domains too if mono_dont_free_domains is set.
11070
11071         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11072         whenever to free appdomain data after it has been unloaded.
11073
11074         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11075         
11076 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11079         (mono_method_get_equivalent_method): Fix a warning.
11080
11081         * object.c (mono_message_init): Avoid looking up array types for each call.
11082
11083 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11086         call.
11087
11088         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11089         even more.
11090
11091         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11092         each iteration.
11093
11094         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11095         fields of an enum.
11096
11097 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11098
11099         * object.c (mono_value_box): Fix boxing of nullables.
11100
11101 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11102
11103         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11104         mono_module_handle that is defined by the linker; no initialization required.
11105         * coree.h: Remove mono_module_handle, add __ImageBase, update
11106         mono_image_open_from_module_handle.
11107         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11108         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11109         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11110         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11111         to 4 GB away from image base address. IA64 version is not tested but was very
11112         easy to implement and should work if we ever need it.
11113         * domain.c (mono_init_internal): Avoid system error message boxes.
11114         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11115         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11116         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11117         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11118         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11119
11120         Contributed under MIT/X11 license.
11121
11122 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11123
11124         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11125         as part of the private mono API.
11126         
11127         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11128         Do proper argument checking for methods that belong to generic classes.
11129         Do proper type resolution for GMFH/2.
11130         Fixes #377324.
11131         
11132 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11133
11134         * verify.c (do_switch): Fix a memory corruption bug with
11135         the jump index is out of bound.
11136
11137 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11138
11139         * verify.c: Disable debug code.
11140
11141 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11142
11143         * reflection.c (mono_image_get_methodbuilder_token): Use
11144         mono_image_get_methodspec_token_for_generic_method_definition
11145         instead of mono_image_get_memberref_token. We cache more memberef
11146         entries now.
11147
11148 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11149
11150         * verify.c: Inflate exception clause types.
11151         Fixes #402606.
11152         
11153 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11154
11155         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11156         name.
11157
11158         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11159
11160         * reflection.c (mono_image_create_method_token): Same.
11161
11162 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11163
11164         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11165         It does the same as mono_image_get_methodref_token but works on
11166         MethodBuilder.
11167
11168         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11169         and always generate a methodspec. This follows the old behavior and fixes
11170         the regressions in System.Core. 
11171
11172 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11175         don't event mono_class_get () succeeds. Fixes #402182.
11176
11177 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11178
11179         * metadata-internals.h: Added MonoDynamicImage::methodspec
11180         hashtable to store methodspec tokens created for MethodBuilders.
11181
11182         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11183         MethodBuilders as open instantiations if a methodspec was requested.
11184
11185         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11186
11187         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11188
11189         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11190
11191         Fixes bug #349190.
11192
11193 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11194
11195         * loader.c (method_from_methodspec): Avoid crashing if the
11196         method lookup fails.
11197
11198 2008-06-20  Dick Porter  <dick@ximian.com>
11199
11200         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11201         classes being in a different assembly.  Fixes bug 399184.
11202
11203 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11204
11205         * loader.c (mono_loader_init): Make this callable multiple times.
11206         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11207         the runtime is initialized. Fixes #401755.
11208
11209 2008-06-19  Dick Porter  <dick@ximian.com>
11210
11211         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11212         Fixes bug 349688.
11213
11214 2008-06-19  Dick Porter  <dick@ximian.com>
11215
11216         * socket-io.c:
11217         * icall-def.h: Implement Socket generic Send() and Receive()
11218         methods.  Fixes bug 395168.
11219
11220 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11221
11222         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11223
11224         Contributed under MIT/X11 license.
11225
11226 2008-06-18  Martin Baulig  <martin@ximian.com>
11227
11228         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11229         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11230         set to 80.0.  The debugger <-> runtime interface is now frozen as
11231         well.   
11232
11233         * mono-debug.c
11234         (mono_debug_debugger_version): Bump to 4.
11235
11236 2008-06-18  Martin Baulig  <martin@ximian.com>
11237
11238         * debug-mono-symfile.c
11239         (load_symfile): Don't check the minor version.
11240
11241         * debug-mono-symfile.h: Bump the version number to 50.0.
11242
11243 2008-06-18  Martin Baulig  <martin@ximian.com>
11244
11245         * debug-mono-symfile.c
11246         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11247         minimum required version.
11248
11249 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11250
11251         * reflection.c (mono_custom_attrs_from_property): Fix support for
11252         retriveving cattrs of dynamic inflated generic types.
11253
11254         * reflection.c (mono_custom_attrs_from_event): Same.
11255
11256         * reflection.c (mono_custom_attrs_from_field): Same;
11257
11258         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11259
11260         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11261         Moved to metadata.c.
11262
11263         * metadata.c: New functions to retrive the equivalent field, event
11264         of property from the generic type definition.
11265
11266         * metadata-internals.h: Added new functions from metadata.c.
11267
11268 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11269
11270         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11271         to cached in a mempool is used.
11272
11273         * metadata.c (free_generic_class): In some situations field generic_info type
11274         is not properly dup'ed and leads to double free'ing.
11275
11276         Fixes #400643.
11277
11278 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11279
11280         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11281         this arguments (will be needed later for generic methods).
11282         Collect stats.
11283
11284 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11285
11286         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11287         Create a static RGCTX invoke wrapper for methods which require it.
11288
11289 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11290
11291         * object.c, class-internals.h: New function for checking whether
11292         an individual field is special static.
11293
11294 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11295
11296         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11297         linear search since the table is sorted.
11298
11299         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11300         Fixes #324180.
11301
11302 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11303
11304         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11305         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11306
11307         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11308
11309         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11310         
11311         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11312         InterlockedCompareExchange to query and modify 
11313         thread->interruption_requested.
11314
11315         * object-internals.h (struct _MonoThread): Change interruption_requested
11316         to a gint32 so it can be modified by atomic operations. Add 
11317         'critical_region_level' from the managed side, change small_id to a guint32,
11318         add new set of 'unused' fields.
11319
11320         * appdomain.c: Bump corlib version.
11321
11322 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11323
11324         * class.c (mono_class_from_name): Search modules as well. Fixes
11325         #322332.
11326
11327 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11328
11329         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11330         templates.  Templates are generalized with an additional type_argc
11331         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11332         have type_argc>0.
11333
11334         * domain-internals.h, domain.c: New hash table for looking up
11335         MRGCTXs.
11336
11337         * metadata.c, metadata-internals.h: Rename hash and equal
11338         functions for MonoGenericInst's and make them public.
11339
11340         * class-internals.h: New data structures for the MRGCTX.  Macros
11341         for distinguishing slots in the RGCTX and the MRGCTX.
11342
11343 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11344
11345         * object.c (mono_method_get_imt_slot): Put the same methods of
11346         different instantiations of the same generic interface in the same
11347         IMT slots, to make generic sharing simpler.
11348
11349 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11350
11351         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11352
11353         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11354         This function works just like mono_metadata_field_info, but
11355         accept a mempool as argument to be used allocating memory.
11356
11357         * marshal.c (mono_marshal_load_type_info): Use new function
11358         to load marshal data into image mempool.
11359
11360 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11361
11362         * class.c (mono_class_inflate_generic_type_with_mempool):
11363         This function allows to inflate a generic type using
11364         a mempool.
11365
11366         * class.c (inflate_generic_type): Take a mempool as argument
11367         and use it to do type dup'ing.
11368
11369         * class.c (mono_class_setup_fields): Field type for generic
11370         generic classes are allocated from the image mempool.
11371
11372         * metadata.c (free_generic_class): Inflated field type is
11373         now allocated in the image mempool.
11374
11375 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11376
11377         * threads.c (thread_cleanup): Free MonoThread::name.
11378
11379 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11380
11381         * appdomain.c (ensure_directory_exists): avoid unnecessary
11382         mkdir(2) calls when the shadow directory already exists.
11383         (mono_make_shadow_copy): copy also satellite assemblies from the
11384         private bin directories.
11385
11386 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11387
11388         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11389         
11390         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11391         a page boundary. Fixes #396219.
11392
11393 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11394
11395         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11396         due to double-checked locking.
11397
11398 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11399
11400         * assembly.c (build_assembly_name): Release memory on failure.
11401
11402         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11403
11404 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11405
11406         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11407         memory on failure.
11408
11409 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11410
11411         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11412         memory on failure.
11413
11414 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11415
11416         * loader.c (field_from_memberref): Check if field signature type is equal
11417         to the non-inflated type of the field. Fixes #398980.
11418
11419 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11420
11421         * assembly.c (mono_assembly_load_from_full): Call 
11422         mono_assembly_load_friends () outside the assemblies lock, since it can
11423         acquire the loader lock. Fixes #323696.
11424
11425         * reflection.c (resolve_object): Inflate the inst with the context for
11426         FieldOnTypeBuilderInst. Fixes #399010.
11427
11428 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11429
11430         * reflection.c (mono_image_get_field_on_inst_token): Don't
11431         inflate the field to encode it's signature. If it's a
11432         VAR or MVAR it should stay that way in the signature.
11433         Fixes #399047.
11434
11435 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11436
11437         * reflection.c (resolve_object): Release memory of inflated types.
11438
11439 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11440
11441         * loader.c (mono_method_get_signature_full): Remove assert about
11442         loading a methodspec to a generic method. We have such methods, such as
11443         System.Threading.Interlocked::CompareExchange<T>.
11444         This assert was removed since it crashes the verifier when it checks
11445         methods calling CompareExchange<T>.
11446
11447 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11448
11449         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11450         of Type array and not MonoType.
11451
11452 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11453
11454         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11455         <lupus@ximian.com>
11456
11457 2008-06-10  Martin Baulig  <martin@ximian.com>
11458
11459         * debug-mono-symfile.h
11460         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11461         changes to the file format, but we were generating incorrect
11462         source file indices in the line number table due to a bug, which
11463         made backtraces report an incorrect source file.
11464
11465 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11466
11467         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11468         mini/debug-mini.c to here.
11469
11470         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11471
11472         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11473         use it to release structs returned by mono_debug_find_method.
11474
11475 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11476
11477         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11478         since it needs to set method->slot for all interface methods.
11479
11480 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11481
11482         * class-internals.h: Forgot to add.
11483
11484 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11485
11486         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11487
11488         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11489         Lookup the custom attributes from property_hash.
11490
11491         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11492         in property_hash. Allocate all data using the image mempool.
11493
11494         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11495         for dynamic_custom_attrs to checks if the image is dynamic.
11496
11497 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11498
11499         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11500         assemblies array.
11501         
11502         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11503         runtime functions while holding the domain assemblies lock.
11504
11505 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11506
11507         * verify.c: Reapplied the last bit of the reverted changes.
11508
11509 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11510
11511         * verify.c: Reapplied more of the reverted changes.
11512
11513 2008-06-09  Martin Baulig  <martin@ximian.com>
11514
11515         * debug-mono-symfile.c (load_symfile): Check the major version
11516         first; if it's wrong, don't print the minor version in the error message.
11517
11518 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11521         lock instead of the domain lock to avoid deadlocks, since the thread might
11522         already hold the loader lock.
11523
11524         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11525         (mono_thread_attach): Ditto.
11526
11527         * monitor.c: Use a TLS variable for holding the current thread id instead
11528         of calling pthread_self ().
11529         (mono_monitor_init_tls): New internal function to initialize the TLS
11530         variable.
11531         (mono_monitor_try_enter_internal): Put the owner == id check after the
11532         owner == 0 check.
11533
11534         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11535         missed optimizations when using gcc-4.3.
11536
11537 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11538
11539         * reflection.c (mono_dynamic_image_free): Free the memory
11540         used by MonoGenericParam in MonoDynamicImage::gen_param.
11541
11542         * reflection.c (mono_reflection_setup_generic_class): Allocate
11543         container from mempool.
11544
11545         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11546         container from mempool.
11547
11548 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * threads.c (mono_set_pending_exception): New internal function to set the
11551         pending exception of the current thread.
11552         (mono_thread_get_and_clear_pending_exception): Check for 
11553         thread->pending_exception as well.
11554
11555         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11556
11557         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11558         it can trigger a collection.
11559
11560 2008-06-06  Martin Baulig  <martin@ximian.com>
11561
11562         Merged the `debugger-kahalo' branch.
11563
11564         * mono-debug.h
11565         (MONO_DEBUGGER_VERSION): Bumped to 72.
11566
11567         * debug-mono-symfile.h
11568         (MonoSymbolFileMethodIndexEntry): Removed.
11569         (MonoSymbolFileMethodEntry): New public typedef.
11570         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11571         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11572         `data_offset'.
11573         (MonoSymbolFileMethodEntry): Removed.
11574         (MonoSymbolFileLexicalBlockEntry): Removed.
11575         (MonoSymbolFileLineNumberEntry): Removed.
11576         (MonoDebugLexicalBlockEntry): Removed.
11577         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11578         removed `num_il_offsets' and `il_offsets'.
11579         (MonoSymbolFile): Replace `version' with `major_version' and
11580         `minor_version'.
11581         (MONO_SYMBOL_FILE_VERSION): Replace with
11582         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11583         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11584
11585         * debug-mono-symfile.c
11586         (mono_debug_symfile_lookup_location): Add support for the new line
11587         number table format.
11588
11589 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11590
11591         * metadata.c (free_generic_class): Release the inflated
11592         MonoClass of dynamic generic classes if it's not a generic
11593         type definition.
11594
11595 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11596
11597         * verify.c: Reapplied more of the reverted changes.
11598
11599 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11600
11601         * reflection.c (lookup_custom_attr): Clean the cached flag or
11602         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11603         for SRE types.
11604
11605 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11606
11607         * verify.c: Reapplied a small part of the reverted changes.
11608
11609 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11610
11611         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11612
11613         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11614         previously in managed code.
11615         (mono_monitor_exit): Ditto.
11616         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11617
11618         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11619         the managed definition.
11620
11621 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11622
11623         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11624
11625 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11626
11627         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11628         
11629         * monitor.c: Add some micro optimizations.
11630
11631         * icall.c (type_from_typename): Handle 'bool'.
11632
11633 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11634
11635         * verify.c: Implement constructor verification per P III 1.8.1.4.
11636         Fixes #396716.
11637
11638 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11639
11640         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11641         holding the assemblies lock here too.
11642
11643 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * verify.c: Kill stack_top function.
11646
11647 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11648
11649         * verify.c: Kill stack_get function.
11650
11651 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11652
11653         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11654
11655 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11656
11657         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11658         more reliable.
11659
11660         * verify.c (mono_method_verify): Inflate params and locals to avoid
11661         mismatch when checking for compatibility.
11662
11663 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11664
11665         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11666         Length prefix should be size in bytes. Fix bug #339530.
11667         
11668         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11669         Length prefix should be size in bytes. Fix bug #339530.
11670
11671         Code is contributed under MIT/X11 license.
11672
11673 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11674
11675         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11676
11677         Contributed under MIT/X11 license.
11678
11679 2008-06-05  Martin Baulig  <martin@ximian.com>
11680
11681         * mono-debug-debugger.c
11682         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11683
11684 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11685
11686         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11687         while holding the assemblies lock to prevent deadlocks. Handle the case
11688         where the search hook returns NULL but the assembly was still loaded.
11689         Fixes #323696.
11690
11691         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11692         modify domain state.
11693
11694 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11695
11696         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11697         * Makefile.am (pedump_LDADD): Post-process object files and
11698         add dtrace-generated object file, if necessary.
11699
11700         Code is contributed under MIT/X11 license.
11701
11702 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11703
11704         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11705
11706 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11707
11708         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11709
11710 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11711
11712         * threads.c: Try to free everything from the delayed free table
11713         when shutting down threads, and set the variable to NULL after the
11714         table is freed so that calling
11715         mono_thread_hazardous_try_free_all() when shutting down the root
11716         domain doesn't crash.
11717
11718 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11719
11720         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11721         the caller if resulting type was inflated.
11722
11723         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11724         was inflated.
11725
11726         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11727
11728
11729 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11732         class library tests.
11733
11734         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11735         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11736         #396989.
11737
11738 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11739
11740         * domain.c, domain-internals.h: The JIT infos are now freed by the
11741         JIT info table code.  They are freed immediately if there only a
11742         single JIT info table in circulation.  If there is more, the free
11743         is delayed via a queue.
11744
11745         * threads.c, threads-types.h: New hazard pointer function for
11746         freeing all freeable delayed items in one sitting.
11747
11748 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11749
11750         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11751
11752         * reflection.c (typebuilder_setup_properties): Same.
11753
11754         * reflection.c (typebuilder_setup_events): Same.
11755
11756 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11757
11758         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11759         and use it for allocating memory.
11760
11761         * reflection.c (mono_marshal_spec_from_builder): Same.
11762
11763         * reflection.c: Change code to use new signatures.
11764
11765         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11766
11767 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11768
11769         * decimal.c (rescale128): Put back one line which was accidently commented
11770         out.
11771         
11772         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11773         to cause crashes.
11774
11775 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11776
11777         * reflection.c (mono_reflection_generic_class_initialize): Name must
11778         be always malloc'ed so we can free it later on. Do this for field, property
11779         and event.
11780
11781         * metadata.c (free_generic_class): Free field, property and event names.
11782
11783 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11784
11785         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11786         instead of g_memdup.
11787
11788         * reflection.c (typebuilder_setup_fields): Same.
11789
11790 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * decimal.c (rescale128): Optimize this function a bit more.
11793
11794 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11795
11796         * metadata.c (free_generic_class): Release some memory from
11797         SRE generic classes.
11798
11799 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11800
11801         * reflection.c (mono_image_get_generic_field_token): No reference
11802         to name is kept, free it.
11803
11804         * reflection.c (mono_reflection_generic_class_initialize): Free
11805         more memory of the inflated field.
11806
11807 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11810         code.
11811
11812 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11813
11814         * reflection.c (mono_dynamic_image_free): Release memory used by
11815         MonoDynamicImage::array_methods elements.
11816
11817         * reflection.c (assembly_add_win32_resources): Release memory after
11818         encoding.
11819
11820 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11821
11822         * decimal.c (log2_32): Use an optimized version for this function too.
11823         
11824         * decimal.c (log2_64): Fix this on 32 bit machines.
11825
11826 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11827
11828         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11829
11830         * class.c (mono_metadata_signature_deep_dup): Same.
11831
11832         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11833         a mempool.
11834
11835         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11836
11837         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11838
11839         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11840
11841         * class-internals.h: Update signatures to take a MonoMemPool.
11842
11843 2008-06-02  Dick Porter  <dick@ximian.com>
11844
11845         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11846         * icall-def.h: Add
11847         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11848         FormatMessage API to get the error text.  Fixes bug 321827.
11849
11850 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * decimal.c: Add some micro optimizations to make decimal operations faster.
11853
11854 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11855
11856         * reflection.c (method_encode_clauses): Take a mempool
11857         as parameter and use it to allocate the clause array.
11858
11859         * reflection.c (mono_image_get_field_on_inst_token): Free
11860         the inflated type after encoding it.
11861
11862         * reflection.c (mono_dynamic_image_free): Free each element
11863         of MonoDynamicImage::gen_params.
11864
11865         * reflection.c (reflection_methodbuilder_to_mono_method):
11866         Allocate the generic param array from the mempool.
11867         Allocate signature params from the mempool.
11868
11869         * reflection.c (mono_reflection_generic_class_initialize):
11870         Free inflated fields after been used.
11871
11872 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11873
11874         * icall.c: Reapply the memory leak fixes as they no
11875         longer make mono crash.
11876
11877 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11878
11879         * reflection.c (mono_type_get_object): Don't store the suplied
11880         MonoType with type_hash. A caller which pass a type that
11881         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11882         might end with a pointer to freed memory.
11883         The solution is to use byval_arg or this_arg from the associated
11884         MonoClass of the supplied type.
11885
11886 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * icall.c: Revert the rest of the last change as it breaks the build too.
11889
11890 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11891
11892         * icall.c: Revert a leak fix as it's breaking the build.
11893
11894 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11895
11896         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11897
11898 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11899
11900         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11901
11902 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11903
11904         * icall.c: Fix some memory leaks.
11905
11906 2008-05-29  Dick Porter  <dick@ximian.com>
11907
11908         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11909         async socket operations from the pending list when a socket
11910         closes.  Leaving it until the threadpool services the event
11911         exposes a race condition when a socket descriptor is reused.
11912         Fixes bug 377589.
11913
11914 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11915
11916         * object.c: Fix negative index check for array alocation.
11917
11918 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11919
11920         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11921         This check is performed by the verifier for IL created delegates
11922         and by Delegate::CreateDelegate for programatically created ones.
11923         Fixes #372406.
11924
11925 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11926
11927         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11928         Fix code to use mono_array_size_t instead of int.
11929
11930         Based on patch by Luis F. Ortiz.
11931         Contributed under X11 license.
11932         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11933
11934 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11935
11936         * icall.c: Added ves_icall_System_Array_GetLongLength and
11937         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11938         arrays.
11939
11940         * icall.h: Export both new functions.
11941
11942         Based on patch by Luis F. Ortiz.
11943         Contributed under X11 license.
11944         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11945
11946 2008-05-28  Martin Baulig  <martin@ximian.com>
11947
11948         The debugger now requires exactly r103463.
11949
11950         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11951         This version is not supported by the debugger, wait for 72.
11952
11953 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11954
11955         * object.h: Changed array related functions to use
11956         mono_array_size_t instead of guint32. Forgot to commit this file.
11957
11958         Patch by Luis F. Ortiz.
11959         Contributed under X11 license.
11960         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11961
11962
11963 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11964
11965         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11966         don't define it. Use the number literal instead.
11967
11968 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11969
11970         * icall.c: Changed array related functions to use
11971         mono_array_size_t instead of guint32.
11972
11973         * icall.c (ves_icall_System_Array_GetLength): Check for length
11974         overflow under MONO_BIG_ARRAYS.
11975
11976         Based on patch by Luis F. Ortiz.
11977         Contributed under X11 license.
11978         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11979
11980 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11981
11982         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11983
11984         Based on patch by Luis F. Ortiz.
11985         Contributed under X11 license.
11986         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11987
11988 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11989
11990         * object.c, object.h: Changed array related functions to use
11991         mono_array_size_t instead of guint32.
11992
11993         Patch by Luis F. Ortiz.
11994         Contributed under X11 license.
11995         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11996
11997 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11998
11999         * object.h: Introduced mono_array_size_t typedef. This must be used
12000         in all places an array length is expected. This is 64bits wide if
12001         MONO_BIG_ARRAYS is enabled.
12002
12003         Patch by Luis F. Ortiz.
12004         Contributed under X11 license.
12005         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12006
12007 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12008
12009         * security-manager.c class.c: Set the class exception info by calling
12010         mono_class_set_failure ().
12011
12012         * class.c (mono_class_get_exception_data): New accessor function.
12013         (mono_class_set_failure): Store exception_data in the property hash.
12014
12015         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12016         the struct as a property.
12017
12018         * loader.c (mono_get_method_full): Store the lookup result for method
12019         tokens in method_cache, the others in methodref_cache to decrease the memory
12020         usage of hash tables.
12021
12022         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12023         (mono_image_init): method_cache is lazy inited now.
12024
12025         * metadata-internals.h (struct _MonoImage): Change method_cache to
12026         a MonoValueHashTable, add a separate methodref_cache.
12027
12028 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12029
12030         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12031           Double.ToString as exposed by Bug #383531.
12032
12033 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * number-formatter.h: Make some tables static.
12036
12037         * class.c (mono_method_set_generic_container): New accessor function.
12038         (mono_method_get_generic_container): Ditto.
12039
12040         * class-internals.h (struct _MonoMethod): Remove rarely used 
12041         'generic_container' field, store it in the property hash instead. Add 
12042         'is_generic' boolean field instead.
12043
12044         * image.c (mono_image_init): Initialize property_hash.
12045         (mono_image_close): Destroy property_hash.
12046
12047         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12048         hold rarely used fields of runtime structures belonging to this image.
12049
12050         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12051         to get/set method->generic_container.
12052
12053         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12054         generic methods.
12055
12056 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12057
12058         * class.c (mono_class_inflate_generic_method_full): Don't increase
12059         mono_stats.inflated_method_count for methods found in the cache.
12060
12061         * threads.c (mono_thread_request_interruption): Add a comment about 
12062         QueueUserAPC ().
12063
12064 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12067         interface_offsets_packed table.
12068         
12069         * class.c (mono_class_init): Remove some dead code.
12070
12071         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12072         mono_class_setup_vtable () when CAS is active to detect security problems.
12073
12074 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12075
12076         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12077
12078         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12079         parameters as it's irrelevant for delegate checking.
12080
12081 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12082
12083         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12084
12085         * class.c (mono_class_init): Control the creation of a generic vtable using
12086         a global which is true by default, but set to false by the runtime startup code.
12087         
12088         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12089         Disabled for now since it breaks the embedding API.
12090         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12091         (mono_class_setup_methods): Add a memory barrier.
12092
12093         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12094         when mono_class_init () doesn't compute the generic vtable.
12095         
12096 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12097         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12098         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12099         to support call chains (backtrace) in the stat profiler.
12100         * profiler.c, profiler-private.h: Likewise.
12101
12102 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12103
12104         * generic-sharing.c: Init generic class when a method of it is
12105         requested via a runtime generic context.
12106
12107 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12108
12109         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12110
12111         * reflection.c (mono_type_get_object): Add a FIXME.
12112
12113         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12114
12115         * class.c (mono_class_get_method_by_index): New helper function, returning an
12116         entry in the class->methods array.
12117
12118 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12121         Avoid creating a generic vtable for generic instances as well.
12122         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12123         generic instances.
12124
12125 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12126
12127         * loader.c (mono_get_method_constrained): Inflate the signature
12128         with class context. Fix #325283.
12129
12130 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * object.c (mono_class_create_runtime_vtable): Add a comment.
12133
12134         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12135         where needed.
12136         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12137         (mono_class_setup_vtable_general): Add an assert.
12138         (mono_class_init): Avoid creating a generic vtable for arrays.
12139
12140         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12141         here, let mono_class_init () do that.
12142
12143         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12144         interfaces in mscorlib.
12145
12146         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12147         interfaces. Add some comments.
12148         (mono_class_init): Call mono_class_setup_methods () here since it is no
12149         longer called by mono_class_setup_vtable ().
12150
12151         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12152         not set in class->vtable.
12153         (mono_class_create_runtime_vtable): Reenable the disabled code.
12154
12155         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12156         now as it causes some test failures.
12157
12158         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12159         if using the vtable trampoline. Also remove some strange code which put the
12160         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12161         stuff as it is no longer needed.
12162
12163 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12164
12165         * pedump.c: Give make --verify all option check code as well.
12166         Using --verify code won't check for metadata now.
12167
12168 2008-05-19  Martin Baulig  <martin@ximian.com>
12169
12170         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12171
12172         * mono-debug.c
12173         (_mono_debug_using_mono_debugger): New global variable; it's set
12174         directly by the debugger, so mono_debug_using_mono_debugger() also
12175         works after attaching.
12176
12177 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12178
12179         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12180         as we do double checked locking on MonoClass::runtime_info and
12181         MonoClassRuntimeInfo::domain_vtables.
12182
12183 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12184
12185         * debug-helpers.c (print_field_value): Fix a warning.
12186
12187 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12188
12189         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12190         set in the AOT case.
12191
12192 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12193
12194         * class.c (mono_class_setup_vtable_general): Use memory barriers
12195         as we do double checked locking on MonoClass::vtable.
12196
12197 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12198
12199         * reflection.c (resolve_object): Inflate only if the generic context
12200         is not null. Fixes #389886.
12201
12202 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12203
12204         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12205         instead of g_free.
12206
12207         Code is contributed under MIT/X11 license.
12208
12209 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12210
12211         * class.c: Revert unrelated change.
12212
12213 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12214
12215         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12216         a generic instantiation, use mono_class_from_mono_type instead of playing
12217         with MonoType directly.
12218
12219 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12220
12221         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12222         checks must ignore generic instantiations, so mono_class_has_parent is not
12223         suitable. Fixes #390128.
12224
12225 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12226
12227         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12228         it to avoid registering tokens during metadata generation. Fixes #390023.
12229
12230 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12231
12232         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12233         consistent.
12234
12235         Contributed under MIT/X11 license.
12236
12237 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12238
12239         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12240         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12241         to fixup the EXE image.
12242         (mono_cleanup): Use mono_close_exe_image.
12243         (mono_close_exe_image): New function.
12244         * image.c: Include "marshal.h".
12245         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12246         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12247         counting when the image is loaded outside of mono_image_open_full. Set status
12248         based on GetLastError.
12249         * coree.c: Include required headers. Add init_from_coree.
12250         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12251         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12252         (_CorExeMain): Set init_from_coree.
12253         (CorExitProcess): Only call ExitProcess for now.
12254         (CorBindToRuntimeEx): New stub implementation.
12255         (CorBindToRuntime): New function.
12256         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12257         (MonoFixupExe): ILONLY executables require no fixups.
12258         (mono_set_act_ctx): New function to set activation context.
12259         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12260         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12261         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12262         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12263         as MONO_INTERNAL.
12264         * domain-internals.h: Add mono_close_exe_image.
12265
12266         Contributed under MIT/X11 license.
12267
12268 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12269
12270         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12271         size for generic param and event tables. Fixes #388977.
12272
12273 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12274
12275         * loader.c (mono_method_signature): Use memory barriers because of the double
12276         checked locking pattern.
12277
12278         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12279         aborting or aborted as well. Fixes #376391.
12280         
12281         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12282         existing runtime state in the Suspend handler during shutdown.
12283
12284 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12287
12288         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12289         which are starting up or shutting down.
12290
12291         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12292         this function never returns if the runtime is already shutting down.
12293
12294         * icall.c (ves_icall_System_Environment_Exit): Update after 
12295         mono_threads_set_shutting_down () signature change.
12296         
12297 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12298
12299         * class.c: Added can_access_instantiation to verify if the instantiation
12300         is visible. Fix access check for nested types as they returned TRUE
12301         before doing type and generic instantiation visibility checks.
12302
12303 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12304
12305         * reflection.c (mono_reflection_create_generic_class): The created type
12306         must have a different container from its TypeBuilder. Otherwise they
12307         will end sharing generic arguments, which is wrong.
12308
12309         Due to the sharing, making a generic instance of the created type using
12310         the TypeBuider generic arguments resulted in the generic type definition
12311         been returned, which is wrong as well.
12312
12313         As a bonus the code was leaking the type_params array. This memory should
12314         be allocated from the image mempool.
12315
12316         This fixes bug #354047.
12317
12318 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12319
12320         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12321         to here         as they are now used in assembly.c new code.
12322         Added a skipverification flag to MonoAssembly.
12323         New internal function mono_assembly_has_skip_verification.
12324
12325         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12326         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12327         part of #387274.
12328
12329 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12332         needed. Fixes #387034.
12333
12334         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12335
12336 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12337
12338         * assembly.c (mono_assembly_load_reference): Prevent crash while
12339         disassembling Silverlight 2.0 executables while we still do not
12340         have GACed libraries.
12341
12342 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12343
12344         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12345
12346 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12347
12348         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12349         of the dynamic case. Fixes #387404.
12350
12351 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12352
12353         *verify.c (mono_verifier_is_class_full_trust): If under
12354         verify_all and the verifier mode was not set, only
12355         gac and corlib types are fulltrust. This makes --verify-all
12356         usable to detect unverifiable code, which is the expected
12357         use case.
12358
12359 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12360
12361         * verify.h: Ops, commited the header with debug
12362         enabled.
12363
12364 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12365
12366         * verify.c (merge_stack): Use the new value on unverifiable
12367         stack merges.
12368
12369         * verify.c (verify_type_compatibility_full): Comparison
12370         of nullable types can't use mono_class_is_assignable_from.
12371
12372         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12373         that makes all verification errors be reported.
12374
12375         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12376         mono_method_verify.
12377
12378 2008-05-05  Robert Jordan  <robertj@gmx.net>
12379
12380         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12381         support for value types. See #386415.
12382
12383         * object.c: comments.
12384
12385         Code is contributed under MIT/X11 license.
12386
12387 2008-05-05  Martin Baulig  <martin@ximian.com>
12388
12389         * debug-mono-symfile.h
12390         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12391         for old pre-terrania symbol files.
12392
12393 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12394
12395         * mono-config.c: Add ppc64 architecture.
12396
12397         Code is contributed under MIT/X11 license.
12398
12399 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12400
12401         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12402           PPC64 uses function descriptors as well.
12403
12404         Code is contributed under MIT/X11 license.
12405
12406 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * object.c (compute_class_bitmap): Ignore literal static fields.
12409
12410         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12411         var has an invalid format.
12412         (describe_ptr): Add some sanity checks for the vtable.
12413         (add_nursery_frag): Clear unused nursery fragments.
12414         (major_collection): Clear all remaining nursery fragments.
12415
12416 2008-05-03  Robert Jordan  <robertj@gmx.net>
12417
12418         * image.c, metadata-internals.h: add thunk_invoke_cache.
12419
12420         * marshal.c, marshal.h: implement
12421         mono_marshal_get_thunk_invoke_wrapper ().
12422
12423         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12424
12425         Code is contributed under MIT/X11 license.
12426
12427 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12428
12429         * verify.c (do_leave): Empty the stack.
12430
12431 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12432
12433         * class.c (mono_class_is_assignable_from): Variance
12434         doesn't work between reference and value types. For example,
12435         given type C<T+>, C<int32> is not assignable to C<object>.
12436         Break the argument checking loop on first error. 
12437
12438 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12439
12440         * icall.c : base64_to_byte_array() needs some more strict
12441           check for sequence of '=' characters. Patch by Santa
12442           Marta (http://deee.g.hatena.ne.jp/santamarta).
12443
12444           Contributed under MIT/X11 license.
12445           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12446
12447 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12448
12449         * domain.c: Disable LoadLibrary support to fix Win32 build.
12450
12451         Code is contributed under MIT/X11 license.
12452
12453 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12456         to help with cache behaviour.
12457
12458 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12459
12460         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12461         method. 
12462
12463 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12464
12465         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12466
12467 2008-05-01  Dick Porter  <dick@ximian.com>
12468
12469         * process.c (process_get_fileversion): Only pass 16 bits of
12470         language ID to VerLanguageName.  Fixes bug 381204.
12471
12472 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12473
12474         * verify.c (mono_method_verify): Fix the comparison
12475         operator for code bounds check.
12476
12477 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12478
12479         * verify.c (mono_method_verify): Check the bounds of
12480         all access of the code array.
12481
12482 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12483
12484         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12485
12486 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12489         not valid.
12490
12491 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12492
12493         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12494         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12495         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12496         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12497         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12498         mono_runtime_load.
12499         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12500         runtime initialization from metadata.
12501         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12502         (mono_set_rootdir): Use mono_get_module_file_name.
12503         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12504         handles.
12505         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12506         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12507         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12508         MonoCLIImageInfo. Add support for module handles.
12509         (load_cli_header): Update mono_cli_rva_image_map signature.
12510         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12511         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12512         (mono_image_rva_map): Add support for module handles.
12513         (mono_image_ensure_section_idx): Add support for module handles.
12514         (mono_image_close): Add support for module handles.
12515         (do_load_header): Add support for module handles.
12516         (mono_image_open_from_module_handle): New function for internal use.
12517         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12518         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12519         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12520         handles.
12521         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12522         * image.h: Add mono_image_fixup_vtable.
12523         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12524         support.
12525         * coree.h: New file.
12526         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12527         unsupported native code.
12528         (mono_marshal_set_callconv_from_modopt): New function splitted from
12529         mono_marshal_get_managed_wrapper.
12530         (mono_marshal_get_managed_wrapper): Use
12531         mono_marshal_set_callconv_from_modopt.
12532         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12533         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12534         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12535         that results in a deadlock when the runtime is loaded in _CorDllMain.
12536         * Makefile.am: Add coree.c and coree.h.
12537
12538         Contributed under MIT/X11 license.
12539
12540 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12541
12542         * generic-sharing.c: Search for type arguments in array element
12543         types as well.
12544
12545 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12546
12547         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12548
12549         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12550
12551         * object.c: Don't setup the RGCTX when the vtable is created,
12552         because we're setting it up lazily now.
12553
12554 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12557         64 bit support.
12558
12559 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12560
12561         * verify.c (verify_class_for_overlapping_reference_fields): 
12562         If class is under fulltrust allow reference types to overllap
12563         if they have the same RVA.
12564
12565 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12566
12567         * pedump.c: Added new flag valid-only, that makes the verifier
12568         behaves just like --security=validil. It won't fail type load
12569         due to unverifiable restrictions.
12570
12571 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12572
12573         * class-internals.h (struct MonoMethod): Added a verification_success
12574         field to cache verifier executions. Reduced MonoMethod:slot size by
12575         one bit.
12576
12577 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12580         instead of a 'vt' argument to save an indirection and to allow these to be used
12581         for valuetypes.
12582         (scan_vtype): New helper function to scan an area using a gc descriptor.
12583         (mono_gc_wbarrier_value_copy): Implement this.
12584         (handle_remset): Add support for REMSET_VTYPE.
12585         (find_in_remset_loc): Ditto.
12586         (mono_gc_base_init): Allow some debugging options to be controlled through the
12587         use of the MONO_GC_DEBUG env variable.
12588         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12589         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12590
12591 2008-04-23  Martin Baulig  <martin@ximian.com>
12592
12593         * domain.c (mono_domain_create): Move the call to
12594         mono_debug_domain_create() down, after allocating the domain id.
12595
12596 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12597
12598         verify.c (verify_class_for_overlapping_reference_fields): Skip
12599         static fields while verifying for overlapping fields as they
12600         don't matter at all.
12601
12602 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12603
12604         * domain-internals.h: added a declaration of
12605         mono_make_shadow_copy.
12606
12607         * assembly.c (mono_assembly_open_full): shadow copying of
12608         assemblies moved to here, so that all the assemblies within the
12609         application domain's private binary directories can be
12610         processed. Fixes bug #380546
12611
12612         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12613         mono_make_shadow_copy and made non-static. The decision whether
12614         to shadow-copy an assembly is made based on its location - it's
12615         copied if it's in one of the private application domain binary
12616         directories and its different to the target file in the shadow
12617         directory. Fixes bug #380546
12618
12619 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12620
12621         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12622
12623         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12624         types.
12625
12626         * reflection.c (mono_image_create_token): Handle 
12627         Method/ConstructorOnTypeBuilderInst.
12628         (resolve_object): Ditto.
12629         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12630         so it can be called from resolve_object. Also handle the case when the inflated
12631         class already has its methods setup.
12632
12633 2008-04-21  Martin Baulig  <martin@ximian.com>
12634
12635         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12636
12637 2008-04-20  Geoff Norton  <gnorton@novell.com>
12638
12639         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12640         pointer dereference.
12641
12642 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12643
12644         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12645         portability API to look up the assembly file. Fixes behavior in
12646         situations when the application has a bin/ directory, but the
12647         assembly search patch refers to Bin/ (and thus the requested file
12648         name is Bin/SomeLibrary.dll). Fixes bug #379888
12649
12650 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12651
12652         verify.c (mono_type_is_generic_argument): Extracted this check
12653         from a dozen places to here.
12654
12655         verify.c: Fixed all issues related to boxing generic arguments
12656         and their constraints.
12657
12658 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12659
12660         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12661
12662 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12663
12664         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12665         isn't finished yet. Fixes #363447.
12666
12667 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12670         Fixes #346419.
12671
12672 2008-04-13  Jb Evain  <jbevain@novell.com>
12673
12674         * domain.c: update the 2.1 profile versions.
12675         Merged from the Moonlight 2 branch.
12676
12677 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12680         mscorlibs for the non-refonly case as well.
12681
12682         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12683         in mono_assembly_load_from_full (). Fixes #378924.
12684
12685 2008-04-11  Geoff Norton  <gnorton@novell.com>
12686
12687         * icall.c: The global extern environ doesn't exist on Mac.  We
12688         need to call NSGetEnviron instead.
12689
12690 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12691
12692         verify.c: Add generic method constraint verification.
12693
12694 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12695
12696         class.c (mono_class_inflate_generic_method_full): Add a long
12697         explanation to the is_mb_open hack. Remove the FIXME.
12698
12699 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12700
12701         * verify.c (mono_method_verify): Mark all unknown opcodes
12702         as invalid. Mark jmp as unverifiable.
12703
12704 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12705
12706         * verify.c: Add code to do type constraint verification on class instances.
12707
12708         * verify.c (mono_verifier_verify_class): Use the type constraint 
12709         verification code.
12710
12711 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12712
12713         * class.c (mono_class_get_field_default_value): Don't pass cindex
12714         as hint to mono_metadata_get_constant_index. The local is not initialized
12715         and should contain garbage most of the time. This could only work
12716         with a lot of luck.
12717
12718 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12719
12720         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12721
12722 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12723
12724         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12725
12726         * class.c (mono_class_from_generic_parameter): Save the token of the
12727         generic param in MonoClass::sizes.generic_param_token.
12728
12729         * reflection.c (mono_custom_attrs_from_class): If the class type is
12730         VAR or MVAR retrieve the attributes of the generic param.
12731
12732 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12733
12734         * class.c (mono_class_init): Do class verification if the verifier
12735         is enabled.
12736
12737 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12738
12739         * verify-internal.h: Added mono_verifier_verify_class.
12740
12741         * verify.c: Added mono_verifier_verify_class. It checks for
12742         classes with explicit layout that have overlapping reference fields.
12743
12744         * pedump.c: Init the verifier state prior to verification. Fixed
12745         command line arguments.
12746
12747 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12748
12749         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12750
12751 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * verify-internals.h: Fix a warning.
12754
12755 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12756
12757         * verify-internals.h: New header with the verifier configuration
12758         extracted from mini.c.
12759
12760         * verify.c: Implemented the new functions exported by verify-internals.h.
12761
12762 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12763
12764         * verify.c: Add proper verification of ckfinite.
12765
12766 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12767
12768         * verify.c (do_conversion): Improved error message to something
12769         more meanfull.
12770
12771         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12772         with primitive types.
12773
12774 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12775
12776         * verify.c: Added tail prefix checking. Marked icall
12777         as unverifible.
12778
12779 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12780
12781         * verify.c: Fix the detection of branches to the middle
12782         of an instruction.
12783
12784 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12785
12786         * verify.c: Implemented verification of volatile. and
12787         unaligned. prefix. Check if a type is valid after retrieving it.
12788
12789 2008-04-01  Dick Porter  <dick@ximian.com>
12790
12791         * process.c (process_get_fileversion): If there's no string block,
12792         set the file language to en_US.  Fixes the other new part of bug
12793         374600.
12794
12795 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12796
12797         * class.c: New functions mono_method_can_access_field_full and
12798         mono_method_can_access_method_full. They perform type visibility
12799         and type site check.
12800
12801         * class-internal.h: Added exported functions.
12802
12803         * verify.c: Use new functions to implement proper visibility checks.
12804
12805 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12806
12807         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12808
12809 2008-03-28  Dick Porter  <dick@ximian.com>
12810
12811         * process.c (process_get_fileversion): Use the first language ID
12812         we see, rather than insisting on an invariant language.  Fixes bug
12813         374600.
12814
12815 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12818         the streams to fix reading of invalid memory later.
12819
12820         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12821         to ease debugging.
12822
12823 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12824
12825         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12826         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12827
12828 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12829         * threads.h: Added MonoThreadManageCallback type and
12830         mono_thread_set_manage_callback prototype
12831         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12832         (used to store the mono_thread_manage callback).
12833         * threads.c: Added mono_thread_set_manage_callback, and handle
12834         "MonoThread->manage_callback" in build_wait_tids.
12835
12836 2008-03-26  Dick Porter  <dick@ximian.com>
12837
12838         * process.c (process_get_fileversion): Set FileVersionInfo strings
12839         to Empty when the resource doesn't have the particular info.
12840         Fixes bug 355717.
12841
12842 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12843
12844         * verify.c (mono_method_verify): Proper prefix validation.
12845
12846 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12849         itself in a separate argument instead of throwing them. Fixes #373448.
12850
12851         * appdomain.c: Bump corlib version.
12852
12853 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12854
12855         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12856
12857 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12858
12859         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12860         version macros.
12861
12862 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12863
12864         * generic-sharing.c, class-internals.h: Code for putting
12865         reflection types into the runtime generic context.
12866
12867 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12868
12869         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12870         Fixes #340662. 
12871
12872
12873 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12874
12875         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12876
12877         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12878
12879         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12880
12881         * verify.c (do_cast): Let the result value keep the boxed status.
12882
12883         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12884
12885 2008-03-17  Jb Evain  <jbevain@novell.com>
12886
12887         * reflection.c: when running on a 2.0 runtime, emit
12888         unconditionally the #~ header version as 2.0, and the
12889         CLI header version as 2.5, for symmetry's sake with csc.
12890
12891 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * class.c: Remove the unused cache_interface_offsets stuff.
12894
12895         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12896         profiler.c: Fix warnings.
12897
12898 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12899
12900         * generic-sharing.c, class-internals.h: Support for putting
12901         methods into the runtime generic context.
12902
12903 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12906         classes which are generic instances of not-yet finished typebuilders. Fixes
12907         #351172.
12908
12909         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12910
12911 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12914
12915         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12916         field, replace it with a hash table in MonoDynamicImage.
12917
12918         * reflection.c (inflate_mono_method): Access the generic definition object from
12919         image->generic_def_objects instead of imethod->reflection_info.
12920
12921         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12922
12923         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12924         
12925         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12926         function in reflection.c so it is easier to keep in sync with the dynamic image
12927         creation code.
12928
12929         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12930         mono_image_close ().
12931
12932 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12933
12934         * class.c (mono_class_generic_sharing_enabled): Disable generic
12935         sharing for all architectures except AMD64 and x86 to fix build.
12936
12937 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12938
12939         * verify.c: Use the generic definition MonoGenericContext when available.
12940         Remove code for checking generics instance compatibility in favor of
12941         mono_class_is_assignable_from.
12942
12943 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12944
12945         * marshal.c, marshal.h, metadata-internals.h, image.c,
12946         wrapper-types.h: New wrapper for invoking a shared static method
12947         without having to pass the runtime generic context argument.
12948
12949 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12950
12951         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12952
12953 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12956         
12957         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12958         create a token from a FieldOnTypeBuilderInst.
12959         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12960         (resolve_object): Ditto.
12961
12962         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12963         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12964
12965 2008-03-14  Martin Baulig  <martin@ximian.com>
12966
12967         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12968
12969         * debug-mono-symfile.h
12970         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12971         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12972
12973 2008-03-10  Martin Baulig  <martin@ximian.com>
12974
12975         * debug-mono-symfile.h
12976         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12977         `lexical_block_table_offset'.
12978         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12979         `lexical_blocks'.
12980         (MonoSymbolFile): Added `version'.
12981
12982         * mono-debug.h
12983         (MonoDebugLexicalBlockEntry): Removed.
12984         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12985         `lexical_blocks'.
12986
12987         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12988         blocks here; the debugger now does this internally.
12989
12990 2008-02-27  Martin Baulig  <martin@ximian.com>
12991
12992         * object.c (mono_runtime_exec_main): Call
12993         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12994         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12995
12996 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12997
12998         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12999         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13000
13001 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13002
13003         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13004         ldftn with a virtual method.
13005
13006 2008-03-13  Geoff Norton  <gnorton@novell.com>
13007
13008         * decimal.c:  Only include memory.h if the platform has it.
13009
13010 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13011
13012         * assembly.c, class.c, metadata-internals.h: make sure public key
13013         tokesns are compared in a case-insensitive way. Also, all
13014         the lookups in the GAC use a lowercase public key token
13015         (gaacutil already does the lowercasing on install). Fixes
13016         bug #369541.
13017
13018 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13019
13020         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13021         and return value.
13022
13023 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13024
13025         * image.c: when someone loads a mscorlib from a file, return the
13026         currently loaded mscorlib (fixes bug #369253).
13027
13028 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13029
13030         * class.c: handle types with no parents by forcing them to have
13031         System.Object as a parent and marking them as broken (this currently
13032         allows the first part of bug #369173 to work as well, likely because
13033         we don't check for typeload exceptions everywhere yet).
13034
13035 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13036
13037         * class.c: more complete check that types belong to corlib
13038         (fixes second part of bug #369173).
13039
13040 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13041
13042         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13043           "inline" to "__inline" before including mono-membar.h.
13044           
13045         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13046           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13047           MSVC builds.
13048
13049         Contributed under MIT/X11 license.
13050
13051 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13052
13053         * verify.c (do_invoke_method): Remove return type validation.
13054
13055         * verify.c (do_ret): Do return type validation at return site instead of
13056         call site.
13057
13058 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13059
13060         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13061
13062         * verify.c: Some todos cleaned and improved a few error messages.
13063
13064 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13065
13066         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13067
13068 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13071         system types correctly.
13072
13073         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13074         function.
13075
13076 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * assembly.c (build_assembly_name): Fix a warning.
13079
13080 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13081
13082         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13083         the called function takes an object type argument. Fixes storing or
13084         valuetypes across remoting as well as reducing memory usage.
13085         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13086         stfld_remote wrapper caches.
13087
13088 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13091         is not found.
13092
13093         * reflection.c (mono_image_register_token): New helper function to save
13094         a token->object mapping.        
13095
13096         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13097         managed code.
13098
13099         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13100         one dimension arrays. Fixes #367670.
13101         (mono_reflection_get_type_internal): Ditto.
13102
13103 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13104
13105         * marshal.c: mono_load_remote_field_new() always returns object.
13106         so use the proper signature (fixes bug #366445).
13107
13108 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13109         
13110         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13111         add an 'inline_failure' flag instead.
13112
13113 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13114
13115         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13116         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13117         contains the location of "this", used for exception handling.
13118
13119 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13120
13121         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13122         their size on all platforms for perf reasons.
13123
13124 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13125
13126         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13127         object-internal.h
13128
13129         * object-internal.h: Same.
13130
13131 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13132
13133         * reflection.h: Fix the build I just broke.
13134
13135 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13136
13137         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13138         Test if a token is valid, this remove explicit usage of 
13139         MonoDynamicImage::tokens from the verifier code.
13140
13141         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13142
13143         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13144         instead of direct access to MonoDynamicImage::tokens.
13145
13146 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13147
13148         * verify.c (token_bounds_check): Fix the build I just broke.
13149
13150 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13151
13152         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13153
13154         * verify.c (verifier_load_method): Fixed the errors message.
13155
13156         * verify.c (mono_method_verify): Fixed a debug message.
13157
13158 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13159
13160         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13161         mono-perfcounters.h, class-internals.h: support for predefined
13162         writable counters, query of categories and counters, bugfixes.
13163
13164 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13165
13166         * verify.c (do_refanytype): Verify the refanytype opcode.
13167
13168         * verify.c (mono_method_verify): Use do_refanytype.
13169
13170 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13171
13172         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13173
13174         * verify.c (mono_method_verify): Use do_mkrefany.
13175
13176 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13177
13178         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13179         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13180         implementation.
13181
13182 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13185         the type load exception.
13186
13187 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13188
13189         * verify.c: Added a few FIXME for method signatures
13190
13191         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13192         of mono_method_get_signature and get vararg call working. Removed unused
13193         checks for return value.
13194
13195         * verify.c (do_refanyval): Verify the refanyval opcode.
13196
13197         * verify.c (mono_method_verify): Implemented verification of arglist and
13198         use do_refanyval.
13199
13200 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13203         vtypes to marshal.c.
13204
13205         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13206         it works for AOT as well.
13207
13208 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13209
13210         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13211         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13212         the system time is adjusted.
13213
13214 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13215
13216         * icall.c, icall-def.h: use the new time functions (fixes the
13217         non-monotonic behaviour of TickCount).
13218
13219 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13222         it breaks the build.
13223         
13224         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13225         cattr is not finished yet.
13226
13227 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13228
13229         * verify.c: Proper token validation for field, method and type.
13230
13231 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13232
13233         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13234
13235         * loader.c (method_from_memberref): Generate type load error instead of method missing
13236         if the type is not found.
13237
13238 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13241         some of the conversions caused the generation of a marshal directive exception.
13242
13243 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13244
13245         verify.c: Report which exception should be thrown by the JIT.
13246         Added a lot of FIXME notes.
13247
13248 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13249
13250         * generic-sharing.c: Runtime generic context slots are not
13251         instantiated on init anymore.  Instead, provide function to do the
13252         instantiating on demand.
13253
13254         * class-internals.h: Added vtable to runtime generic context.
13255         Macros for encoding direct and indirect slot offsets in one
13256         guint32.
13257
13258 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13259
13260         * object.c, generic-sharing.c: Moved some generic sharing code
13261         from object.c to generic-sharing.c.
13262
13263         * generic-sharing.c: Added support for extensible runtime generic
13264         context.
13265
13266         * metadata-internals.h: Two new hash tables in MonoImage for
13267         extensible runtime generic context support.
13268
13269         * domain.c: Unregister generic vtables upon domain unloading.
13270
13271         * image.c: Destroy new hash tables upon image unloading.
13272
13273         * metadata.c: Unregister generic subclasses upon image unloading.
13274
13275         * class-internals.h: New data structure for runtime generic
13276         context template.  New fields in the runtime generic context for
13277         extensible part.
13278
13279         * Makefile.am: Added generic-sharing.c.
13280
13281 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13282
13283         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13284         there is a pending loader exception, raise it.
13285
13286         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13287         same.
13288
13289         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13290         same.
13291
13292         Fixes #363450.
13293
13294 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13297
13298         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13299         
13300         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13301         ref-only requests for compatibility with MS.
13302
13303 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13304
13305         * reflection.c (mono_custom_attrs_from_method): Don't silently
13306         return an empty list for generic method instances.
13307         (mono_custom_attrs_from_param): Likewise.
13308
13309 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13310             Raja R Harinath  <harinath@hurrynot.org>
13311
13312         Fix #354757
13313         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13314         * class.c (mono_class_inflate_generic_method_full): Initialize it
13315         when a fully-open method is instantiated.
13316         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13317         to new field.
13318         * reflection.c (inflate_mono_method): Don't create a temporary context.
13319
13320 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13321
13322         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13323         Compute correct value, to prepare for imethod->reflection_info going away.
13324
13325 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13328
13329 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13330
13331         * verify.c: Implement skip visibility flag.
13332
13333 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13334
13335         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13336         which contains an extra field to tell the kind of exception that should be thrown.
13337
13338         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13339
13340 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13341
13342         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13343         'method' is updated.
13344
13345 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13348         explicit layout as well. Fixes #360375.
13349
13350 2008-02-11  Geoff Norton  <gnorton@novell.com>
13351
13352         * loader.c: Guard and dereference against inflated generic methods
13353
13354 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13355
13356         * class.c: Include Retargetable spec in assembly name.
13357         * assembly.c: Always include PublicKeyToken spec in assembly name
13358         (with value "null" if assembly is not signed), and include
13359         Retargetable spec.
13360         * icall-def.h: Added icall for Assembly.get_fullname.
13361         * icall.c: Added icall returning the fullname of an assembly.
13362
13363 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13364
13365         * class.c (mono_class_setup_vtable_general): Add a missing call to
13366         mono_class_setup_methods () which is needed in the AOT case.
13367
13368 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13369
13370         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13371         stack type of the given MonoType.
13372
13373         * verify.c (verify_type_compatibility_full): Handle the void type.
13374
13375         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13376         way stack merging works.
13377
13378         * verify.c (store_local): Improved verification message.
13379
13380         * verify.c (do_branch_op): If the merging is invalid, the method
13381         is unverifiable and not invalid. Improved error message.
13382
13383         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13384         a reference type diferent than System.Object. Improved error
13385         message.
13386
13387 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13388
13389         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13390
13391         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13392         type of an enum even if the argument is byref.
13393
13394         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13395         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13396
13397         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13398
13399         *verify.c (verify_type_compatibility_full): Make enum types
13400         compatible with their base types.
13401
13402         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13403         types are compatible for the special case of a boxed valuetype and
13404         System.Object.
13405
13406         * verify.c (verify_stack_type_compatibility): The function
13407         is_compatible_boxed_valuetype was extracted from here.
13408
13409         * verify.c (push_arg): Only set ctx->has_this_store if the method
13410         is not static.
13411
13412         * verify.c (do_ldelem): Fixed a typo in an error message and added
13413         strict check for mixing int32 and native int as the array type
13414         and ldelem type.
13415
13416         * verify.c (merge_stacks): Consider boxed valuetypes in the
13417         compatibility checks.
13418
13419 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13420         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13421
13422 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13423         *class.c: use_new_interface_vtable_code: renamed the env var to have
13424         a "MONO_" prefix, and fix the logic to enable it by default.
13425
13426 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13427         *class.c:
13428         mono_class_setup_vtable_general: rewrote the way in which interface
13429         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13430         makes the code more maintainable.
13431         For now the old code is still there, and can be activated setting
13432         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13433
13434 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13435
13436         * verify.c: guarded some debug functions around and #ifdef.
13437
13438         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13439
13440 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13441
13442         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13443         changes for now since they seem to break too many things.
13444
13445 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13446
13447         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13448         mono_marshal_find_nonzero_bit_offset): Added macro and function
13449         for finding the byte- and bit-offset of a bitfield within a
13450         struct.
13451
13452 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13455         (mono_marshal_get_struct_to_ptr): Ditto.
13456
13457         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13458         cctor_signature.
13459
13460 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13463         between methods for non-corlib types.
13464
13465 2008-02-02  Geoff Norton  <gnorton@novell.com>
13466
13467         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13468         generic parameters as well. (Fixes #342536)
13469
13470 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13471
13472         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13473
13474         * verify.c (do_invoke_method): Fix for calling with byref structs.
13475
13476         * verify.c (do_cast): push a boxed value type based on the type token and not
13477         the type of stack.
13478
13479 2008-01-31  William Holmes  <billholmes54@gmail.com>
13480
13481         * process.c (process_module_string_read): Check the size returned form 
13482           VerQueryValue to avoid out of memory exception. 
13483
13484 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13485
13486         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13487         Handle properly modules which are not in the moduleref table. Fixes
13488         #356938.
13489
13490 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13491
13492         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13493         the dynamic case which is now in managed code.
13494         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13495
13496         * marshal.c (mono_string_to_bstr): Fix a warning.
13497         (init_com_provider_ms): Ditto.
13498
13499         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13500
13501         * exception.c (mono_get_exception_out_of_memory): New helper function.
13502
13503 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13504
13505         * marshal.c: Add support for BSTR marshalling
13506         using other COM systems.
13507
13508         Code is contributed under MIT/X11 license.
13509
13510 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13511
13512         * object.c (mono_runtime_invoke_array): reverted previous
13513         commit as it breaks the build.
13514
13515 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13516
13517         * object.c (mono_runtime_invoke_array): Verify arguments for
13518         invalid types. Fixes #348522.
13519
13520 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13521
13522         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13523         non-final virtual calls using call. 
13524
13525         * verify.c (do_invoke): fixed some TODOs.
13526
13527         * verify.c (push_arg): set has_this_store for "ldarga 0".
13528
13529 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13532         which belong to an inflated class. Fixes #356531.
13533
13534 2008-01-26  Robert Jordan  <robertj@gmx.net>
13535
13536         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13537         which resort to FindFirstFile when a certain error condition
13538         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13539         Code is contributed under MIT/X11 license.
13540
13541 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13542
13543         * marshal.c (emit_marshal_string): Fix out string marshalling
13544         to use specified encoding. Fixes #323900.
13545
13546         Code is contributed under MIT/X11 license.
13547
13548 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13549
13550         * class.c (mono_class_inflate_generic_method_full): Don't modify
13551         iresult->context after cache check.
13552
13553 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * class.c (mono_class_inflate_generic_method_full): Change the
13556         struct assignments to memcpy for better visibility and add some comments.
13557
13558 2008-01-23  Dick Porter  <dick@ximian.com>
13559
13560         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13561         procedure, and make it work on windows.
13562
13563 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13566         a MonoReflectionTypeBuilder since it is always of that type.
13567
13568         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13569
13570         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13571
13572         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13573         
13574         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13575
13576         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13577
13578         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13579         instantiations from the type cache.
13580
13581 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13582
13583         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13584
13585         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13586
13587 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13588
13589         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13590
13591         * verify.c (mono_method_verify): removed old TODO
13592
13593 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13594
13595         * verify.c (do_newobj): add visibility check.
13596
13597 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13598
13599         * verify.c (do_load_function_ptr): add visibility check.
13600
13601 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13602         *class.c:
13603         mono_generic_class_get_class: hook profiler events.
13604         mono_field_get_offset: added to support heap-shot in the new profiler.
13605         *class.h: exported mono_field_get_offset.
13606         * reflection.c:
13607         mono_reflection_setup_internal_class: hook profiler events.
13608
13609 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13610
13611         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13612         argument here too and use it to avoid checking for pending exceptions if 
13613         possible.
13614
13615 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13616
13617         * assembly.c (build_assembly_name): add arg for passing the assembly
13618         flags. Do not consider a PublicKey with value "null" valid.
13619         (mono_assembly_name_parse_full): added boolean argument that will be
13620         set if the assembly name contains a PublicKeyToken spec. Added support
13621         for the Retargetable spec for which only Yes or No are allowed as valid
13622         value. Consider assembly name invalid if Retargetable spec is set, but
13623         either version, culture or public key (token) are not specified.
13624         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13625         with implementation in assembly.c.
13626         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13627         from MonoAssemblyName.
13628         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13629         introduced argument for mono_assembly_name_parse_full to know if the
13630         assembly name has a PublicKeyToken spec, and if it has instruct
13631         fill_reflection_assembly_name to use default value for keyToken (if
13632         PublicKeyToken is null).
13633
13634 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13635
13636         * verify.c (mono_method_verify): fixed ovf ops with
13637         float values. They are unverifiable now.
13638
13639 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13640
13641         * class.c (set_failure_from_loader_error): add BadImageException to the
13642         list of exceptions that can cause a type to fail to load.
13643
13644         * class.c (mono_class_get_exception_for_failure): same.
13645
13646 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13647
13648         * verify.c (in_any_exception_block): added, check if offset
13649         is part of any exception handling clause.
13650
13651         * verify.c (get_stack_type): added VAR and MVAR types.
13652
13653         * verify.c (do_stobj): better error messages.
13654
13655         * verify.c (do_cpobj): added, check cpobj.
13656
13657         * verify.c (do_initobj): added, check initobj.
13658
13659         * verify.c (do_sizeof): added, check sizeof.
13660
13661         * verify.c (do_localloc): added, check localloc.
13662
13663         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13664
13665 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13666
13667         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13668         save_lmf/restore_lmf opcodes.
13669
13670         * threads.c (mono_threads_install_notify_pending_exc): New function to
13671         install a callback notifying the JIT there is a pending exception on a thread.
13672         (mono_thread_request_interruption): Call the new callback.
13673         (mono_thread_get_and_clear_pending_exception): New function to return the
13674         exception pending on a thread.
13675
13676         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13677         to turn off checking for pending exceptions.
13678         (mono_marshal_get_native_wrapper): Ditto.
13679
13680 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13681
13682         * threads-types.h: Get rid of the unnecessary extern declarations.
13683
13684 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13685
13686         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13687         return field from parent class if not private.
13688         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13689         returns fields from parent class if they are not private.
13690         (method_nonpublic): added function to determine if a given method
13691         should be considered non-public. Returns false for private methods
13692         on parent class, and internal methods from parent on the 1.0 profile.
13693         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13694         use method_nonpublic function to determine whether method should be
13695         returned.
13696         (property_accessor_public): use newly introduced method_nonpublic
13697         function to determine whether accessor is non-public. 
13698         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13699         event from parent class if not private. Only return static event if
13700         Static flag is set, and only return static event from parent class if
13701         FlattenHierarchy flag is set.
13702         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13703         include non-private events from parent class.
13704
13705 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13708         warning.
13709
13710 2008-01-16  Wade Berrier <wberrier@novell.com>
13711
13712         * security.c: Add assembly.h header to appease some warnings
13713
13714 2008-01-16  Dick Porter  <dick@ximian.com>
13715
13716         * process.c (process_module_string_read): Remove trailing null
13717         when saving string.
13718
13719 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13720
13721         * class-internals.h: A new data structure describing the layout of
13722         a runtime generic context (MonoRuntimeGenericContextTemplate).
13723
13724         * metadata-internals.h: Added a hash table to MonoDomain that maps
13725         from open generic classes to their runtime generic context
13726         templates.
13727
13728         * object.c: Building of the runtime generic context, including
13729         proper handling of generic type arguments of superclasses.
13730         Building of the runtime generic context according to the template.
13731
13732 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13735         Fixes #350856.
13736
13737         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13738         mono_portability_find_file (). Fixes #325466.
13739         (mono_image_get_public_key): Fix a warning.
13740
13741 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13744         Fixes #353550.
13745         (mono_class_from_name_case): Ditto.
13746
13747 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13748
13749         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13750           common storage for the tables used in the System/NumberFormatter class.
13751
13752 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13753
13754         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13755
13756 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13757
13758         * verify.c (get_boxable_mono_type): check if the token is valid.
13759
13760         * verify.c (set_stack_value): changed to add an error if an
13761         invalid type is set on stack. Changed all callers due to signature change.
13762
13763         * verify.c (do_stobj): implement stobj validation.
13764
13765 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13768         set container->is_method, it was set earlier.
13769
13770         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13771         generic methods.
13772
13773         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13774         is_method of the generic container to TRUE for methods.
13775
13776 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13777
13778         * metadata.c (type_in_image): Handle type parameters properly.
13779
13780         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13781         memory ownership of this structure.
13782
13783 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13784
13785         * verify.c (get_boxable_mono_type): make typedref types been just
13786         unverifiable. check for void type.
13787
13788         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13789
13790         * verify.c (do_load_function_ptr): accept method spec tokens.
13791
13792 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * marshal.c (mono_class_native_size): Always set *align even if this is called
13795         recursively.
13796
13797 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13800         out-of-date.
13801
13802 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13803
13804         * verify.c: removed some old unused tables. A huge bunch of small fixes
13805         to things found while testing the verifier with mono basic.
13806
13807         * verify.c (dump_stack_value): dump null literal flag to.
13808
13809         * verify.c (verify_type_compatibility_full): fix comparison
13810         for types that have a generic super type.
13811
13812         * verify.c (verify_stack_type_compatibility): fix compatibility
13813         between null literals and reference types. fix compatibility between
13814         boxed valuetypes and object. fix corner case test for enums.
13815
13816         * verify.c (do_cmp_op): proper verification of cgt.un in case
13817         of reference types.
13818
13819         * verify.c (do_invoke_method): fix error message.
13820
13821         * verify.c (do_store_indirect
13822
13823         * verify.c (check_is_valid_type_for_field_ops): proper verification
13824         of managed pointers to valuetypes and boxed valuetypes. proper verification
13825         of null literals.
13826
13827         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13828         allow token to be a reference type.
13829
13830         * verify.c (do_cast): proper handling of boxes valuetypes.
13831
13832         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13833         in object[].
13834
13835         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13836         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13837         fixed the decoding of unbox_any
13838
13839 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13840
13841         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13842
13843 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13844
13845         * verify.c (do_newobj): do delegate verification.
13846
13847         * verify.c (verify_delegate_compatibility): perform delegate
13848         verification.
13849
13850         * verify.c (verify_ldftn_delegate): perform tests related to
13851         ldftn delegates.
13852
13853         * verify.c (mono_delegate_signature_equal): perform the
13854         slightly diferent signature comparison required by delegates.
13855
13856         * metadata.c (mono_metadata_type_equal_full): added and exported
13857         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13858         allows signature only comparison.
13859
13860         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13861         as MONO_INTERNAL.
13862
13863 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13864
13865         * verify.c: added a bunch of stack_slot_* functions to
13866         make access to stack slot type easier. This is required to
13867         allow optional flags, like null literal, boxed value and
13868         this pointer.
13869         All access paths to IlStackDesc::stype have been changed 
13870         to use these new funcions.
13871         Removed a bunch of unused functions and cleared all warnings.
13872         This patch introduces the usage of the this pointer and 
13873         boxed value flags.
13874
13875 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13876
13877         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13878
13879 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13880
13881         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13882         match managed version.
13883
13884         * appdomain.c: Bump corlib version.
13885         
13886         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13887         argument.
13888
13889 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13890
13891         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13892         Set public key token to zero-length byte array if assembly is not
13893         strongnamed.
13894
13895 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13896
13897         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13898         writing a vtype array elem.
13899
13900 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13901
13902         * assembly.c (build_assembly_name): return FALSE if length of token is
13903         not 16 (if not "null").
13904         (mono_assembly_name_parse_full): return FALSE if value of version,
13905         culture, token or key is 0.
13906         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13907         specify whether public key and public key token must be set to default
13908         value (zero-length byte array) if not available. Set versioncompat to
13909         SameMachine. If public key is available or the default is set, then
13910         set PublicKey flag.
13911         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13912         is available, use empty byte array as default value. On the 2.0
13913         profile, use default value for public key token if not set.
13914         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13915         profile, use default value for public key if not set. On the 2.0
13916         profile, use default value for public key token if not set.
13917         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13918         default values for public key and public key token.
13919
13920 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13921
13922         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13923         field to keep it in synch with the managed object.
13924
13925         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13926         delegates. Fixes #351520.
13927
13928         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13929         contains defined memory.
13930         
13931         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13932
13933         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13934         
13935         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13936         of the GC data structures.
13937
13938         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13939
13940         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13941         
13942         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13943         barrier.
13944         (mono_array_clone_in_domain): Ditto.
13945         (mono_array_clone_in_domain): Ditto.
13946
13947         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13948         (cache_culture): Use a write barrier.
13949
13950         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13951         (ves_icall_get_property_info): Ditto.
13952
13953         * object.h (MONO_STRUCT_SETREF): New macro.
13954
13955         * class-internals.h (MonoStats): Add some GC statistics.
13956
13957         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13958
13959 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13960
13961         * exception.c (mono_exception_from_name_two_strings):
13962         Break from loop after method is found.
13963
13964 2008-01-04  Dick Porter  <dick@ximian.com>
13965
13966         * process.c (process_module_string_read): Rename variable to
13967         reflect correct usage, after fixing bug 345972.
13968
13969 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13970
13971         * verify.c (mono_type_create_fnptr_from_mono_method): 
13972         created a MonoType function pointer instance to be used during
13973         verification. The verifier releases this memory at end.
13974
13975         * verify.c (mono_method_is_constructor): extracted repeated
13976         checks for constructor into a single class.
13977
13978         * verify.c (do_push_field): use new extracted method
13979         for constructor check.
13980
13981         * verify.c (do_newobj): same.
13982
13983         * verify.c (do_ldftn): renamed to do_load_function_ptr
13984         and make it verify ldvirtftn too.
13985
13986         * verify.c (mono_method_verify: proper verification
13987         of ldvirtftn. release created MonoMethod instances.
13988
13989 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13990
13991         * verify.c (token_bounds_check): added.
13992
13993         * verify.c (do_ldftn): added.
13994
13995         * verify.c (mono_method_verify): proper verificartion of ldftn.
13996
13997 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13998
13999         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14000         than the table row count. It's the resposibility of the caller to
14001         make the bounds check and raise the correct error.
14002
14003         * metadata.c (mono_metadata_decode_row_col): Same.
14004
14005         * loader.c (mono_get_method_from_token): perform bounds check
14006         on token for methoddef table.
14007
14008 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14009
14010         * icall.c
14011         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14012         assert into a negative result, the managed code already coped with
14013         that.
14014
14015         Some folks on Windows reported this error. 
14016
14017 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14018
14019         * appdomain.c: Bump corlib version.
14020         * icall.c:
14021         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14022         CultureInfo.CreateCulture to create CultureInfo for name.
14023         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14024         create CultureInfo for name. Fixes bug #347174.
14025
14026 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14027
14028         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14029         flags.
14030
14031         * verify.c (is_valid_branch_instruction): allow branching to the
14032         first instruction of the protected block.
14033
14034         * verify.c (is_valid_cmp_branch_instruction): same.
14035
14036         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14037         avoid double initialization.
14038
14039         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14040         detect which cases the eval stack should just be copied.
14041
14042         * verify.c (mono_method_verify): check if the eval stack
14043         is empty when entering a protected block.
14044
14045 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14046
14047         * verify.c: added is_clause_in_range, is_clause_inside_range,
14048         is_clause_nested and verify_clause_relationship. They perform
14049         the verifications stated in P1 12.4.2.7.
14050
14051         * verify.c (mono_method_verify): remove some unused variables,
14052         add the new exception clause checks, add instruction border
14053         checks for protected block start/end, improved some error 
14054         messages and fixed a bug in the way invalid instruction access
14055         is detected.
14056
14057 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14060         from GC 7.0 if available.
14061
14062         * object.c: Remove an unused define.
14063         
14064         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14065
14066         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14067
14068         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14069
14070         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14071
14072         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14073         to take the same arguments as the other make_descr functions.
14074
14075         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14076
14077         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14078         directly.
14079
14080         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14081         mini.c.
14082
14083         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14084         call to boehm-gc.c.
14085
14086         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14087
14088         * null-gc.c (mono_gc_register_root): Fix a warning.
14089
14090         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14091
14092         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14093         (mono_gc_base_init): Call GC_init ().
14094
14095         * null-gc.c: Define mono_gc_register_root () as a no-op.
14096
14097         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14098
14099 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14100
14101         * verify.c: add prototype for merge_stacks at top
14102
14103         * verify.c (do_switch): added.
14104
14105         * verify.c (merge_stacks): on some cases the stack merging
14106         was not happening properly. Unequal stack sizes at merge
14107         points should be invalid.
14108
14109         * verify.c (mono_method_verify): added more debug info on stack state.
14110         verify switch properly.
14111
14112 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14115         marshal.h.
14116
14117         * boehm-gc.c marshal.c: Include method-builder.h.
14118
14119         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14120
14121         * marshal.c: Remove some code which is now in method-builder.c.
14122
14123 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14124
14125         * method-builder.c: New file, extraction of the method builder functionality 
14126         from marshal.c.
14127
14128         * marshal.c: Move the mb functions into method-builder.c.
14129
14130         * marshal.h marshal.c: Export some mono_mb_... functions.
14131
14132         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14133
14134         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14135         the caller.
14136
14137         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14138
14139         * loader.c (mono_field_from_token): Ditto.      
14140
14141         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14142         type as well.
14143         
14144         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14145         Fixes #342565.
14146
14147         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14148         a helper function for setting it.
14149
14150         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14151
14152         
14153         * assembly.c: Significally simplify code now that referenced assemblies are 
14154         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14155
14156         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14157         #349952.
14158
14159 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14160
14161         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14162         instructions that were target of branches or are at protected block boundaries.
14163
14164         * verify.c (in_same_block): handle filter clauses.
14165
14166         * verify.c (is_valid_branch_instruction): added. checks the target of
14167         instructions br or brtrue/false.
14168
14169         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14170         binary branch instructions such as beq and bge.
14171
14172         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14173         and made it pin the instruction as been part of the exception block.
14174
14175         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14176         of in_same_block.
14177
14178         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14179         of in_same_block.
14180
14181         * verify.c (do_ret): ret from a protected block is unverifiable and
14182         not invalid.
14183
14184         * verify.c (do_static_branch): verify br and br.s instructions.
14185
14186         * verify.c (merge_stacks): add extra param to support detection
14187         of branches in the middle of instructions.
14188         
14189         * verify.c (mono_method_verify): verify branches and exception blocks
14190         that target the middle of instructions. Proper verification of br and br.s.
14191
14192 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14195         skip_visibility field.
14196         (reflection_methodbuilder_from_dynamic_method): Ditto.
14197
14198         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14199         registrations. Fixes #348193.
14200
14201         * threads.h: Move the internal mono_thread_get_pending_exception () to
14202         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14203
14204 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14207         icall registration. Fixes #348193.
14208
14209         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14210         for corlib classes into object. Fixes #349621.
14211
14212 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14213
14214         * icall.c (property_accessor_nonpublic): new function to determine
14215         whether an accessor allows a property to be considered non-public.
14216         Returns false for private accessor(s) from parent class, and internal
14217         accessor(s) from parent on 2.0 profile (and higher).
14218         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14219         to determine whether property should be included if NonPublic flag
14220         is set. Fixes bug #349078.
14221
14222 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14223
14224         * verify.c (init_stack_with_value): added.
14225
14226         * verify.c (mono_method_verify): extracted common
14227         code for exception initialization into init_stack_with_value.
14228
14229         * verify.c (mono_method_verify): initialize the exception
14230         for handler clauses as well.
14231
14232         * verify.c (mono_method_verify): fix the exception clause
14233         ordering rules, it should use handler end offset and not
14234         start offset.
14235
14236 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14237
14238         * rawbuffer.c: remove useless warning.
14239
14240 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14241
14242         * threads.h, threads-types.h: move functions to the correct header
14243         (fixes bug#349952).
14244
14245 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14246
14247         * verify.c (mono_method_verify): proper verification
14248         of exception handling clauses ranges and fallthru in
14249         and out of protected blocks.
14250
14251 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14252
14253         * verify.c (mono_method_verify): fixed compilation issue.
14254
14255 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14256
14257         * verify.c (mono_method_verify): a printf slipped in, changed
14258         to use verifier debug macro.
14259
14260 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14261
14262         * verify.c (is_correct_leave): check for filter clauses.
14263
14264         * verify.c (do_filter): added.
14265
14266         * verify.c (mono_method_verify): property verification of leave.
14267
14268
14269 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14270
14271         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14272         Win32 build, until we figure out how to do the proper thing on
14273         Win32.
14274
14275 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14276
14277         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14278         by the previous patch.
14279         
14280         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14281         the assembly resolve handler for refonly assemblies.
14282
14283 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14284
14285         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14286         Make sure only one thread is allowed to commence shutdown, and
14287         don't allow new threads to be started once shutdown is in
14288         progress.
14289
14290 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14291
14292         * verify.c (is_correct_endfilter): added.
14293
14294         * verify.c (is_unverifiable_endfilter): added.
14295
14296         * verify.c (do_endfilter): added.
14297
14298         * verify.c (mono_method_verify): property verification of endfilter
14299         and fixed a corner case or endfinally.
14300
14301 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14302
14303         * verify.h: new flags to support fail fast of unverifiable code and
14304         do non-strict verification. Non-strict verification is required to
14305         have MS runtime compatibility. There are a huge amount of unverifiable
14306         code that it accepts as verifiable. The strict mode verifies the code
14307         as the specs says.
14308         Non-strict mode will be required in cases where code needs to be
14309         accepted as verifiable but fails under strict mode.
14310
14311         * pedump.c: added support to fail fast and non-strict verification.
14312
14313         * verify.c: added support for both fail fast and non-strict verification.
14314
14315 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14316
14317         * verify.c (is_correct_endfinally): added.
14318
14319         * verify.c (mono_method_verify): property verification of endfinally.
14320
14321 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14322
14323         * verify.c (in_any_block): check for filter clauses.
14324
14325         * verify.c (is_correct_rethrow): added.
14326
14327         * verify.c (mono_method_verify): property verification of rethrow.
14328
14329         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14330
14331 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14332
14333         * verify.c (do_throw): added.
14334
14335         * verify.c (mono_method_verify): property verification of throw
14336
14337 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14338
14339         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14340         assemblies. Fixes #346425.
14341
14342 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14343
14344         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14345         FieldBuilders.
14346
14347         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14348
14349         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14350         prevent asserts when this is called with a token which might not be valid.
14351
14352         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14353         lookup_dynamic_token_class with valid_token == FALSE.
14354
14355         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14356
14357         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14358
14359         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14360         
14361 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14362
14363         * gc.c: Don't delay threadpool thread finalization unless Mono is
14364         shutting down.
14365
14366 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14367
14368         * threads.c: turn an assert into a non-fatal warning.
14369
14370 2007-12-09  Robert Jordan  <robertj@gmx.net>
14371
14372         * icall.c (GetVirtualMethod): Add missing argument validation.
14373
14374 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14375
14376         * verify.c (do_cast): added.
14377
14378         * verify.c (mono_method_verify): property verification of castclass and isinst.
14379
14380
14381 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14382
14383         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14384
14385         * verify.c (do_stelem): added.
14386
14387         * verify.c (mono_method_verify): property verification of stelem.X.
14388
14389 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14390
14391         * class.c, class-internals.h: Introduce an environment variable
14392         (MONO_GENERIC_SHARING) through which the extent of generic code
14393         sharing can be controlled (share all classes, share only corlib
14394         classes, or share nothing).
14395
14396         * object.c: Only create runtime generic context for classes for
14397         which sharing is enabled.
14398
14399 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14400
14401         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14402
14403         * verify.c (mono_method_verify): property verification of ldelem.any.
14404
14405 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14406
14407         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14408         added ldelem.X opcodes.
14409
14410         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14411
14412         * verify.c: proper verification of ldelem.X 
14413
14414 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14415
14416         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14417
14418 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14419
14420         * verify.c (mono_method_verify): null literal requires special handling,
14421         the value pushed on stack need to be flagged as so.
14422
14423         * verify.c (do_ldelema): Verify ldelema properly.
14424
14425 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14426
14427         * verify.c: Verify ldlen properly.
14428
14429 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14430
14431         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14432         to the target object's type. Fixes #346160.
14433
14434 2007-12-05  Dick Porter  <dick@ximian.com>
14435
14436         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14437         Solaris needs the same workaround as BSD-derived systems.  Fixes
14438         bug 323524, patch by Burkhard Linke
14439         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14440
14441 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14442
14443         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14444         handle to use when error dialog is shown; otherwise, update mask
14445         to show no error dialog when an error occurs.
14446
14447 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14448
14449         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14450
14451         * class.c (mono_class_get_field_default_value): New helper function to initialize
14452         field->def_type and field->data.
14453
14454 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14455
14456         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14457         the general one.
14458
14459         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14460
14461         * marshal.c: Avoid depending on delegate->method_info being set.
14462
14463         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14464         
14465         * object.c (mono_delegate_ctor): Set delegate->method.
14466
14467         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14468
14469         * appdomain.c: Bump corlib version.
14470
14471 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14472
14473         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14474         equality check if we're comparing canonicalized MonoGenericInsts.
14475
14476 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14477
14478         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14479         accessing class->methods.
14480
14481 2007-11-22  Dick Porter  <dick@ximian.com>
14482
14483         * threads.c: Ensure that the synch_cs is set before trying to use
14484         it.
14485
14486 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14487
14488         * profiler.c: r89126 broke the statistial profiler, unbreak.
14489
14490 2007-11-22  Martin Baulig  <martin@ximian.com>
14491
14492         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14493
14494         * mono-debug.c
14495         (mono_debug_debugger_version): Bump to 3.
14496         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14497         -> mono_debugger_class_initialized().
14498
14499         * mono-debug-debugger.c
14500         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14501
14502         * class.c
14503         (mono_debugger_start_class_init_func): Removed.
14504         (mono_debugger_class_loaded_methods_func): Added.
14505         (mono_class_setup_methods): Call it here.
14506
14507 2007-11-22  Martin Baulig  <martin@ximian.com>
14508
14509         * mono-debug.c
14510         (mono_debug_add_delegate_trampoline): New public method.
14511         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14512
14513         * mono-debug.h
14514         (MonoSymbolTable): Added `global_data_table'.
14515         (MonoDebuggerTypeKind): Removed.
14516
14517 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14518
14519         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14520         these methods.
14521
14522         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14523         
14524 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14525
14526         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14527
14528 2007-11-20  Martin Baulig  <martin@ximian.com>
14529
14530         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14531
14532         * mono-debug-debugger.c
14533         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14534         (mono_debugger_remove_breakpoint): Likewise.
14535         (mono_debugger_check_breakpoints): Likewise.
14536         (mono_debugger_register_class_init_callback): New public method.
14537         (mono_debugger_remove_class_init_callback): Likewise.
14538         (mono_debugger_add_type): Likewise.
14539
14540         * mono-debug-debugger.h
14541         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14542
14543 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14544
14545         * class.c: more interface implementations needed for the
14546         array enumerator (fixes bug #341112).
14547
14548 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14549
14550         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14551         fix ParamName of ArgumentNullExceptions.
14552
14553 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14554
14555         * reflection.c (mono_reflection_encode_sighelper): Generate the
14556         modopts and modreqs.   I have a useless test that crashes monodis,
14557         but that shows the code working.
14558
14559 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14562         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14563
14564 2007-11-15  Dick Porter  <dick@ximian.com>
14565
14566         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14567         When joining a thread, it's the thread that's calling Join that
14568         gets WaitSleepJoin state not the target.  Fixes the standalone
14569         test case in bug 334740, and hopefully the whole bug too.
14570
14571 2007-11-15  Dick Porter  <dick@ximian.com>
14572
14573         * process.c: Read file version info from the files pointed at by
14574         process modules, not the current process.  Fixes bug 315969.
14575
14576         Use windows typedef names in some places to fix warnings on the
14577         windows build.
14578
14579 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14580
14581         * image.c, metadata-internals.h: Added a generic_class_cache hash
14582         to MonoImage for looking up generic classes when sharing generics.
14583
14584 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14585
14586         * sgen-gc.c: warning cleanups.
14587
14588 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14589
14590         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14591         inherited properties.
14592
14593 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14594
14595         * object.c, class-internals.h: Added more information to the
14596         runtime generic context.
14597
14598 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14599
14600         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14601         instead of just the target method. Generalize the abstract method handling to
14602         handle any non-static method.
14603
14604         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14605         mono_marshal_get_delegate_invoke () signature change.
14606
14607 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14608
14609         * class.c, class-internals.h: Made
14610         mono_type_get_basic_type_from_generic () public.  Fixed member
14611         access check for shared generics.
14612
14613         * loader.c: Don't insert field into field cache if it's part of a
14614         non-inflated generic class.
14615
14616         * domain.c, domain-internals.h: The generic sharing context is now
14617         part of the jit info data structure.  Added two accessor
14618         functions.
14619
14620 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14621
14622         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14623         the array Get/Set/Address methods, since the JIT inlines them.
14624
14625         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14626
14627         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14628         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14629
14630         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14631         mono_marshal_get_delegate_invoke signature change.
14632
14633         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14634         an additional argument. Add support for invoking abstract methods.
14635
14636         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14637
14638         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14639
14640 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14641
14642         * class.c: Do field layout for open generic classes as well.
14643
14644 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14645
14646         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14647         other objects, because the threadpool is still around.  Put them
14648         in a list instead and after finalizing all other objects in the
14649         root domain shut down the thread pool and then finalize the
14650         threads.  Fixes bug #337383.
14651
14652         * threads.c, thread-types.h: New mono_thread_create_internal()
14653         function for marking a thread with the threadpool flag before it
14654         started.  Set synch_cs to NULL after freeing it.
14655
14656         * threadpool.c: Mark threadpool threads before they start.
14657
14658 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14659
14660         * reflection.h, reflection.c: don't export random functions
14661         and lazy load dbnull and missing objects.
14662
14663 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14664
14665         * class.c: Initialize COM types if COM interfaces
14666         are present (not just COM classes).
14667         
14668         Code is contributed under MIT/X11 license.
14669
14670 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14671         * reflection.c:
14672         create_dynamic_mono_image: hook module profiler events (dynamic case).
14673         mono_image_basic_init: hook assembly profiler events (dynamic case).
14674
14675 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14676         * profiler.c:
14677         simple_appdomain_unload: completely terminate the profiler
14678         instead of only processing the statistical samples.
14679         simple_shutdown: make sure this is really called exactly once,
14680         even in multithreaded applications, and always listen to
14681         appdomain events.
14682         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14683         here, the "[un]load" functions will do it.
14684         Fixes bugs #333791 and #325261.
14685
14686 2007-11-07  Geoff Norton  <gnorton@novell.com>
14687
14688         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14689         rather than depend on __APPLE__.
14690
14691 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14692
14693         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14694
14695 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14696
14697         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14698         UTF16 MonoString. Fix the crash from bug #335488
14699
14700 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14701
14702         * marshal.c: Correct (for non-Win32 OS) length != size in 
14703         mono_string_from_bstr. Fix #339530.
14704
14705 2007-11-06  Geoff Norton  <gnorton@novell.com>
14706
14707         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14708         to succeed
14709
14710 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14711
14712         * process.c: Added run-time GetProcessId API detection for Windows.
14713
14714 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14715
14716         * reflection.c  (mono_param_get_objects): If a parameter has the
14717         attribute [System.Runtime.InteropServices.Optional] we should
14718         set the DefaultValue of the ParameterInfo to be
14719         System.Reflection.Missing instead of DBNull.
14720
14721         See bug #339013.
14722
14723         (mono_get_reflection_missing_object): New method,
14724         returns the System.Reflection.Missing.Value singleton instance.
14725
14726 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14727
14728         * culture-info-table.h : regenerated.
14729
14730 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14731
14732         * icall.c: Use GetEnvironmentStrings on windows
14733         so we are using the same environment block as 
14734         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14735         #333740.
14736         
14737         Code is contributed under MIT/X11 license.
14738
14739 2007-10-31  Martin Baulig  <martin@ximian.com>
14740
14741         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14742
14743         * mono-debug-debugger.h
14744         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14745
14746 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14749         classes.
14750
14751 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14752
14753         * culture-info-table.h : regenerated.
14754
14755 2007-10-30  Robert Jordan  <robertj@gmx.net>
14756
14757         * icall-def.h, icall.c:
14758         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14759
14760         Code is contributed under MIT/X11 license.
14761
14762 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14763
14764         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14765         inflated class instead of inflating them again.
14766         
14767         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14768         dynamic case.
14769
14770         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14771         Call setup_supertypes () after klass->parent is set.
14772         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14773
14774         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14775         for inflated instances of not yet created dynamic generic classes.
14776         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14777         times from inflated_method.
14778         (methodbuilder_to_mono_method): Ditto.
14779
14780 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * gc.c: code cleanup and removed old untested option of not creating the
14783         finalizer thread.
14784
14785 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14788         creating a jump trampoline for dynamic methods.
14789
14790 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14791
14792         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14793         generic TypeBuilders when called from another method of the same type (bug #335131).
14794
14795
14796 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14799         doesn't seem to work perfectly.
14800         
14801         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14802         called multiple times.
14803         (methodbuilder_to_mono_method): Ditto.
14804         (resolve_object): Inflate FieldBuilder's.
14805
14806 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14807
14808         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14809         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14810         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14811
14812 2007-10-26  Dick Porter  <dick@ximian.com>
14813
14814         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14815         Thread initialisation changes
14816
14817 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14818
14819         * verify.c: fix compatibility check between arrays and System.Array
14820
14821 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14822
14823         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14824         too. Fixes #336999.
14825
14826 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14827
14828         * object.c (mono_value_box): Use typed allocation here.
14829
14830 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14831
14832         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14833         trampoline instead of compiling the method right away.
14834
14835         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14836
14837 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14838
14839         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14840         related fields for dynamic classes. Fixes #334493.
14841
14842 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14843
14844         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14845         
14846         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14847
14848         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14849         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14850
14851         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14852
14853         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14854         if needed.
14855         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14856
14857 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14858
14859         * marshal.c: Use correct key when removing item
14860         from ccw_hash.
14861         
14862         Code is contributed under MIT/X11 license.
14863
14864 2007-10-17  William Holmes  <billholmes54@gmail.com>
14865
14866         *marshal.c: Adding a case to marshal booleans to U1
14867
14868         Code is contributed under MIT/X11 license.
14869
14870 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14871
14872         * class.c (mono_class_from_name): Search the modules compromising dynamic
14873         assemblies. Fixes #331601.
14874
14875 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14876
14877         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14878         exception if the type name contains an assembly component. Fixes #334203.
14879
14880         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14881         modules inside dynamic assemblies. Fixes #334200.
14882         
14883         * reflection.c: Set image->public_key and image->public_key_length;
14884
14885         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14886         fields.
14887
14888         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14889         
14890 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14891
14892         * metadata.c: Implemented correct comparing of generic classes.
14893         An inflated generic class can be equal to a non-inflated one if it
14894         is inflated with generic type variables as type arguments.  Fixes
14895         bug #333798.
14896
14897 2007-10-15  Dick Porter  <dick@ximian.com>
14898
14899         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14900         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14901         81646.
14902
14903         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14904         instead of a monitor lock.  This means that monitor_try_enter and
14905         co can set the thread state safely.
14906         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14907         thread_interrupt_requested, so interrupt actually works.
14908
14909         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14910         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14911         state accessor function
14912
14913 2007-10-15  Martin Baulig  <martin@ximian.com>
14914
14915         * mono-debug.h
14916         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14917         the debugger with the current runtime.
14918
14919 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14920
14921         * object.c, object-internals.h: added the ability to set a single
14922         trampoline for all the slots in a vtable.
14923
14924 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14925
14926         * marshal.c: deal with a possible race condition during multicast
14927         delegate invocation.
14928
14929 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14930
14931         * class.c: ensure value type methods don't have the synchronized
14932         flag set.
14933
14934 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14937         breaks the build.
14938
14939 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14940
14941         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14942         to take an options parameter so that empty entries can be removed during
14943         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14944
14945 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14946
14947         * marshal.c: make sure we don't store the signature from a dynamic
14948         method into the runtime invoke cache (bug #327189).
14949
14950 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14951
14952         * marshal.c: make sure the wrapper methods are properly initialized.
14953
14954 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14955
14956         * metadata.c, metadata-internals.h: Generalized
14957         mono_type_stack_size() to mono_type_stack_size_internal() which
14958         takes an additional argument specifying whether it allows open
14959         types.
14960
14961 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14962
14963         * verify.c (do_invoke_method): handle typedbyref params
14964         correctly and check for unverifiable return values.
14965
14966         * verify.c (do_newobj): fix a warning.
14967
14968 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14969
14970         * verify.c: don't tread typedbyref as allways unverifable,
14971         so uses, like (ld/st)loc.0 are valid. verify for the cases
14972         that it matters, like boxing related operations.
14973
14974 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14975
14976         * verify.c: add verification of the newobj opcode. verification
14977         of delegate instantation still missing due ldftn and virldftn not
14978         pushing the function type on stack
14979
14980 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14981
14982         * class-internals.h: Runtime generic context data structure
14983         definition.
14984
14985         * object.c: Initialization of runtime generic context at runtime
14986         vtable creation time.
14987
14988 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14989         * class.c (mono_class_create_from_typedef,
14990         mono_class_from_generic_parameter, mono_ptr_class_get,
14991         mono_fnptr_class_get, mono_bounded_array_class_get)
14992         * domain.c (mono_domain_create, mono_domain_free)
14993         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14994         * image.c (do_mono_image_load, mono_image_close):
14995         Hooked up load-unload profiler events.
14996
14997 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14998
14999         * domain.c: track statistics about the actual amount of native code
15000         allocated.
15001
15002 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15003
15004         * class.c: the valuetype enumerators don't have the additional
15005         supertypes interfaces.
15006
15007 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15008
15009         * class.c: need more interfaces setup for the IEnumerator<T>
15010         object created for arrays (tests/ienumerator-interfaces.2.cs).
15011
15012 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15013
15014         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15015
15016 2007-10-05  Alp Toker  <alp@atoker.com>
15017
15018         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15019         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15020         #315863.
15021
15022 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15023
15024         * verify.c (verify_type_compatibility_full): verification of
15025         compatibility improved, validates correctly non-strict checks between
15026         native int and I4 types different than (unsigned)int32.
15027
15028         * verify.c (do_store_indirect): added, do all verification of
15029         ldind.X opcodes. 
15030
15031         * verify.c (get_load_indirect_mono_type): renamed to
15032         get_indirect_op_mono_type, as it now returns the MonoType for 
15033         ldind.X and stind.X opcodes.
15034
15035 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15036
15037         * reflection.c: Fix the encoding of generic type definition for
15038         TypeBuilders.
15039
15040         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15041         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15042         be made. Typespec check is done prior to typeref cache lookup.
15043
15044         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15045         mono_image_typedef_or_ref_full.
15046
15047         * reflection.c (encode_generic_class): encode the generic class
15048         directly instead of calling encode_type.
15049
15050         * reflection.c (encode_type): encode the generic type definition
15051         MonoClass as a generic instantiation.
15052
15053         * reflection.c (create_typespec): cache typespec tokens in
15054         the assembly->typespec cache. Don't create typespec for a generic
15055         instance MonoClass. Create typespec for the generic type defintion.
15056
15057         * reflection.c (create_generic_typespec): encode the generic
15058         class directly instead of calling encode_type.
15059
15060         * reflection.c (mono_image_create_token): encode the generic
15061         type definition not using a typespec for MonoType instances.
15062
15063
15064 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15065
15066         Fix #328812
15067         * class.c (mono_image_init_name_cache): Don't return nested
15068         'protected internal' classes.
15069         (mono_class_from_name_case): Likewise.
15070
15071 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15072
15073         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15074           common function used by both DefaultConfig in System.dll and
15075           InternalConfigurationHost in System.Configuration.dll.
15076
15077 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15078
15079         * class.c: automatically add to vectors only a few essential explicit
15080         generic interfaces. The rest of the interfaces that arrays should
15081         provide are currently implicitly added (but still not lazily, see the
15082         design in the discussion of bug#325495 for the details of what is
15083         needed for that). Additionally, implicit interfaces are assigned the
15084         same vtable slot as the explicit interfaces (as they are compatible):
15085         this enables huge memory savings since we don't need to instantiate
15086         as many memthods and as large vtables anymore. Also, Since
15087         GetEnumerator<T> returns an instance of a type that is required to
15088         support a similarly large set of interfaces as arrays, we add
15089         implicit interfaces and interface offset sharing support to those
15090         types, too. This change adds all the required interfaces so that
15091         the anonarray.cs test case in the bug report works (we don't add
15092         all the interfaces to arrays of arrays 3-level deep and more because
15093         of the memory requirements explained in the bug and since they are much
15094         less common: the lazy-loading support will enabled them to work, too).
15095
15096 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15097
15098         * verify.c (merge_stacks): major clean up, all type compatibility
15099         checks are done by verify_type_compatibility. This fix my earlier lack
15100         of understanding of the CLR type system and merge_stacks no longer looks
15101         scary.
15102
15103         * verify.c: fixed some bad spelling.
15104
15105 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15106
15107         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15108         a given stack slock.
15109         
15110         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15111         verify_type_compatibility_full. This removed a near indentical function and fixed
15112         handling of Int32 and IntPtr across all opcodes.
15113
15114 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15115
15116         * class.c: only vectors have the additional generic interfaces.
15117
15118 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15119
15120         * mono-config.c: Use g_strcasecmp instead of
15121         strcasecmp like everywhere else to fix
15122         compilation with MSVC.
15123         
15124         Code is contributed under MIT/X11 license.
15125
15126 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15127
15128         * object.c, object-internals.h: refactored the IMT code to enable
15129         building a single slot at a time and lazily creating the IMT trampolines
15130         and thunks.
15131
15132 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15133
15134         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15135
15136         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15137         Fixes #328501.
15138         
15139 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15140
15141         * loader.c (method_from_methodspec): Rearrange to avoid
15142         un-necessary exposition.  Don't assert out if the method's
15143         declaring type is a generic type definition.
15144
15145 2007-09-28  Martin Baulig  <martin@ximian.com>
15146
15147         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15148
15149 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * class-internals.h: optimize field layout of MonoClass to
15152         requires less cachelines at runtime and save a few bytes on 64 bit
15153         systems.
15154
15155 2007-09-28  Jb Evain  <jbevain@novell.com>
15156
15157         * reflection.c: when encoding type names in custom attributes,
15158         if the type is a closed generic type, its generic arguments
15159         have to be serialized as AssemblyQualifiedName, so that when
15160         they are deserialized, it's possible to re-create them properly.
15161         Fixes #329450.
15162
15163
15164 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15165
15166         * object.c, class-internals.h: added delegate-creation counter.
15167
15168 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15169
15170         * class.c: cleanup of the code that synthetizes interfaces for
15171         arrays in 2.0: saves quit a bit of corlib mempool memory.
15172         Code to fix bug #325495 ifdeffed out for now until the issues
15173         with memory usage and O(n^2) behaviour are fixed.
15174
15175 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15176
15177         * marshal.c: when possible, do not duplicate the name of the methods
15178         in the method builder and in the generated MonoMethod.
15179
15180 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15181         * verify.c: added support for type checking ldind_* opcodes.
15182
15183 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15184
15185         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15186         which is used to distinguish the fully open instantiation of a TypeBuilder
15187         with the rest. This temporary hack is required to restore the property that
15188         the fully open instantiation is the same type of the generic type definition.
15189
15190         * class-internals.h (mono_generic_class_is_generic_type_definition):
15191         new function as part of the internal API.
15192
15193         * class.c (inflate_generic_type): return NULL when the generic inst is
15194         fully open. The fully open generic type is now the same as the generic type
15195         definition for non TypeBuilder types.
15196
15197         * class.c (mono_generic_class_get_class): removed assert since it is
15198         no longer valid, gklass->cached_class can point to the generic type definition.
15199
15200         * class.c (mono_generic_class_is_generic_type_definition): new.
15201
15202         * metadata.c (mono_generic_class_hash): added is_tb_open field
15203         to the hash calculation.
15204
15205         * metadata.c (free_generic_class): if the generic class is associated
15206         with the generic type definition, its field will come from the mempool and
15207         must not be freed.
15208
15209         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15210         new, this function identifies the corner case of a TypeBuilder fully open
15211         instantiation.
15212
15213         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15214         for lookup. Set gclass->cached_class to be the container class in case of
15215         the fully open instantiation of non TypeBuilder types.
15216
15217         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15218         to compare generic classes.
15219
15220         * reflection.c (method_encode_methodspec): remove assert that
15221         no longer is valid.
15222
15223         * reflection.c (mono_reflection_generic_class_initialize): add
15224         an aditional assert to ensure the proper type is used.
15225
15226 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15227
15228         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15229         to enjoy it.
15230
15231 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15232
15233         * verify.c (push_arg): Fixed support for ldarga
15234         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15235         MonoType used as first arg in case of instance calls.
15236
15237 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15238
15239         * verify.c: Support for verifying VAR and MVAR types, 
15240
15241 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15242
15243         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15244         accessors correctly.
15245
15246 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15247
15248         * threads.c: support OSX and other systems in
15249         mono_thread_get_stack_bounds (bug #328026).
15250
15251 2007-09-25  Martin Baulig  <martin@ximian.com>
15252
15253         * mono-debug.h
15254         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15255
15256 2007-09-24  Martin Baulig  <martin@ximian.com>
15257
15258         * mono-debug.h
15259         (MonoDebugClassEntry): Moved the definition of this struct into
15260         mono-debug.c to make it private.
15261
15262         * mono-debug.c
15263         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15264         type table per symbol file, we don't need to store the symfile id
15265         any longer.
15266
15267 2007-09-24  Martin Baulig  <martin@ximian.com>
15268
15269         Create one type table per symbol file, since a `MonoClass *' gets
15270         invalid when its image is unloaded.
15271
15272         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15273         (MonoDebugHandle): Added `type_table'.
15274
15275 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15276
15277         * mempool.c, mempool.h: added mono_mempool_new_size () API
15278         to be able to specify a smaller initial size for the pool.
15279         Adjusted the code to slowly increase pool size before using
15280         the previous default size.
15281         * image.c: use a small initial size for image mempools.
15282
15283 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15284
15285         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15286         Fixes ##320990.
15287
15288         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15289         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15290
15291 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15294         free. Fixes #327438.
15295
15296 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15297
15298         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15299         generic instantiations, etc.
15300         <MONO_TYPE_ARRAY>: Likewise.
15301
15302 2007-09-21  Martin Baulig  <martin@ximian.com>
15303
15304         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15305         these structs were never defined.
15306         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15307
15308 2007-09-21  Martin Baulig  <martin@ximian.com>
15309
15310         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15311
15312 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15313
15314         * image.c: removed the guid hash tables: we can get the same info
15315         without the additional memory usage hit (partially fixes also bug #327052).
15316
15317 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15318
15319         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15320         event to handle unloading methods. After the event is called, the
15321         corresponding MonoMethod* must be considered invalid.
15322         * loader.c (mono_free_method): call the new mono_profiler_method_free
15323         event.
15324
15325 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15326
15327         * domain-internals.h: New flag in MonoJitInfo which marks shared
15328         generic methods.  New hash table (shared_generics_hash) in
15329         MonoDomain to keep track of shared generic methods.  Prototypes
15330         for functions to register and lookup shared generic methods.
15331
15332         * domain.c: Support for registering and looking up shared generic
15333         methods via a hash table (shared_generics_hash) in MonoDomain.
15334
15335         * class-internals.h: New exception to signal failure of shared
15336         compilation of a generic method.  New counters for generics
15337         sharing in MonoStats.
15338
15339 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15340
15341         * image.c, metadata-internals.h: don't keep a file descriptor open
15342         for loaded assemblies (bug#325988).
15343
15344 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15345
15346         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15347         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15348         use the corresponding datatypes.
15349         (type_in_image): Update to changes.
15350         (CleanForImageUserData): Simplify.
15351         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15352         Avoid quadratic behaviour in handling the "stolen" list by
15353         separating the filter predicate out, and by prepending the stolen
15354         items rather than appending them.
15355         (steal_ginst_in_image): Likewise.
15356         (mono_metadata_clean_for_image): Update to changes.
15357
15358 2007-09-19  Martin Baulig  <martin@ximian.com>
15359
15360         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15361
15362 2007-09-19  Martin Baulig  <martin@ximian.com>
15363
15364         * mono-debug.c (mono_debug_cleanup): Don't call
15365         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15366
15367 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15368
15369         Fix crash on 'make run-test' in mcs/errors
15370         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15371         Avoid more potential allocations in mono_class_from_mono_type.
15372         (ginst_in_image): Update to changes.
15373         (gclass_in_image): Rearrange slightly.
15374
15375 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15376
15377         * class.c (mono_class_init): Move the code that sets up class->methods to 
15378         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15379
15380         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15381         canonical instance of an inflated generic signature.
15382         (mono_type_create_from_typespec): Remove an invalid free.
15383
15384         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15385
15386 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15387
15388         * domain-internals.h: added a declaration of the
15389         mono_assembly_load_full_nosearch internal function.
15390
15391         * assembly.c (mono_assembly_load_with_partial_name): use
15392         mono_try_assembly_resolve return value properly.
15393         (mono_assembly_load_full_nosearch): copied the function body from
15394         mono_assembly_load_full, without the code to invoke assembly
15395         search hooks.
15396         (mono_assembly_load_full): calls the above new function and if the
15397         assembly is not resolved, invokes the search hooks.
15398
15399         * appdomain.c (mono_runtime_init): restore the global postload
15400         assembly search handlers.
15401
15402 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15403
15404         * class.c (mono_class_init): Make sure class->methods and class->properties
15405         are never NULL in the generics case.
15406
15407         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15408
15409 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * metadata.c (free_generic_class): Disable some code to fix the build.
15412
15413         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15414
15415         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15416         from the image mempool.
15417
15418         * metadata.c (free_generic_class): Free more data from the inflated class.
15419
15420         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15421
15422         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15423         mempool.
15424         (mono_type_create_from_typespec): Ditto.
15425
15426         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15427         MonoImage to the caller.
15428         (mono_init_internal): Save the opened image in a global variable.
15429         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15430
15431         * reflection.c (resolve_object): Fix a leak.
15432
15433         * metadata.c: Fix the freeing of data in the generics caches.
15434         
15435         * metadata.c (free_generic_inst): Comment this out to fix the build.
15436         (free_generic_class): Ditto.
15437
15438         * metadata.c: Free cached generic methods, instantinations and classes when
15439         they are removed from the caches.
15440         (mono_metadata_free_type): Free the type itself.
15441
15442         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15443         places.
15444
15445 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15446
15447         * boehm-gc.c: restrict managed allocs to __thread supporting
15448         architectures.
15449
15450 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15453         (mono_generic_class_get_class): Fix a leak.
15454
15455         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15456         mono_metadata_free_type ().
15457         (mono_metadata_inflate_generic_inst): Fix a leak.
15458
15459 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15460
15461         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15462
15463         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15464         mempool.
15465
15466         * mono-debug.c (mono_debug_close_image): Fix call to 
15467         g_hash_table_remove ().
15468
15469 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15470
15471         * icall-def.h: redirect all the string ctor to the managed
15472         CreateString () methods.
15473         * string-icalls.c, string-icalls.h: removed dead code for string
15474         ctors and icalls.
15475
15476 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15477
15478         * mono-debug.c: Fix memory leaks.
15479
15480 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15481
15482         * threads-types.h: Implement mono_hazard_pointer_set and 
15483         mono_hazard_pointer_clear macros using do/while(0) to fix
15484         compilation with MSVC.
15485         
15486         Code is contributed under MIT/X11 license.
15487
15488 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15489
15490         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15491         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15492
15493 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15494
15495         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15496         icalls.
15497
15498 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15499
15500         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15501         managed-code allocated as well.
15502
15503 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15504
15505         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15506
15507 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15508
15509         * boehm-gc.c: fixed the build after the AOT changes.
15510
15511 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15512
15513         * wrapper-types.h: Add an ALLOC wrapper type.
15514
15515         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15516         reference managed allocator methods.
15517
15518 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15519
15520         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15521         of Type array and not MonoType, a fix suggested by Hari.
15522         
15523 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15524
15525         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15526         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15527         
15528         Code is contributed under MIT/X11 license.
15529
15530 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15531
15532         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15533
15534 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15535
15536         * image.c (do_mono_image_open): if assembly file fails to open and
15537         MONO_IOMAP is in effect, try to find the path in a
15538         case-insensitive way.
15539
15540         * appdomain.c (mono_runtime_init): do not install postload hooks -
15541         tests show that MS.NET doesn't use anything of that sort to
15542         trigger the AppDomain.AssemblyResolve event.
15543         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15544         made non-static.
15545         (mono_runtime_init): init portability helpers here.
15546
15547         * assembly.c (mono_assembly_load_with_partial_name): if other   
15548         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15549         to resolve the assembly.
15550
15551         * domain-internals.h: added mono_try_assembly_resolve and marked
15552         it as internal.
15553
15554 2007-09-11  Jb Evain  <jbevain@novell.com>
15555
15556         * object-internals.h (MonoReflectionDynamicMethod): add
15557         a `MonoReflectionType *owner` field. The owner is used
15558         * reflection.c:
15559         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15560         method as the class declaring the dynamic method.
15561         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15562         dynamic method to the declaring type of the methodbuilder.
15563
15564 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15565
15566         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15567         rules for calling methods via reflection.
15568
15569 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15570
15571         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15572         Inflate MonoType's.
15573
15574 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15575
15576         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15577         provide a managed method that does fast allocations without needing
15578         a managed->unmanaged transition. Boehm GC implementation currently
15579         enabled for ptrfree objects on sane architectures.
15580
15581 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15582
15583         * marshal.c, marshal.h: exported a couple of useful functions and
15584         added mono_mb_get_label () to easily handle backward branches.
15585
15586 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15587
15588         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15589
15590 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15591
15592         * loader.c (find_method): Fixed the regression introduced while
15593         fixing bug #81466.
15594
15595 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15596
15597         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15598         well.
15599         
15600         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15601         icall.c reflection.c: Pass a MonoGenericContext argument to 
15602         mono_lookup_dynamic_token ().
15603
15604         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15605         #82744.
15606         
15607 2007-09-09  Robert Jordan  <robertj@gmx.net>
15608
15609         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15610         for generic methods.
15611
15612         * object.c (mono_object_get_virtual_method): Handle generic methods.
15613         Fixes bug #78882.
15614
15615         Code is contributed under MIT/X11 license.
15616
15617 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15618
15619         * image.c: fix locking in mono_image_load_file_for_image ().
15620
15621 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15622
15623         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15624         used only as a cache: added an icall to fill it.
15625
15626 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15627
15628         * reflection.h: exposed mono_reflection_free_type_info
15629         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15630         since mono_reflection_bind_generic_parameters makes a copy of it.
15631         * reflection.c (free_type_info): subinfos should be freed.
15632         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15633         made non static.
15634         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15635         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15636         this fixes #82695 and #81726.
15637    
15638
15639 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15640
15641         * process.h, process.c:  added support for user profile/info in
15642           ProcessStartInfo. For now only Windows works.
15643
15644 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15645
15646         * metadata.c: consider the generic arguments when comparing
15647         signatures (bug #82614).
15648
15649 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15650
15651         * cil-coff.h, image.c: updated assembly loader to cope with the
15652         PE32+ 64 bit file format.
15653
15654 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15655
15656         * assembly.c, class.c, domain.c, loader.c: remove useless
15657         inclusion of cil-coff.h.
15658
15659 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15660
15661         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15662         if interface is marked with CoClassAttribute. 
15663    
15664         Code is contributed under MIT/X11 license.
15665
15666 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15667
15668         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15669         if it's seen twice in major collections.
15670
15671 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15672
15673         * sgen-gc.c: big objects are not copied to the gray area, but they
15674         need to be considered for scanning, too, if they are brought alive
15675         by an object ready for finalizations or a survived one.
15676
15677 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15678
15679         * sgen-gc.c: properly account the number of disappearing links when
15680         they are nullified.
15681
15682 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15683
15684         * sgen-gc.c: share the code to scan the registered roots between the
15685         different types of collections.
15686
15687 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15690
15691 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15692
15693         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15694         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15695
15696 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15697
15698         * security-manager.c (mono_security_manager_get_methods):
15699         LinkDemandSecurityException now has 2 arguments instead of 3.
15700
15701 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15704         platforms which need it.
15705
15706 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15707
15708         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15709         dtor.
15710
15711 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15712
15713         * threads.c: free the thread static data on thread exit.
15714
15715 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15716
15717         * class.c: walk the hierarchy to find the generic definition for
15718         a class (fixes runtime part of bug #82498).
15719
15720 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15721
15722         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15723         ...
15724
15725         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15726
15727 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15728
15729         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15730
15731 2007-08-24  Robert Jordan  <robertj@gmx.net>
15732
15733         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15734
15735 2007-08-24  Jb Evain  <jbevain@novell.com>
15736
15737         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15738         for byref types.
15739
15740 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15741
15742         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15743         #82286.
15744
15745 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * assembly.c: Fix a warning.
15748         
15749 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15750
15751         * appdomain.c: parse the <runtime> section looking for the probing
15752         element with the 'privatePath' attribute, which sets additional
15753         directories in which the runtime should look for assemblies.
15754
15755 2007-08-23  Robert Jordan  <robertj@gmx.net>
15756
15757         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15758         Fixes #82499.
15759
15760 2007-08-23  Martin Baulig  <martin@ximian.com>
15761
15762         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15763         _mono_debug_init_corlib() and remove it from the header file.
15764
15765 2007-08-23  Martin Baulig  <martin@ximian.com>
15766
15767         * mono-debug-debugger.c
15768         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15769         don't notify the debugger about it.
15770
15771         * mono-debug-debugger.h
15772         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15773
15774 2007-08-23  Robert Jordan  <robertj@gmx.net>
15775
15776         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15777         Code is contributed under MIT/X11 license.
15778
15779 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15780
15781         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15782
15783 2007-08-22  Martin Baulig  <martin@ximian.com>
15784
15785         * mono-debug.c: Store debugging info on a per-domain basis and
15786         free it on domain unload.  Add support for unloading symbol files.
15787
15788         * mono-debug.h
15789         (MonoDebugList): New typedef.
15790         (MonoSymbolTable):
15791         - add `data_tables and `type_table'.
15792         - replace 'symbol_files' and `num_symbol_files' with a
15793           `MonoDebugList *'.
15794         (mono_debug_data_table): Removed.
15795         (mono_debug_list_add): New public function.
15796         (mono_debug_list_remove): New public function.
15797         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15798         (mono_debug_init_2_memory): Renamed into
15799         mono_debug_open_image_from_memory().
15800         (mono_debug_close_image): New public function.
15801         (mono_debug_domain_create): Likewise.
15802         (mono_debug_domain_unload): Likewise.
15803         (MONO_DEBUGGER_VERSION): Bump to 60.
15804
15805         * mono-debug-debugger.h
15806         (MonoDebuggerEvent):
15807         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15808         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15809         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15810         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15811           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15812         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15813           meaning.
15814         (mono_debugger_add_symbol_file): Removed.
15815         (mono_debugger_add_type): Removed.
15816         (mono_debugger_lookup_type): Removed.
15817         (mono_debugger_lookup_assembly): Removed.
15818
15819         * domain.c
15820         (mono_domain_create): Call mono_debug_domain_create().
15821         (mono_init_internal): Call mono_debug_init_corlib().
15822
15823         * assembly.c
15824         (mono_assembly_close): Call mono_debug_close_image().
15825
15826 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15827
15828         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15829         mmap call.
15830
15831 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15832
15833         * sgen-gc.c: ensure section->pin_queue_end is initialized
15834         correctly when non pinning objects in the section have been found.
15835
15836 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15837
15838         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15839         containing a list of directories separated by ':'. MSDN docs say
15840         the directories should be separated with ';'. Part of a bugfix for
15841         bug #81446
15842
15843 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15844
15845         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15846         it should MonoType and not MonoClass.
15847
15848 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15849
15850         * culture-info-table.h : regenerated.
15851
15852 2007-08-20  William Holmes  <billholmes54@gmail.com>
15853
15854         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15855          to call ReplaceFile Kernel32 on windows or in io-layer.
15856         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15857         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15858          as an internal call.
15859
15860         Code is contributed under MIT/X11 license.
15861
15862 2007-08-20  Jb Evain  <jbevain@novell.com>
15863
15864         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15865         and MONO_EXCEPTION_FIELD_ACCESS.
15866
15867         * debug-helpers.[c|h]: new mono_field_full_name function.
15868
15869 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15870
15871         * class.c: Removed class_security_level() and moved it to
15872         security-core-clr.c.
15873
15874         * security-core-clr.c, security-core-clr.h: class_security_level()
15875         is now public and renamed to mono_security_core_clr_class_level().
15876         It also looks for security attributes in the classes a class is
15877         nested in.
15878
15879 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15880
15881         * security-core-clr.c, security-core-clr.h: CoreCLR security
15882         utility functions.
15883
15884         * Makefile.am: Added security-core-clr.[ch].
15885
15886         * security-manager.c, security-manager.h: Functions and enum for
15887         setting and getting the security mode.
15888
15889         * class.c: CoreCLR security checks.
15890
15891 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15892
15893         * icall-def.h, process.c, process.h: implemented icall to get
15894         user/system processor times.
15895
15896 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15897
15898         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15899         reader-lock-free jit_info_table.
15900
15901 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15902
15903         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15904
15905         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15906
15907         * object-internals.h (MonoException): Add missing _data member.
15908
15909 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15910
15911         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15912         checking that only methods with matching qname or fqname are picked
15913         from implemented interfaces.
15914
15915 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15916
15917         * verify.c (do_newarr):added, do type verification of
15918         newarr ops, push the right value on the eval stack.
15919         * verify.c (mono_method_verify): use do_newarr
15920
15921
15922 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15923
15924         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15925         factored the common code into get_boxable_mono_type, which
15926         is now using mono_type_get_full, this fixed byref related tests.
15927
15928 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15929
15930         * class.c: added mono_type_get_full, this function has the same
15931         behavior of mono_class_get_full but the returned MonoType has
15932         all metadata of the associated token in case of a typespec token.
15933         * class.c: added mono_type_retrieve_from_typespec, used by 
15934         mono_type_get_full to retrieve the token type.
15935         * class.c (mono_class_create_from_typespec): changed to use
15936         mono_type_retrieve_from_typespec.
15937         * class.c (mono_ldtoken): changed to use mono_type_get_full
15938         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15939         * class-internals.h: exported mono_type_get_full for internal use.
15940
15941 2007-08-16  Jb Evain  <jbevain@novell.com>
15942
15943         * domain.c (supported_runtimes): add entry for
15944         the 'moonlight' runtime version.
15945
15946 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15947
15948         * verify.c (mono_method_verify): small typo sliped in.  
15949
15950 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15951
15952         * verify.c (do_unbox_value): added, do type verification of
15953         unboxing ops
15954         * verify.c (mono_method_verify): use do_unbox_value
15955
15956
15957 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15958
15959         * verify.c (dump_stack_value): fixed typo, was printing string
15960         instead of object on stack.
15961         * verify.c (do_box_value): moved the byref check up as it leads
15962         to invalid code and should be done earlier.
15963         * verify.c: improved error messages for and ldobj
15964
15965 2007-08-15  William Holmes  <billholmes54@gmail.com>
15966
15967         * marshal.c (emit_marshal_custom): Omit the call to 
15968           marshal_native_to_managed when calling native to managed 
15969           and the argument is specified as an out argument.
15970
15971         Code is contributed under MIT/X11 license.
15972
15973 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15974
15975         * verify.c: fixed the type checks for generics, function pointers and vectors.
15976         Added type verification for ldobj and ldtoken. The verifier
15977         would segfault if header or signature of a method contained references
15978         to non-existant types.
15979
15980 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15981
15982         * marshal.c (cominterop_get_ccw): Patch from
15983         Bill Holmes to no walk up interface hierarchy. 
15984         All parent methods should be present in the interface for COM.
15985    
15986         Code is contributed under MIT/X11 license.
15987
15988 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15989
15990         * marshal.c (emit_marshal_com_interface): Patch from
15991         Bill Holmes to handle COM Interfaces as return values
15992         for native->managed calls.
15993    
15994         Code is contributed under MIT/X11 license.
15995
15996 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15997
15998         * marshal.c (cominterop_get_idispatch_for_object): Implement
15999         for runtime callable wrappers.
16000    
16001         Code is contributed under MIT/X11 license.
16002
16003 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16004
16005         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16006         so 2.0 types are accessible
16007
16008
16009 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16010
16011         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16012         once we load mscorlib.   Due to the order in which we initialize,
16013         the mono_assembly_load_full routine that loads mscorlib did not
16014         load friends.   We now load it once we load the
16015         mono_defaults.internals_visible_class class. 
16016
16017         * assembly.c: Expose the mono_load_friend_assemblies method.
16018
16019 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16020
16021         * verify.c: improved the handling of boxing, better
16022         type checking for unary ops and conversion. Fix bug
16023         regarding managed pointer compatibility checking
16024
16025 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16026
16027         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16028
16029         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16030
16031 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16032
16033         * reflection.c (dup_type): Remove.
16034         * class.c (dup_type): Remove.
16035         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16036         instead of the dodgy 'dup_type'.
16037         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16038         handle the case where 'dup_type' needed the second argument.
16039
16040 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * domain.c: Fix a warning.
16043
16044 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16045
16046         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16047         checking that methods with the same fqname are not overridden
16048         with a method from an ancestor.
16049
16050 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16051
16052         * threads.c (free_thread_static_data_helper): Avoid a crash if
16053         thread->static_data is not yet set.
16054
16055 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16056
16057         * marshal.c: Use correct image when emitting
16058         native wrapper for COM calls.
16059    
16060         Code is contributed under MIT/X11 license.
16061
16062 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16063
16064         * icall-def.h, security.c, security.h :
16065           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16066
16067 2007-08-07  Martin Baulig  <martin@ximian.com>
16068
16069         * mono-debug-debugger.h
16070         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16071
16072         * domain.c (mono_domain_free): Call
16073         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16074
16075 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16076
16077         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16078         * verify.c (in_same_block): code should test if either offset is inside the clauses
16079         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16080         and filter blocks
16081
16082 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16083
16084         * image.c (mono_image_close): Fix a leak.
16085
16086         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16087
16088         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16089
16090 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16091
16092         * domain.c, threads.c, threads-types.h: fix memory retention issue
16093         with thread static variables not being cleared on domain unload.
16094         Reuse thread static slots after domain unload.
16095
16096 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16099         nullable type.
16100
16101         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16102         now done in mono_runtime_invoke_array.
16103
16104         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16105         receiver is a nullable type.
16106
16107         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16108         generic parameter.
16109
16110 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16111
16112         * marshal.c: Implement COM Objects as return type for 
16113         managed->unmanaged calls. Added Release calls for COM Object
16114         out/return values in managed->unmanaged calls.
16115
16116         Code is contributed under MIT/X11 license.
16117
16118 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16119
16120         * threads.h, threads-type.h: move the hazard pointer declarations
16121         to the private header.
16122
16123 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16124
16125         * file-io.c, appdomain.c: memory leak fixes.
16126
16127 2007-08-02  Dick Porter  <dick@ximian.com>
16128
16129         * socket-io.c
16130         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16131         SO_REUSEADDR setting into io-layer/sockets.c.
16132
16133 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16134
16135         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16136         from Object when called on a generic parameter. Fixes #82211.
16137
16138 2007-08-01  Dick Porter  <dick@ximian.com>
16139
16140         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16141         Fixes bug 79250 yet again.
16142
16143 2007-07-30  Martin Baulig  <martin@ximian.com>
16144
16145         Merged the `debugger-dublin' branch.
16146
16147         * mono-debug.h
16148         (MonoDebugDataTable): New typedef.
16149         (MonoDebugMethodAddressList): New typedef.
16150         (MonoDebugWrapperData): Removed.
16151         (MonoDebugSymbolTable): Removed `current_data_table',
16152         `current_data_table_size', `current_data_table_offset'.
16153         (MonoDebugDataItemType): Moved into mono-debug.c.
16154         (MonoDebugMethodJitInfo): Remove `address'.
16155         (mono_debug_data_table): New global variable.
16156         (mono_debug_lookup_method_addresses): New public function.
16157         (mono_debug_find_method): Take a `MonoMethod *', not a
16158         `MonoDebugMethodInfo *'.
16159
16160         * mono-debug.c: Drop support for the old symbol tables.
16161
16162 2007-06-28  Martin Baulig  <martin@ximian.com>
16163
16164         * mono-debug.c (mono_debug_debugger_version): New public variable.
16165
16166 2007-07-31  William Holmes  <billholmes54@gmail.com>
16167
16168         * metadata.c Changed mono_type_create_from_typespec to not insert
16169           the type into the hash map until after
16170           do_mono_metadata_parse_type has completed.
16171         Fixes Bug #82194
16172         Code is contributed under MIT/X11 license.
16173
16174 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16175
16176         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16177         generic parameter. Fixes #82211.
16178
16179 2007-07-27  Jb Evain  <jbevain@novell.com>
16180
16181         * pedump.c (dump_metadata, dump_metadata_header): dump
16182         versions contained in the metadata header.
16183
16184 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16185
16186         * threads.c: register small_id_table with the GC.
16187
16188 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16189
16190         * threads.c, threads.h, class-internals.h, object-internals.h:
16191         Hazard pointers, to be used by lock-free parallel algorithms.
16192
16193 2007-07-26  Dick Porter  <dick@ximian.com>
16194
16195         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16196         routine on non-windows platforms, as I've not managed to think of
16197         a non-kludgy way of doing this.  Finishes off bug 78739.
16198
16199 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16200
16201         * object.c: properly setup interface_bitmap in proxy vtables.
16202
16203 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16204
16205         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16206         to create unique shadow copy target directories, use the domain's
16207         serial number instead. Each domain gets a unique target directory
16208         that way.
16209
16210         * domain.c (mono_domain_create): added code to increment domain
16211         shadow copy serial number and cache the value in the current
16212         domain structure.
16213
16214         * domain-internals.h (struct _MonoDomain): added a new field -
16215         shadow_serial to hold the serial number used in generation of
16216         shadow-copy directories. This is to make sure that the directory
16217         name is unique for each and every domain created. We avoid a race
16218         condition with overriding assemblies already in use by other app
16219         domains.
16220
16221 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16222
16223         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16224         binding generic parameters.
16225
16226 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16227
16228         * metadata.c (do_mono_metadata_parse_generic_class): Use
16229         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16230         error.
16231
16232 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16233
16234         * loader.c, class-internals.h, reflection.c: removed the per-method
16235         generics hashtable: we use the global one through the call of
16236         mono_class_inflate_generic_method ().
16237
16238 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16239
16240         * class.c, metadata.c, class-internals.h: introduce yet another
16241         generics global cache for inflated methods (fixes 98% of the perf
16242         issue in bug #81806).
16243
16244 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16245
16246         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16247         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16248         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16249         return a MonoGenericInst containing (a copy) of those types.
16250         (mono_metadata_inflate_generic_inst): Update to changes.
16251         (mono_metadata_parse_generic_inst): Likewise.
16252         (mono_get_shared_generic_inst): Likewise.
16253         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16254         (mono_reflection_bind_generic_method_parameters): Likewise.
16255         * metadata-internals.h: Likewise.
16256         * icall.c (free_generic_context): Kill.
16257         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16258
16259         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16260         mono_metadata_type_dup.
16261         * marshal.c (mono_mb_create_method): Likewise.
16262
16263         * metadata.c (mono_metadata_type_dup): Rename from
16264         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16265         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16266         * marshal.c, metadata-internals.h: Update to changes.
16267
16268 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16269
16270         * class.c: fixed a small leak for array classes and removed warning.
16271
16272 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16273
16274         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16275         Return 0x8000000 for return parameters. Fixes #82161.
16276
16277 2007-07-21  Marek Habersack  <grendello@gmail.com>
16278
16279         * appdomain.c (get_shadow_assembly_location): append the current
16280         ticks value to the path. Avoids overwriting the same assemblies by
16281         several threads at the same time.
16282
16283 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16284         and Raja R Harinath  <rharinath@novell.com>
16285
16286         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16287         Simplify slightly.
16288         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16289         property for testing if a method is a generic method definition.
16290
16291 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16292
16293         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16294
16295 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16296
16297         * verify.c: used function from private branch, reverted to the one in class.h 
16298
16299 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16300
16301         * verify.c: a typo slipped in and the code wont compile
16302
16303 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16304
16305         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16306         disabled box instruction as it is doing the wrong thing
16307         improved stack dump messages, now it is easier to debug type related issues
16308
16309
16310 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16311
16312         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16313
16314 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16315
16316         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16317         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16318         grouped with class and valuetype. This change will simply 
16319         the code as it should be handled just like unmanaged pointers.
16320
16321 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16322
16323         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16324
16325 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16326
16327         * verify.c: several stack merge issues fixed, reference comparisons now
16328         check the type size. strict type check now works correctly.
16329         added more uses of IS_MANAGED_POINTER macro.
16330         fixed issues pointed by running the test suite against .net.
16331         
16332
16333 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16334
16335         * class.c, loader.c, class-internals.h: Removed the
16336         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16337         defines.
16338
16339         * icall.c: Better error checking in some internal reflection
16340         methods.
16341
16342 2007-07-18  William Holmes  <billholmes54@gmail.com>
16343
16344         * filewatcher.c : removed unused variable 'filename' in 
16345           ves_icall_System_IO_FSW_SupportsFSW
16346
16347 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16348
16349         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16350         obsolete, removed.
16351
16352 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16353
16354         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16355         
16356         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16357
16358 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16359
16360         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16361         Implement generics support.
16362         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16363
16364         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16365         type_args and method_args arguments.
16366         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16367         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16368         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16369
16370 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16371
16372         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16373           It adds a rootimage parameter to mono_reflection_get_type_internal,
16374           adds new function mono_reflection_get_type_with_rootimage and use
16375           the rootimage to resolve the types instead of the current image
16376
16377 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16378
16379         * culture-info-table.h: Forgot to update after r78304.
16380
16381 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16382
16383         * class.c (mono_class_is_open_constructed_type)
16384         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16385
16386 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16387
16388         * class.c (mono_bounded_array_class_get):  method fails if used with
16389         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16390         avoiding calculating the size for such array as it cannot be instantiated.
16391         Fix bug #82015
16392
16393 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16394
16395         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16396         field.
16397         * metadata.c, reflection.c: Update to changes.
16398
16399 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16400
16401         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16402         mono_class_is_valid_enum, they are used to valide a enum when loading.
16403         * reflection.c: used new functions to throw TypeLoadException when and
16404         invalid enum is build with TypeBuilder. Fixes #82018
16405   
16406 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16407
16408         * object.c: forgot commit of mono_class_setup_methods () to access
16409         iface->methods.
16410         * object-internals.h: added a few more handy fields to
16411         MonoIMTCheckItem.
16412
16413 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16414
16415         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16416         iface->methods.
16417
16418 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16419
16420         * class-internals.h, object-internals.h, object.c: IMT-based
16421         interface invocation core from Massimiliano Mantione
16422         (massi@ximian.com) with a reworked arch-specific interface,
16423         bsearch implementation and a few bugfixes and memory savings by me.
16424
16425 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16426
16427         * class.c (mono_class_create_from_typedef): mono would segfault if 
16428         an enum did not have a __value field. It now throws a TypeLoadException
16429         for such cases. Fix bug #82022
16430
16431 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16432
16433         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16434
16435 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16436
16437         * class.c (mono_class_init): If a class is already inited but has
16438         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16439
16440 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16441
16442         * class.c: Properly handle the case of an unimplemented interface
16443         method.  Fixes: 81673.
16444
16445 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16446
16447         * class-internals.h, object.c: cleanup patch from massi: use
16448         MonoVTable->interface_bitmap since the vtable interfaces offset array
16449         is going away.
16450
16451 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16452
16453         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16454         GetMDStreamVersion icall instead.
16455
16456 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16457
16458         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16459         not use mono_dl_build_path() with a full library name: makes
16460         fallbacks to libgaim and libfam work.
16461
16462 2007-07-06  William Holmes  <billholmes54@gmail.com>
16463
16464         * assembly.c: Added a continue statement in probe_for_partial_name when
16465          parse_assembly_directory_name fails.  Fixes : 82002
16466
16467 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16468
16469         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16470         and added a verification  for TYPEDBYREF.
16471         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16472         make native int interchangeable with int32 and some small cleanup and formating.
16473         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16474         handle byref of byref.
16475         * verify.c (push_local): handle byref of byref.
16476         * verify.c (do_binop): invalid mix of values is unverifiable
16477         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16478         added visibility checks
16479         * verify.c (field related method): added visibility checks
16480         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16481
16482 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16483
16484         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16485         string.
16486
16487 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16488
16489         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16490
16491         * marshal.c (emit_marshal_string): When returning a string from managed code,
16492         allways make a copy even for unicode strings. Fixes #81990.
16493
16494 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16495
16496         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16497         of byref generic inst types (bug #81997).
16498
16499 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16500
16501         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16502         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16503
16504 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16505
16506         * marshal.c (emit_marshal_string): Add support for unicode strings in
16507         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16508
16509 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16510
16511         * verify.c: field load/store are now verified, missing only access checks now
16512
16513 2007-06-28  Martin Baulig  <martin@ximian.com>
16514
16515         * mono-debug.c (mono_debug_debugger_version): New public variable.
16516
16517 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16518
16519         * locales.c: When constructing DateTimeFormat or NumberFormat for
16520         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16521         MonoCultureInfo contructed from the current locale is always
16522         read-only and has UseUserOverride set to true. All MonoCultureInfo
16523         instances returned for GetCultures have both IsReadOnly and
16524         UseUserOverride set to true. Fixes part of bug #81930.
16525
16526 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16527
16528        * icall-def.h: Update System.__ComObject icalls
16529        * marshal.c: Avoid managed transition (and object creation)
16530        when looking up COM interface in RCW.
16531        * marshal.h: Ditto.
16532        
16533        Code is contributed under MIT/X11 license.
16534
16535 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16536
16537         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16538         to avoid crashes during assembly unloading.
16539
16540 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16541
16542         Fix MethodInfo.IsGenericMethodDefinition
16543         * reflection.c (mono_reflection_bind_generic_method_parameters):
16544         Rearrange code to ensure we always uses a generic method definition.
16545         * class.c (mono_class_inflate_generic_method_full): Set
16546         'generic_container' field only for generic method definitions.
16547         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16548         Use presense of 'generic_container' field as indication of being a
16549         generic method definition.
16550
16551 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16552
16553         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16554
16555         * object-internals.h: Reflect changes in the layout of the managed Delegate
16556         class.
16557         
16558         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16559         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16560         runtime memory used by the dynamic method. Fixes #77146.
16561
16562 2007-06-21  Dick Porter  <dick@ximian.com>
16563
16564         * file-io.h: 
16565         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16566         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16567         81767.
16568
16569 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16570
16571         * reflection.c (method_encode_methodspec): Add a tripwire.
16572         * class.c (inflate_generic_type): The fully open generic type is
16573         not the same as the generic type definition.
16574
16575 2007-06-21  Martin Baulig  <martin@ximian.com>
16576
16577         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16578
16579         * mono-debug-debugger.h
16580         (MonoDebuggerBreakpointInfo): Removed.
16581         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16582         (mono_debugger_remove_breakpoint): Likewise.
16583         (mono_debugger_breakpoint_callback): Likewise.
16584         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16585
16586 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16587
16588         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16589         generic type is not the same as the generic type definition.
16590         * class.c (mono_generic_class_get_class): Likewise.
16591
16592 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16593
16594         * icall.c: The second argument to 
16595         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16596         is a MonoType not a MonoClass.
16597
16598 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16599
16600         * verify.c: support for function pointers in the verifier
16601
16602 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16603
16604         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16605
16606 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16607
16608         * assembly.c: removed Mono.Data.SqliteClient from the list of
16609         forward-compatible assemblies as it breaks the ABI (bug #81899).
16610
16611 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16612
16613         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16614         lookup/update with the loader lock.
16615         * reflection.c (mono_class_bind_generic_parameters): No need to
16616         protect mono_metadata_lookup_* with the loader lock.
16617         * class.c (inflate_generic_type): Likewise.
16618         
16619         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16620         on a generic instantiated type.
16621
16622 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16623
16624         *verify.c: produce meanfull error messages on verification error
16625         *verify.c: fixed some cases of verification errors reported as validation errors
16626         *pedump.c: fixed the error name array, now it shows validation errors properly
16627         *verify.h: fixed the contant that should be used for verification errors
16628
16629 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16630
16631         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16632         for bug #77596, 81858 and 80743 (generics data structures on domain
16633         unload).
16634
16635 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16636
16637         Avoid allocating 'MonoGenericContext' on the heap.
16638         * class-internals (_MonoMethodInflated::context): Make field
16639         inline, not a pointer.
16640         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16641         stack.  Use the context embedded within the inflated method as the
16642         hash key, rather than 'new_context'.
16643         * class.c (inflate_generic_context): Simplify.  Return a struct
16644         rather than allocating on the heap.
16645         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16646         doesn't salt away a copy of the context -- simplifying the
16647         lifetime rules of a 'MonoGenericContext *'.
16648         (mono_method_get_context): Return pointer to embedded context.
16649         (setup_generic_array_ifaces): Allocate temporary context on stack.
16650         * reflection.c (inflate_mono_method): Likewise.
16651         (mono_reflection_bind_generic_method_parameters): Likewise.
16652         Use the context embedded within the inflated method as the hash key.
16653
16654         Avoid a source of allocation of 'MonoGenericContext'.
16655         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16656         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16657         * class.c: Update to changes.
16658         (mono_generic_class_get_context): Simplify drastically.  Now just
16659         returns a pointer to the field.
16660         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16661         argument as a const pointer.
16662         (mono_metadata_generic_context_equal): Likewise.
16663         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16664         Update to changes.
16665
16666 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16667
16668         * verify.c improved the handling of brtrue/brfalse, factored out common code
16669
16670 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16671
16672         Kill MonoGenericMethod.
16673         * class-internals.h (MonoGenericContext::method_inst): Rename from
16674         'gmethod' and convert to a MonoGenericInst.
16675         (MonoGenericMethod): Remove.
16676         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16677         * loader.c (method_from_methodspec): Update to changes.  Use a
16678         MonoGenericContext as the key to the hashtable.
16679         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16680         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16681         (mono_metadata_generic_context_hash): Likewise from
16682         'mono_metadata_generic_method_hash'.  Change hash function.
16683         (mono_metadata_load_generic_params): Update to changes.
16684         (mono_get_shared_generic_method): Remove.
16685         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16686         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16687         (inflate_generic_context): Likewise.
16688         (mono_class_inflate_generic_method_full): Likewise.
16689         (setup_generic_array_ifaces): Likewise.
16690         (mono_class_create_from_typespec): Likewise.
16691         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16692         (method_encode_methodspec): Update callsite.
16693         (reflection_methodbuilder_to_mono_method): Update to changes.
16694         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16695         MonoGenericContext as the key to the hashtable.
16696         (inflate_mono_method): Update to changes.
16697
16698         * class-internals.h (MonoGenericMethod::container): Remove.
16699         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16700
16701 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16702
16703         * profiler-private.h, profiler.c, profiler.h: added API to profile
16704         exception events.
16705
16706 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16707
16708         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16709
16710 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16711
16712         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16713         Fixed overflow and underflow not aborting the verification process.
16714
16715 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16716
16717         * class-internals.h (MonoStats): Added stats entries for dynamic
16718         code allocations.
16719
16720 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16721
16722         * loader.c (mono_free_method): Free header->locals and header->clauses.
16723
16724         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16725         dynamic case.
16726
16727         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16728
16729         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16730
16731 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16732
16733         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16734         the tables.
16735
16736 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16737
16738         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16739
16740 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16741
16742         MonoGenericMethod on a diet
16743         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16744         here ...
16745         (_MonoGenericMethod::reflection_info): ... from here.
16746         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16747         Update to changes.
16748         * reflection.c (inflate_mono_method): Likewise.
16749         (mono_reflection_bind_generic_method_parameters): Likewise.
16750
16751 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16752
16753         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16754         *verify.c: factored long ldarg forms to share code with short forms
16755
16756 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16757
16758         *verify.c: fixed code formating factored some duplicate code
16759         into a new function
16760
16761         *verify.h: fixed binary incompatibility introduced earlier
16762
16763         *pedump.c: fixed formating
16764
16765 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16766
16767         Fix assertion when disassembling Mono.C5.dll
16768         * loader.c (method_from_methodspec): Avoid inflating a method
16769         twice with the same context.  If the methodref is inflated, use
16770         the declaring method instead.
16771
16772         * class.c (mono_class_from_generic_parameter): Fix case similar to
16773         bug #81830 handled below, but for method containers.
16774
16775 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16776
16777         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16778         get_shared_generic_class.  Directly inflate the instance.
16779         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16780         (inflate_generic_class): Delete.
16781         (get_shared_generic_class): Delete.  Move setting of
16782         'cached_class' and 'cached_context' ...
16783         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16784
16785         * metadata.c (mono_metadata_lookup_generic_class): Change
16786         signature to take the components of a MonoGenericClass rather than
16787         an allocated MonoGenericClass.  Change semantics to be intern-like.
16788         * reflection.c (mono_class_bind_generic_parameters): Update to
16789         changes.  Make locking region tighter.
16790         * class.c (inflate_generic_class): Update to changes.
16791         (get_shared_generic_class): Likewise.
16792         * metadata-internals.h: Likewise.
16793
16794         * reflection.c (mono_class_bind_generic_parameters): Take and
16795         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16796         (mono_reflection_bind_generic_parameters): Use
16797         'mono_class_bind_generic_parameters' rather than duplicate the code.
16798         * class.c (mono_bounded_array_class_get): Update to changes.
16799         * object-internals.h: Likewise.
16800
16801         * reflection.c (mono_class_bind_generic_parameters): Only support
16802         parameterizing generic type definitions.  Remove support for other
16803         open types.
16804
16805 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16808
16809         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16810         in the dynamic case.
16811
16812 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16813
16814         * threads.c: When cleaning up thread, reset the Background bit.
16815         Fixes bug #81720.
16816
16817 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16818
16819        * metadata.c: Move variable declarations to top of scope.
16820        * verify.c: Move variable declarations to top of scope.
16821
16822        Code is contributed under MIT/X11 license.
16823
16824 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16825
16826         * reflection.c (mono_class_bind_generic_parameters): Replace
16827         open-coded loop with mono_metadata_inflate_generic_inst.
16828
16829         * class.c (get_shared_generic_class): Don't call
16830         mono_get_shared_generic_inst.  Use the container's own
16831         'class_inst'.
16832
16833         * metadata.c (mono_metadata_load_generic_params): Move
16834         initialization of 'context' field here from ...
16835         * class.c (mono_class_create_from_typedef): ... here, and ...
16836         * loader.c (mono_get_method_from_token): ... here.
16837
16838         * class.c (get_shared_generic_class): Rename from
16839         mono_get_shared_generic_class and make static.
16840         (mono_get_shared_generic_inst): Move to metadata.c.
16841         * loader.c (mono_get_shared_generic_method): Likewise.
16842         * class-internals.h, metadata-internals.h: Update to changes.
16843
16844         Fix #81830
16845         * class.c (mono_class_from_generic_parameter): Don't assume a
16846         generic container owner exists.  Generic containers from monodis
16847         don't have any.
16848
16849 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16850
16851         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16852         * verify.h: new typedefs to returns the non-verifiable status
16853         * verify.c: initial implementation of generics, stack merging and object compatibility check
16854
16855 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16856
16857         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16858         a MonoInternalHashTable again (fixed bug in internal hash table
16859         code).
16860
16861 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16862
16863         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16864         MonoInternalHashTable again (fixed bug in internal hash table
16865         code).
16866
16867 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16868
16869         * class.c, image.c, class-internals.h, domain.c,
16870         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16871         changes.  Have to figure out what makes them break the SWF
16872         regression.
16873
16874 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16875
16876         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16877         a MonoInternalHashTable now.
16878
16879 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16880
16881         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16882         MonoInternalHashTable now.
16883
16884 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16885
16886         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16887         invoke_impl code.
16888
16889         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16890
16891         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16892         dependent trampoline.
16893
16894         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16895
16896         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16897
16898 2007-05-29  Robert Jordan  <robertj@gmx.net>
16899
16900         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16901
16902 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16903
16904         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16905
16906 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16907
16908        * marshal.c: Fix interface lookup loops for
16909        cominterop_get_com_slot_for_method and 
16910        cominterop_get_method_interface. Only need to lookup
16911        if type is a class, else use interface type method is on.
16912
16913        Code is contributed under MIT/X11 license.
16914
16915 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16916
16917         * reflection.c: HasSecurity can be present even if no specially 
16918         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16919         SecurityAttribute). Fix CAS regression tests on buildbot.
16920
16921 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16922
16923        * appdomain.c: Add configure checks for header files.
16924        * image.c: Add configure checks for header files.
16925        * file-io.c: Add configure checks for header files.
16926        * debug-mono-symfile.c: Add configure checks for header files.
16927        * threadpool.c: Add configure checks for header files.
16928        * console-io.c: Add configure checks for header files.
16929        * profiler.c: Add configure checks for header files.
16930        * rawbuffer.c: Add configure checks for header files.
16931        * icall.c: Add configure checks for header files.
16932        * rand.c: Add configure checks for header files.
16933        * socket-io.c: Add configure checks for header files.
16934
16935        Code is contributed under MIT/X11 license.
16936
16937 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16940         assertion as it breaks the build.
16941         
16942         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16943
16944         * reflection.c (lookup_custom_attr): Make a copy here too.
16945
16946         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16947         dynamic images.
16948
16949         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16950         images.
16951
16952         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16953         info.
16954
16955 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16958         (load_cattr_value): Ditto.
16959
16960 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16963
16964 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16965
16966         * threads.c: In "start_wrapper", set apartment_state to MTA if
16967         apartment_state is Unknown and we're running on 2.0 profile or
16968         higher.
16969         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16970         to main method, then set apartment_state to Unknown on 1.0 profile,
16971         and MTA on 2.0 profile.
16972
16973 2007-05-16  Jb Evain  <jb@nurv.fr>
16974
16975         * class-internals.h (MonoDefaults): Add an attribute_class and
16976           customattribute_data_class.
16977         * domain.c (mono_init_internal): Populate them.
16978         * reflection.c: Use them to remove duplicates. Make a vew
16979         MonoClass variables `static'.
16980
16981 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16982
16983         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16984         step in implementing IMT, so that all isinst checks now can go
16985         through the bitmap.
16986         This was needed because vtables for TransparentProxy need to look
16987         like the vtable of the "target" class, so they need to point to
16988         its interface bitmap directly.
16989
16990         * object.c: inside "mono_class_create_runtime_vtable" and
16991         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16992
16993 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16994
16995         * object-internals.h
16996           culture-info.h : added territory field in MonoCulture and
16997           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16998         * locales.c : fill territory field above too.
16999         * culture-info-table.h : regenerated.
17000
17001 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17002
17003         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17004         Fixes #81599.
17005
17006 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17007
17008         * object.c: Always initialize apartment, even if 
17009         there is no custom attributes on entry point.
17010         
17011         Code is contributed under MIT/X11 license.
17012
17013 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17014
17015         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17016         * metadata.c: If no encoding is set, check for unicode
17017         on class.
17018         
17019         Code is contributed under MIT/X11 license.
17020
17021 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17022
17023         * threads.c: Handle if mono_thread_current returns NULL 
17024         
17025         Code is contributed under MIT/X11 license.
17026
17027 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17028
17029         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17030         in start_wrapper. Added mono_thread_init_apartment_state and
17031         mono_thread_cleanup_apartment_state.
17032         * object.c: Initialize thread apartment state on main thread
17033         by checking for STAThreadAttribute on entry point.
17034         * object-internals.h: Add apartment_state field to MonoThread.
17035         * threads-types.h: Add unmanaged definition of 
17036         System.Threading.ApartmentState, MonoThreadApartmentState.
17037         
17038         Code is contributed under MIT/X11 license.
17039         
17040 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17041
17042         * class.c: Fix windows build.
17043         * class-internals.h: Fix windows build.
17044         
17045         Code is contributed under MIT/X11 license.
17046
17047 2007-05-08  Robert Jordan  <robertj@gmx.net>
17048
17049         * process.c (CreateProcess_internal):
17050         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17051         .CreateNoWindow was specified. Fixes #81496.
17052
17053 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17054
17055         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17056         step in implementing IMT, replaced it with two compact arrays
17057         (interfaces_packed and interface_offsets_packed) and a bitmap that
17058         is used for isinst checks (interface_bitmap).
17059
17060         * class.c: (compare_interface_ids): compare function to pass to
17061         bsearch when looking for an interface with a given id.
17062         (mono_class_interface_offset): reimplemented using bsearch on
17063         interfaces_packed, getting the offset from interface_offsets_packed.
17064         (print_implemented_interfaces): utility debugging function.
17065         (setup_interface_offsets): reworked to initialize interfaces_packed,
17066         interface_offsets_packed and interface_bitmap.
17067
17068         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17069         with uses of interfaces_packed and interface_offsets_packed.
17070
17071 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17072
17073         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17074         mono_class_interface_offset prototype to wrap all accesses to
17075         "MonoClass.interface_offsets".
17076
17077         * class.c: Implemented mono_class_interface_offset, and wrapped all
17078         accesses to "MonoClass.interface_offsets".
17079
17080         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17081         "MonoClass.interface_offsets".
17082
17083 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17084
17085         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17086         GetMethodFromHandle overloads (bug #78637).
17087
17088 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17089
17090         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17091         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17092
17093 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17096         #81498.
17097
17098         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17099         gracefully.
17100         (mono_custom_attrs_from_index): Ditto.
17101
17102         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17103         Fixes #81501.
17104
17105 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17108         is now allocated from a mempool.
17109
17110 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17111
17112         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17113         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17114
17115 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17116
17117         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17118         mono_loader_clear_error () too late. Fixes #81463.
17119
17120 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17121
17122         * culture-info-table.h : regenerated.
17123
17124 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17125
17126         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17127         is missing.
17128
17129 2007-04-25  Dick Porter  <dick@ximian.com>
17130
17131         * Makefile.am: Put the mingw enforced-optimisation back into the
17132         PLATFORM_WIN32 section.
17133
17134 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17137         patch.
17138
17139         * image.c (mono_image_load_module): New API function to load a module reference.
17140
17141         * image.c (load_modules): Load modules lazily. Fixes #80812.
17142
17143         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17144         
17145         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17146
17147         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17148         to mono_image_load_module_dynamic.
17149
17150 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17151
17152         * marshal.c: Fix calling convention for CCW on non-windows
17153         platforms. STDCALL on windows, CDECL everywhere else to work 
17154         with XPCOM and MainWin COM.
17155         
17156         Code is contributed under MIT/X11 license.
17157
17158 2007-04-23  Martin Baulig  <martin@ximian.com>
17159
17160         Fix #80969.
17161
17162         * loader.c
17163         (method_from_memberref): Added `gboolean *used_context' argument.
17164         (mono_get_method_from_token): Likewise.
17165         (mono_get_method_full): Don't insert the method in the cache when
17166         `used_context' is true.
17167
17168 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17169
17170         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17171
17172         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17173         create new MonoTypes for returned types.
17174         * class.c (mono_generic_class_get_class): Export mono-internal.
17175         * class-internals.h: Update to changes.
17176
17177 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17178
17179         * threadpool.c, threadpool.h, icall-def.h: patch from
17180         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17181
17182 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17183
17184         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17185         
17186         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17187
17188         * threads.c (mono_thread_get_stack_bounds): New helper function.
17189
17190         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17191         Correctly compute stack bounds when attaching. Fixes #81394.
17192
17193 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17194
17195         * reflection.c: fix handling of doubles in custom attributes
17196         for the arm-fpa format (bug #81368).
17197
17198 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17199
17200         * reflection.c (assembly_add_win32_resources): Mildly relax an
17201         bounds check to let the end pointer point just past the end of the
17202         allocated buffer.  (may fix #81384)
17203
17204 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17205
17206         * culture-info-table.h : regenerated.
17207
17208 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17209
17210         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17211         the thread is aborted early.
17212
17213 2007-04-05  Dick Porter  <dick@ximian.com>
17214
17215         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17216         FindFirstFile()/FindNextFile() to find entries.  This lets the
17217         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17218         81038.
17219
17220         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17221         the parameters of
17222         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17223
17224 2007-04-04  Martin Baulig  <martin@ximian.com>
17225
17226         * debug-helpers.c
17227         (mono_method_desc_full_match): Add support for nested classes.
17228
17229 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17230
17231         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17232
17233 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17234
17235         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17236         waiting for too many threads.
17237
17238 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17239
17240         * environment.c: Fix return value check on uname so we can get the 
17241         executing version on Solaris operating systems.
17242
17243 2007-03-28  Jb Evain  <jbevain@gmail.com>
17244
17245         * class.c (mono_type_get_name_recurse): Complete the
17246         fix for the creation of assembly qualified names for
17247         pointer types. Fixes #81208.
17248
17249 2007-03-27  Dick Porter  <dick@ximian.com>
17250
17251         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17252         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17253         changed.
17254
17255         * threads.c
17256         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17257         the value of ReleaseMutex().
17258
17259 2007-03-27  Dick Porter  <dick@ximian.com>
17260
17261         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17262         in little-endian order, not network endian, so must be converted
17263         to host endian here.  Fixes bug 80593.
17264
17265 2007-03-22  Jb Evain  <jbevain@gmail.com>
17266
17267         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17268         qualified names for pointer types. Fixes #81208.
17269
17270 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17271
17272         * marshal.c: Add support for PreserveSigAttribute. 
17273         
17274         Code is contributed under MIT/X11 license.
17275
17276 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17277
17278         * process.c: Fix endianness issues. Fixes #81126.
17279
17280         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17281         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17282
17283         * image.c (mono_image_lookup_resource): Make this work on big-endian
17284         machines.Change API contract so the caller needs to free the return value.
17285         
17286         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17287         API change.
17288         
17289 2007-03-14  Martin Baulig  <martin@ximian.com>
17290
17291         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17292         mono_type_get_desc() as well.
17293
17294 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17295
17296         * icall.c:  Fix environ access in VS.  
17297         
17298 2007-03-13  Alp Toker  <alp@atoker.com>
17299
17300         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17301         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17302         #63841.
17303
17304 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17305
17306         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17307         circular references among dynamic methods. Fixes #81091.
17308
17309         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17310
17311 2007-03-09  Martin Baulig  <martin@ximian.com>
17312
17313         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17314
17315 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17316
17317         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17318         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17319         
17320         Code is contributed under MIT/X11 license.
17321         
17322 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17323
17324         * loader.c: Reapply patch for bug #79424.
17325
17326 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17327
17328         * metadata.c (mono_type_to_unmanaged): Only convert object to
17329         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17330
17331 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17332
17333         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17334         (and incorrectly set) is_reference field from MonoGenericInst.
17335
17336 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17337
17338         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17339         a little earlier.
17340
17341         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17342
17343         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17344
17345 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17346
17347         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17348         FileOptions.1 value to mean "temporary", map that to
17349         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17350
17351         Fixes 80688
17352
17353 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17354
17355         * appdomain.c: implement MS .Net style shadow copying. Copies of
17356         the assemblies are made in a subdirectory of the dynamic base
17357         directory, the assembly names are preserved.
17358         Copy .mdb and .config files along with the assemblies being shadowed.
17359
17360 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17361
17362         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17363         (emit_marshal_handleref): Ditto.
17364
17365         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17366         on Visual C++. Fixes #80671.
17367
17368 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17369
17370         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17371         for clone operations.
17372
17373 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * marshal.c: Fix warnings.
17376
17377 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17378
17379         * loader.c: allow case-insensitive matching of the dll name
17380         in dllmap handling when prefixed with "i:".
17381
17382 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17383
17384         * threads.c: Fix #ifdef for dummy_apc function for VS.
17385
17386 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17387
17388         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17389
17390 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17391         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17392         giving precedence to the methods with a fully qualified name
17393         (InterfaceName.MethodName) when building the interface sections
17394         of the vtable.
17395
17396 2007-02-16  Dick Porter  <dick@ximian.com>
17397
17398         * threadpool.c (append_job): Fix fast-path array handling, so it's
17399         less likely the array will grow exponentially when the load is
17400         heavy.
17401
17402 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17403
17404         * metadata-internals.h, loader.c: fix dllmap lookup order
17405         for non-function maps, too, and prepare for fallback code.
17406
17407 2007-02-12  Robert Jordan  <robertj@gmx.net>
17408
17409         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17410         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17411         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17412         GlobalFree. Fixes a part of bug #77075.
17413
17414 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17415
17416         * loader.c: implemented typedef parent in field memberref.
17417
17418 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17419
17420         * marshal.c: Fix warnings and remember to call Release on
17421         IUnknown of RCW.
17422         
17423         Code is contributed under MIT/X11 license.
17424
17425 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17426
17427         * class-internals.h: Add MonoHandleRef definition, and
17428         handleref_class to mono_defaults. 
17429
17430         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17431         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17432
17433         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17434         (do nothing on this stage)
17435         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17436         (emit_marshal_handleref): New method, used for argument handling
17437         of HandleRefs. 
17438
17439 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17440
17441         * class.c (mono_class_setup_parent): Lazily init com types.
17442         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17443         init com types.
17444         * object.c (mono_remote_class_vtable): Lazily init com types.
17445         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17446         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17447         * domain-internals.h: Expose mono_init_com_types.
17448         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17449         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17450         Add support for COM Callable Wrapper marshalling.
17451         * marshal.h: Add icall definitions.
17452         * gc.c: Handle freeing of CCWs in finalizer code.
17453         
17454         Code is contributed under MIT/X11 license.
17455
17456 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17457
17458         * reflection.c: changed all the signature encoding code to use
17459         a variable-sized buffer.
17460
17461 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17462
17463         * marshal.c: locking fixes: never take the loader lock
17464         or other runtime locks when holding the marshal lock
17465         (fixes bug#80664).
17466
17467 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17468
17469         * marshal.c: make the delegate function pointer mapping
17470         work for the moving GC.
17471
17472 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17473
17474         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17475         for bug #80618.
17476
17477 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17478
17479         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17480         gmodule.
17481
17482 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17483
17484         * threadpool.c: made the code moving-GC safe.
17485
17486 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17487
17488         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17489         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17490         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17491         warning cleanup.
17492         * reflection.c: warning cleanup, some threading and moving GC fixes.
17493
17494 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17495
17496         * class.c, loader.c: create the needed Set/Get/Address array methods
17497         as well as the .ctors in mono_class_init (), fixes bug #80567.
17498
17499 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17500
17501         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17502         we doesn't decrease its alignment. Should fix the sparc build.
17503
17504 2007-01-24  Dick Porter  <dick@ximian.com>
17505
17506         * socket-io.c
17507         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17508         Create the returned object if we need to ignore an unsupported
17509         socket option.  Fixes a segfault reported by Atsushi.
17510
17511 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17512
17513         * class.c, object.c: restrict GC-tracked fields to
17514         UIntPtr fields used inside corlib, so we provide better
17515         type info to the GC and also allow broken packing as in
17516         bug #80580.
17517
17518 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17519
17520         * sgen-gc.c: removed duplicated function.
17521
17522 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17523
17524         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17525         value that means that the value is not supported, but that we
17526         should not return a failure, but instead report this as a
17527         successful operation.
17528
17529 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17530
17531         Fix tests/bug79956.2.il
17532         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17533         (mono_generic_class_get_class): If the generic definition in an
17534         enum, copy over other fields related to it.
17535
17536 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17537
17538         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17539         genericinst enums (bug #79215).
17540
17541 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17542         * class.c: Fix bug 80307.
17543
17544 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17545
17546         * image.c: if the file table is not present, try to load
17547         all the modules, since we don't have info about them
17548         having or not metadata (bug #80517).
17549         * assembly.c: allow mono_assembly_load_references () to
17550         work for netmodules.
17551
17552 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17553
17554         * image.c, metadata-internals.h, object.c: execute module
17555         cctors when running on the 2 runtime if present (bug #80487).
17556
17557 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17558
17559         * icall.c: optimized InitializeArray() on bigendian.
17560
17561 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17562
17563         * icall.c: fix for the broken ARM FPA double format.
17564
17565 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17566
17567         * icall.c: handle endian issues for r4 and r8 types, too, in
17568         the InitializeArray() icall.
17569
17570 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17571
17572         * loader.c (mono_loader_error_prepare_exception): Clear the error
17573         once we have extracted the information from it, do this before we
17574         call into the JIT's class loading mechanisms.
17575
17576         * object.c (mono_class_create_runtime_vtable): Do not clear the
17577         loader error before calling mono_class_get_exception_for_failure
17578         as the loader error is needed inside
17579         mono_class_get_exception_for_failure to throw the error (thinko).
17580
17581         Fixes #80521
17582         
17583 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17584
17585         * reflection.c: align fields rva data so it's faster to load at
17586         runtime.
17587
17588 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17589
17590         Prepare to simplify GenericMethod handling.
17591         * class-internals.h (mono_method_get_context): New accessor function.
17592         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17593         rather than directly accessing '->context' field.
17594
17595         * class-internals.h (_MonoGenericParam.method): Move ...
17596         (_MonoGenericContainer): ... here.  Add into union with klass field.
17597         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17598         Update to changes.
17599
17600 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17601
17602         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17603         the wrapper type enum and reduce relocations.
17604
17605 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17606
17607         * reflection.c (inflate_mono_method): Reuse method instantiation
17608         from the generic method, if available.
17609
17610 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17611
17612         * marshal.c (emit_marshal_variant): Fix conv_arg
17613         type in last commit, based on whether parameter is byref.
17614         
17615 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17616
17617         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17618         marshalling.
17619         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17620         MONO_TYPE_OBJECT back for VARIANT support.
17621
17622 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17623
17624         * marshal.c, marshal.h, icall-def.h: Implement 
17625         Marshal.ReAllocCoTaskMem.
17626
17627 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17628
17629         * marshal.c: memory retention fixes: use the proper
17630         image cache for runtime_invoke method lookups.
17631
17632 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17633
17634         * mempool.c: added code to help debug mempool allocations.
17635
17636 2007-01-11  Dick Porter  <dick@ximian.com>
17637
17638         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17639         support (experimenting with faking it with IP_MTU_DISCOVER for
17640         systems that don't have IP_DONTFRAGMENT.)
17641         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17642         icall.
17643
17644         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17645
17646         * socket-io.h: Add new fields to MonoSocketAsyncResult
17647         corresponding to the new ones in Socket.cs.
17648
17649 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17650
17651         Fix IronPython regression mentioned in #80249
17652         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17653         'cached_context' field, since it may have been initialized as a
17654         side-effect of metadata parsing.
17655
17656         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17657         (_MonoGenericClass.cached_class): Move here and rename from lone
17658         remaining field of ...
17659         (_MonoInflatedGenericClass): ... this.  Remove.
17660         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17661         to changes.
17662
17663         Fix mcs/tests/test-128.cs regression.
17664         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17665         2007-01-10 change below.
17666         [MONO_TYPE_OBJECT]: Recurse into array case.
17667
17668 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17669
17670         * class-internals.h (mono_get_inflated_generic_class): Remove.
17671         * class.c (mono_get_inflated_generic_class): Remove.
17672         (mono_generic_class_get_class): Rename from
17673         mono_class_create_generic.
17674         (mono_class_from_mono_type) [GENERICINST]: Use it.
17675         * reflection.c, metadata.c: Update to changes.  Use
17676         'mono_class_from_mono_type'.
17677
17678 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17679
17680         * reflection.c: use passed type when encoding an array element
17681         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17682
17683 2007-01-09  Robert Jordan  <robertj@gmx.net>
17684
17685         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17686         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17687         Fixes bug #80392.
17688
17689 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17690
17691         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17692
17693         * object.c (set_value): Avoid aliasing between type->data.klass
17694         and type->data.generic_class.
17695
17696         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17697
17698 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17699
17700         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17701         between type->data.klass and type->data.generic_class.
17702
17703 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17704
17705         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17706         value in out parameters.
17707
17708 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17709
17710         Simplify invariant for MonoGenericClass::klass field.
17711         * class.c (mono_class_create_generic): Verify 'klass' is null.
17712         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17713         initialize 'klass' field.
17714
17715 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17716
17717         Ongoing work to avoid redundant data and simplify invariants.
17718         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17719         'generic_class', and change type to a GenericInst.
17720         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17721         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17722
17723 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17724
17725         * class.c : skip io-layer under PLATFORM_WIN32.
17726
17727 2007-01-03  Tor Lillqvist  <tml@novell.com>
17728
17729         Fix #80305: In a bundled executable, look in the bundled exe
17730         assembly to determine the runtime version. Add the possibility to
17731         bundle also the machine.config file.
17732         
17733         * assembly.c (mono_assembly_open_from_bundle): Make
17734         non-static. Allow being called even if we have no bundled
17735         assemblies, and return NULL right away in that case.
17736
17737         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17738         here.
17739
17740         * domain.c (app_config_parse): Take an assembly exe file name as
17741         parameter instead of a config file name. Check for a bundled
17742         config file for that assembly by calling
17743         mono_config_string_for_assembly_file() (see below) before looking
17744         for one in the file system.
17745         (get_runtimes_from_exe): Corrsponding change to call of
17746         app_config_parse().
17747         (get_runtimes_from_exe): Check for bundled assembly exe file first
17748         by calling mono_assembly_open_from_bundle(). If no bundled
17749         assembly exe file is found, call mono_image_open() as before to
17750         look it up in the file system.
17751
17752         * mono-config.c: Add variable bundled_machinec_onfig.
17753         (mono_config_string_for_assembly_file): New function.
17754         (mono_config_for_assembly): Move code snippet that looks for a
17755         bundled assembly .config file into the above new function. Call
17756         it.
17757         (mono_register_machine_config, mono_get_machine_config): New
17758         functions to set and retrieve
17759
17760         * assembly.h: Declare mono_register_machine_config().
17761
17762         * mono-config.h: Declare mono_get_machine_config() and
17763         mono_config_string_for_assembly_file().
17764
17765         * icall.c: No declaration of environ necessary on Win32. It is
17766         declared (as a macro expanding to a function call) in stdlib.h.
17767         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17768         New internal mono function. Returns the value of
17769         mono_get_machine_config() as a Mono string.
17770
17771         * icall-def.h: Add get_bundled_machine_config().
17772
17773 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17774
17775         Remove redundant field
17776         * class-internals.h (_MonoGenericContext.container): Remove field.
17777         * loader.c (mono_method_get_signature_full): Don't parse a
17778         "container" for a signature parse when the signature is inflated
17779         immediately.
17780         (method_from_methodspec): Likewise, for a generic_inst.
17781         * class.c, metadata.c, reflection.c: Update to changes.
17782
17783 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17784
17785         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17786         'cached_context', and change semantics -- it starts off NULL, and
17787         is initialized on demand.
17788         * class.c (mono_generic_class_get_context): New accessor to
17789         replace 'context' field accesses.
17790         (mono_class_get_context): New helper.
17791         (*): Update to changes.
17792         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17793
17794 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17795
17796         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17797         before the memcpy.   Fixes Marshal2 regression.
17798
17799 2007-01-02  Jb Evain  <jbevain@gmail.com>
17800
17801         * blob.h: add a MONO_TYPE_ENUM definition
17802         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17803         fix the encoding of arrays of enums in custom attributes.
17804
17805         Fixes #79666.
17806
17807 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17808
17809         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17810         string is null terminated, but only cut the string short if it
17811         overflows the buffer.   
17812         
17813         (mono_string_to_byvalstr): Also fix this routine.   The code here
17814         was not properly terminating a string (it was only terminated
17815         because of the previous catch-all memset). 
17816
17817         I left the memset, because I do not know if applications expect
17818         the runtime to clear this region. 
17819
17820         Fixes #79944.
17821
17822         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17823         Clear the error before returning to unmanaged code to prevent the
17824         runtime from being confused later on (fixes  80420).
17825         (ves_icall_type_from_name): Always call mono_loader_clear_error
17826         after parsing a type that could have failed.
17827         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17828
17829         * loader.c (mono_loader_clear_error): Fix indentation.
17830
17831 2006-12-28  Martin Baulig  <martin@ximian.com>
17832
17833         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17834
17835 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17836
17837         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17838         getting a token for an EnumBuilder.
17839
17840 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17841
17842         * reflection.c: be more careful in case resource generation
17843         fails to create the data array.
17844
17845 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17846
17847         * sgen-gc.c: write barrier for clone and fix unregister handles.
17848
17849 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17850
17851         * reflection.c: some fixes needed in the generics code for the moving GC.
17852
17853 2006-12-22  Robert Jordan  <robertj@gmx.net>
17854
17855         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17856         account. Fixes bug #80299.
17857
17858 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17859
17860         Fix WaitHandle usage in delegates.
17861         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17862         * object.c (mono_wait_handle_new): Use the property set method to
17863         initialize the handle.
17864         (mono_wait_handle_get_handle): New.
17865         * threadpool.c (mono_async_invoke): Use it.
17866         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17867         Likewise.
17868         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17869
17870 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17871
17872         * marshal.c (emit_marshal): Call emit_marshal_variant and
17873         emit_marshal_com_interface when applicable.
17874         (emit_marshal_variant, emit_marshal_com_interface): Add
17875         methods for this case and remove if's from emit_marshal_object.
17876         
17877 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17878
17879         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17880
17881 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17882
17883         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17884         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17885         and GlobalFree on Windows. Remove FIXME.
17886
17887 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17890         implementation for managed objects.
17891
17892 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17893
17894         * object.c: implemented code to be used for checking
17895         that no reference field overlaps with non-references.
17896
17897 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17898
17899         * threadpool.c: fix queue code to be compatible with the
17900         moving GC.
17901
17902 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17903
17904         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17905         in structures by throwing ArgumentNullException.
17906
17907         (emit_marshal_safehandle): Also when they are null parameters.
17908
17909         (emit_marshal_safehandle): Add support for ref
17910         SafeHandles parameters
17911
17912 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17913
17914         * profiler.c: updated to use the mono-dl API instead of
17915         gmodule.
17916
17917 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17918
17919         * profiler.c: updated to use the mono-dl dynamic loading
17920         API instead of gmodule.
17921
17922 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17923
17924         * profiler.c: use readlink, older versions of glib don't have
17925         g_file_read_link ().
17926
17927 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17928
17929         * profiler.c: try to detect the path to mono if libc fails to provide
17930         a useful name (bug #80286).
17931
17932 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17933
17934         Fix #80242
17935         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17936         instance, use the generic type definition instead.
17937         (ves_icall_Type_GetNestedTypes): Likewise.
17938         * class.c (mono_class_create_generic): Always set the
17939         nested_classes of a generic instance to NULL, even if the generic
17940         type definition has nested types.
17941
17942 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17943
17944         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17945         and fix on Linux.
17946         
17947 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17948
17949         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17950         my arguments were in the wrong order.   I also fixed the Windows
17951         version which seems to have had the same issue.
17952
17953         (mono_free_bstr): On Unix, this is g_free.
17954         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17955         conversions (for the tests in corlib to pass).
17956
17957 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17958
17959         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17960         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17961         exception if a ref SafeHandle in a struct has changed).
17962         
17963         (emit_struct_conv): Do not perform layout checks for classes
17964         derived from SafeHandle, as those are specially handled. 
17965
17966         (emit_object_to_ptr_conv): Add support for
17967         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17968
17969         (emit_marshal_safehandle): Implement conversion of return values
17970         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17971         
17972         * threads.c: WaitHandle now is compiled with two different handles
17973         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17974         for 2.0.
17975         
17976         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17977         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17978         these routines to cope with both kinds of fields.
17979
17980 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17981
17982         * metadata.c (mono_type_to_unmanaged): Handle the case where
17983         type->data.klass is a SafeHandle, and in that case, return the
17984         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17985         MONO_MARSHAL_CONV_SAFEHANDLE. 
17986
17987 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17988
17989         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17990         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17991         calling emit_marshal_object.
17992
17993         (emit_marshal_safehandle): Implement marshalling of
17994         SafeHandle parameters (no ref support yet).
17995
17996         (MarshalAction): Document the defines as I implement
17997         them for SafeHandle.
17998
17999         (emit_marshal_object): indentation police.
18000
18001         * class-internals.h: Define MonoSafeHandle.
18002         Add safehandle_class to MonoDefaults type.
18003
18004         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18005         list of classes to check for fields. 
18006
18007         * domain.c (mono_init_internal): Add SafeHandle to the list of
18008         mono_defaults loaded.
18009
18010 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18011
18012         Fix #80253
18013         * reflection.c (mono_reflection_bind_generic_parameters): If the
18014         generic type definition is a type builder, ensure that it is fully
18015         initialized before instantiating it.  Kill some dead code.
18016
18017 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18018
18019         * object.c: clear the loader_error () before loading
18020         more metadata stuff (bug #80258).
18021
18022 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18023
18024         * icall.c, icall-defs.h: type modifiers icalls for
18025         parameters and properties.
18026
18027 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18028
18029         * object.c, icall.c: fixed warnings.
18030
18031 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18032
18033         * marshal.c: fixed a couple of leaks and coding style in a few places.
18034
18035 2006-12-08  Dick Porter  <dick@ximian.com>
18036
18037         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18038         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18039         80173.
18040
18041 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18042
18043         * process.c: ProcessStartInfo may have only filename set and
18044         arguments can be NULL.
18045
18046 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18047
18048         * icall.c: fix leak found by Robert Jordan.
18049
18050 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18051
18052         * marshal.c, marshal.h: generate managed method to access an element
18053         of a multi-dimensional array.
18054
18055 2006-11-30  Paolo Molaro (lupus@ximian.com)
18056
18057         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18058
18059 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18060
18061         * icall.c: back out GetFields () fix until the serialization code is
18062         fixed to not depend on the incorrect behaviour.
18063
18064 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18065
18066         * profiler.c: provide defaults if none are set.
18067
18068 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18069
18070         * Makefile.am, attrdefs.h: new public header file with
18071         constants for attributes for use by embedders.
18072
18073 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18074
18075         * icall.c: GetFields () fix for bug #80064.
18076
18077 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18078
18079         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18080         removed long unused icalls.
18081
18082 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18083   
18084         * marshal.c: 
18085                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18086                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18087                 can be generated without a delegate class.
18088                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18089         
18090         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18091
18092 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18093
18094         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18095         #80069.
18096
18097 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18098
18099         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18100         icall-def.h: added icalls needed by System.GC.
18101
18102 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18103
18104         * loader.c: ensure the class in catch clauses is handled
18105         correctly for generics methods (fixes bug#79980).
18106
18107 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18108
18109         * monitor.h, monitor.c: added mono_locks_dump () function
18110         to help debug deadlocks involving managed locks.
18111
18112 2006-11-13  Dick Porter  <dick@ximian.com>
18113
18114         * file-io.c (get_file_attributes): If the file is a symlink try
18115         and get the stat data for the target, but also add the
18116         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18117         the specs for the windows symlink support, but will probably have
18118         to be reworked when I have test data from a vista machine.  Fixes
18119         bug 79887.
18120
18121 2006-11-13  Dick Porter  <dick@ximian.com>
18122
18123         * gc.c (mono_domain_finalize): 
18124         * marshal.c (mono_delegate_begin_invoke): 
18125         * threadpool.c (socket_io_init, mono_thread_pool_init)
18126         (mono_thread_pool_finish): 
18127         * monitor.c (mono_monitor_try_enter_internal): 
18128         * threads.c (mono_thread_resume, mono_thread_init)
18129         (mono_thread_suspend_all_other_threads)
18130         (mono_thread_execute_interruption): 
18131         * appdomain.c (mono_domain_unload): Check for NULL error returns
18132         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18133         75733.
18134
18135 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18136
18137         * process.c
18138         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18139         Only close the handle if the value of the handle is not
18140         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18141         robust.
18142
18143         Improvement for #75733, so that we do not run into this problem. 
18144
18145         
18146         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18147         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18148         internal variables.  Fixes #79462 
18149         
18150
18151 2006-11-09  Dick Porter  <dick@ximian.com>
18152
18153         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18154         Use poll() not select().  Fixes bug 79397.
18155
18156 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18157
18158         Fix #79872
18159         * assembly.c (mono_assembly_load_from_full): Check that the given
18160         image has an assembly manifest.
18161
18162 2006-11-09  Ankit Jain  <jankit@novell.com>
18163
18164         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18165         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18166         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18167
18168 2006-11-07  Dick Porter  <dick@ximian.com>
18169
18170         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18171         Put the old resolver behaviour back for pre-2.0 profiles.
18172
18173 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18174
18175         * threadpool.c: precise GC and locking fixes.
18176
18177 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18178
18179         * class.c: don't load types that have an explicit unaligned
18180         managed reference. Provide better info in the TypeLoad exception.
18181         Part of the fix for bug #79744.
18182         * object.c: use the correct check for class type load issues.
18183
18184 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18185
18186         * class.c: enforce alignment of fields with managed references
18187         even when Pack=1 is forced by the user (bug #77788).
18188
18189 2006-11-03  Dick Porter  <dick@ximian.com>
18190
18191         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18192         If the address reverse lookup fails, return it as the hostname
18193         anyway.  Fixes bug 79721.
18194
18195 2006-11-03  Dick Porter  <dick@ximian.com>
18196
18197         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18198         Fix build on Windows.
18199
18200 2006-11-02  Dick Porter  <dick@ximian.com>
18201
18202         * icall-def.h: 
18203         * object-internals.h: 
18204         * exception.c (mono_get_exception_thread_interrupted): 
18205         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18206         Fixes bug 74525.
18207
18208         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18209         Check for pending Thread.Interrupt.
18210
18211 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18212         * loader.c: Fixed bug 79684.
18213
18214 2006-10-27  Dick Porter  <dick@ximian.com>
18215
18216         * file-io.c (get_file_attributes): Force symlinks to directories
18217         to be returned as a regular file.  Fixes bug 79733.
18218 2006-10-26  Dick Porter  <dick@ximian.com>
18219
18220         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18221         CreateFile to open a directory then we need to set the
18222         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18223
18224 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18225
18226         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18227         friends.
18228
18229 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18230
18231         * sgengc.c: small cleanup of timer code.
18232
18233 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * sgen-gc.c: fix some warnings and start adding support for
18236         complete object removal on domain unload.
18237
18238 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18239
18240         * assembly.c: build_assembly_name should not consider a version
18241         number without build or revision number invalid. Fixes bug #79715.
18242
18243 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18244
18245         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18246         call kernel32 function OutputDebugString directly.
18247         
18248         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18249         
18250 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18251
18252         * reflection.c: small cleanup, using a function to insert a MonoString
18253         in the string heap.
18254
18255 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18256
18257         * reflection.c: moving GC fixes.
18258
18259 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18260
18261         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18262         all the objects with finalizers belonging to an unloading appdomain.
18263
18264 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18265
18266         * sgen-gc.c: added ability to allocate even when the nursery is fully
18267         pinned and fixed a couple of bugs.
18268
18269 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18270
18271         * threads.h: Revert the last change for now.
18272
18273         * threads.h (mono_thread_get_pending_exception): Rename this to
18274         mono_thread_get_undeniable_exception ().
18275
18276 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18277
18278         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18279         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18280         when fname does not refer to valid assembly. This result in a more
18281         meaningful error message.
18282         * exception.c: added mono_get_exception_bad_image_format2 which 
18283         constructs a BadImageFormatException using the ctor taking a custom
18284         message and the file name. Passing in a NULL msg results in a default
18285         message.
18286         * exception.h: define mono_get_exception_bad_image_format2 function.
18287         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18288         when file name pointed to an invalid IL image. Use 
18289         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18290         as this results in a more meaningful error message.
18291
18292 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18293
18294         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18295         #79465.
18296
18297 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18298
18299         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18300         consistency with the other _size functions.
18301         (mono_type_stack_size): Ditto.
18302
18303         * class.c object.c icall.c: Fix warnings caused by the above change.
18304
18305         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18306
18307         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18308
18309         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18310
18311 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18312
18313         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18314         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18315         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18316         threadpool.h, threads-types.h: mark more internal functions.
18317
18318 2006-10-11  Dick Porter  <dick@ximian.com>
18319
18320         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18321         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18322         reproduce the bug even before applying the fix.)
18323
18324 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18325
18326         * reflection.c: allow retrieving attributes for arguments in generic
18327         methods (bug #79241).
18328
18329 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18330
18331         * debug-mono-symfile.c: properly check fopen () result (found by
18332         coverity).
18333
18334 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18335
18336         * reflection.c: make error message clearer and fixed two
18337         issuelets found by Coverity.
18338
18339 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18342
18343 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18344
18345         * object-internals.h, gc-internal.h, profiler-private.h:
18346         mark internal functions.
18347
18348 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18349
18350         * reflection.c: put data in the text section.
18351         * icall.c: recognize more types in type_from_typename ().
18352         * process.c, marshal.c: added some GC FIXMEs.
18353
18354 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18355
18356         * loader.c: check for NULL before initializing.
18357
18358 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18359
18360         * gc.c (finalizer_thread): Use a non-alertable wait here.
18361
18362         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18363         until the correct solution is found.
18364
18365 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18366
18367         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18368         modules with no metadata. Fixes #79596.
18369
18370         * image.c (load_metadata_ptrs): Put back the error message when
18371         the #- heap is encountered since the support is not complete yet.
18372
18373 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18374
18375         * gc.c: do not allow the user to SuppressFinalize () a
18376         delegate because it would leak the trampoline if present.
18377
18378 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18379
18380         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18381         PropertyPtr table.
18382
18383 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18384
18385         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18386
18387         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18388
18389         * row-indexes.h: Add definitions for *Ptr tables.
18390
18391         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18392
18393         * metadata.c (mono_metadata_translate_token_index): New helper function to
18394         translate table indexes used in uncompressed metadata.
18395         (mono_metadata_decode_table_row): Ditto.
18396         (mono_metadata_decode_table_row_col): Ditto.
18397
18398         * metadata.c: Add table schema for *Ptr tables.
18399
18400         * class.c loader.c: Use the new helper function to access the affected metadata
18401         tables.
18402         
18403         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18404         #38532.
18405         
18406 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18407
18408         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18409         sequences which can be unbounded in size. Fixes #79583.
18410
18411 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18412
18413         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18414         static initialization.
18415
18416         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18417
18418         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18419
18420         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18421
18422         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18423         ctor fails, i.e. throw the same exception on subsequent accesses.
18424         
18425 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18426
18427         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18428         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18429         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18430         Handle marshalling of interfaces and VARIANTs contained in structs.
18431         
18432         Code is contributed under MIT/X11 license.
18433         
18434 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18435
18436         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18437         
18438         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18439         mempool.
18440
18441 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18442
18443         * console-io.c: ignore previous SIGINT handler.
18444
18445 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18446
18447         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18448         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18449         #79460, #79461, #79485.
18450
18451         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18452
18453         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18454         #79217.
18455
18456 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18459         could be generated from it.
18460
18461 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18462
18463         * rand.c: fix read loop to correctly handle EINTR.
18464
18465 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18466
18467         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18468         internal calls are defined to keep methods closer to the declaring
18469         type and allow a significant reduction in runtime relocations and
18470         memory usage.
18471
18472 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18473
18474         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18475         exception message to have FileNotFoundException use the default
18476         assembly load error message. Fixes bug #79426.
18477         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18478
18479 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18480
18481         * threadpool.c: (start_thread_or_queue) use the root domain when
18482         creating the thread instead of the async object one.
18483
18484 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18485
18486         * class.c, object.c, class-internals.h, reflection.c:
18487         for arrays, store element_size inside MonoClass (speedup
18488         for array object creation).
18489
18490 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18491
18492         * icall.c: fixed CodeBase to use the file name and not the module
18493         name (bug #79365).
18494
18495 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18496
18497         * mono-debug.c, mono-debug.h: export find_method as
18498         mono_debug_find_method ().
18499
18500 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18501
18502         * debug-helpers.c, class-internals.h: added a few functions useful
18503         when debugging under gdb.
18504
18505 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18506
18507         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18508         characters that need special handling.
18509
18510 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18511
18512         * mono-config.c: make the os/cpu specification more flexible,
18513         allowing lists and negation.
18514
18515 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18516
18517         * marshal.c: COM Interop fixes. Handle case where method->klass.
18518         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18519         calling convention on non-windows platforms. This is for
18520         compatibility with XPCOM and MainWin COM.
18521         
18522         Code is contributed under MIT/X11 license.
18523         
18524
18525 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18528         correctly. Fixes #79217.
18529
18530         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18531
18532 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18533
18534         * mono-config.c: allow both an os and cpu attribute for dllmap
18535         and dllentry elemnets to enable a single config file to be used
18536         for multiple architectures.
18537
18538 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18539
18540         * loader.c: MonoLoaderError was cleared too soon on load failure.
18541         Fixes bug #79424.
18542
18543 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18544
18545         * icall.c: use the defining class vtable when accessing a
18546         static field, not a pobblibly derived class.
18547
18548 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18549
18550         * icall.c string-icalls.c: Remove references to unicode.h.
18551
18552         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18553
18554         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18555
18556         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18557         indicating the image where custom marshaller types should be looked up.
18558         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18559         custom marshallers, instead of corlib. Fixes #79425.
18560
18561 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18562
18563         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18564
18565 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18566
18567         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18568         Implement Environment.ProcessorCount.
18569         
18570         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18571         Implement Environment.ProcessorCount.
18572         
18573         * icall.c: 
18574         Add Environment.ProcessorCount icall.
18575         
18576         Patch by Jason McFall.
18577
18578 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18579
18580         * assembly.c: don't append .exe/.dll when the filename already contains
18581         one of those extensions.
18582
18583 2006-09-12  Martin Baulig  <martin@ximian.com>
18584
18585         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18586         to array interfaces.
18587
18588 2006-09-11  Martin Baulig  <martin@ximian.com>
18589
18590         * reflection.c (mono_image_build_metadata): Create the
18591         MethodImpl's after emitting all types and methods, so we don't
18592         need another fixup pass for them.
18593
18594 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18595
18596         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18597         change.
18598
18599 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18600
18601         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18602         unload.
18603
18604 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18605
18606         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18607         args is not set. Fixes #78926.
18608
18609 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18610
18611         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18612
18613         * image.c (load_class_names): Move this to class.c, and rename it to 
18614         'mono_image_init_name_cache'.
18615         (load_modules): Fix a warning.
18616
18617         * class.c icall.c image.c: Initialize image->name_cache lazily.
18618
18619         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18620         on its name using information in the AOT file.
18621
18622         * class.c (mono_class_from_name): Use the new hook function.
18623
18624 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18625
18626         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18627         correctly.
18628
18629         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18630         Fixes #79289.
18631         
18632 2006-09-06  Martin Baulig  <martin@ximian.com>
18633
18634         * icall.c (mono_lookup_internal_call): Small fix.
18635
18636 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18637
18638         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18639         double g_free.
18640
18641 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18642
18643         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18644         when --debug is specified.
18645
18646 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18647
18648         * class.c (setup_generic_array_ifaces): Fix a warning.
18649
18650 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18651
18652         * Temporarily remove the patch to assemly.c that checks the
18653         assembly versions as it breaks our gacutil.
18654
18655 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18656
18657         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18658
18659         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18660         a net 1.0 runtime.
18661
18662         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18663         created using the default ctor. Fixes #79152.
18664         (mono_string_builder_to_utf16): Ditto.
18665
18666 2006-09-01  Martin Baulig  <martin@ximian.com>
18667
18668         Fix handling of the generic array interfaces.
18669
18670         * class-internals.h
18671         (MonoDefaults): Removed `generic_array_class' and added
18672         `generic_ilist' class.
18673
18674         * class.c
18675         (mono_bounded_array_class_get): Add the new generic array interfaces.
18676         (setup_generic_array_ifaces): New static method; create vtable
18677         entries for each method in the generic array interfaces.
18678
18679         * metadata.c
18680         (select_container): Allow "parent-less" generic methods.
18681
18682         * marshal.c
18683         (mono_marshal_get_generic_array_helper): New public method.
18684
18685         * icall.c
18686         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18687         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18688         moved the interncall into System.Array.
18689
18690 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18691
18692         A few more cases of avoiding work on types with ->byref set.
18693         Has the real fix for #79238
18694         * icall.c (is_generic_parameter): New helper.
18695         (ves_icall_Type_GetGenericParameterPosition): Use it.
18696         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18697         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18698         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18699         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18700         reference types.
18701         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18702         reference types.
18703         (ves_icall_Type_get_IsGenericInstance): Likewise.
18704         (ves_icall_Type_get_IsGenericType): Likewise.
18705
18706 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18707
18708         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18709         class if possible.
18710
18711         * mempool.h (mono_mempool_get_allocated): New helper function.
18712
18713         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18714         change.
18715
18716         * mempool.c: Fix warnings and the calculation of stats.
18717
18718         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18719
18720         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18721
18722         * loader.c (mono_get_method_from_token): Update method_count stat.
18723
18724         * class-internals.h (MonoStats): Add some stats.
18725
18726 2006-08-31 Robert Jordan  <robertj@gmx.net>
18727
18728         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18729         with managed variants.
18730         All code is contributed under the MIT/X11 license.
18731         
18732 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18733
18734         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18735         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18736
18737         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18738
18739         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18740         with cycles in classes.
18741
18742         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18743
18744         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18745         missing a [MarshalAs] directive. Fixes #79203.
18746
18747         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18748         klass->marshal_info. Fixes #79217.
18749
18750 2006-08-30  Martin Baulig  <martin@ximian.com>
18751
18752         Committing a patch from Joachim Ante <joe@otee.dk>:
18753         Add support for binary data symbol stores.
18754
18755         * debug-mono-symfile.c
18756         (mono_debug_open_mono_symbol_file): Renamed into
18757         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18758         arguments.
18759
18760         * mono-debug.c
18761         (mono_debug_open_image): Added `raw_contents' and `size' args.
18762         (mono_debug_init_2_memory): New public function.
18763
18764 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18765
18766         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18767
18768 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18769
18770         * appdomain.c: implement support for ShadowCopyFiles.
18771
18772 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18773
18774         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18775         when value is NULL (and should remove CID #51).
18776
18777 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18778
18779         * image.c: moved 2 functions to ../utils.
18780
18781 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18782
18783         * gc.c: cope with the target object of a GC handle being NULL
18784         (bug #78877).
18785
18786 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18787
18788         * class.c: recursively check parent's explicit implementations
18789         of interface methods (fixes bug #79125).
18790
18791 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18792
18793         * filewatcher.c: Avoid warnings when building, do not redefine
18794         constants that are defined.
18795
18796         Remove warnings.
18797
18798 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18799
18800         * image.c: don't fail when the link points to an absolute path.
18801
18802 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18803
18804         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18805         Fix CID #3.
18806
18807 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18808
18809         * image.c (full_path): A new method used to obtain the actual path
18810         of an assembly even in the presence of symbolic links.  
18811
18812         This is necessary for the case where we are running a binary that
18813         has been GACed, but we are using the "published" path name
18814         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18815         file in the GAC.
18816
18817         This was the source of the failure for the `xsp' command with the
18818         recent AppDomain changes, as far as the runtime was concerned,
18819         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18820         $prefix/mono/gac/blah/version/blah.exe.
18821
18822         (do_mono_image_open): use full path
18823
18824 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18825
18826         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18827
18828 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18829
18830         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18831         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18832
18833 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18834
18835         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18836         small structures. Fixes #78990.
18837
18838 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18839
18840         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18841
18842         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18843
18844 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18845
18846         * appdomain.c:
18847         * marshal.c: don't load all the assemblies from a domain into newly
18848         created ones. The new domains might have different rules and load
18849         assemblies from different locations. Fixes bug #76757.
18850
18851         Patch by Lluis. Conflicts resolved by Brian Crowell.
18852
18853 2006-08-16  Alp Toker  <alp@atoker.com>
18854
18855         * socket-io.c: First half of the fix for #79084.
18856         Set sa_size to the length of the content, not that of the struct.
18857         Don't add NULL suffix to the content, this should be done in
18858         managed code if needed.
18859
18860 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18861
18862         Fix part of #79012
18863         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18864         mono_metadata_parse_type returns NULL.
18865
18866 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18867
18868         * normalization-tables.h : new file for string normalization data.
18869         * locales.c, locales.h, icall.c :
18870           added load_normalization_resource() for string normalization,
18871           and icall as well.
18872         * Makefile.am : added normalization-tables.h to the sources.
18873
18874 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18875
18876         * marshal.c: Add more helper functions to reduce code duplication and use them
18877         everywhere.
18878
18879 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18880
18881         * marshal.c: Fix non-x86 stdcall warnings.
18882         
18883         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18884         them everywhere.
18885
18886 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18887
18888         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18889         type check on multi-dimensional arrays. Fixes #79000.
18890
18891 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18892
18893         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18894         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18895         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18896         * class-internals.h: add is_com_object to class structure.
18897         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18898         null checks to COM object marshalling. Fix .ctor call on RCW.
18899         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18900         
18901         All code is contributed under the MIT/X11 license.
18902
18903 2006-08-09  Dick Porter  <dick@ximian.com>
18904
18905         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18906         racing mono_monitor_allocator_lock() somewhere, so don't delete
18907         the critical section for now.  Found by running and exiting
18908         monodevelop.
18909
18910 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18913         (ves_icall_System_ComObject_FindInterface): Ditto.
18914         (ves_icall_System_ComObject_CacheInterface): Ditto.
18915
18916         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18917         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18918
18919 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18920
18921         * threadpool.c: treat pipes from process asynchronous reads as sockets
18922         when reading from them, so we get select/poll or epoll to wait for
18923         data.
18924
18925 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18926
18927         * loader.c: Fix a typo (CID #233) in the null check.
18928
18929 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18930
18931         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18932         Hopefully fixes #78949.
18933         
18934         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18935         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18936         bytes. Fixes #78972.
18937
18938 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18939
18940         * filewatcher.c: we need to set errno here.
18941
18942 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18943
18944         * filewatcher.c: let Win32Exception get the error value.
18945
18946 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18947
18948         * filewatcher.c: translate errno into win32 errors for Win32Exception
18949         to know what happened.
18950
18951 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18952
18953         * threadpool.c: Fix more warnings.
18954
18955         * assembly.c (search_loaded): Fix warnings.
18956
18957         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18958         (mono_async_invoke): Ditto.
18959
18960 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18961
18962         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18963         entries for __ComObject type in addition to ComImport types.
18964         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18965         about hash table.
18966         
18967         All code is contributed under the MIT/X11 license.
18968
18969 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18970
18971         * image.c: avoid tentative loading of modulerefs that contain
18972         no metadata (P/Invoke library names).
18973
18974 2006-07-28  Dick Porter  <dick@ximian.com>
18975
18976         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18977         mono_loader_lock() somewhere, so don't delete the critical section
18978         for now.  Found by running and exiting monodevelop.
18979
18980 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18981
18982         * filewatcher.c: define the inotify syscalls when we're building on
18983         linux and have sys/syscall.h. The build system might not have support
18984         for inotify but the target system might have it.
18985
18986 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18987
18988         * domain.c: Documentation updates.
18989
18990         * loader.c (mono_free_method): Do not release the method
18991         information if we are being profiled, as profilers will use this
18992         information at shut down to present some data to the user.
18993
18994         This is needed so that the profiler does not crash, as the
18995         profiler tends to keep MonoMethods around, and they might become
18996         invalid if we free these.
18997
18998         (mono_get_method_constrained): Return the original CIL stream
18999         method as well, so verification can be performed against it.
19000
19001 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19002
19003         * filewatcher.[ch]: support for inotify file system watcher.
19004         * icall.c: add new internal calls for the inotify file system watcher.
19005
19006 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19007
19008         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19009         #78888.
19010
19011 2006-07-20  Dick Porter  <dick@ximian.com>
19012
19013         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19014         warning.
19015
19016 2006-07-20  Dick Porter  <dick@ximian.com>
19017
19018         * threads.c (start_wrapper): Do the thread cleanup while we still
19019         hold a reference to its object.  Fixes bug 78123.
19020
19021 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19022
19023         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19024         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19025           "managed-to-managed".
19026         * icall.c: Redirect string constructors that take sbyte* to
19027           ves_icall_System_String_ctor_RedirectToCreateString.
19028         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19029           to CreateString () methods with matching signature.
19030         * reflection.c: Use original security informations for
19031           MONO_WRAPPER_MANAGED_TO_MANAGED.
19032         * security-manager.c: Use original security informations for
19033           MONO_WRAPPER_MANAGED_TO_MANAGED.
19034         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19035           that is a placeholder and only its address should be used.
19036         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19037           that is a placeholder and only its address should be used.
19038
19039 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19040
19041         Begin implementing COM Interop.
19042         * appdomain.c: Increment corlib version.
19043         * class.c: Set ComImport classes' parent to __ComObject.
19044         * loader.c: Mark cominterop methods as such.
19045         * domain.c: Add __ComObject class to MonoDefaults structure.
19046         * image.c: Add 2 hashtables to the image for COM Interop related methods
19047         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19048         using the mempool allocator
19049         
19050         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19051         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19052         declaration for mono_metadata_type_dup_mp.
19053         
19054         * debug-helpers.c: Added strings for two additional wrapper types
19055         * object.c: Create proxy objects for ComImport classes
19056         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19057         and added __ComObject class to MonoDefaults structure.
19058         
19059         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19060         MonoComInteropProxy and MonoComObject.
19061         
19062         * marshal.c: Added support for COM Interop
19063         (signature_cominterop): Converts managed signature to corresponding
19064         unmanaged COM signature.
19065         (cominterop_get_function_pointer): gets unmanaged function pointer via
19066         COM object vtable
19067         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19068         (cominterop_get_method_interface): returns interface type that method is defined on
19069         (mono_mb_emit_cominterop_call): emits native call to function pointer
19070         gotten from vtable
19071         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19072         that matches signature of unmanaged function.
19073         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19074         (cominterop_get_invoke): forwards call from proxy to __ComObject
19075         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19076         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19077         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19078         
19079         * marshal.h: Added Marshal icall declarations.
19080         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19081         so we can access them in finalizer
19082         
19083 2006-07-14  Dick Porter  <dick@ximian.com>
19084
19085         * object.c (mono_type_initialization_cleanup): Fix a race
19086         condition by temporarily commenting out the critical section
19087         deletion.
19088
19089 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19090
19091         * reflection.c (create_custom_attr): Fix some warnings.
19092         (create_custom_attr_data): Ditto.
19093         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19094         types. Fixes #78855.
19095
19096 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19097
19098         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19099
19100         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19101
19102 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19103
19104         * reflection.c (resolve_object): Add support for DynamicMethod.
19105
19106         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19107         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19108
19109 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19110
19111         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19112         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19113
19114 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19115
19116         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19117         Fixes #77888.
19118
19119 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19120
19121         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19122         slightly: remove a shadow local variable.
19123
19124 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19125
19126         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19127         definition that introduces the virtual function slot.
19128         Also fix Coverity #105.
19129
19130 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19131
19132         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19133         for dynamic assemblies. Fixes #78724.
19134
19135 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19136
19137         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19138         Fixes #78722.
19139
19140 2006-06-21  Martin Baulig  <martin@ximian.com>
19141
19142         * reflection.c
19143         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19144         fixes #76484.
19145
19146 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19147
19148         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19149
19150 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19151
19152         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19153         nor TYPEREFs.
19154         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19155         Inflate result if necessary.
19156         (mono_class_get_full): Remove old version.  Rename from
19157         'mono_class_get' and add 'context' argument.  Pass it to
19158         ..._create_from_typespec.
19159         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19160         (mono_ldtoken): Revert change below.
19161
19162 2006-06-20  Martin Baulig  <martin@ximian.com>
19163
19164         * class.c (mono_ldtoken): Don't pass the generic context to
19165         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19166
19167 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19168
19169         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19170         and later freeing it. Fixes #78638.
19171
19172 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19173
19174         * icall.c (mono_class_get_throw): Revert over-zealous error
19175         throwing, the caller for mono_class_get_throw will cope with
19176         errors when classes are not properly initialized already.
19177
19178         The code still copes with loader exceptions though.
19179
19180         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19181         
19182 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19183
19184         Fixes the `make run1' version of RuntimeAbort (to be commited,
19185         source is in Bugzilla).
19186         
19187         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19188         FALSE on class loading failure instead of returning true.
19189
19190         * class.c (mono_class_create_from_typedef): It is possible for
19191         mono_metadata_interfaces_from_typedef_full to fail if a class is
19192         not found, cope with this.
19193         
19194
19195 2006-06-14  Dick Porter  <dick@ximian.com>
19196
19197         * socket-io.c: 
19198         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19199         4.1.1
19200
19201 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19202
19203         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19204
19205 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19206
19207         * icall.c: Another fix for building mono in Visual Studio.
19208
19209 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19210
19211         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19212         
19213 2006-06-09  Martin Baulig  <martin@ximian.com>
19214
19215         * debug-mono-symfile.c: Put this back and really fix it this
19216         time. Sorry for all the trouble.
19217
19218 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19219
19220         * icall.c (mono_class_get_throw): Fix a warning.
19221         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19222         ReflectionTypeLoadException if needed. Fixes #78606.
19223
19224         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19225         (mono_class_init): Ditto.
19226
19227         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19228         ref_only exceptions.
19229         (mono_loader_clear_error): Make this work even if there is no error.
19230
19231 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19232
19233         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19234         Marshal.GetComSlotForMethodInfo using internal call.
19235
19236 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19237
19238         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19239         a function for signalling it.
19240
19241         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19242         a referenced assembly is not found.
19243
19244         * loader.c (mono_loader_error_prepare_exception): Add support for 
19245         LOADER_ERROR_ASSEMBLY. Fix formatting.
19246
19247 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19248
19249         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19250         for VARIANT marshalling on windows and increment corlib version
19251         since Variant struct was added.
19252
19253 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19254
19255         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19256         stack trace line information:
19257
19258         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19259         (Martin) when looking up B which is between A and C, return A not C.
19260
19261         Bug is #78573.
19262
19263         Thanks to Alexander Olk for tracking this down.
19264
19265 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19266
19267         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19268         
19269         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19270         avoid clobbering its value.
19271         (mono_string_to_lpstr): Fix a warning on windows.
19272
19273 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19274
19275         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19276
19277         * reflection.c loader.c: Removed references to 'dummy' flag.
19278
19279         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19280
19281         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19282         it gets GC tracking.
19283
19284         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19285         GC tracking.
19286         
19287         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19288
19289         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19290
19291         * appdomain.c: Bump corlib version.
19292
19293 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19296         CEE_STIND_REF when working with object references.
19297
19298 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19299
19300         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19301         Fixes #78539.
19302
19303 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19304
19305         * loader.c (method_from_memberref): Fix argument value for
19306         mono_loader_set_error_method_load (I was passing the MonoClass
19307         instead of the class name char *).
19308
19309 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19310
19311         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19312         CEE_STIND_REF when working with object references.
19313
19314 2006-05-30  Martin Baulig  <martin@ximian.com>
19315
19316         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19317         mono_method_full_name() change and replace the ':' with a '.'
19318         here.
19319
19320 2006-05-30  Martin Baulig  <martin@ximian.com>
19321
19322         * debug-mono-symfile.c
19323         (mono_debug_symfile_lookup_location): Fix the algorithm:
19324         when looking up B which is between A and C, return A not C.
19325
19326 2006-05-29  Martin Baulig  <martin@ximian.com>
19327
19328         * mono-debug.h
19329         (MonoDebugMethodInfo): Make the typedef public.
19330         (MonoDebugSourceLocation): New public struct.
19331
19332         * mono-debug.c
19333         (mono_debug_source_location_from_address): Removed.
19334         (mono_debug_source_location_from_il_offset): Removed.
19335         (mono_debug_il_offset_from_address): Removed.
19336         (mono_debug_address_from_il_offset): Removed.
19337         (mono_debug_lookup_method): New public function.
19338         (mono_debug_lookup_source_location): New public function; replaces
19339         the old mono_debug_source_location_from_*() functions; see the
19340         inline documentation.
19341         (mono_debug_free_source_location): New public function.
19342         (mono_debug_print_stack_frame): New public function; see the
19343         inline documentation.
19344
19345         * debug-mono-symfile.c
19346         (mono_debug_find_source_location): Renamed into
19347         mono_debug_symfile_lookup_location(); only take a
19348         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19349         documentation.
19350         (mono_debug_find_method): Renamed into
19351         mono_debug_symfile_lookup_method().
19352
19353 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19354
19355         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19356         returned by mono_image_open_full ().
19357
19358         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19359         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19360         #78517.
19361
19362         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19363         #78518.
19364
19365 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19366
19367         * class.c (mono_class_from_typeref): handle missing images
19368         earlier, deals with bug #78418.   Refactor code; 
19369
19370         Fix a warning introduced in my previous commit (some stale code
19371         from before I revisited my patch).
19372
19373         * class.c (mono_class_create_from_typedef): On failure, remove the
19374         class from the MonoImage->class_cache as the class is not
19375         initialized;   Fixes the leak pointed out by Paolo.
19376
19377 2006-05-25  Dick Porter  <dick@ximian.com>
19378
19379         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19380         DeleteCriticalSections until I figure out which one may still be
19381         sometimes locked when mono_thread_cleanup is called.
19382
19383 2006-05-24  Dick Porter  <dick@ximian.com>
19384
19385         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19386         of mono_thread_manage and back into its own function, so it can be
19387         called after the finalizer thread has finished.
19388
19389         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19390
19391 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19392
19393         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19394         Fixes #78495.
19395
19396         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19397         with non-blittable elements.
19398         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19399
19400 2006-05-24  Martin Baulig  <martin@ximian.com>
19401
19402         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19403         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19404
19405         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19406         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19407         `mono_debugger_event_handler' to NULL.
19408
19409 2006-05-24  Martin Baulig  <martin@ximian.com>
19410
19411         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19412
19413 2006-05-24  Martin Baulig  <martin@ximian.com>
19414
19415         * mono-debug-debugger.h
19416         (mono_debugger_create_notification_function): Added
19417         `MonoCodeManager *' argument.
19418
19419 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19420
19421         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19422
19423 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19424
19425         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19426         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19427         implementation.
19428
19429 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19430
19431         * icall.c: precise GC support: objects can't be stored in unmanaged
19432         memory anymore, even if they are kept alive by other references: since
19433         they can move the GC needs to be able to always find them.
19434
19435 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19436
19437         * object.c: precise GC support for static fields. Support
19438         for moving GCs: write barriers and pinned allocation for interned
19439         strings.
19440
19441 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19442
19443         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19444         structure.
19445
19446 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19447
19448         * class.c, gc.c: sgen and precise GC updates.
19449
19450 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19451
19452         * marshal.h, marshal.c: added write barrier wrapper and precise type
19453         fixes.
19454
19455 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19456
19457         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19458         support.
19459
19460 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19461
19462         * reflection.c: precise and sgen GC updates.
19463
19464 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19465
19466         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19467
19468 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19469
19470         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19471
19472 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19473
19474         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19475         MONO_TYPE_OBJECT. Fixes #78462.
19476
19477 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19478
19479         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19480         and blittable types.
19481
19482 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19483
19484         * class.c (mono_class_get_exception_for_failure): Implement parts
19485         of a TODO: if the loader error is set (instead of the class
19486         error), we return a Loader exception that can be properly thrown
19487         elsewhere.
19488
19489         This was exposed by some Winforms 2.0 code that I tried to run
19490         (Atsushi pointed me to it).
19491
19492 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19493
19494         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19495         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19496         
19497         * marshal.c (emit_marshal_vtype): Add limited support for 
19498         UnmanagedType.LPStruct. Fixes #78427.
19499
19500         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19501         Applied a patch from kangaroo to fix #77523.
19502
19503 2006-05-17  Martin Baulig  <martin@ximian.com>
19504
19505         * threads.c
19506         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19507         (debugger_thread_created): Removed.
19508         (debugger_thread_exited): Removed.
19509
19510 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19511
19512         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19513
19514         * object-internals.h (MonoReflectionResource): Sync with managed version.
19515
19516 2006-05-12  Wade Berrier <wberrier@novell.com>
19517
19518         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19519
19520 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19521
19522         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19523         functions try to allocate from the image mempool.
19524
19525 2006-05-12  Dick Porter  <dick@ximian.com>
19526
19527         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19528
19529 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19530
19531         * object.c: The FieldGetter and FieldSetter methods require the full
19532         name of the class, not only the name. Fixes bug #78277.
19533
19534 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19535
19536         * loader.c (method_from_memberref): Do not pass the NULL klass to
19537         mono_loader_set_error_() methods.  Pass the non-NULL value
19538         (class). 
19539
19540 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19541
19542         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19543         (mono_assembly_close): Null out assembly->image->references after freeing it.
19544
19545         * image.c (mono_image_close): Free image->references.
19546         
19547         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19548
19549 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19550
19551         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19552         before checking if it's NULL (g_assert).
19553
19554 2006-05-10  Martin Baulig  <martin@ximian.com>
19555
19556         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19557         I thought I already killed that two months ago, but now it somehow reappeared.
19558
19559 2006-05-10  Martin Baulig  <martin@ximian.com>
19560
19561         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19562
19563 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19564
19565         * reflection.c: Allocate memory for dynamically created methods in the image
19566         mempools.
19567
19568 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19569
19570         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19571         don't use the ad pointer before checking if it's NULL (g_assert).
19572
19573 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19574
19575         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19576         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19577
19578         * marshal.c: Allocate all signatures from mempools.
19579
19580         * marshal.c: Allocate some more signatures from mempools.
19581
19582 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19583
19584         * object.c (mono_load_remote_field): The code used to provide a
19585         temporary variable for returning results if the user did not
19586         provide a result pointer.  But our temporary variable was allocted
19587         on the satck.
19588
19589         Fix calling code to always pass a result area.   Coverity ID 103.
19590
19591 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19592
19593         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19594         value, not the old. Fixes #78312.
19595         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19596
19597         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19598         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19599         per-image cache.
19600
19601         * assembly.c (mono_assembly_close): Free image->references.
19602
19603         * assembly.c (mono_assembly_names_equal): Fix a warning.
19604         (mono_assemblies_cleanup): Cleanup more global data.
19605
19606         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19607
19608         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19609         ptr_cache and image->modules.
19610
19611         * image.c (mono_image_init): Allocate array_cache lazily.
19612         
19613 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19614
19615         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19616         behavior was changed recently and has bad side effects.
19617
19618 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19619
19620         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19621         
19622         * assembly.c (mono_assembly_close): Remove a debug printf.
19623
19624         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19625
19626         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19627         to also allow for temporary references between mono_image_open ()/close ().
19628
19629         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19630
19631 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19632
19633         * marshal.c: Fix support for dynamic methods.
19634
19635         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19636
19637         * marshal.c (mono_marshal_cleanup): New cleanup function.
19638
19639         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19640         image mempools.
19641
19642         * class.c (mono_class_init): Fix leaking class->nested_classes.
19643
19644         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19645
19646         * image.c (mono_image_init): Initialize the new cashes.
19647
19648         * image.c (mono_image_close): Destroy the new cashes.
19649
19650         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19651
19652         * mempool.c (mono_mempool_strdup): New helper function.
19653
19654         * class-internals.h: Add prototype for mono_loader_unlock ().
19655
19656         * domain.c (mono_jit_info_table_find): Fix a warning.
19657         (mono_debugger_check_runtime_version): Ditto.
19658
19659         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19660         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19661         functions to these modules.
19662
19663         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19664         metadata modules.
19665         
19666         * marshal.c (mono_free_bstr): Fix a warning.
19667
19668         * assembly.c (mono_assembly_open_full): Fix another small leak.
19669
19670         * object.c: Fix some unload leaks in the remoting code.
19671
19672         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19673         function.
19674
19675         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19676
19677         * reflection.c: Fix some unload leaks in dynamic assemblies.
19678
19679 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19680
19681         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19682         * marshal.h: Add BSTR support on Win32
19683         * icall.c: Add BSTR icalls
19684         * metadata.h: Add BSTR enums
19685
19686 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19687
19688         Work to catch the crash from #76795 and turn it into an
19689         exception.   As I stubbed out pieces of the VisualBasic support,
19690         I found a number of places where the code was failing and I added
19691         checks to those places. 
19692         
19693         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19694         function return a status code.  If we fail to parse the signature
19695         from mono_metadata_parse_generic_inst, return FALSE.
19696
19697         * loader.c (mono_get_method_from_token): If we fail to load the
19698         method (mono_class_get) return NULL.   
19699
19700         * (method_from_memberref): Return NULL if we are unable to parse
19701         the method signature
19702
19703         (mono_loader_error_prepare_exception): Since we now use the
19704         loader_error flag internally to stop processing, and obtaining
19705         exceptions that might be thrown will walk this code path the
19706         proper way of going from a MonoLoaderError into a
19707         MonoException was convoluted.   This new routine encapsulates the
19708         process of turning the error into an exception and *clearing* the
19709         error afterwards.
19710         
19711 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19712
19713         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19714         with missing assemblies), and to cope with:
19715
19716                 * Missing fieldref from a non-existing assembly.
19717                 * Missing methodref from a non-existing assembly.
19718
19719         The first batch of work to address *some* of the issues from 76661.
19720         
19721         * object.c (mono_class_create_runtime_vtable): If we fail to
19722         initialize the class raise the exception here. 
19723
19724         * metadata.c (mono_class_get_overrides_full): If any methods fail
19725         to load return the failure to the caller.
19726
19727         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19728         flagging assemblies that failed to load.   
19729
19730         Do not crash if we are unable to load the assembly.
19731
19732         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19733         assemblies. 
19734
19735         * loader.c (mono_loader_set_error_type_load): Change the
19736         convention to always pass unallocated strings, so we make our own
19737         copies (I know our own code had duplicated strings before, but
19738         this keeps the normal conventions).
19739         (method_from_memberref): Call mono_loader_set_error_method_load
19740         for all possible failures of loading the class. 
19741         Remove assert, turn into a loader error.
19742
19743         (mono_loader_error_to_exception): Move this routine from mini
19744         (mini_loader_error_to_exception) there was no need to have that in
19745         mini. 
19746
19747         * class.c (mono_class_from_typeref): If we were not able to load
19748         the assembly with mono_assembly_load_reference, call the
19749         mono_loader_set_error_type_load to register the problem.
19750
19751         (mono_class_setup_fields): If we fail to load the type from
19752         mono_metadata_parse_type_full, call mono_class_set_failure and
19753         break from the loop.
19754
19755         If class->exception_type is set, we do not layout the fields as
19756         that might crash the runtime, and instead return (from breaking
19757         from the previous loop).
19758
19759         (mono_class_setup_vtable): This now returns a boolean indicating
19760         whether the table was properly setup.   The decision is driven by
19761         mono_class_get_overrides_full which might run into non-existing
19762         methods. 
19763         
19764         (mono_class_init): Returns TRUE on success or FALSE if there was a
19765         problem in loading the type (incorrect assemblies, missing
19766         assemblies, methods, etc).
19767
19768         When we call mono_class_setup_fields we also check for a potential
19769         error inside this call (either a class exception or a general
19770         loader exception).
19771
19772         (mono_class_create_from_typedef): If the parent fails to load
19773         (calling mono_class_get_full) return NULL.
19774         
19775         ** Important **
19776
19777         calls to mono_metadata_parse_type_full should be checked
19778         everywhere and set the mono_class_set_failure
19779         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19780
19781         The current patch checks the places where my manually constructed
19782         tests show the errors are showing up, but we should do it
19783         everywhere. 
19784
19785         ** Important2 **
19786
19787         mono_class_init return values should be tested everywhere, like
19788         the previous case this is something that we should audit
19789         everywhere and not only on the cases exposed by the tests I
19790         created. 
19791
19792 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19793
19794         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19795         boolean parameter and instead pass the information on `options'
19796         parameter (FileOptions).
19797
19798         * icall.c: Register the new signature for MonoIO.Open.
19799
19800         * debug-helpers.c (dis_one): Trying to understand how coverity
19801         works.  Fix Run 5, item 78.
19802
19803 2006-04-26  Dick Porter  <dick@ximian.com>
19804
19805         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19806         dereference.
19807
19808 2006-04-25  Martin Baulig  <martin@ximian.com>
19809
19810         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19811
19812         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19813         debugger_thread_created().
19814         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19815         special way.
19816         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19817         (mono_debugger_finalize_threads): New function; undo the effects
19818         of mono_debugger_init_threads().
19819         (mono_debugger_create_all_threads): Removed.
19820
19821 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19822
19823         * image.c (mono_image_close): Tidy up trace messages.
19824
19825         * assembly.c (mono_assembly_close): Ditto.
19826
19827         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19828         no longer references an already freed assembly. Fixes #78168.
19829
19830 2006-04-21  Dick Porter  <dick@ximian.com>
19831
19832         * threads.c (mono_thread_detach): Fix reference counting when
19833         detaching threads.
19834
19835 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19836
19837         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19838         #78155.
19839
19840 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19841
19842         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19843         (mono_type_to_stind): Ditto.
19844
19845         * marshal.c: Use the new helper functions to simplify code.
19846
19847         * image.c (mono_image_close): Add some code for help debug assembly unloading
19848         problems.
19849
19850         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19851         image mempool.
19852
19853         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19854         assembly was already loaded in another appdomain. Fixes #78083.
19855
19856 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19857
19858         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19859         referenced assemblies.
19860         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19861
19862         * domain.c (mono_domain_free): Add a trace message.
19863
19864         * appdomain.c (add_assemblies_to_domain): Ditto.        
19865
19866         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19867         field.  
19868
19869 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19870
19871         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19872
19873 2006-04-12  Martin Baulig  <martin@ximian.com>
19874
19875         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19876         `USE_INCLUDED_LIBGC'.   
19877
19878 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19879
19880         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19881         the patch contains ../ and a small directory name later. Hopefully fixes
19882         #78035.
19883
19884 2006-04-10  Martin Baulig  <martin@ximian.com>
19885
19886         Clean up the debugger's thread-handling code.
19887
19888         The debugger's thread-handling code has been moved from
19889         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19890         over the `threads' hash, keep track of exiting threads and also
19891         use proper locking.
19892
19893         We can now debug XSP and XSP based applications with the debugger.
19894
19895         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19896
19897         * threads.h
19898         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19899         (mono_install_thread_callbacks): Likewise.      
19900
19901         * threads.c (mono_thread_callbacks): Removed.
19902         (debugger_thread_created, debugger_thread_exited): New static functions.
19903         (start_wrapper): Call debugger_thread_created().
19904         (thread_cleanup): Call debugger_thread_exited().
19905         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19906         (mono_debugger_init_threads): New public function.
19907         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19908         iterate directly over the `threads' hash and also use proper locking.
19909
19910         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19911
19912         * mono-debug-debugger.h
19913         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19914
19915 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19916
19917         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19918         argument type=array. Fixes #78057.
19919
19920 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19921
19922         * culture-info-table.h : regenerated. Fixed bug #69652.
19923
19924 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19925
19926         * loader.c metadata.c: Reapply a variant r59116.
19927         
19928         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19929
19930         * class.c (mono_class_setup_interface_offsets): New internal function.
19931
19932         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19933         interfaces too. Fixes #77398.
19934
19935         * reflection.c (encode_cattr_value): Add support for 
19936         parameter type=object, argument type=array.
19937         (load_cattr_value): Ditto. Fixes #77916.
19938
19939         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19940         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19941
19942         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19943         a byval char array and CharSet is Ansi.
19944
19945         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19946
19947 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19948
19949         * metadata.c: Add some locking comments.
19950         
19951         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19952         mempool.
19953         (mono_metadata_free_method_signature): Don't free the signature itself.
19954
19955         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19956
19957         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19958         reference the same MonoImage.
19959         (mono_assembly_load_from_full): Add an assert.
19960
19961 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19962
19963         * image.c (mono_image_close): Don't put the image we are about to free into the
19964         loaded_images_guid_hash.
19965
19966         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19967         to reduce code duplication.
19968
19969         * marshal.c: Register the native functions called by this module as icalls, to
19970         somewhat centralize the creation of MonoMethodSignature's.
19971
19972         * loader.c (mono_method_signature): Add a cache for method signatures.
19973
19974         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19975         the parameter attributes of a method.
19976         (mono_metadata_parse_method_signature_full): Refactored the computation of
19977         parameter attributes into a separate function. Also avoid one allocation in
19978         most cases.
19979
19980         * assembly.c (mono_assembly_close): Ditto.
19981
19982         * image.c (mono_image_close): Log trace messages with INFO level.
19983
19984         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19985
19986         * image.c reflection.c: Correct reference counting of image modules.
19987         
19988         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19989         of this function from the image mempool.
19990         
19991         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19992         to allow more cached types to be used.
19993
19994         * mono-debug.c (mono_debug_add_method): Appled patch from
19995         David S. Miller  <davem@sunset.davemloft.net>: Access 
19996         minfo->lexical_blocks[] entry elements using read32().
19997
19998 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19999
20000         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20001         methods as it is allocated from the mempool.
20002
20003         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20004         image mempool.
20005
20006         * metadata-internals.h: Add comments describing the reference counting scheme
20007         used for MonoImage and MonoAssembly.
20008
20009         * image.c assembly.c reflection.c: Rework reference counting of images and 
20010         assemblies so they are freed when the runtime is shut down. Free some 
20011         additional memory structures when an image is unloaded.
20012         
20013 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20014
20015         * class.c loader.c reflection.c: Allocate more data structures in
20016         the image mempool.
20017
20018 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20019
20020         * icall.c
20021         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20022         build on pre glib 2.4 systems.
20023
20024 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20025
20026         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20027
20028         * icall.c: Fix some warnings.
20029
20030 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20031
20032         * culture-info-table.h : regenerated.
20033
20034 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20035
20036         * threads.c, object-internals.h, verify.c: changed the culture caching
20037         code to use a normal MonoArray for storage so the GC can keep track of
20038         them easily. Fixed bits of the cache logic, too and simplified the
20039         code.
20040
20041 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20042
20043         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20044         thread for non-Boehm GCs.
20045
20046 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20047
20048         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20049         needed to keep track of the data for static fields.
20050
20051 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20052
20053         Fix #75172
20054         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20055         for interface classes.  Use 'num_methods' instead.
20056         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20057         before using '->vtable_size' field.
20058
20059 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20060
20061         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20062         doesn't contain managed pointers, so use a normal hashtable.
20063
20064 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20065
20066         * reflection.c, class-internals.h, domain.c: fixed handling of types
20067         used as values for objects in custom attributes (bug #77915):
20068
20069 2006-03-24  Martin Baulig  <martin@ximian.com>
20070
20071         * class.c (mono_class_setup_fields): Added support for generic
20072         instances; fixes #77580.
20073
20074 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20075
20076         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20077
20078 2006-03-24  Dick Porter  <dick@ximian.com>
20079
20080         * file-io.c (get_file_attributes): More stat macro breakage.
20081         Fixes bug 77759.
20082
20083 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20084
20085         * profiler.c: added the file=filename option in the default profiler
20086         to output the profile data to filename.
20087
20088 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20089
20090         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20091         bug #77877.
20092
20093 2006-03-22  Martin Baulig  <martin@ximian.com>
20094
20095         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20096         allocated `MonoClassField *' in `fb->handle'.
20097
20098 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20099
20100         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20101         allocate interface ID to save memory and allow better ID reuse on
20102         appdomain unload. setup_generic_vtable () removal from Martin.
20103
20104 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20105
20106         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20107         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20108         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20109         write barriers for reference stores with managed objects accessed with
20110         C structures in the runtime and in embedding programs.
20111
20112 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20113
20114         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20115         'interface_id' and 'max_interface_id' fields of MonoClasses
20116         representing open generic types.
20117
20118 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20119
20120         * object.h, object.c, icall.c: added functions to deal with
20121         storing valuetypes that contain references in managed objects.
20122         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20123         fixes and comments around uses of mono_array_addr ().
20124
20125 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20126
20127         * object.h, icall.c, monitor.c: object.GetHashCode ()
20128         implementation that supports the moving garbage collector.
20129
20130 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20131
20132         * icall.c, threads-types.h, threads.c: implemented finalizer for
20133         LocalDataStoreSlot.
20134
20135 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20136
20137         * metadata.c (mono_type_size): Add a fixme.
20138         (mono_type_stack_size): Ditto.
20139
20140         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20141         'type_forwarders' field.
20142
20143         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20144         attribute from net 2.0.
20145
20146         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20147         from class.c.
20148
20149         * class.c (mono_class_setup_fields): Fix a warning.
20150         
20151         * class.c (mono_class_from_name): Add support for assemblyref entries
20152         in the EXPORTEDTYPE table.
20153
20154         * reflection.c: Add support for handling type forwarders under net 2.0.
20155
20156         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20157         
20158 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20159
20160         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20161         overwriting entries in ModuleBuild->types, also clean up the code
20162         a little. Fixes #77774.
20163
20164 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20165
20166         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20167         load friend assembly info when present.
20168
20169 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20170
20171         Fix crasher on gtest-158.cs.
20172         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20173         the return value if the MonoClass we want is yet in an
20174         inconsistent state.
20175         * class.c (mono_class_create_from_typedef): Add an comment
20176         explaining an order dependency between mono_class_setup_parent and
20177         mono_class_setup_mono_type.
20178
20179 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20180
20181         * class.c: documentation updates and events bug fix.
20182
20183 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20184
20185         * class.c: some cleanup, locking fixes.
20186
20187 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20188
20189         * class.c: fix the generics code to setup nested
20190         type info to the instantiated type (bug #77770).
20191
20192 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20193
20194         * marshal.c: fixed a few type correctness issues.
20195
20196 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20197
20198         * loader.c: the Set/Get/Addrtess array methods should be public.
20199
20200 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20201
20202         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20203         
20204         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20205         info->wrapper.
20206
20207 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20208
20209         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20210
20211         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20212
20213         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20214         (mono_mempool_alloc0): Ditto.
20215
20216 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20217
20218         * socket-io.c:
20219         (create_object_from_sockaddr): it was allocating 4 extra bytes
20220         for the AF_UNIX data. Fixes bug #77747.
20221
20222 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20223
20224         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20225
20226 2006-03-09  Dick Porter  <dick@ximian.com>
20227
20228         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20229         Fixes bug 76966 again.
20230
20231 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20232
20233         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20234         names from r57532
20235         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20236
20237 2006-03-07  Martin Baulig  <martin@ximian.com>
20238
20239         * object.c
20240         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20241
20242 2006-03-07  Martin Baulig  <martin@ximian.com>
20243
20244         * class.c
20245         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20246         regression introduced in r56970; see gtest-252.cs.
20247
20248         * loader.c (mono_get_method_constrained): Correctly handle generic
20249         methods; see gtest-253.cs.
20250
20251 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20252
20253         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20254
20255 2006-03-04  Martin Baulig  <martin@ximian.com>
20256
20257         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20258         compute the parent type at runtime, just like we're already doing
20259         it for interfaces.
20260
20261         * reflection.c
20262         (mono_reflection_bind_generic_parameters): Don't compute the
20263         parent type anymore.
20264
20265         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20266
20267 2006-03-04  Martin Baulig  <martin@ximian.com>
20268
20269         * mono-debug-debugger.h
20270         (mono_debugger_create_notification_function): Allocate memory at
20271         runtime and return a pointer to it.
20272
20273 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20274
20275         * assembly.c: Fix windows build.
20276         
20277         * assembly.c: Fix build.
20278
20279         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20280
20281         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20282         
20283 2006-03-03  Dick Porter  <dick@ximian.com>
20284
20285         * process.c
20286         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20287         Check parameters before dereferencing them.  Fixes Aaron's part of
20288         bug 77393.
20289
20290 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20291
20292         Fix performance regression.
20293         * loader.c (find_method_in_class): Add 'from_class' argument.
20294         Rename 'klass' argument to 'in_class'.  The signature is compared
20295         against the method in 'in_class', and the corresponding method is
20296         returned from 'from_class'.
20297         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20298         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20299         type definition and generic instantiation in parallel.
20300         (mono_get_method_constrained): Update to changes.
20301
20302 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20303
20304         * threads.c: make sure the domain is correct, too when doing
20305         mono_thread_attach ().
20306
20307 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20308
20309         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20310         windows. Fixes #77683.
20311
20312 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20313
20314         * object.h, *: introduced specific way to set elements of an array
20315         of references to be used as write barrier. Still need to audit the
20316         uses of mono_array_addr.
20317
20318 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20319
20320         * object-internals.h: New field to cache the assmebly name, patch
20321         from Tambet Ingo (tambet@ximian.com)
20322
20323 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20324
20325         * decimal.h, class-internals.h, metadata-internals.h,
20326         file-io.h: mark a few function declarations as internal, to
20327         reduce the number of PLT entries.
20328
20329 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20330
20331         * file-io.c: fix typo in warning message.
20332
20333 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20334
20335         * loader.c: on unix, lookup the "*A" version of a function
20336         if charset is auto as a second option before failing.
20337
20338 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20339
20340         * class.h (mono_class_inflate_generic_method): Revert to two
20341         argument version.
20342         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20343         (mono_class_inflate_generic_method_full): Add.
20344         * class.c (mono_class_inflate_generic_method_full): Rename from
20345         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20346         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20347         * loader.c, reflection.c: Update to changes.
20348
20349 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20350
20351         * icall.c: const fixes and small improvements.
20352
20353 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20354
20355         * threadpool.c: for asynchronous connect(), enable the same workaround
20356         for BSD 6 as for the Mac. Fixes bug #77637.
20357
20358 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20359
20360         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20361         formatted classes. Fixes #77524.
20362
20363 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20364
20365         * class.c (inflate_generic_type): Add a couple more
20366         micro-optimizations.
20367         (inflate_generic_context): Don't use the 'gmethod' from
20368         'inflate_with'.
20369         (mono_class_inflate_generic_method): If the method has generic
20370         parameters, but the passed-in context doesn't have a 'gmethod',
20371         create one.  Use the possibly simplified generic instantiation
20372         from the declaring class instead of the one passed in.
20373
20374 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20375
20376         Make generic method signature and method header handling lazy.
20377         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20378         (inflate_generic_header): Likewise.
20379         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20380         parameter to avoid inflating types.
20381         (mono_get_inflated_method): Empty out.
20382         * class.h (mono_class_inflate_generic_method): Update to changes.
20383         * loader.c (mono_get_method_from_token): Don't parse signature for
20384         generic methods, nor methods of generic classes.
20385         (mono_method_signature): Rename from 'mono_method_signature'.
20386         Inflate signature on demand.
20387         (mono_method_get_header): Inflate method header on demand.
20388         * reflection.c: Update to changes.
20389
20390 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20391
20392         * metadata.c (mono_metadata_inflate_generic_inst): If the
20393         instantiation is closed, don't bother expanding it in the new
20394         context.
20395         * class.c (inflate_generic_class): If the generic instantiation
20396         doesn't change after inflation, return the argument itself.
20397         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20398         Add bounds checks.
20399         (inflate_generic_context): If neither the generic class nor the
20400         generic method instantiations change, return the original context.
20401         * reflection.c (mono_method_get_object): Do
20402         'mono_get_inflated_method' before accessing the ->klass field.
20403         (inflate_mono_method): Don't create a MonoGenericMethod unless
20404         necessary.
20405         (inflate_method): Don't pass a constructed type as the declaring
20406         type of a methodbuilder.
20407
20408 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20409
20410         * object.c: fix memory overwrite.
20411
20412 2006-02-22  Dick Porter  <dick@ximian.com>
20413
20414         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20415         it doesn't work any more.
20416         (mono_threads_request_thread_dump): Fix unused variable warnings.
20417
20418 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20419
20420         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20421         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20422         the public header file.
20423
20424 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20425
20426         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20427
20428 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20429
20430         * class-internals.h, object.c: reduce the size of MonoVTable
20431         and store the interface_offsets array at negative offsets.
20432
20433 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20434
20435         * metadata.c: tweak table descriptors data structures to reduce
20436         size and runtime relocations.
20437
20438 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20439
20440         * marshal.c: fix some types and opcodes to be type-safe
20441         in marshaling wrappers.
20442
20443 2006-02-21  Ankit Jain  <jankit@novell.com>
20444
20445         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20446
20447 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20448
20449         * metadata.c (get_constraints): Relax debugging checks for monodis.
20450
20451 2006-02-21  Ankit Jain  <jankit@novell.com>
20452
20453         * metadata.c (mono_metadata_load_generic_params): Move the code
20454         checking for ambiguous generic params from here to mono/dis/get.c
20455         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20456
20457 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20458
20459         Fix assertion triggered when compiling nemerle.
20460         * class.c (mono_get_shared_generic_inst): Rename from
20461         get_shared_inst and make non-static.
20462         * loader.c (mono_get_shared_generic_method): New.  Used to create
20463         the MonoGenericContext-equivalent of a MonoGenericContainer.
20464         (mono_get_method_from_token): Initialize the 'context' field of
20465         the created MonoGenericContainer.
20466         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20467         * metadata.c (get_constraints): Add sanity check.
20468         * class-internals.h: Add new internal methods.
20469
20470         * reflection.c (verify_safe_for_managed_space): New sanity check.
20471         Currently checks that owner-less generic parameters aren't allowed
20472         in managed space.
20473         (mono_type_get_object): Use it.
20474         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20475         that are now in mono_type_get_object.
20476         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20477
20478 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20479
20480         * metadata.c (mono_type_create_from_typespec): Rename from
20481         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20482         argument and caching of types in the generic container.
20483         (unwrap_arrays, find_generic_param): Remove.
20484         * metadata-internals.h: Update.
20485         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20486
20487 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20488
20489         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20490
20491         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20492         return values. Fixes #77581.
20493
20494         * class.c (mono_fnptr_class_get): Switch name and name_space.
20495
20496         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20497         classes and add support for [In, Out] attributes.
20498         (mono_marshal_free_asany): Ditto. Fixes #77524.
20499
20500 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20501
20502         * class.c (mono_class_from_generic_parameter): Make more robust to
20503         incomplete MonoGenericContainers from monodis.
20504
20505 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20506
20507         * class-internals.h: added some more exception types.
20508         * class.c, metadata.c: added a few checks to handle missing
20509         types.
20510
20511 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20512
20513         Use owner-less generic-params some more.
20514         * class.c (my_mono_class_from_generic_parameter): Remove.
20515         (mono_class_from_generic_parameter): Handle null image,
20516         param->name and param->owner.
20517         (mono_class_from_mono_type): Update.
20518         (mono_class_create_from_typespec): Remove 'container' parameter.
20519         If that parameter is non-null, the result is always inflated by
20520         'mono_class_get_full' anyway.
20521         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20522         parameter.
20523         (mono_class_get_full): Update.
20524
20525         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20526         instance is not open, don't bother inflating.
20527         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20528         parse metadata for inflated classes.
20529         (_mono_class_get): Change GenericContext* parameter to
20530         GenericContainer*.
20531         (mono_class_create_from_typespec): Likewise.  Simplify, and
20532         implement trivially.  All the cases are handled in
20533         mono_class_from_mono_type.  Don't inflate returned class.
20534         (mono_class_get_full): Delegate GENERICINST optimization to
20535         inflate_generic_type.
20536         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20537
20538 2006-02-16  Dick Porter  <dick@ximian.com>
20539
20540         * socket-io.c (create_object_from_sockaddr): Fix typo.
20541         (create_sockaddr_from_object): Check array lengths before
20542         potentially accessing items off the end.
20543         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20544         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20545         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20546         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20547         length checks to avoid wraparound overflows.
20548         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20549         contents of the array of sockets
20550         (hostent_to_IPHostEntry2)
20551         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20552         Check return value of inet_ntop ().
20553         (addrinfo_to_IPHostEntry): Fix typo
20554
20555 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20556
20557         Type metadata parsing doesn't use generic-instantiation information.
20558         * metadata.c (mono_metadata_parse_array_full): Change
20559         MonoGenericContext* parameter to MonoGenericContainer*.
20560         (mono_metadata_parse_type_full): Likewise.
20561         (mono_type_create_from_typespec_full): Likewise.
20562         (mono_metadata_parse_mh_full): Likewise.
20563         (mono_metadata_parse_generic_inst): Likewise.
20564         (do_mono_metadata_parse_generic_class): Likewise.
20565         (do_mono_metadata_parse_type): Likewise.
20566         * metadata-internals.h: Update to changes.
20567         * class.c (mono_class_find_enum_basetype): Likewise.
20568         (mono_class_setup_fields): Likewise.
20569         (mono_class_create_from_typespec): Likewise.
20570         * loader.c (method_from_methodspec): Likewise.
20571         (mono_get_method_from_token): Likewise.
20572         (mono_method_get_header): Likewise.
20573
20574 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20575
20576         * marshal.c: handle additional GENERICINST case (patch from
20577         Thong Nguyen <tum@veridicus.com>).
20578         Fix a few cases where LDIND_I/STIND_I was used for references.
20579
20580 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20581
20582         * reflection.c (mono_reflection_get_token): Remove unused variable.
20583
20584 2006-02-16  Martin Baulig  <martin@ximian.com>
20585
20586         * reflection.c (mono_reflection_get_token): Add support for fields
20587         in instantiated generic types.
20588
20589         * icall.c
20590         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20591
20592 2006-02-15  Martin Baulig  <martin@ximian.com>
20593
20594         * icall.c
20595         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20596         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20597         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20598         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20599
20600 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20601
20602         * class.c, metadata.c, metadata.h, object.c, icall.c,
20603         marshal.c: changed mono_type_get_underlying_type () to do
20604         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20605         Fixed handling of instantiated generic valuetypes (bug #75479).
20606
20607 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20608
20609         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20610         Delegate to mono_metadata_decode_value, and work on the returned value.
20611
20612         * icall.c (ves_icall_MonoType_GetGenericArguments):
20613         Add consistency check here too.
20614         
20615 2006-02-15  Ankit Jain  <jankit@novell.com>
20616
20617         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20618         char/short etc.
20619
20620 2006-02-15  Ankit Jain  <jankit@novell.com>
20621
20622         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20623         signed values, used only for representing lower bounds of arrays.
20624         (mono_metadata_parse_array_full): Use new
20625         mono_metadata_decode_signed_value to decode lower bounds.
20626
20627 2006-02-14  Martin Baulig  <martin@ximian.com>
20628
20629         * reflection.c
20630         (mono_reflection_get_token): Support "MonoGenericMethod" and
20631         "MonoGenericCMethod" and allow generic instances / methods.
20632
20633 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20634
20635         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20636         to obtain the terminal size using an ioctl.
20637
20638         * object.c (mono_nullable_init): Revert this as nullable reference
20639         types are not valid.
20640         (mono_nullable_box): Ditto.
20641
20642 2006-02-09  Dick Porter  <dick@ximian.com>
20643
20644         * threads.c (mono_thread_detach): Drop a reference to the thread
20645         we're detaching.
20646
20647 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20648
20649         * object.c (mono_nullable_init): Handle nullable reference types.
20650         (mono_nullable_box): Ditto. Fixes #77446.
20651
20652 2006-02-07  Martin Baulig  <martin@ximian.com>
20653
20654         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20655
20656 2006-02-07  Ankit Jain  <jankit@novell.com>
20657
20658         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20659         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20660         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20661         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20662         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20663         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20664
20665 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20666
20667         * class.c (mono_class_create_generic): Set type_token as well.
20668
20669         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20670         compatible with MS.
20671
20672 2006-02-02  Martin Baulig  <martin@ximian.com>
20673
20674         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20675         has never been used so far.
20676
20677 2006-02-02  Martin Baulig  <martin@ximian.com>
20678
20679         * mono-debug-debugger.h: Changed comment at the top of this file;
20680         the header is not installed, but it's safe to #include it from
20681         within the JIT.
20682
20683         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20684         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20685
20686 2006-02-02  Martin Baulig  <martin@ximian.com>
20687
20688         * mono-debug.h
20689         (MonoSymbolTable): Removed the `metadata_info' field.
20690
20691         * mono-debug.c
20692         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20693
20694         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20695         (mono_debugger_add_builtin_types): Removed.
20696         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20697         (mono_debugger_create_notification_function): We now operate on a
20698         pre-allocated area; take a `gpointer' and return `void'.
20699
20700         * mono-debug-debugger.c
20701         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20702         (mono_debugger_add_builtin_types): Removed.
20703
20704 2006-02-02  Martin Baulig  <martin@ximian.com>
20705
20706         * threads.c (mono_debugger_create_all_threads): New public method.
20707
20708 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20709
20710         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20711         breaks on several platforms.
20712
20713 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20714
20715         * assembly.c: the VS.NET build doesn't supply default values for
20716         MONO_ASSEMBLIES and MONO_CFG_DIR.
20717
20718 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20719
20720         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20721         helper function.
20722
20723         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20724
20725         * loader.c (method_from_memberref): Fix a warning.
20726
20727         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20728
20729         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20730         with explicit layout. Fixes #77433.
20731
20732 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20733
20734         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20735         max_interface_id is initialized before using it. Fixes #77398.
20736         (ves_icall_Type_GetInterfaces): Ditto.
20737
20738 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20739
20740         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20741         allocate memory for parameter attributes when parsing memberref
20742         signatures.
20743         * loader.c (mono_loader_set_error_method_load): Don't warn.
20744         (method_from_memberref): Ensure MissingMethodException gets thrown
20745         if method is not found.  Make warning more informative.
20746
20747 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20748
20749         Fix #77397
20750         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20751         return true if is byref.
20752         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20753         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20754         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20755
20756 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20757
20758         Fix tests/find-method.2.il
20759         * loader.c (find_method, find_method_in_class): Remove is_inflated
20760         argument.  Revert 2006-01-18 change.
20761         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20762         is generic, search for method in its generic definition.
20763         * class.c (mono_class_setup_vtable_general): Print generic
20764         arguments of generic types in debugging printf.
20765
20766 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20767
20768         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20769
20770         * threads.c (mono_threads_request_thread_dump): New helper function.
20771
20772 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20773
20774         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20775
20776 2006-01-25  Ankit Jain  <jankit@novell.com>
20777
20778         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20779         move definition to ..
20780         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20781         
20782 2006-01-25  Ankit Jain  <jankit@novell.com>
20783             Raja R Harinath  <rharinath@novell.com>
20784
20785         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20786         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20787         as necessary.
20788
20789 2006-01-25  Martin Baulig  <martin@ximian.com>
20790
20791         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20792         `MonoDebuggerThread' into debug-debugger.c.
20793
20794 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20795
20796         * profiler.c: fix printing of data.
20797
20798 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20799
20800         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20801           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20802
20803 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20804
20805         * object.c: fix deadlock related to string interning.
20806
20807 2006-01-23  Martin Baulig  <martin@ximian.com>
20808
20809         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20810
20811         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20812
20813 2006-01-23  Martin Baulig  <martin@ximian.com>
20814
20815         * mono-debug.h: Moved the prototypes of some functions which are
20816         used by the JIT here from mono-debug-debugger.h.
20817
20818 2006-01-21  Martin Baulig  <martin@ximian.com>
20819
20820         * Makefile.am: Don't install mono-debug-debugger.h.
20821
20822 2006-01-21  Martin Baulig  <martin@ximian.com>
20823
20824         * mono-debug-debugger.h: Enforce the private status of this header
20825         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20826         Moved some stuff from mono-debugger-jit-wrapper.h here.
20827
20828 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20829
20830         * class.c (mono_class_from_typeref): Add a sanity test to help
20831         catch lack of assembly load/search hooks.
20832
20833 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20834
20835         * marshal.c (emit_struct_conv): Relax the fields with same offset
20836         check even more. Fixes #77230.
20837
20838 2006-01-18  Martin Baulig  <martin@ximian.com>
20839
20840         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20841         argument; if false, we compare the uninstantiated signatures.
20842         (method_from_memberref): Compare the uninstantiated signatures;
20843         fixes #76417.
20844
20845 2006-01-18  Robert Jordan  <robertj@gmx.net>
20846
20847         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20848         Clear the weak link. Fixes bug #77170.
20849
20850         * gc.c (mono_gchandle_free):
20851         Reflect *-gc.c changes (tiny optimization).
20852
20853 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20854
20855         * metadata.c (mono_metadata_signature_dup): Applied patch from
20856         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20857         Fixes #77288.
20858
20859 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20860
20861         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20862         marshalling from native to managed code. Fixes #77230.
20863
20864 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20865
20866         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20867         connect. Fixes bug #77020.
20868
20869 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20870
20871         * class.c: fixed id assignement for nested interfaces (bug #77275).
20872         Added also better info for --print-vtable debugging.
20873
20874 2006-01-12  Martin Baulig  <martin@ximian.com>
20875
20876         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20877         interfaces on-the-fly; fixes #76625.
20878
20879         * class-internals.h
20880         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20881         don't need that anymore.
20882
20883 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20884
20885         * socket-io.c
20886         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20887         To avoid initing the nested_classes when not needed I turned the
20888         PeerCredData as a toplevel internal class, as it has to be shared
20889         anyways. 
20890
20891         Fixes the CASA issue.
20892
20893 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20894
20895         * domain.c: Accessors for MonoJitInfo
20896
20897         * profiler-private.h: Add jitinfo to the end jit hook
20898
20899         * profiler.[ch]: Define new hooks, called after jitting which give
20900         the MonoJitInfo that was compiled
20901
20902 2006-01-10  Martin Baulig  <martin@ximian.com>
20903
20904         * class.c (mono_class_setup_events): Add support for generic
20905         classes; fixes #76440.
20906
20907 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20908
20909         Fix #77160.
20910         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20911         on passed-in method.
20912
20913 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20914
20915         * object.c (mono_runtime_invoke_array): Add Nullable support.
20916
20917         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20918
20919 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20920
20921         * file-io.c: Don't consider sockets as directory and avoid an endless
20922         loop. Fix bug #76966.
20923
20924 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20925
20926         * object.c (mono_nullable_init): New helper function.
20927         (mono_nullable_box): Ditto.
20928
20929         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20930
20931         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20932
20933         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20934         
20935 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20936
20937         * class.c (mono_class_is_assignable_from): Make T assignable to 
20938         Nullable<T>.
20939
20940 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20941
20942         * appdomain.c: Bump corlib version to 46.
20943         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20944         serialization purpose) and changed ves_icall_System_Reflection_
20945         Assembly_get_code_base signature to accept a boolean (to escape, or 
20946         not, the assembly code base).
20947
20948 2005-12-23  Dick Porter  <dick@ximian.com>
20949
20950         * icall.c: 
20951         * threads-types.h: 
20952         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20953         CreateEvent icall now returns "created" boolean parameter.
20954
20955 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20956
20957         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20958         #76967.
20959
20960         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20961         when attr_klass is an interface. Fixes #77045.
20962
20963 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20964
20965         * marshal.c (emit_struct_conv): Fix previous patch.
20966         
20967         * marshal.c (emit_struct_conv): Add a check for fields with the same
20968         offset.
20969
20970 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20971
20972         Fix regression in Mono.C5.
20973         * class.c (mono_class_create_generic): If 'klass' is an interface
20974         set up the interface offsets.
20975         (mono_class_is_assignable_from): Don't throw away generic arguments.
20976
20977 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20978
20979         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20980         type parameters.
20981
20982 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20983
20984         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20985         dead store.
20986         (do_mono_metadata_parse_generic_class): Don't pass the current
20987         generic context when parsing the type being instantiated: it
20988         cannot use it, anyway.
20989
20990         * loader.c (method_from_memberref): Don't inflate a signature if
20991         it doesn't contain any type parameters.
20992
20993 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20994
20995         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20996
20997 2005-12-14  Martin Baulig  <martin@ximian.com>
20998
20999         * class.c
21000         (mono_type_get_name_recurse): Don't return null for type
21001         parameters and open generic classes.
21002         (mono_class_setup_methods): Don't exclude generic instances.
21003         (mono_get_unique_iid): Use different IDs for different
21004         instantiations of the same generic type.
21005         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21006         open generic instances; create a normal vtable for closed generic
21007         instances.
21008         (mono_class_setup_vtable_general): We're now also called for
21009         closed generic instances.
21010
21011         * reflection.c
21012         (mono_reflection_bind_generic_parameters): Correctly use
21013         mono_metadata_lookup_generic_inst() everywhere.
21014
21015 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21016
21017         * object.c (mono_class_create_runtime_vtable): Call 
21018         mono_class_setup_vtable ().
21019
21020         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21021         function.
21022         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21023         #76959.
21024
21025         * loader.c (mono_loader_set_error_type_load): Print the type load
21026         warnings to the console so they are more visible to the user.
21027         (mono_loader_set_error_method_load): Ditto.
21028
21029         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21030         is still broken.
21031         
21032         * reflection.c (ensure_runtime_vtable): Fix build.
21033
21034         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21035         doesn't work in all cases.
21036
21037 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21038
21039         * object.c (mono_array_new_full): Treat a single dimensional array
21040         with 0 lower bounds as an szarray. Fixes #76973.
21041
21042         * reflection.c (custom_attr_visible): Really fix this.
21043
21044 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21045
21046         * reflection.c (custom_attr_visible): Allow nested public attributes
21047         as well.
21048
21049         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21050         interface check.
21051
21052 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21053
21054         * class.c (set_generic_param_owner): Delete.
21055         (mono_class_create_from_typedef): Don't set ->owner field of
21056         generic parameters to "param containers" of enclosing classes.
21057         * reflection.c (mono_reflection_initialize_generic_parameter):
21058         Likewise.
21059
21060 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21061
21062         * reflection.c (custom_attr_visible): Fix build.
21063
21064 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21065
21066         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21067         private attributes.
21068         
21069         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21070         handling of null parameter defaults.
21071
21072 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21073
21074         * class.c (mono_class_from_generic_parameter): Don't set
21075         klass->generic_container.
21076         (my_mono_class_from_generic_parameter): Likewise.
21077
21078 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21079
21080         * reflection.c (load_public_key): Fix a warning.
21081         (method_encode_code): Fix unaligned accesses.
21082
21083 2005-12-07  Martin Baulig  <martin@ximian.com>
21084
21085         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21086
21087         * reflection.c
21088         (write_generic_param_entry): Encode our custom attrs.
21089
21090         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21091
21092 2005-12-07  Martin Baulig  <martin@ximian.com>
21093
21094         * reflection.c (encode_new_constraint): Removed; we don't use the
21095         `NewConstraintAttribute' anymore.
21096
21097 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21098
21099         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21100         not fire a TypeResolve event when Assembly.GetType () is called.
21101
21102 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21103
21104         Beginning of support for nullable types in the runtime. Parts of
21105         this patch are from Martin.
21106
21107         * appdomain.c (MONO_CORLIB_VERSION): Bump
21108
21109         * domain.c (mono_init_internal): get the nullable type
21110
21111         * class.c (mono_class_is_nullable): New method
21112         (mono_class_get_nullable_param): New mehod
21113         (mono_class_create_generic): In types T? set cast_class to T
21114
21115         * class-internals.h (MonoDefaults): new nullable default class
21116         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21117         new methods.
21118
21119 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21120
21121         * metadata.c (select_container): New.  Refactor code to select the
21122         appropriate GenericContainer given the type of generic parameter
21123         we are looking for.
21124         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21125         not a MonoGenericContext.  Use select_container.  Update parameters.
21126         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21127         and MONO_TYPE_MVAR.
21128         (unwrap_arrays): Remove duplicate tests.
21129         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21130         generic instantiated class to find any arguments that are generic
21131         parameters.
21132         (mono_type_create_from_typespec_full): Use find_generic_param to
21133         avoid evicting some generic instantiations from the typespec
21134         cache.
21135
21136 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21137
21138         * reflection.c: fixed writing of doubles on ARM FPA.
21139
21140 2005-12-02  Robert Jordan  <robertj@gmx.net>
21141
21142         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21143
21144 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21145
21146         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21147         least on SUSE 10 they are not the same (on debian, they are just the
21148         same thing).
21149
21150 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21151
21152         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21153         DeclaringType for VARs and MVARs.
21154         * class.c (set_generic_param_owner): Fix initialization of owner
21155         fields.
21156
21157 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21158
21159         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21160
21161 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21162
21163         * threadpool.c: workaround for a bug that shows up on the Mac:
21164         select()+connect() on a blocking socket is not like it should
21165         be, so we proceed to connect() in that case, wasting the I/O
21166         threadpool thread until connect succeedes. Fixes bug #75436.
21167
21168 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21169
21170         * threadpool.c: fix typo when setting file descriptor states.
21171
21172 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21173
21174         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21175         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21176         create a temporary signature container.
21177         (mono_metadata_parse_generic_param): Update to changes.
21178         (mono_type_create_from_typespec_full): Update to changes.
21179         * loader.c (method_from_memberref): Don't use a
21180         MonoGenericContainer while parsing a memberref signature.
21181         (method_from_methodspec): Remove dead-store of the 'container'
21182         variable.  It's overwritten before use.
21183
21184         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21185         checks tighter.
21186         (mono_metadata_parse_generic_param): Likewise.
21187         * loader.c (find_method_in_class): Does not need a
21188         MonoGenericContainer.  Use 'mono_method_signature' rather than
21189         'mono_method_signature_full'.
21190         (find_method, mono_get_method_constrained, method_from_memberref):
21191         Update to changes.
21192
21193         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21194         owner-less generic-parameters are never evicted from the typespec
21195         cache.
21196
21197         * loader.c (method_from_memberref): Don't use the current context
21198         when parsing signatures.
21199         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21200
21201         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21202         side-effects in g_assert.
21203         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21204         that we don't potentially lose information.
21205
21206 2005-11-26  Dick Porter  <dick@ximian.com>
21207
21208         * icall.c:
21209         * threads.c: icalls to implement basic (ie, not named)
21210         System.Threading.Semaphore.
21211
21212 2005-11-24  Dick Porter  <dick@ximian.com>
21213
21214         * process.c
21215         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21216         Use GetProcessId() if it's available.
21217
21218 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21219
21220         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21221
21222 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21223             Ankit Jain  <jankit@novell.com>
21224
21225         * loader.c (mono_get_method_from_token): Initialize 'method' field
21226         of all generic parameters before parsing the signature.  Remove
21227         code that "fixed"-up MVAR references.
21228
21229 2005-11-23  Ankit Jain  <jankit@novell.com>
21230
21231         * metadata.c (mono_metadata_has_generic_params):
21232         (mono_metadata_load_generic_param_constraints):
21233         (mono_metadata_load_generic_params): Move duplicate code ...
21234         (mono_metadata_get_generic_param_row): ... here. Returns the
21235         first row-id in GenericParam table for a given owner (token).
21236         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21237         prototype.
21238
21239 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21240             Ankit Jain  <jankit@novell.com>
21241
21242         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21243         comparing VARs too.
21244         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21245         type->data.generic_param only if the type is an MVAR.
21246         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21247         leak owner-less VARs and MVARs into managed space.
21248
21249 2005-11-21  Martin Baulig  <martin@ximian.com>
21250
21251         * class-internals.h
21252         (MonoMethod): Moved the `generic_container' here from
21253         `MonoMethodNormal' since we now also need it for
21254         `MonoMethodPInvoke';
21255         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21256         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21257         an union containing both `MonoMethodNormal' and
21258         `MonoMethodPInvoke'.
21259
21260         * loader.c
21261         (mono_get_method_from_token): Allow implementing generic methods
21262         as interncalls.
21263
21264         * threads.c
21265         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21266         icall.
21267
21268 2005-11-17  Dick Porter  <dick@ximian.com>
21269
21270         * icall.c: 
21271         * process.h: 
21272         * process.c: Split the Process Start_internal icall into
21273         ShellExecuteEx_internal and CreateProcess_internal, which are
21274         called depending on whether UseShellExecute is true.  Fixes bug
21275         76670.
21276
21277         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21278
21279 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21280
21281         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21282         'msize' parameters, use the information in 'mspec' instead.
21283         (emit_object_to_ptr_conv): Ditto.
21284
21285         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21286         fields out of order. Fixes #76733.
21287
21288 2005-11-17  Ankit Jain  <jankit@novell.com>
21289
21290         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21291
21292 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21293
21294         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21295           bug #76575.
21296
21297 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21298
21299         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21300         for types with non-auto layout. Fixes #76717.
21301
21302 2005-11-16  Ankit Jain  <jankit@novell.com>
21303
21304         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21305         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21306         if generic_context is null.
21307           (mono_metadata_generic_param_equal): param->owner can be null.
21308           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21309         null.
21310
21311 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21312
21313         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21314         the correct value.
21315
21316 2005-11-15  Martin Baulig  <martin@ximian.com>
21317
21318         * object.c (set_value): Use mono_class_from_mono_type() instead of
21319         the hack for generic instances; fixes #76136.
21320
21321 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21322
21323         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21324         fields.
21325
21326         * image.c (load_metadata_ptrs): Initialize the new fields.
21327
21328         * reflection.c (create_dynamic_mono_image): Ditto.
21329
21330         * reflection.c (build_compressed_metadata): Use the new fields.
21331
21332         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21333         icall.
21334
21335         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21336         icall.
21337         
21338 2005-11-15  Ankit Jain  <jankit@novell.com>
21339             Raja R Harinath  <harinath@gmail.com>
21340
21341         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21342         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21343         new per-generic_container cache if the cached MonoType's context matches
21344         the current context.
21345           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21346         to the expected context.
21347           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21348
21349 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21350
21351         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21352         we changed the signature of an icall.
21353         * icall.c: Modify to mono_double_ParseImpl return true/false 
21354         depending on the success, instead of throwing the exception. This will
21355         help us in Double.TryParse methods.
21356         
21357 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21358
21359         * marshal.c (emit_marshal_object): Throw an exception when
21360         marshalling 'object' instead of crashing. Fixes #76696.
21361
21362 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21363
21364         * class-internals.h: Add prototype for mono_type_get_full_name ().
21365
21366 2005-11-11  Dick Porter  <dick@ximian.com>
21367
21368         * threads.c (mono_thread_manage): Make sure the main thread has
21369         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21370
21371 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21372
21373         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21374         console about the missing type.
21375         (mono_loader_set_error_method_load): Ditto.
21376
21377 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21378
21379         * mono-config.c (mono_get_config_dir): Set the system defaults if
21380         none is specified.
21381
21382         * assembly.c (mono_set_dirs): New API entry point to set the
21383         assembly and the config directory in one call
21384
21385 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21386
21387         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21388         the ftnptr was created from a delegate in a domain other than the
21389         current domain. Fixes #75377.
21390
21391         * exception.h exception.c: Add mono_get_exception_not_supported ().
21392
21393 2005-11-08  Martin Baulig  <martin@ximian.com>
21394
21395         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21396
21397 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21398
21399         * security-manager.h: Added definitions to deal with strongname key 
21400         pairs bigger (and smaller) than 1024 bits.
21401         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21402         adjust wrt the public key length being used.
21403
21404 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21405
21406         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21407           Windows build (r51396-51397).
21408
21409 2005-11-03  Martin Baulig  <martin@ximian.com>
21410
21411         * class.c (mono_class_setup_vtable_general): Also add generic
21412         methods to the vtable; fixes #76581.
21413
21414 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21415
21416         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21417         sure that we lookup GetString method from the System.Text.Encoding
21418         class, not the derived class or we get an empty method.
21419
21420         Fixed class #76612.
21421
21422 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21423
21424         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21425         if it has been previously set (embedders). 
21426
21427         Make mono_set_rootdir available also on Unix.
21428
21429 005-10-24  Robert Jordan  <robertj@gmx.net>
21430
21431         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21432
21433 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21436         only calls which are made to native code use this flag.
21437
21438         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21439
21440 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21443         Add support for FieldBuilders.
21444
21445 2005-10-29  Martin Baulig  <martin@ximian.com>
21446
21447         * mono-debug.c
21448         (mono_debug_using_mono_debugger): New public method; returns
21449         whether we're running inside the debugger.
21450
21451 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21452
21453         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21454         for Method/Constructor/FieldBuilders.
21455
21456 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21457
21458         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21459         and fields as well.
21460
21461 2005-10-26  Martin Baulig  <martin@ximian.com>
21462
21463         * mono-debug-debugger.c
21464         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21465
21466 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21467
21468         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21469         integer to isspace.
21470
21471 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21472
21473         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21474         when passing valuetypes byref. Fixes #76502.
21475
21476 2005-10-19  Jackson Harper  <jackson@ximian.com>
21477
21478         * profiler.c: Don't put a . in front of types that are not in a
21479         namespace.
21480
21481 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21482
21483         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21484
21485 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21486
21487         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21488         #76436.
21489         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21490
21491 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21492
21493         * assembly.c metadata-internals.h icall.c: Define an additional
21494         parameter for mono_assembly_name_parse_full, so we can avoid creating
21495         S.R.AssemblyName.Version when no version info wasn't passed.
21496         
21497 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21498
21499         * class.c (mono_type_get_full_name): Reimplement method that was
21500         removed. 
21501
21502         * image.c: Some docs
21503
21504 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21505
21506         * profiler.c (output_newobj_profile): Fix printing of Total memory
21507         on x86.
21508
21509 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21512
21513 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21514
21515         * threads.c: remove debug output.
21516
21517 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21518
21519         * threads.c (mono_thread_manage): Fix crashes if more than 64
21520         threads need to be aborted. Hopefully fixes #75899.
21521
21522         * assembly.c (mono_stringify_assembly_name): New helper function.
21523
21524         * class.c: Use mono_stringify_assembly_name instead of the similar
21525         static function.
21526
21527         * assembly.h assembly.c: Add support for calling a postload search 
21528         hook if an assembly cannot be loaded.
21529
21530         * appdomain.c: Register new search hooks which call the AssemblyResolve
21531         events in AppDomain. Fixes #75231
21532
21533 2005-10-07  Martin Baulig  <martin@ximian.com>
21534
21535         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21536         methods without debug info.
21537
21538 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21539
21540         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21541         wrappers.
21542
21543 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21544
21545         * file-io.c: now that we return symlinks, use lstat and, when the file
21546         is a symbolic link, stat, to get the file attributes. Also avoid the
21547         conversion to/from utf16/external.
21548
21549 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21550
21551         * class.c (mono_class_layout_fields): Compute klass->has_references
21552         correctly if an embedded valuetype is not yet initialized. Fixes
21553         #76331.
21554
21555 2005-10-04  Martin Baulig  <martin@ximian.com>
21556
21557         * metadata.c
21558         (mono_metadata_load_generic_param_constraints): New public
21559         function; splitted the constraints loading out from
21560         mono_metadata_load_generic_params().
21561
21562         * class.c (mono_class_create_from_typedef): Call
21563         mono_metadata_load_generic_param_constraints() after setting up
21564         the type and creating our parent; fixes #75329.
21565
21566 2005-10-04  Martin Baulig  <martin@ximian.com>
21567
21568         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21569         non-dynamic parent classes.
21570
21571 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21572
21573         * file-io.c : win32 build fix (ETXTBSY seems not found).
21574
21575 2005-10-04  Martin Baulig  <martin@ximian.com>
21576
21577         * reflection.c
21578         (mono_image_get_methodspec_token): Make the cache actually work;
21579         fixes #75974.
21580
21581 2005-10-04  Martin Baulig  <martin@ximian.com>
21582
21583         * class.c (mono_class_name_from_token): Removed the unneccessary
21584         `MonoGenericContext *' argument.
21585
21586 2005-10-04  Martin Baulig  <martin@ximian.com>
21587
21588         * loader.c
21589         (method_from_methodspec): Make the caching work again; fixes the
21590         performance regression from #76262.
21591
21592 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21593
21594         * file-io.c:
21595         * file-io.h:
21596         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21597         GetFileSystemEntries that performs the same work but without going
21598         into io-layer, locking, etc.
21599
21600 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21601
21602         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21603         ThreadState_Stopped as well. Fixes #76047.
21604
21605 2005-09-29  Martin Baulig  <martin@ximian.com>
21606
21607         * class.c
21608         (inflate_generic_context): If the new context has a `gmethod', set
21609         its `container' that that gmethod's `container'.
21610
21611         * metadata.c
21612         (mono_metadata_parse_generic_param): Simplify things;
21613         `generic_container = generic_context->container;' is just fine.
21614
21615         * loader.c (method_from_methodspec): Code cleanups.
21616
21617 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21618
21619         * decimal.c: fix warning (and let gcc generate correct
21620         code on ARM with optimizations).
21621
21622 2005-09-28  Martin Baulig  <martin@ximian.com>
21623
21624         * loader.c
21625         (method_from_memberref): Added `MonoGenericContext *class_context'
21626         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21627         (method_from_methodspec): If we're a memberref, use the enclosing
21628         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21629
21630 2005-09-28  Martin Baulig  <martin@ximian.com>
21631
21632         * object.c (mono_runtime_invoke_array): Added support for
21633         MONO_TYPE_GENERICINST; fixes #75917.
21634
21635 2005-09-27  Martin Baulig  <martin@ximian.com>
21636
21637         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21638         `k->byval_arg.type' to determine the actual type.
21639
21640         * loader.c (method_from_methodspec): Removed some hacks.
21641
21642 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21643
21644         * class-internals.h (mono_field_is_deleted): Do the test for
21645         rtspecialname before we check the actual name of the field. This
21646         prevents us from dereferencing a pointer into the string table,
21647         saving us from accessing a few pages
21648
21649         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21650         macros. This will allow a deadlock debugger to easily be plugged
21651         in.
21652
21653 2005-09-27  Martin Baulig  <martin@ximian.com>
21654
21655         * loader.c (method_from_methodspec): Create a "signature"
21656         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21657
21658 2005-09-27  Martin Baulig  <martin@ximian.com>
21659
21660         * class.c
21661         (inflate_generic_class): Correctly set the new context's
21662         container.
21663
21664         * loader.c
21665         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21666         instead of a `MonoGenericContext *'.
21667         (mono_method_signature_full): Take a `MonoGenericContainer *'
21668         instead of a `MonoGenericContext *'.
21669
21670         * metadata.c
21671         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21672         instead of a `MonoGenericContext *'.
21673         (mono_metadata_parse_method_signature_full): Likewise.
21674
21675 2005-09-26  Martin Baulig  <martin@ximian.com>
21676
21677         * class.c
21678         (mono_class_from_generic_parameter): Set `klass->generic_container'
21679         (mono_class_from_generic_parameter): Likewise.
21680         (mono_bounded_array_class_get): We inherit the generic container
21681         from the element class.
21682
21683         * loader.c
21684         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21685         argument rather than computing it here.
21686         (method_from_memberref): Correctly set the generic context before
21687         parsing the signature.  Fixes #75681.
21688
21689 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21690
21691         * object.c (mono_class_has_special_static_fields): Fix warnings.
21692
21693 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21694
21695         * assembly.c: Add parse_public_key function, to
21696         par the public keys. Also added mono_assembly_name_parse_full,
21697         to define it the parsed key should be freed or not.
21698         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21699         to parse a long format assembly name.
21700         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21701         private, since calling it to preserve the key requires
21702         freeing it manually.
21703         
21704 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21705
21706         * locales.c : removed HAVE_ICU part.
21707
21708 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21709
21710         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21711         field_is_special_static if the klass has no special static fields.
21712
21713         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21714         (MonoCachedClassInfo): Likewise.
21715
21716         * object.c (mono_class_has_special_static_fields): New helper function.
21717
21718 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21719
21720         * class.c (mono_class_create_from_typedef): Don't call 
21721         interfaces_from_typedef_full for enums.
21722         (mono_class_create_from_typedef): Compute the base types of enums directly
21723         without calling mono_class_setup_fields ().
21724         (mono_class_find_enum_basetype): New helper function.
21725
21726         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21727         one place inside the string heap.
21728         
21729 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21730
21731         * class.c: locking fixes, code cleanups, some docs added.
21732         Allocate some data structures in the image mempool.
21733
21734 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21735
21736         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21737         the example code.
21738         
21739 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21740
21741         * class-internals.h, class.c, reflection.c: reduce memory taken by
21742         MonoClass.
21743
21744 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21745
21746         * metadata.c, metadata.h, loader.h: documentation updates, code and
21747         API cleanups.
21748
21749 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21750
21751         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21752         the example code.
21753
21754         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21755         page faults caused by the runtime while reading metadata.
21756
21757 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21758
21759         * socket-io.c: the field names were changed 3 months ago and no one
21760         realized until bug #76077 got filed!
21761
21762 2005-09-20  Martin Baulig  <martin@ximian.com>
21763
21764         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21765
21766 2005-09-20  Martin Baulig  <martin@ximian.com>
21767
21768         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21769         write the rank into the class entry.
21770
21771 2005-09-20  Martin Baulig  <martin@ximian.com>
21772
21773         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21774
21775 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21776
21777         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21778
21779         * icall.c (custom_attrs_defined_internal): New icall.
21780
21781         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21782         function.
21783         (mono_custom_attrs_construct_by_type): New helper function.
21784
21785 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21788         terminate the resulting string. Fixes #76123.
21789
21790 2005-09-16  Martin Baulig  <martin@ximian.com>
21791
21792         * mono-debug.c
21793         (mono_debug_add_method): Ignore inflated methods for the moment.
21794
21795 2005-09-14  Martin Baulig  <martin@ximian.com>
21796
21797         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21798
21799 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21800
21801         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21802         return a success/failure indication.
21803         (mono_metadata_interfaces_from_typedef_full): Ditto.
21804         (get_constraints): Ditto.
21805
21806 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21807
21808         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21809         
21810         * marshal.c (emit_marshal_array): Add support for returning string
21811         arrays from delegates. Fixes #76063.
21812
21813         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21814
21815 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21816
21817         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21818         icall.
21819
21820 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21821
21822         * reflection.c icall.c: Fix after mono_get_exception_type_load
21823         signature change.
21824
21825         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21826         (mono_assembly_load_reference): Use the new helper.
21827
21828         * class-internals.h (MonoLoaderError): New structure containing 
21829         information about type loading errors.
21830
21831         * class-internals.h loader.c: Add APIs to store per-thread loader
21832         error information.
21833
21834         * loader.c class.c: Set the loader error if needed.
21835
21836         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21837
21838 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21839
21840         * decimal.c: fixed to handle the broken ARM fp format.
21841
21842 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21843
21844         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21845         broken.
21846
21847 2005-09-06  Martin Baulig  <martin@ximian.com>
21848
21849         * domain.c (supported_runtimes): Added v2.0.50727.
21850
21851 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21852
21853         * culture-info.h: reduce the size of some structures.
21854
21855 2005-09-05  Martin Baulig  <martin@ximian.com>
21856
21857         Reflect latest API changes in the August CTP.
21858
21859         * icall.c
21860         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21861         ("MonoType.HasGenericArguments"): Removed.
21862         ("MonoMethod.BindGenericParameters"): Renamed to
21863         "MakeGenericMethod".
21864         ("MethodBuilder.BindGenericParameters"): Renamed to
21865         "MakeGenericMethod".    
21866
21867 2005-09-05  Martin Baulig  <martin@ximian.com>
21868
21869         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21870
21871 2005-09-05  Martin Baulig  <martin@ximian.com>
21872
21873         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21874
21875         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21876         generic_container is non-NULL.
21877
21878 2005-09-05  Martin Baulig  <martin@ximian.com>
21879
21880         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21881
21882         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21883
21884 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21885
21886         * reflection.c (encode_locals,
21887         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21888         for large generic types.
21889
21890 2005-09-05  Martin Baulig  <martin@ximian.com>
21891
21892         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21893
21894         * class.c (mono_dup_array_type): New public method.
21895         (mono_metadata_signature_deep_dup): New public method.
21896         (dup_type): Correctly duplicate array and function types.
21897
21898 2005-09-05  Martin Baulig  <martin@ximian.com>
21899
21900         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21901
21902         * reflection.c (get_default_param_value_blobs): Handle generic types
21903         and generic methods.
21904
21905 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21906
21907         * class.c: Fixed error reporting (method/class were inversed) for 
21908         inheritance demands.
21909         * security-manager.c|h: Added the AppDomain when calling the managed
21910         System.Security.SecurityManager.InheritanceDemand method.
21911
21912 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21913
21914         * reflection.c (encode_marshal_blob): 'marshaltype' and
21915         'marshaltyperef' are alternate sources for the custom marshaler
21916         name.
21917
21918 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21919
21920         * class.c: fix creation of array classes with rank == 1
21921         (patch by Ankit Jain <jankit@novell.com>).
21922
21923 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21924
21925         * object.c: fix check for creating the bound data for arrays vs
21926         szarrays.
21927
21928 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21929
21930         * object.c: configuration file name is now based on the executable name,
21931         not the image name. Fixes bug #75931.
21932
21933 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21934
21935         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21936         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21937
21938 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21939
21940         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21941
21942 2005-08-24  Ankit Jain  <jankit@novell.com>
21943             Raja R Harinath  <rharinath@novell.com>
21944
21945         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21946           called by it recursively.
21947           (mono_class_init): Remove special case in pending_init handling, since it's
21948           superseded by the fix to mono_class_from_typeref.
21949
21950 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21953         BROKEN_THREAD_START stuff.
21954
21955 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21956
21957         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21958         trampoline.
21959
21960         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21961         
21962         * object.c (mono_delegate_ctor): Replace the original function address with
21963         a delegate trampoline.
21964
21965 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21966
21967         * icall.c: add boolean argument to base64_to_byte_array and 
21968         InternalFromBase64String to control whether a whitespace-only string
21969         is allowed (or should casue a FormatException to be thrown). We need
21970         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21971         to match the MS behaviour in both profiles.
21972         * appdomain.c: Bump corlib version.
21973
21974 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21975
21976         This patch implements a big portion of publisher policy
21977         support, used to bind assembly versions and redirect
21978         one assembly from version A to version B.
21979
21980         * assembly.c:
21981         New GSList loaded_assembly_bindings, for storing the cached
21982         assembly bindings.
21983         (assembly_binding_maps_name): New static function for checking if a 
21984         assembly binding information maps an assembly name.
21985         (mono_assembly_binding_info_free): New function for freeing
21986         assembly binding information resources.
21987         (get_publisher_policy_info): New static function for retrieving 
21988         assembly binding information from a MonoImage.
21989         (compare_versions): New static function for comparing an assembly
21990         binding information data and the version of an assembly name.
21991         (check_policy_versions): New static function for checking if an
21992         assembly binding info mapping an assembly name is valid for it.
21993         (mono_assembly_load_publisher_policy): New static function for
21994         loading the 'policy.major.minor.MyAssembly' image for an assembly
21995         with an assembly name 'aname'.
21996         (mono_assembly_bind_version): New static function for updating
21997         assembly redirection.
21998         (mono_assembly_apply_binding): New static function for applying
21999         assembly binding.
22000         (search_binding_loaded): New static function for searching 
22001         loaded assembly binding infos in the cache domain.
22002         (mono_assembly_load_full): Don't apply assembly binding for
22003         reflection only assemblies.
22004
22005         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22006         which contains information about assembly binding. Also
22007         declare signature for mono_config_parse_publisher_policy ()
22008         function, used to retrieve pub policy info.
22009         
22010         * mono-config.c:
22011         (publisher_policy_start): New static function used to parse publisher 
22012         policy config files.
22013         (publisher_policy_parser): New static MonoParseHandler containing 
22014         the functions used when parsing config files.
22015         (mono_config_parse_publisher_policy): New function for parsing
22016         publisher policy files.
22017         
22018 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22019
22020         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22021
22022         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22023
22024         * object.c (mono_get_addr_from_ftnptr): New helper function.
22025
22026         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22027
22028         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22029
22030 2005-08-19  Dick Porter  <dick@ximian.com>
22031
22032         * threads.c, threads.h, appdomain.c, appdomain.h,
22033         profiler-private.h, monitor.c, object.c, object-internals.h,
22034         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22035         store the thread ID, so it can hold a 64 bit value if needed.
22036
22037 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22038
22039         * reflection.c (mono_reflection_create_dynamic_method): Store the
22040         handle class into the method references as well so ldtoken works in
22041         dynamic methods.
22042
22043         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22044         types.
22045
22046 2005-08-19  Ankit Jain <jankit@novell.com>
22047
22048         Fix #75847.
22049         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22050           here rather than using the method signature of a arbitrary function
22051           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22052           two arguments.
22053           Hack done with Harinath.
22054
22055 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22056
22057         * threadpool.c: disable printing stack traces when we get a exception
22058         in a threadpool thread. I need to do more testing to figure out which
22059         cases actually print this. Fixes bug #75828.
22060
22061 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22062
22063         * icall.c: there might be ignored whitespace after the last '='. This
22064         fixes length computation and bug #75840.
22065
22066 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22069         well. Fixes #75809.
22070
22071         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22072         #75784.
22073         
22074         * reflection.c (create_custom_attr_data): Ditto.
22075
22076 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22077
22078         * locales.c, culture-info.h : removed RegionLCIDMap.
22079         * culture-info-tables.h : regenerated.
22080
22081 2005-08-16  Martin Baulig  <martin@ximian.com>
22082
22083         * class.c (mono_type_get_name_recurse): Small fix.
22084
22085 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22086
22087         * locales.c : indentation fixie.
22088
22089 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22090
22091         * object-internals.h,
22092           locales.h,
22093           locales.c,
22094           culture-info.h,
22095           icall.c : added RegionInfo table support.
22096         * culture-info-table.h : regenerated for region support.
22097
22098 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22099
22100         * reflection.c (resolve_object): handle all kinds of MonoMethod
22101         including generic ones
22102
22103 2005-08-12  Ankit Jain <jankit@novell.com>
22104
22105         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22106           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22107
22108 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22109
22110         * process.c: Don't close a thread handle when it's NULL. This is a
22111         workaround for bug #75733.
22112
22113 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22114
22115         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22116
22117 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22118
22119         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22120
22121 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22122
22123         * threadpool.c: if a work item in the thread pool has a callback that
22124         catches a exception, don't propagate it after invoking the callback.
22125         Fixes bug #75336.
22126
22127 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22128
22129         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22130
22131         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22132
22133         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22134
22135         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22136
22137 2005-08-03  Ankit Jain  <jankit@novell.com>
22138
22139         Fix #75683.
22140         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22141           PInvoke calling convention is 0.
22142
22143 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22144
22145         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22146         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22147
22148 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22149
22150         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22151         to handle threads not started by the GC (patch by Michael Meeks
22152         <michael.meeks@novell.com>).
22153
22154 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22155
22156         * reflection.c: Make buffer used in emitting types larger for some
22157         big generic types (patch by Michal Moskal).
22158
22159 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * mono-debug.c: Fix some (not all) alignment problems.
22162
22163 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22164
22165         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22166         Invoke mono_image_load_from_data_full passing the refonly
22167         parameter.
22168
22169         * assembly.c
22170         (mono_assembly_open_from_bundle): Add the refonly argument, 
22171         in order to pass it to other methods it calls to.
22172         (do_mono_assembly_open): Add the refonly argument, in order 
22173         to pass it to other methods it calls to.
22174         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22175         the refonly parameter to it.
22176
22177         * image.c: Add loaded_images_refonly_hash and
22178         loaded_images_refonly_guid_hash to cache the reflection
22179         only loaded images.
22180         (mono_images_init): Initialize the hash tables used for
22181         caching the reflection only images.
22182         (load_modules): Invoke mono_image_open_full passing the refonly
22183         parameter to load the modules the correct way.
22184         (build_guid_table): Add the refonly argument, to re-build the 
22185         correct hash table.
22186         (do_mono_image_open): Added the refonly argument, in order to
22187         define it for the loaded image.
22188         (mono_image_loaded_full): New function, which receives an
22189         additional parameter to look for the image in the refonly or
22190         non-refonly section.
22191         (mono_image_loaded): Updated, using mono_image_loaded_full.
22192         (mono_image_loaded_by_guid_full): The same case that happens
22193         with mono_image_loaded_full.
22194         (mono_image_loaded_by_guid): Likewise.
22195         (register_image): Use the ref_only variable inside MonoImage
22196         to decide in which hash table store the current image.
22197         (mono_image_open_from_data_full): Rename
22198         mono_image_open_from_data to mono_image_open_from_data_full,
22199         adding the refonly argument, to define the ref_only variable 
22200         inside MonoImage.
22201         (mono_image_open_from_data): Return 
22202         mono_image_open_from_data_full.
22203         (mono_image_open_full): Rename mono_image_open to
22204         mono_image_open_full, receiving the new refonly argument,
22205         to pass it to inner methods.
22206         (mono_pe_file_open): Update this function, to open
22207         a MonoImage as a non-refonly image.
22208         (mono_image_close): Use the refonly variable inside
22209         MonoImage to remove the image from the correct caches.
22210
22211         * image.h: Add the signatures of mono_image_open_full,
22212         mono_image_open_from_data_full, mono_image_loaded_full,
22213         mono_image_loaded_by_guid_full.
22214
22215         * metadata-internals.h: Add the ref_only field to 
22216         MonoImage.
22217         
22218 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22219
22220         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22221         Fix the last behavior, which used to load the assemblies and
22222         extract MonoReflectionAssemblyName information, instead of
22223         extract it from the metadata tables. Needed for Reflection
22224         Only assemblies.
22225         
22226 2005-07-29  Martin Baulig  <martin@ximian.com>
22227
22228         * mono-debug-debugger.c
22229         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22230         not initialized.
22231
22232         * mono-debug.c
22233         (mono_debug_address_from_il_offset): Check whether we have
22234         debugging support before attempting to take the lock.
22235         (mono_debug_source_location_from_address): Likewise.
22236         (mono_debug_source_location_from_il_offset): Likewise.
22237         (mono_debug_il_offset_from_address): Likewise.
22238         (mono_debug_address_from_il_offset): Likewise.
22239
22240 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22241
22242         * class.c (mono_class_from_name_case): Add support for dynamic images.
22243         Fixes #75650.
22244
22245         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22246         for #75479.
22247
22248 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22249         
22250         * reflection.c (mono_method_get_object): Fix warning.
22251
22252 2005-07-28  Martin Baulig  <martin@ximian.com>
22253
22254         * mono-debug.c
22255         (mono_debug_add_wrapper): Also write the wrapper type.
22256
22257 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22260         
22261         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22262         data indicates the class has none.
22263
22264 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22265
22266         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22267         loader lock with the debugger lock. Prevents deadlocks for beagle.
22268
22269         Beagle can now run on an smp box for a weekend without any
22270         issues. Woohoo!
22271
22272 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22273
22274         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22275         in a module. Fixes #75629.
22276
22277 2005-07-26  Martin Baulig  <martin@ximian.com>
22278
22279         * mono-debug.c (mono_debug_add_wrapper): New static method.
22280         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22281         interncall or a wrapper.
22282
22283         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22284         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22285         (MONO_DEBUGGER_VERSION): Bump to 51.
22286
22287         * mono-debug-debugger.c
22288         (mono_debugger_add_type): Removed this empty function.
22289         (mono_debugger_add_method): Likewise.
22290
22291 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22294         before accessing method->slot.
22295
22296 2005-07-21  Jb Evain  <jbevain@gmail.com>
22297
22298         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22299         Fixes #75010.
22300
22301 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22302
22303         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22304         #75587.
22305
22306 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * image.h image.c: Add mono_image_get_guid () API function.
22309
22310 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22311
22312         There were issues when multiple threads tried to load
22313         assemblies. A deadlock was created between assemblies_mutex and
22314         mono_domain_assemblies_lock. This fixes the issue by making the
22315         assembly ref counting be lock free. See bug 75586.
22316         
22317         * image.c (mono_image_close): The add ref function here was using
22318         Interlocked operations while the unref was using a mutex and a
22319         --. I don't think this was ever a bug that would be exposed in a
22320         non-pendantic way (ie, by an embedder doing a ref on one thread
22321         and an unref on another), but for the sake of correctness, this is
22322         now Interlocked.
22323
22324         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22325         (mono_assembly_load_reference): Call mono_assembly_addref rather
22326         than touching the refcount ourselves.
22327         (mono_assembly_close): Use InterlockedDecrement to unref the
22328         assembly. Don't acquire the lock unless it is actually needed.
22329
22330 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * class.c (mono_class_layout_fields): Fix calculation of has_references
22333         for generic types.
22334
22335 2005-07-12  Martin Baulig  <martin@ximian.com>
22336
22337         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22338
22339         * metadata.c
22340         (mono_type_hash): Provide better hashing for generic instances.
22341         (mono_generic_inst_hash): Improve hashing.
22342         (mono_generic_class_hash): Likewise.
22343
22344         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22345         generic instances.
22346
22347 2005-07-12  Martin Baulig  <martin@ximian.com>
22348
22349         * reflection.c (mono_reflection_create_runtime_class): Remove the
22350         hack for generic type definitions and non-`Run' assemblies.
22351         (mono_reflection_bind_generic_parameters): Also use
22352         `klass->wastypebuilder' to check for TypeBuilders.
22353
22354 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * class.c (mono_class_layout_fields): Fix calculation of has_references
22357         for generic types.
22358
22359         * class.c (inflate_generic_class): Fix a leak.
22360         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22361         for generic types.
22362
22363 2005-07-11  Martin Baulig  <martin@ximian.com>
22364
22365         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22366         on error.
22367
22368 2005-07-11  Martin Baulig  <martin@ximian.com>
22369
22370         * loader.c (find_method): Also lookup in
22371         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22372
22373 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22374
22375         * appdomain.c (mono_domain_unload): Don't free the error message
22376         before passing it to mono_get_exception_...
22377
22378         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22379         
22380 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22381
22382         * threads.c: try to better guess an available RT signal (bug #75387).
22383
22384 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22385
22386         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22387         and CACHE_OBJECT.
22388
22389 2005-07-07  Martin Baulig  <martin@ximian.com>
22390
22391         * class.c (mono_type_get_name_full): Return NULL for
22392         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22393         fixes #75408.
22394
22395 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22396
22397         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22398         exit the appdomain as well being aborted.
22399
22400         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22401         change back to the root domain after calling managed code. This enables
22402         appdomains using threadpools to be unloaded.
22403
22404 2005-07-07  Martin Baulig  <martin@ximian.com>
22405
22406         * class-internals.h
22407         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22408         into `MonoDynamicGenericClass' since we only need it for dynamic
22409         types.
22410
22411         * reflection.c (mono_class_bind_generic_parameters): We don't need
22412         to compute the `parent' here.
22413
22414 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22415
22416         * culture-info-table.h : regenerated.
22417
22418 2005-07-06  Martin Baulig  <martin@ximian.com>
22419
22420         * icall.c
22421         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22422
22423         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22424
22425 2005-07-06  Martin Baulig  <martin@ximian.com>
22426
22427         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22428         we're doing a signature-only comparision; fixes #74945.
22429
22430 2005-07-06  Martin Baulig  <martin@ximian.com>
22431
22432         * class-internals.h (MonoGenericClass): Moved some things out into
22433         a new `MonoInflatedGenericClass' type.  
22434         (MonoInflatedGenericClass): New type; the `klass' of a
22435         `MonoGenericClass' is now computed lazyly in
22436         mono_get_inflated_generic_class().      
22437
22438         * class.c (mono_get_inflated_generic_class): New public function.
22439         (mono_class_inflate_generic_method): Removed the unused
22440         `MonoClass *' argument.
22441         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22442         all the methods.
22443         (mono_class_create_generic): Make this static and merge it with
22444         mono_class_create_generic_2(); we're now called automatically from
22445         mono_get_inflated_generic_class().
22446
22447         * loader.c (mono_method_signature): Call
22448         mono_get_inflated_method() here.
22449
22450 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22451
22452         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22453         type of fields with RVA.
22454
22455         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22456         for this pseudo class.
22457         (my_mono_class_from_generic_parameter): Likewise.
22458         (mono_class_init): Allow interfaces to have cctors.
22459
22460 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22461
22462         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22463         lazily for AOT methods.
22464
22465 2005-07-05  Martin Baulig  <martin@ximian.com>
22466
22467         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22468         returns FALSE for a successful match, not TRUE.
22469
22470 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22471
22472         * loader.c (mono_method_get_index): Optimize this a bit.
22473
22474 2005-07-04  Martin Baulig  <martin@ximian.com>
22475
22476         * class.c
22477         (class_compute_field_layout): Move the check for generic type
22478         definitions into mono_class_layout_fields().  Fixes #74684.
22479         (mono_class_from_generic_parameter): Correctly compute
22480         `klass->parent'; fixes #75457.
22481
22482         * reflection.c (register_assembly, register_module): Make sure
22483         `domain->rejobject_hash' is already created.
22484
22485 2005-07-02  Martin Baulig  <martin@ximian.com>
22486
22487         * class-internals.h
22488         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22489         `MonoDynamicGenericClass'.      
22490
22491 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22492
22493         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22494         returned by a field getter is null, since null is a valid value.
22495
22496 2005-07-01  Martin Baulig  <martin@ximian.com>
22497
22498         * reflection.c (mono_reflection_generic_class_initialize): Update
22499         the `dgclass->fields [i].parent' to the correct class.
22500         (mono_image_get_fieldref_token): Use the declaring type, not the
22501         reflected type.
22502
22503 2005-07-01  Martin Baulig  <martin@ximian.com>
22504
22505         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22506
22507 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22508
22509         * threads.c (thread_cleanup): assert that thread != NULL
22510         (wait_for_tids_or_state_change): We were using the wrong variable
22511         when accessing wait->threads. `i' was always out of the bounds of
22512         the array.
22513
22514 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22515
22516         * loader.c: map user32 and kernel32 to libMonoSupportW
22517
22518 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22519
22520         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22521
22522 2005-06-28  Martin Baulig  <martin@ximian.com>
22523
22524         * loader.c (method_from_methodspec): Fix #75334.
22525
22526 2005-06-28  Martin Baulig  <martin@ximian.com>
22527
22528         Fix #74953 - Arrays now implement the generic IList<T> interface
22529         on the 2.0 platform.
22530
22531         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22532
22533         * reflection.c (mono_class_bind_generic_parameters): New public
22534         function; similar to mono_reflection_bind_generic_parameters(),
22535         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22536
22537         * domain.c (mono_init_internal): Try to initialize.
22538         `mono_defaults.generic_array_class' here; this'll only succeed if
22539         we're using the 2.0 corlib.
22540
22541         * icall.c
22542         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22543         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22544         (mono_lookup_internal_call): Added support for nested classes.
22545
22546         * loader.c
22547         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22548         we're an interncall and have generic arguments.
22549
22550         * class.c
22551         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22552         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22553         instance of System.Array.InternalArray<T> for arrays, so they
22554         implement the generic IList<T> interface.
22555
22556 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22559         (chastamar@yahoo.com). Fixes #75374.    
22560
22561 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22562
22563         * culture-info-table.h: regenerated.
22564
22565 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22566
22567         * icall.c: handle spaces correctly for base64 strings.
22568
22569 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22570
22571         * *.c: Kill some warnings.
22572
22573 2005-06-23  Duncan Mak  <duncan@novell.com>
22574
22575         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22576         that this builds on Solaris 10 (x86).
22577
22578 2005-06-23  Martin Baulig  <martin@ximian.com>
22579
22580         * class.c
22581         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22582         generic type definitions.
22583
22584 2005-06-23  Martin Baulig  <martin@ximian.com>
22585
22586         Fix #75331.
22587
22588         * metadata.c (mono_class_get_overrides): Renamed to
22589         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22590         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22591         pass it to mono_get_method_full().
22592
22593 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22594
22595         * reflection.c (mono_reflection_create_runtime_class): take the
22596         mono_domain_lock in this method. Prevents deadlocks
22597
22598 2005-06-22  Martin Baulig  <martin@ximian.com>
22599
22600         * loader.c (method_from_methodspec): Fix #75330.
22601
22602 2005-06-22  Martin Baulig  <martin@ximian.com>
22603
22604         * reflection.c (type_get_qualified_name): Use
22605         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22606         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22607         argument; use it if we don't have an assembly name.
22608
22609 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22610
22611         * object.c: In mono_message_init, set "copy out" flag for in
22612         parameters with the [Out] flag.
22613
22614 2005-06-21  Martin Baulig  <martin@ximian.com>
22615
22616         * class.c
22617         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22618         and MONO_TYPE_PTR.
22619
22620 2005-06-21  Martin Baulig  <martin@ximian.com>
22621
22622         * class.c (mono_class_init): Don't initialize `class->fields' for
22623         generic instances since they're initialized again in
22624         compute_field_layout(). 
22625         (compute_field_layout): Set the field's `generic_info' here; fix
22626         #75320. 
22627
22628 2005-06-21  Martin Baulig  <martin@ximian.com>
22629
22630         * class-internals.h
22631         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22632
22633         * metadata.c (mono_metadata_generic_method_equal): Also
22634         distinguish the `generic_class'; fixes #75334.
22635
22636 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22637
22638         * domain.c:
22639         * appdomain.c:
22640         * domain-internals.h:
22641         * reflection.c: 'domain_assemblies' field is now protected by its own
22642         lock. Don't call into managed code to run the AssemblyLoad event if we
22643         now there are no registered delegates for it.
22644
22645 2005-06-20  Martin Baulig  <martin@ximian.com>
22646
22647         * class.c (mono_class_is_assignable_from): Use a custom version of
22648         mono_class_has_parent() to make things work for generic instances;
22649         fix #75300.
22650
22651 2005-06-20  Martin Baulig  <martin@ximian.com>
22652
22653         * loader.c (method_from_methodspec): Apply a patch from
22654         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22655
22656 2005-06-20  Martin Baulig  <martin@ximian.com>
22657
22658         * class.c (mono_class_init): Reverted Zoltan's last change; it
22659         breaks generics.
22660
22661 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22662
22663         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22664
22665 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22666
22667         * socket-io.c: fix the index in the socket array for writable/error
22668         sockets. Fixes bug #75306.
22669
22670 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22671
22672         * class.c (mono_class_init): Allow interfaces to have static ctors.
22673
22674 2005-06-17  Martin Baulig  <martin@ximian.com>
22675
22676         * loader.c (method_from_methodspec): Use `context->container' when
22677         parsing the `gmethod->inst'.
22678
22679 2005-06-17  Martin Baulig  <martin@ximian.com>
22680
22681         * class.c (mono_type_get_name_recurse): Don't add the assembly
22682         name for type arguments.
22683
22684 2005-06-15  Martin Baulig  <martin@ximian.com>
22685
22686         * reflection.c (mono_image_get_inflated_method_token): Encode
22687         correct klass; fixes #75260.
22688
22689 2005-06-13 Michal Moskal <malekith@nemerle.org>
22690
22691         * icall.c: Make GetCorrespondingMethod/Constructor take
22692         MonoReflectionMethod method not MonoMethod. Removed
22693         MonoType.GetCorrespondingField, and make
22694         MonoGenericType.GetCorrespondingField take name not
22695         MonoClassField.
22696
22697 2005-06-13  Michal Moskal <malekith@nemerle.org>
22698
22699         * reflection.c (field_encode_signature, encode_locals):
22700          Make sizes of buffers for types larger (for big generic types).
22701          (create_generic_typespec,
22702          mono_reflection_sighelper_get_signature_local,
22703          mono_reflection_sighelper_get_signature_field):
22704          Add asserts for too small buffers.
22705
22706 2005-06-15  Martin Baulig  <martin@ximian.com>
22707
22708         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22709         if our parent is not a dynamic type.
22710
22711 2005-06-15  Martin Baulig  <martin@ximian.com>
22712
22713         * class-internals.h (MonoTypeNameFormat): New enum.
22714
22715         * class.c
22716         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22717         (mono_type_get_full_name): Removed.
22718         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22719         argument instead of the boolean's.
22720
22721         * icall.c (ves_icall_System_MonoType_getFullName):
22722         Added `gboolean assembly_qualified'.    
22723
22724         * reflection.h
22725         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22726
22727         * reflection.c (mono_reflection_parse_type): Parse the new type
22728         name format.
22729
22730 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22731
22732         * icall.c: no need to convert from utf16 to utf8 and then back again
22733         after the call to GetLogicalDrives.
22734
22735 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22736
22737         * icall.c: frombase64. Fix problems exposed by new tests.
22738
22739 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22740
22741         * icall.c: added internal calls for converting char [] and strings in
22742         base64 into byte [].
22743
22744 2005-06-10  Martin Baulig  <martin@ximian.com>
22745
22746         * class.c (mono_class_create_generic_2): Read the nested classes
22747         from the metadata rather than from `gklass->nested_classes' since
22748         `gklass' might not be initialized yet.
22749
22750 2005-06-09  Duncan Mak  <duncan@novell.com>
22751
22752         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22753         all public headers. Fixes #74919.
22754
22755 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22756
22757         * domain.c: The key for proxy_vtable_hash is now a pointer
22758         array. Added new GHashFunc and GCompareFunc functions for this.
22759
22760         * class.h: The list of interfaces in MonoRemoteClass is known in
22761         advance and can't grow (we create a new MonoRemoteClass if needed),
22762         so now the interface array can be allocated together with
22763         MonoRemoteClass.
22764         
22765         * object.c: Added a new method create_remote_class_key.
22766         Fixed mono_remote_class so it does not depend on
22767         mono_upgrade_remote_class.
22768         Removed extend_interface_array.
22769         Added new method clone_remote_class(), which makes a copy of a remote
22770         class and adds a new interface or class to it.
22771         mono_upgrade_remote_class() now creates a new remote class (or gets
22772         it from the cache) if an vtable upgrade is needed. In this way
22773         we make sure that other objects sharing the same remote class
22774         don't get the new vtable with unwanted interfaces.
22775         
22776         * object-internals.h:
22777         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22778         
22779         * marshal.c: Track changes in mono_upgrade_remote_class().
22780
22781 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22782         * icall.c: Add runtime methods for obtaining members of inflated
22783         class, which were created from supplied non-inflated members. It
22784         is used in internal Get{Method,Constructor,Field} methods in
22785         System.Type
22786
22787 2005-06-09  Martin Baulig  <martin@ximian.com>
22788
22789         * reflection.c
22790         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22791
22792 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22793         * reflection.c (mono_image_basic_init): Define
22794         Version in MonoDynamicAssembly. 
22795         
22796 2005-06-08  Martin Baulig  <martin@ximian.com>
22797
22798         Fix #75136.
22799
22800         * loader.c
22801         (mono_method_signature_full): New public method; takes a
22802         `MonoGenericContext *'.
22803         (find_method): Use mono_method_signature_full() and pass the
22804         klass'es context to it.
22805
22806         * class.c (mono_class_is_inflated_method): Use
22807         mono_method_signature_full() and pass the context to it.
22808
22809 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22810
22811         * object.c: add proper locking in mono_remote_class_vtable(),
22812         fixes possible memory corruption.
22813
22814 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22815
22816         * marshal.c (mono_remoting_marshal_init): set
22817         initialized after initialization.
22818
22819 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22820
22821         * locales.c : hush.
22822
22823 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22824
22825         * object.c (extend_interface_array): fix really silly
22826         memory corrupting / comparison bug.
22827
22828 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22829
22830         * reflection.c: Functions added to support the creation
22831         of CustomAttributeData, which includes Attribute data
22832         used by ReflectionOnly methods.
22833
22834         * reflection.h:  mono_reflection_get_custom_attrs_data and
22835          mono_custom_attrs_data_construct added (functions exposed).
22836
22837          * icall.c: Added mono_reflection_get_custom_attrs_data
22838          as icall.
22839         
22840 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22841
22842         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22843         lupus's request.
22844
22845 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22846
22847         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22848
22849         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22850         dynamic DllImportAttribute.
22851
22852         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22853         dynamic DllImportAttribute.
22854
22855         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22856         Fixes #75162.
22857
22858 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22859
22860         * threads.c: avoid segfault when an unstarted thread is aborted.
22861
22862 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22863
22864         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22865         Returns the name and version of the runtime for reporting.
22866
22867 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22868
22869         * appdomain.c: bump corlib version.
22870         * object-internals.h: new field in MonoReflectionAssembly.
22871
22872 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22873
22874         * object-internals.h: Carlos forgot to add this field.
22875
22876 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22877
22878         * icall.c: Added create_version to create instances
22879         of Version of MonoReflectionAssemblyName. This change helps
22880         the AssemblyName tests to keep running fine.
22881         
22882 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22883   
22884         * object.c (mono_method_return_message_restore): A somehow less
22885         intrusive fix for #75138.
22886
22887 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22888
22889         * object.c (mono_method_return_message_restore): Fix computation
22890         of expected number of out args.
22891
22892 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22893
22894         * reflection.c (mono_image_get_method_info): Fix the case when the
22895         charset is empty.
22896
22897 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22898
22899         * object.c: Added missing null check in
22900           mono_method_return_message_restore.
22901
22902 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * reflection.c (mono_image_get_method_info): Handle the case when
22905         dllentry is empty.
22906
22907 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22908
22909         * object.c: When creating the vtable for a proxy, take into account
22910         all inherited interfaces, not only the ones registered in
22911         iclass->interfaces. This fixs bug #74996.
22912         Also, in mono_method_return_message_restore, verify that the array
22913         of out args has the expected lengh.
22914
22915 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22916
22917         * socket-io.c: update the timeout in Poll when the call is interrupte.
22918
22919 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22920
22921         * socket-io.c: support abort/suspend in Select_internal after last
22922         change.
22923
22924 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22925
22926         * threadpool.c: remove warning.
22927
22928 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22929
22930         * icall.c:
22931         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22932         removing the 1024 limit from select(). Runtime part of the fix for
22933         bug #71203.
22934
22935 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22936
22937         * socket-io.c: when resolving the addresses for the same
22938         host returned by gethostname(), get the local IPs from the interface
22939         list. Loopback addresses are discarded if the are interfaces up with
22940         non-loopback ones. Fixes bug #63265.
22941
22942 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22943
22944         * appdomain.c, verify.c, object-internals.h, reflection.c:
22945         bumped corlib number to 36, and added new extra_flags field
22946         to ReflectionMethodBuilder and friends.  Fixes #75060.
22947
22948 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22949
22950         * gc.c: register a new weak link only if the object is non-null
22951         (fixes bug#75047).
22952
22953 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22954
22955         * culture-info.h : short time pattern too.
22956
22957 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22958
22959         * culture-info.h : expand long time pattern string length.
22960
22961 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22962
22963         * culture-info-table.h : update (more French date format; #72788).
22964
22965 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22966
22967         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22968         the method is static. Fixes #75029.
22969
22970 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22971
22972         * reflection.c: Update the table_idx field of method builders after
22973         saving the module, since it can change. This is a workaround for
22974         bug #74914. 
22975
22976 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22977
22978         * culture-info-table.h : update (additional French date format).
22979
22980 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22981
22982         * icall.c (ves_icall_type_Equals): Revert last change.
22983         
22984         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22985
22986         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22987
22988 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22989
22990         * class-internals.h: Added executioncontext_class field to 
22991         MonoDefaults structure.
22992         * domain.c: Cache System.Threading.ExecutionContext class in 
22993         mono_defaults.
22994         * object.c: Capture the ExecutionContext for asynchroneous calls in
22995          mono_async_result_new.
22996         * object-internals.h: Added execution_context and original_context 
22997         fields to MonoAsyncResult. Added execution_context to MonoThread.
22998         * security-manager.c|.h: Added mono_get_context_capture_method to 
22999         return the capture method (if required by the security manager or by
23000         the framework version used).
23001         * threadpool.c: Apply capture (if present) ExecutionContext in 
23002         mono_async_invoke and revert to original context after it completes.
23003
23004 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23005
23006         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23007
23008 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23009
23010         * culture-info-table.h : zh-CHT related workaround.
23011
23012 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23013
23014         * marshal.c (emit_marshal_custom): Add some error checking and call the
23015         methods in the ICustomMarshaler interface. Fixes #74875.
23016         
23017         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23018         native->managed wrappers.
23019
23020 2005-05-12  Martin Baulig  <martin@ximian.com>
23021
23022         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23023         here and use the loader lock.
23024
23025         * mono-debug.c: Properly lock when the debugger is not attached.
23026         (mono_debug_init): Release the initial lock if we're not running
23027         in the debugger.
23028
23029 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23030
23031         * marshal.c (emit_marshal_custom): Pass through NULL values without
23032         calling the custom marshalling routines.
23033
23034         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23035         conversion in structures. Fixes #74882.
23036
23037 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23038
23039         * culture-info-table.h : zh-* cultures were missing.
23040
23041 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23042
23043         * threads.c: Added a new event background_change_event which is signaled
23044         when a thread changes its background mode.
23045         Moved here several checks previously done in managed code. The checks
23046         require the thread lock, and using the thread lock in managed code
23047         can result in deadlocks.
23048         Merged Start_internal and Thread_internal into a single method. Now 
23049         Thread_internal does all work of creating and starting a thread.
23050         Added icalls for setting and getting the state of the object. Moved from
23051         managed code to avoid locking there.
23052         Added wait_for_tids_or_state_change() which is called instad of
23053         wait_for_tids when waiting for non-backround threads to end. This method
23054         will return if one of the threads ends or the background_change_event
23055         is signaled.
23056         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23057         the background mode. This method signals the background_change_event
23058         event.
23059         * icall.c:
23060         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23061         removed Start_internal.
23062         
23063 2005-05-11  Martin Baulig  <martin@ximian.com>
23064
23065         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23066         to order of some fields to get proper alignment on 64-bit machines.
23067
23068 2005-05-11  Martin Baulig  <martin@ximian.com>
23069
23070         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23071         changes as they're broken and completely fuck up the debugger.
23072
23073         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23074
23075 2005-05-10  Martin Baulig  <martin@ximian.com>
23076
23077         * reflection.c (mono_reflection_generic_class_initialize): Don't
23078         call mono_class_setup_parent() here.
23079
23080 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23081
23082         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23083         send/receive timeout use an integer in milliseconds. We were using a
23084         struct timeval.
23085
23086 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23087
23088         * locales.c:
23089         (internal_get_cultures): reserve the first slot of the array for the
23090         InvariantCulture, which will be filled in managed code.
23091
23092 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23093
23094         * reflection.c (mono_image_fill_module_table): Initialize the
23095         GENERATION field as well.
23096
23097 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23098
23099         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23100         Monitor.Enter on the object.
23101
23102 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23103
23104         * threads.c: Enable the wait for running threads when exiting.
23105         * icall.c: Suspend all threads before exiting.
23106
23107 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23108
23109         * assembly.c (mono_assembly_load_reference): Fix warning.
23110
23111 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23112
23113         * threadpool.c: changed the default number of threads per cpu. From now
23114         on, the default will be 20 + (5 * number of cpus) instead of 50.
23115
23116 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23117
23118         * loader.c (mono_method_get_signature_full): Add locking here.
23119
23120 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23121
23122         * appdomain.c: Moved methods for parsing and freeing assembly
23123         names to assembly.c.
23124         * assembly.c, domain-internals.h: Created public methods for parsing
23125         assembly names. Fixed mono_assembly_load_with_partial_name:
23126         it now finds the best match, taking into account the version,
23127         token and culture specified in the partial name. Also return
23128         the latest version if no version information is specified.
23129
23130 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23131
23132         * threadpool.c: replace check for SocketAsyncCall class.
23133
23134 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23135
23136         * threadpool-internals.h:
23137         * Makefile.am: added threadpool-internals.h
23138
23139         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23140         that happen in threadpool threads (tested on MS).
23141         (mono_thread_pool_remove_socket): new function that dispatch any pending
23142         AIO call on a socket that is closing. By now only epoll really needs it,
23143         as select/poll wake up when the socket closes.
23144
23145
23146         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23147
23148 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23149
23150         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23151
23152 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23153
23154         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23155
23156 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23157
23158         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23159         has an abort request, convert it into a suspend request.
23160
23161 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23162
23163         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23164         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23165         is not supported yet.
23166
23167 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23168
23169         * image.c: register assemblies loaded from data (bundles) in the loaded
23170         assemblies hash. Fixes bug #74772.
23171
23172 2005-04-29  Martin Baulig  <martin@ximian.com>
23173
23174         * class.c (mono_type_get_name_recurse): Update to the new naming
23175         schema from the latest .NET 2.x beta2.
23176         (mono_class_setup_vtable_general): If we're a generic instance,
23177         copy the vtable from our generic type definition and inflate all
23178         the methods in it.
23179
23180         * loader.c (find_method): Update to the new naming schema from the
23181         latest .NET 2.x beta2.
23182
23183 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23184
23185         * class.c (mono_class_init): Add a mono_loader_unlock to the
23186         #74734 fix.
23187
23188 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23189
23190         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23191         suspend_all_other_threads () call for the time being, since it can hang.
23192
23193         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23194         the background threads to exit, since it can also hang.
23195
23196         * class.c (mono_class_init): Applied patch from Ankit Jain 
23197         (radical@gmail.com). Avoid pending init errors when a field refers
23198         to a nested class using a typeref. Fixes #74734.
23199
23200         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23201         this for dynamic modules.
23202
23203 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23204
23205         * threads.c: don't wait for threads that are in the process of aborting
23206         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23207         and waiting for background threads to finish. This makes xsp and
23208         mod-mono-server exit without random length delays and/or hangs.
23209
23210 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23211
23212         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23213
23214 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23215
23216         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23217         dynamic types to prevent infinite loops. Fixes #74727.
23218
23219         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23220         ..._is_assignable_to.
23221
23222 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23223
23224         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23225
23226 2005-04-25  Martin Baulig  <martin@ximian.com>
23227
23228         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23229
23230         * domain.c
23231         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23232
23233         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23234
23235         * reflection.c (build_compressed_metadata): Set metadata header
23236         version to 2.0.
23237
23238 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23239
23240         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23241         number into an integral and a decimal part. Fixes #70473.
23242
23243         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23244
23245 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23246
23247         * culture-info-table.h : reflected the latest locale-builder output.
23248
23249 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23250
23251         * threadpool.c: check for SuspendRequested too when deciding if
23252         mono_thread_interruption_checkpoint should be called.
23253
23254 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23255
23256         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23257         * threads.c: remove interruption_mutex and use Interlocked instead. When
23258         suspending all the threads, wait for all the suspended events at once.
23259         If we're shutting down and get an APC that is going to be queued,
23260         call mono_thread_execute_interruption immediately, as the thread might
23261         be sleeping on a pthread condition or mutex.
23262
23263         * icall.c: call mono_runtime_set_shutting_down before suspending the
23264         threads.
23265
23266         Fixes bug #74693. And now xsp is happier when exiting.
23267
23268 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23269
23270         * loader.c (mono_stack_walk): Fix #74690.
23271
23272 2005-04-22  Martin Baulig  <martin@ximian.com>
23273
23274         * mono-debug.h (MonoDebugMethodJitInfo): Added
23275         `MonoDebugMethodJitInfo *jit'.
23276
23277         * mono-debug.c (mono_debug_read_method): Cache the
23278         MonoDebugMethodJitInfo in `address->jit'.
23279         (mono_debug_free_method_jit_info): New public method.
23280
23281 2005-04-22  Martin Baulig  <martin@ximian.com>
23282
23283         * class.c (mono_class_is_assignable_from): Disallow
23284         type parameter -> interface.
23285
23286 2005-04-21  Dick Porter  <dick@ximian.com>
23287
23288         * threads.c (mono_thread_create): Turn an assertion into an error.
23289
23290 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23291
23292         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23293         
23294         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23295         Fix some gcc 4.0 warnings.
23296
23297 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23298
23299         * file-io.c: fix alt dir separator char on unix systems
23300         and cleanup (fixes bug #71214).
23301
23302 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23303
23304         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23305         a call to a remote domain, since the method may be an
23306         interface method in the client domain. This fixes bug #74192.
23307
23308 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23309
23310         * threadpool.c: recv/send are now performed before going back to managed
23311         code to save one transition.
23312
23313 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23314
23315         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23316
23317         * metadata/threadpool.c: removed hack to workaround the bug above.
23318
23319         Fixes bug #74618.
23320
23321 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23322
23323         * reflection.c reflection.h: Fix handling of parameter defaults in
23324         dynamic methods. Also fixes handling of parameter attributes.
23325         Fixes #74609.
23326
23327         * mono-debug.c (mono_debug_close_image): Fix warning.
23328
23329 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23330
23331         * socket-io.h: replaced old unused field with new 'blocking'.
23332         * threadpool.c: restore socket blocking state on windows(tm).
23333
23334 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23335
23336         * icall.c: don't return the codebase in the AssemblyName[] returned by
23337         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23338         * object-internals.h: Removed FIXME (fields were presents) and fixed
23339         versioncompat declaration.
23340
23341 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23342
23343         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23344         not closed, so don't cleanup when it happens.
23345
23346 2005-04-13  Chris Toshok  <toshok@ximian.com>
23347
23348         * mono-debug-debugger.h: change prototype for
23349         mono_debugger_lookup_type.
23350
23351         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23352         this function, although it should probably be named
23353         mono_debugger_init_type.
23354
23355 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23356
23357         * threadpool.c: fix non-AIO case.
23358
23359 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23360
23361         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23362         the built-in profiler to measure just JIT compilation times.
23363
23364 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23365
23366         * threadpool.c: the epollfd might be closed by another thread at
23367         any time, so ignore EBADF at treat it as a "we're closing" sign.
23368
23369 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23370
23371         * threadpool.c: release the semaphores with a count equals to the number
23372         of working threads in both IO and regular pools. Fixed typo that messed
23373         up the count of IO pool threads. Don't initialize the pipe handles if
23374         we're using epoll.
23375
23376 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23377
23378         * threadpool.c: some systems don't like a NULL when deleting the socket
23379         from epoll.
23380
23381 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23382
23383         * threadpool.c: fix semaphore allocation.
23384
23385 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23386
23387         * threadpool.c: added epoll() based implementation for asynchronous IO
23388         that is used instead of the default poll() when available.
23389         It can be disabled by setting MONO_DISABLE_AIO.
23390
23391 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23392
23393         * threadpool.c: windows needs 'closesocket' and instead of returning
23394         0 when the stream is closed while in select, it returns -1. Fixes bug
23395         #74573.
23396
23397 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23398
23399         * class.c (class_compute_field_layout): Fix the regression caused by
23400         the previous try.
23401
23402 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23403
23404         * threadpool.c: separate pool for socket async. IO.
23405         * threadpool.h: mono_max_worker_threads is not a global any more.
23406
23407 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23408
23409         * class.c (class_compute_field_layout): Fix #74549.
23410
23411 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23412
23413         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23414         use 2 connected sockets instead.
23415
23416 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23417
23418         * mono-config.c: Add new entry point for mkbundle
23419         mono_config_parse_memory. 
23420
23421 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23422
23423         * threadpool.c: removed another unused function.
23424
23425 2005-04-08  Ankit Jain  <radical@corewars.org>
23426
23427         * reflection.c (get_default_param_value_blobs): Add 'types'
23428         parameter to get the types encoded in the constant table.
23429         (mono_param_get_objects): Use the type from the constant table,
23430         not the type of the parameter, when creating default values.
23431         Handle null default values correctly.
23432
23433 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23434
23435         * file-io.c:
23436         * file-io.h:
23437         * threadpool.c:
23438         * threadpool.h:
23439         * icall.c:
23440         * socket-io.c: removed dead code for async IO.
23441
23442 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23443
23444         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23445
23446         * threadpool.c: intercept socket async. calls and pass them to a thread
23447         that is polling and dispatching the job items to the threadpool as
23448         socket become ready. Fixes bugs #71217, #71933.
23449
23450         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23451         between char and short/ushort arrays.
23452
23453         * socket-io.c: remove dead code.
23454
23455 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23456
23457         * locales.c,
23458           icall.c : removed InternalToUpper_Comp() and
23459           InternalToLower_Comp().
23460
23461 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23462
23463         * char-conversions.h : The tables were incorrectly generated. Should
23464           be generated against invariant culture.
23465
23466 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * object.c (mono_runtime_invoke_array): Fix return value when 
23469         passing pre-created valuetype objects to ctors.
23470
23471         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23472         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23473         Fixes #74338.
23474
23475 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23476
23477         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23478         only used with --security and hides the wrong corlib version error.
23479
23480 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23481
23482         * class.c: Changed mono_class_name_from_token so that types
23483         outside of a namespace don't have an initial period.  Improved
23484         the g_warning message used in _mono_class_get when loading
23485         fails.
23486         * assembly.c: In mono_assembly_load_reference, when an assembly
23487         can't be found, "No such file or directory" is misleading and
23488         unhelpful because a few paths were checked for the presence of
23489         the assembly.  When that happens (ENOENT), display a nicer
23490         message indicating the directories that were searched.  In all
23491         cases, the warning is made easier to read for non-hackers.
23492
23493 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23494
23495         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23496         project/solution.
23497         * appdomain.h|domain.c: Removed inline from functions.
23498         * appdomain.c: Reduced warnings when compiling on windows.
23499         * icall.c: Fixed output_debug declaration to gunichar2*.
23500         * mono-config.c: Reduced warnings when compiling on windows.
23501         * rand.c: Added missing "windows.h". Added missing return value.
23502         * rawbuffer.c: Added missing winsock2.h for windows.
23503         * sysmath.h: Added mono-compiler.h header to allow/ease 
23504         compilation with non-GCC compilers.
23505         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23506         Removed cast warnings.
23507
23508         Adapted from the work of J Lothian (for VC6).
23509
23510 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23511
23512         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23513         from default_path.
23514
23515 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23516
23517         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23518         the 2.0 profile.
23519
23520 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23521
23522         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23523         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23524         stuff, and it would probably use $(prefix)/share rather than
23525         $(prefix)/lib.
23526
23527 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23528
23529         * console-io.c: added 2 includes that might be missing.
23530
23531 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23532
23533         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23534         profile.
23535
23536         * reflection.c (create_custom_attr): Allocate the params array using
23537         alloca so it gets GC tracking.
23538
23539 2005-03-23  Chris Toshok  <toshok@ximian.com>
23540
23541         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23542         out some spew.
23543
23544 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23545
23546         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23547         changes to pick up any changes in prefix, etc.
23548
23549 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23550
23551         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23552         
23553         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23554         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23555
23556 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23557
23558         * class-internals.h object-internals.h class.c reflection.c: Extend the
23559         mono_lookup_dynamic_token () function to return the class of the
23560         token as well. 
23561
23562         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23563         well. Fixes #73848.
23564
23565 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23566
23567         * security-manager.c: Skip inheritance checks for intra-corlib
23568         class inheritance and method overrides. This skips a lot of checks
23569         and (anyway) permissions cannot work until corlib is loaded.
23570
23571 2005-03-23  Martin Baulig  <martin@ximian.com>
23572
23573         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23574         MONO_TYPE_GENERICINST.  
23575
23576 2005-03-23  Martin Baulig  <martin@ximian.com>
23577
23578         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23579
23580 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23581
23582         * class.c: added locking comments to some functions.
23583         Cache the interface offsets arrays (saves about 20 KB
23584         of runtime memory in a typical app).
23585         Reduce the time overhead in mono_class_setup_supertypes ().
23586
23587 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23588
23589         * icall.c: speedup and fix leaks in GetMethodsByName and
23590         GetPropertiesByName.
23591
23592 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23593
23594         * reflection.c: some locking fixes.
23595
23596 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23597
23598         * metadata.c: added missing break in case statement.
23599
23600 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23601
23602         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23603         typedbyref return values. Fixes #73941.
23604
23605 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23606
23607         * security-manager.c|h: Added demandunmanaged method and 
23608         suppressunmanagedcodesecurity class to MonoSecurityManager.
23609         Renamed aptc class to allowpartiallytrustedcallers.
23610
23611 2005-03-17  Martin Baulig  <martin@ximian.com>
23612
23613         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23614
23615 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23616
23617         * file-io.c: disabled file async. IO using aio_*. It uses the
23618         threadpool now. Workaround for bug #73718.
23619
23620 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23621
23622         * assembly.h, mono-config.c: added code to deal with bundled configs
23623         for bundled assemblies.
23624
23625 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23626
23627         * *.c, private.h: cleanup, removing old private.h header file.
23628
23629 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23630
23631         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23632         and throw_on_unmappable_char attributes.
23633
23634 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23635
23636         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23637         _ProcessName_internal.
23638
23639 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23640
23641         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23642         #73631.
23643
23644         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23645         are no longer used.
23646
23647 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23648
23649         * object.c (compute_class_bitmap): Add support for generics. Fixes
23650         #73527.
23651
23652 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23653
23654         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23655
23656 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23657
23658         * filewatcher.c: commented out the code for windows watcher, as we don't
23659         use it (we use the managed implementation instead).
23660
23661 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23662
23663         * object-internals.h (MonoThread): Remove 'unused1' field.
23664
23665         * appdomain.c: Bump corlib version.
23666
23667         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23668
23669         * reflection.c (mono_reflection_create_runtime_class): Remove the
23670         AssemblyBuilder.Save optimization since it causes too many problems.
23671
23672 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23673
23674         * exception.c|h: Added mono_get_exception_reflection_type_load to
23675         create a ReflectionTypeLoadException object.
23676         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23677         to return NULL is a InheritanceDemand fails during reflection. Updated
23678         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23679         ReflectionTypeLoadException if an InheritanceDemand fails during 
23680         reflection. Added icall mapping for GetLinkDemandSecurity.
23681         * security-manager.c|h: Added ves_icall_System_Security_
23682         SecurityManager_GetLinkDemandSecurity internal call to return the
23683         class and methods permissions set for a LinkDemand. Removed unused
23684         fields in MonoSecurityManager.
23685
23686 2005-03-10  Martin Baulig  <martin@ximian.com>
23687
23688         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23689         it's a generic instance.
23690
23691 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23692
23693         * reflection.c (mono_get_object_from_blob): Applied patch from
23694         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23695
23696         * class.c (mono_class_is_assignable_from): Another try at fixing 
23697         #73469 without breaking anything.
23698
23699 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * class.c: (mono_class_is_assignable_from): Revert the last changes
23702         since they don't work with generics.
23703         
23704         * class.c (mono_class_is_assignable_from): Fix build bustage.
23705
23706         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23707         the managed IsAssignableFrom method. Fixes #73469.
23708
23709         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23710         function.
23711
23712 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23715         memory when the remoting callback does not sets the out arguments.
23716         Fixes #73007.
23717
23718         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23719         by mistake.
23720
23721         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23722
23723         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23724
23725         * appdomain.c: Bump corlib version.
23726
23727 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23728
23729         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23730         function.
23731
23732         * threads.c (mono_thread_attach): Detect threads which are not started
23733         by the GC pthread wrappers.
23734
23735 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23736
23737         * icall.c: Added new icall for RNG.
23738         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23739         single handle on Linux to access /dev/urandom and fix #73183.
23740
23741 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23742
23743         * object.c: setting the new vtable in a transparent proxy object must
23744         not change the GC descriptor.
23745
23746 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23747
23748         * object.c: fixed compilation without GCJ support.
23749         * reflection.c: for runtime-created types ensure klass->has_references
23750         is correct (bug #73215).
23751
23752 2005-03-02  Martin Baulig  <martin@ximian.com>
23753
23754         * class.c (mono_class_is_assignable_from): Make this work if
23755         `oklass' is a generic instance; fixes #72831.
23756
23757 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23758
23759         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23760         with hasthis set.
23761         
23762         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23763
23764         * marshal.c: Reorganize native->managed marshalling code to also use
23765         the emit_marshal_... functions.
23766
23767 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23768
23769         * object.c: typed allocs have issues with bitmap sizes > 30,
23770         so check for max_set >= 30.
23771
23772 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23775         managed code. Fixes #73012.
23776
23777         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23778
23779         * metadata.c reflection.c: Load/Emit elem_mult as well.
23780         
23781         * metadata.h (MonoMarshalSpec): Add comment.
23782
23783         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23784
23785         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23786         num_elem to -1 if not given.
23787
23788         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23789
23790         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23791         given values.
23792
23793 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23794
23795         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23796
23797 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23798
23799         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23800
23801         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23802
23803 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23804
23805         * object.c: generalized the reference bitmap creation
23806         and added hooks for the new GC.
23807         * class-internals.c: removed the gc_bitmap field from MonoClass.
23808
23809 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23810
23811         * domain.c: help the compiler to produce better code
23812         in mono_jit_info_table_find ().
23813
23814 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23815
23816         * object.c: make all allocations look typed.
23817
23818 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23819
23820         * socket-io.c: load Mono.Posix if it's not loaded already
23821         (fixes bug#73033).
23822
23823 2005-02-24  Martin Baulig  <martin@ximian.com>
23824
23825         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23826         * reflection.c (dup_type): Likewise.
23827
23828 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23829
23830         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23831         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23832
23833 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23834
23835         * domain.c, threads.c, object-internals.h: make the critical thread
23836         local vars use the fast access mode (even when we're compiled in
23837         a lib). Provide accessors to be used by the jit during codegen.
23838
23839 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23840
23841         * appdomain.c: Changed hook functios behavior to include
23842         support for the reflection only assemblies. Some icalls were changed
23843         to support the mentioned assemblies too. Signatures of static methods
23844         try_assembly_resolve and real_load now have an additional parameter:
23845         refonly.
23846
23847         * assembly.c: General changes to mono_assembly_ methods to support
23848         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23849         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23850         suffix, to support an additional gbool parameter to specify whether
23851         the assembli is reflection only or not. Created some new hook functions 
23852         to add support for reflection only assemblies. Signatures of static 
23853         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23854         have now an additional parameter: refonly.
23855
23856         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23857         indicating whether the assembly is reflection only or not.
23858
23859         * exception.c: Add mono_get_exception_invalid_operation.
23860
23861         * icall.c: Throw an InvalidOperationException when trying to invoke
23862         a property/method/event, or trying to set/get the value of a field.
23863         Also add an icall to retrieve the ref_only flag to the
23864         MonoReflectionAssembly.
23865
23866 2005-02-23  Chris Toshok  <toshok@ximian.com>
23867
23868         Part of fix for #72827.
23869         * mono-debug.c (mono_debug_add_method): add lexical block data to
23870         the info we write.  Kind of a hack at the moment - we copy the
23871         lexical block info from the MonoDebugMethodInfo to the
23872         MonoDebugMethodJitInfo here, before writing it.
23873         (mono_debug_read_method): read the lexical block info.
23874
23875         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23876
23877         * debug-mono-symfile.h: add lexical block support.
23878
23879         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23880         support.
23881
23882 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23883
23884         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23885
23886         * object.c (mono_runtime_free_method): Call mono_free_method () and
23887         put the TODOs there.
23888
23889         * loader.c (mono_free_method): Free up most memory allocated for 
23890         dynamic methods.
23891
23892 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23893
23894         * reflection.c: properly flag a Type argument to a
23895         named custom attr value (bug #72248).
23896
23897 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23898
23899         * reflection.c: reduce code duplication in named custom
23900         attribute encoding.
23901
23902 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23903
23904         * reflection.c: properly encode custom attrs of type object
23905         (bug #72649).
23906
23907 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23910
23911 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23912
23913         * socket-io.c: load System.dll if it's not loaded already
23914         (bug #72850 and #70477).
23915
23916 2005-02-21  Martin Baulig  <martin@ximian.com>
23917
23918         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23919         generic instances.
23920
23921 2005-02-21  Martin Baulig  <martin@ximian.com>
23922
23923         * reflection.c (mono_image_build_metadata): We also need to
23924         "fixup" the MethodImpl table after we computed the final method
23925         indices.  Call fixup_methodimpl() to do that.
23926         (fixup_methodimpl): New private method.
23927
23928 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23929
23930         * assembly.c: special case mscorlib.dll (bug#72536),
23931         patch from Carlos Alberto Cortez.
23932
23933 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23934
23935         * threads-types.h threads.c: Fix build bustage.
23936
23937         * threads.c: Use a union for long<->double conversions.
23938
23939         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23940         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23941
23942         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23943         containing the checkpoint call with NOT_TAKEN.
23944         
23945         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23946         checkpoint before pushing the arguments, so they won't have to be
23947         spilled to stack.
23948
23949 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23950
23951         * domain.c, assembly.c, domain-internals.h: make some data
23952         const and relocation-free.
23953
23954 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23955
23956         * object.c, appdomain.c, class-internals.h: introduce the
23957         MonoClassRuntimeInfo structure to hold the info needed to
23958         use a class at runtime. Made mono_class_vtable() lock-free
23959         for all the appdomains.
23960
23961 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23962
23963         * metadata-internals.h, image.c: introduce a per-image mempool to
23964         be used for memory that has the same lifetime as the image.
23965
23966 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23967
23968         * domain.c: In mono_init_internal(), instead of selecting the first
23969         runtime version supported by an executable, get a list of all
23970         supported versions and select the one for which an mscorlib exists
23971         (since even if the runtime supports a given version, it doesn't mean
23972         that the framework for that version is installed).
23973         Modified get_runtimes_from_exe to support this behavior.
23974         In supported_runtimes, added information about additional system
23975         assembly versions.
23976         
23977         * assembly.c: Added support for more than one system assembly version
23978         per runtime version. Updated the assembly list.
23979         In mono_assembly_remap_version, removed the initial version check,
23980         since we don't know to which version we need to compare until we
23981         get the version set on which the assembly is based.
23982         Moved the code for loading corlib into the new method
23983         mono_assembly_load_corlib(), so it can be used by the initialization
23984         code.
23985         
23986         * domain-internals.h: Updated data structures and added declaration
23987         for mono_assembly_load_corlib.
23988
23989 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23990
23991         * reflection.c (resolve_object): Fix the creation of the signature in 
23992         the SignatureHelper case.
23993
23994         * assembly.c (mono_assembly_remap_version): Fix binary search.
23995         
23996 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23997  
23998         * class.c: Added inheritance check when a method is overloaded (from a
23999         virtual method or when implementing an interface) and when a class is
24000         inherited. Added functions to set a failure for a class and to 
24001         retreive the exception from a failure.
24002         * class-internals.h: Added fields to MonoClass to keep the exception
24003         information status for inheritance (or other exceptions) to be thrown
24004         later (i.e. not at load time).
24005         * object.c: Throw the inheritance SecurityException when a type is to 
24006         be created with either class or method inheritance violations.
24007         * reflection.c|h: Fix when getting declsec from a class. Removed 
24008         unrequired code for class. Improved sanity in parameter naming.
24009         * security-manager.c|h: Added functions to check for class and method
24010         inheritance.
24011
24012 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24015         and has_finalize in dynamic types as well.
24016
24017 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24018
24019         * culture-info-table.h : fixed currency format for en-GB (and so on).
24020
24021 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24022
24023         * gc.c: ensure the GC handles never have 0 as a value.
24024
24025 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24028         a pointer to a struct to unmanaged code. Fixes #72625.
24029
24030 2005-02-16  Martin Baulig  <martin@ximian.com>
24031
24032         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24033
24034 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24035
24036         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24037
24038 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24039
24040         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24041
24042         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24043         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24044         etc. Fixes #71471.
24045
24046         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24047
24048         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24049
24050 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24051
24052         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24053         changes to make the current context a field in MonoThread.
24054
24055 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24056
24057         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24058         the last change.
24059         
24060         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24061         extracted from mono_marshal_get_native_wrapper.
24062
24063         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24064         to create wrappers around native functions.
24065
24066         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24067         delegates for arbitrary function pointers. Fixes #71472.
24068
24069 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24070
24071         * threads.c: cleaned up the code a little.
24072
24073 2005-02-15  Martin Baulig  <martin@ximian.com>
24074
24075         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24076         the data table.
24077
24078         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24079         allocate larger chunks if needed.
24080
24081 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24082
24083         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24084         in by mistake.
24085
24086 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24087
24088         * domain.c: keep the domains in an array and ensure the domain ids
24089         are kept small, so they can be used as indexes to domain-specific data
24090         with a small memory overhead.
24091
24092 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24095
24096 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24097
24098         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24099
24100 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24101
24102         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24103
24104         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24105         values.
24106
24107         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24108         
24109 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24110
24111         * domain-internals.h: add the hashtable here.
24112
24113         * class-internals.h: Remove `info' from MonoMethod
24114
24115         * domain.c: Add a new hashtable, jit_trampoline_hash
24116
24117 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24118
24119         * object.c: don't set the value of static fields
24120         (fixes bug#72494).
24121
24122 2005-02-11  Martin Baulig  <martin@ximian.com>
24123
24124         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24125         (mono_debug_add_method): Silently ignore the method if it's too big.
24126         (mono_debug_add_type): Likewise.
24127
24128 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24129
24130         * threads.c, appdomain.c: remove #ifdefs from the code.
24131
24132 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24133
24134         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24135         common security informations. This allows us to stay in unmanaged code
24136         when doing LinkDemand and it's special cases (except for the first 
24137         time for initialization). The flags a very much used with --security.
24138         * reflection.c|h: Added code to get declarative security attributes 
24139         for LinkDemand and InheritanceDemand. This required to refactor the
24140         existing code for Demand.
24141         * security-manager.c|h: Added new method fields for the special cases
24142         of LinkDemand.
24143
24144 2005-02-10  Martin Baulig  <martin@ximian.com>
24145
24146         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24147         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24148
24149 2005-02-10  Martin Baulig  <martin@ximian.com>
24150
24151         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24152         debugging code; this is almost a complete rewrite.
24153
24154         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24155
24156 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24157
24158         * domain.c, object.h: expose mono_string_equal () and 
24159         mono_string_hash ().
24160         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24161         it's implemented in managed code.
24162
24163 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24164
24165         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24166         lo leak objects between appdomains.
24167
24168 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24169
24170         * assembly.c: old compilers compilation fix from 
24171         robertj@gmx.net (Robert Jordan).
24172
24173 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24174
24175         * class-internals.h: Little reminder for the future.
24176
24177         * debug-helpers.c: Fix up wrapper_type_names
24178
24179 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24180
24181         * image.c, metadata-internals.h: when loading an image from a file,
24182         mmap all of it and use the same codepaths as when using a
24183         in-memory image: the code is simpler and we use less memory
24184         (both writable and readonly).
24185
24186 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24187
24188         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24189         API to alloc runtime data structures that need to be tracked by the
24190         GC and contain pointers.
24191         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24192         make the code more readable and eventually use a different GC.
24193
24194 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24195
24196         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24197         for out arguments.
24198         
24199 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24200
24201         * object.c: In release_type_locks(), don't release the cctor lock
24202         if it has already been released. This fixes a crash in the
24203         thread5 test.
24204
24205 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24206
24207         * gc.c, marshal.c, icall.c: register a delegate for finalization
24208         only when the native function pointer has been allocated for it.
24209
24210 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24211
24212         * object.c: cleaned up some code, allocate objects that are
24213         pointer free with the atomic malloc variant. Allocate memory
24214         for static data from the mempool if it's pointer-free.
24215         Allocate the bounds array at the end of the array data, when needed.
24216         * object-internals.h, object.h: move a private function in a private
24217         header.
24218         * class.c: handle missing case in tracking references in fields.
24219
24220 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24221
24222         * class.c, class-internals.h: keep track if a type has
24223         reference fields in either the instance or static fields.
24224
24225 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24226
24227         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24228         and renamed to MonoRuntimeInfo. Added fields to store the expected
24229         framework assembly version. Changed mono_get_framework_version and
24230         mono_get_runtime_version for a single mono_get_runtime_info method.
24231         
24232         * assembly.c: Added method to remap system assembly versions to the
24233         current executing runtime version. Removed old mapping code.
24234         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24235         
24236         * icall.c, reflection.c: Track api changes.
24237
24238 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24239
24240         * loader.c (method_from_memberref): Improve error reporting,
24241         produce the class name instead of the typeref/typedef index. 
24242
24243 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24244
24245         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24246
24247 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24248
24249         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24250         stdcall and charset name mangling.  Reorganize the code and add
24251         some tracing stuff.
24252
24253 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24254
24255         * monodiet.c: More iters!
24256
24257         * marshal.c: Iter usage.
24258
24259         * icall.c: Iter usage.
24260
24261         * object.c: Use iters.
24262
24263         * debug-helpers.c: More iters
24264
24265 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24266
24267         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24268         under win32.
24269
24270 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24271
24272         * mono-debug-debugger.c: use iters
24273
24274         * class.c, class-internals.h: mono_class_setup_events is static
24275         now
24276
24277         * All callers: use iters
24278
24279 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24280
24281         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24282         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24283
24284 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24285
24286         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24287
24288         * marshal.h: Add prototypes for ldfld/stfld_remote.
24289
24290         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24291         this is called during startup.
24292         
24293 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24294
24295         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24296         MonoThreadsSync struct private in monitor.c. Changed the way
24297         MonoThreadsSync is allocated so it's faster and there is no
24298         need to keep track of it with a finalizer and it uses less memory.
24299         This also finally allows us to allocate mono objects as ptrfree when
24300         there are no reference fields.
24301
24302 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24303
24304         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24305         disappearing link to the GC interface and use them to simplify
24306         the gchandles code.
24307
24308 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24309
24310         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24311         stfld_remote which call mono_load/store_field_new. This allows methods
24312         calling ldfld/stfld wrappers to be AOTed.
24313
24314         * console-io.c: Include sys/filio.h under solaris.
24315         
24316         * console-io.c: Include curses.h if needed correctly.
24317
24318 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24319         
24320         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24321         method->klass as well.
24322
24323         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24324
24325         * class.c (mono_class_init): Switch on lazy initialization of 
24326         methods.
24327
24328         * class.c (mono_class_get_finalizer): Handle the case when the 
24329         finalizer is inherited.
24330
24331 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24332
24333         * console-io.c: <curses.h> is needed by term.h on solaris.
24334
24335 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24336
24337         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24338         mono_class_setup_properties where possible. Remove this ftn from
24339         the header file, and make it static.
24340
24341 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24342
24343         * loader.c: Add missing setup_... call.
24344
24345         * class.c: Add missing setup_... calls.
24346
24347         * class.c (mono_class_init): Switch on lazy initialization of 
24348         the generic vtable.
24349         
24350         * class.c (mono_class_init): Fix generics broken by the recent changes.
24351
24352         * monodiet.c (handle_type): Add missing setup_... calls.
24353
24354         * class.c: Back out garbage in previous patch.
24355         
24356         * class.c: Add missing setup_... calls.
24357
24358         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24359         mono_class_setup_methods () if possible.
24360
24361         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24362
24363         * class-internals.h (MonoCachedClassInfo): New structure.
24364
24365         * class.c: Initialize properties and events fields of MonoClass lazily.
24366
24367         * class.c: Add infrastructure for lazily initializing the methods and
24368         vtable fields of MonoClass. Not yet used.
24369
24370         * class.c (mono_class_get_finalizer): New helper function.
24371
24372         * class.c: Add infrastructure for loading some class related data from
24373         an AOT file.
24374
24375         * object.c: Add infrastructure for initializing the vtable from data
24376         in the AOT file.
24377
24378         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24379
24380         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24381         appropriate initialization function before accessing parts of the
24382         MonoClass structure.
24383
24384         * marshal.c: Fix warnings.
24385         
24386         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24387
24388         * mono-debug-debugger.c (get_exception_message): Use 
24389         mono_class_get_method_from_name_flags ().
24390
24391 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24392
24393         * reflection.c, appdomain.c: Replace a few manual searches that
24394         Zoltan missed. (Paolo approved this part of my initial patch).
24395
24396 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24397
24398         * profiler.c: disable recording statistical events at report time.
24399
24400 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24401
24402         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24403         to byteswap arrays of enum values, too (bug #72080).
24404
24405 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24406
24407         * appdomain.c (set_domain_search_path): Allow this to be called if
24408         domain->setup is not yet set.
24409
24410         * loader.c (mono_method_get_index): New helper function.
24411
24412         * loader.c reflection.c: Use mono_method_get_index ().
24413
24414         * class.c (mono_class_get_method_from_name_flags): New helper method.
24415
24416         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24417         this.
24418
24419         * class.c (mono_class_get_cctor): New helper method.
24420
24421         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24422         mono_class_get_method () to look up methods.
24423
24424 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24425
24426         * console-io.c: Fix the build, this should work on Windows.
24427
24428 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24429
24430         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24431         be set to null to keep things valid
24432
24433 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24434
24435         * icall.c: added Console 2.0 icalls.
24436         * Makefile.am: added console-io.[ch]
24437         * console-io.[ch]: internal calls for Console 2.0 API.
24438
24439 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24440
24441         * class.c: make sure we consider all the interfaces
24442         when calculating max_interface_id (bug found by
24443         Jeroen Frijters running ikvm).
24444
24445 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24446
24447         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24448         valuetype fields to null.
24449
24450         * object.c (set_value): Ditto. Fixes #71669.    
24451
24452 2005-01-31  Martin Baulig  <martin@ximian.com>
24453
24454         * metadata.c (mono_metadata_has_generic_params): New public
24455         function; checks whether something is a generic method.
24456
24457 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24458
24459         * appdomain.c: fix infinite recursion when adding assemblies.
24460
24461 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24462
24463         * object.c: Fix small typo to return all items for Environment.
24464         GetCommandLineArgs.
24465
24466 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24467
24468         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24469         reflection.c: more domain and assembly-unload related fixes
24470         and memory leaks plugs.
24471
24472 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24473
24474         * 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.
24475
24476 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24477
24478         * loader.c (mono_method_signature): Make this method lazy
24479         (mono_get_method_from_token): Don't computate the signature here.
24480
24481         Doing this saves quite a bit of memory. I got 90 kb on starting up
24482         monodoc. It should also save some disk reads on startup.
24483
24484         * *: MonoMethod->signature might be NULL now. You *MUST* use
24485         mono_method_signature.
24486
24487 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24488
24489         * object.c (mono_runtime_get_main_args): Return an array from the
24490         current domain here. Fixes #71938.
24491
24492 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24493
24494         * monitor.c: formatting changes to comply with the
24495         mono coding style and remove #ifdefs from the code.
24496
24497 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24498
24499         * metadata.c, private.h: remove some unneeded data
24500         and use a more compact representation for table schemas.
24501
24502 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24503
24504         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24505         to get a better distribution in hash tables.
24506         * *.c: use mono_aligned_addr_hash() where appropriate.
24507         * assembly.c: make var static.
24508
24509 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24510
24511         * domain-internals.h: Put MonoJitInfo on a diet.
24512
24513         * domain.c: Fix a warning.
24514
24515 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24516
24517         * gc.c: rework the gc handles code to reuse handles
24518         when freed.
24519
24520 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24521
24522         * domain.c: fixed long standing bug in mono_string_equal() which
24523         was brought to light with the ldstr changes.
24524
24525 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24526
24527         * reflection.c: Remove warning by adding missing include for marshal.h
24528
24529 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24530
24531         * domain.c, object.c: change the ldstr_table to hold
24532         MonoString* as keys: makes the runtime isinterned lookup
24533         faster and simplifies memory management.
24534
24535 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24536  
24537         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24538         possible to add imperative security checks before calling the icall.
24539         * reflection.c: Return security attributes on the original MonoMethod
24540         (and not the wrapped one). This fix permissions on icalls.
24541
24542 2005-01-25  Dick Porter  <dick@ximian.com>
24543
24544         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24545         the check for mktime() support actually test the mktime() return
24546         value.  "Fixes" bug 71682, though the output is still different to
24547         MS.
24548
24549 2005-01-25  Martin Baulig  <martin@ximian.com>
24550
24551         * class.c (mono_class_is_assignable_from): Make this work for
24552         generic instances.
24553
24554 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24555
24556         * marshal.c (mono_string_utf8_to_builder)
24557         (mono_string_builder_to_utf16): We might not have ownership of the
24558         string. In thise case, we need to create a new buffer.
24559
24560         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24561         be null, in which case, use the default capacity.
24562
24563 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24564
24565         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24566         GC events to the profiler.
24567
24568 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24569
24570         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24571         if you don't want the GC to run.
24572
24573 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24574
24575         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24576         start providing a GC API and keeping different implementations in
24577         their own file.
24578         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24579
24580 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24581
24582         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24583         mmap rather than allocating a huge buffer.
24584         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24585         above.
24586
24587 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24588
24589         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24590         and CheckExecutionRights.
24591         * reflection.c|h: Keep the index of the declarative security to be 
24592         used, instead of the pointer, when AOT compiler is used. Also add 
24593         class initialization when requesting demands.
24594         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24595         CheckExecutionRights. Both properties are now FALSE by default, and
24596         unmodifiable, unless the --security option is used.
24597
24598 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24599
24600         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24601         reflection.c: properly refcount images and assemblies, many leaks fixed.
24602
24603 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24604
24605         * threadpool.c: increase the timeout for threads in the thread pool to
24606         10s.  Fixes bug #67159.
24607
24608 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24609
24610         * class-internals.h: Sun's compiler insists on explicit
24611         signed on bit fields to handle then correctly.
24612
24613 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24614
24615         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24616         Make the size of the array fit only the number of invalid path
24617         chars that we have.
24618
24619         * class.c (_mono_class_get): Improve the error reporting when a
24620         class referenced is not found, to assist debugging. 
24621
24622 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24623
24624         * threads.c: fix off-by-one error.
24625         * domain.c: free data allocated in the domain.
24626
24627 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24628
24629         * reflection.c (mono_method_body_get_object): Fill out exception info
24630         as well.
24631
24632         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24633         structure.
24634         
24635 2005-01-19  Martin Baulig  <martin@ximian.com>
24636
24637         * loader.c (mono_get_method_constrained): Make this work again.
24638
24639 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24640
24641         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24642         guint16 to match the managed side.
24643
24644         * reflection.c (mono_reflection_body_get_object): Fill out local
24645         variables array.
24646
24647         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24648         as well.
24649
24650         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24651         'local_var_sig_token'.
24652
24653 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24654
24655         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24656         System.Drawing.
24657
24658         * reflection.c (mono_method_body_get_object): Handle abstract and
24659         runtime methods.
24660
24661 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24662
24663         * marshal.c, loader.c, class-internals.h, reflection.c:
24664         store the emthod data for a wrapper in an array instead of a list.
24665
24666 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24667
24668         * marshal.c: change the code to allocate memory more
24669         conservatively for method wrappers.
24670
24671 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24672
24673         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24674         fields from MonoClass to the marshal info structure where they belong.
24675
24676 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24677
24678         * class.c, object.c, class-internals.h, marshal.c: rearrange
24679         some fields and tweak some types to lower memory usage.
24680
24681 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * threads.c (signal_thread_state_change): Handle the case when the
24684         target thread is the current thread.
24685
24686         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24687
24688         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24689         emit_ptr_to_object_conv. 
24690
24691         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24692         marshalling. Fixes #71352.
24693
24694 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24695
24696         * metadata.h, blob.h: move table enum to blob.h so it can be included
24697         in any header.
24698         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24699         cut the size of MonoImage/MonoDynamicImage.
24700
24701 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24702
24703         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24704
24705 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24706
24707         * reflection.c, reflection.h, icall.c: add a function to check
24708         if an attribute type is defined for a metadata object.
24709
24710 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24711
24712         * object-internals.h: Added some needed fields from StringBuilder class.
24713         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24714
24715 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24716
24717         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24718         threads before shutting down the runtime.
24719
24720         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24721
24722 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24723
24724         * object-internal.h, threads.c: implement stacksize and 
24725         parameterized thread start functionality (requires
24726         matching corlib). Marked broken code for later removal.
24727
24728 2005-01-12  Martin Baulig  <martin@ximian.com>
24729
24730         * class-internals.h (MonoGenericClass): Moved the `initialized'
24731         flag to MonoDynamicGenericClass, removed `init_pending'.
24732         (MonoGenericInst): Added `is_reference' flag.
24733
24734 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24735
24736         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24737         inside the MSDOS header. Fixes #71201.
24738
24739         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24740         gc thread.
24741         (mono_domain_finalize): Ditto.
24742
24743 2005-01-12  Martin Baulig  <martin@ximian.com>
24744
24745         * class.c (mono_get_shared_generic_class): Use the cache for
24746         non-dynamic generic classes.
24747
24748         * class-internals.h (mono_class_create_generic_2): Removed
24749         function prototype, this function is now static inside class.c.
24750
24751         * class.c (mono_class_create_generic_2): Made this static, only
24752         call it from mono_class_init() and mono_class_setup_parent().
24753         (collect_implemented_interfaces_aux): Call mono_class_init() on
24754         the interfaces we collect.
24755         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24756
24757 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24758
24759         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24760         it a real thread handle.
24761
24762         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24763         MonoJitExceptionInfo, since each catch clause needs its own variable.
24764         
24765 2005-01-11  Dick Porter  <dick@ximian.com>
24766
24767         * image.c (mono_pe_file_open): New variant on mono_image_open()
24768         that does not set up the CLI metadata; used for FileVersionInfo so
24769         it can get the data for windows binaries too.
24770         
24771         * process.c (process_read_string_block): Don't read off the end of
24772         the StringTable block.
24773
24774         These both fix bug 70766.
24775
24776 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24777
24778         * gc.c: set some fields to NULL at GC cleanup time.
24779         * threads.c: if we quit the main thread, call exit ().
24780
24781 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24782
24783         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24784
24785 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24786
24787         * threads.h, threads.c, object.c: added accessor and settor for
24788         main_thread. Handle it specially when exiting from it: wait
24789         for other foreground threads to exit.
24790
24791 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24792
24793         * process.c, verify.c: remove some bloat.
24794
24795 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24796
24797         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24798         the calling convention to cdecl under win32.
24799
24800 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24801
24802         * object.c (mono_object_get_size): New function to get the size of
24803         an object instance.
24804
24805         * profiler.c (simple_allocation): Use above.
24806
24807 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24808
24809         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24810         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24811         get an appdomain by it's id and we can't assume the root's id is 0).
24812         * domain-internals.h: Change the function prototype to match.
24813         * icall.c: Change the icall table for AppDomain.
24814
24815 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24816
24817         * locales.c (string_invariant_compare_char): Only compute
24818         GUnicodeTypes in the case where we need them.  Test for ordinality
24819         first and return if so.
24820
24821         From the commit:
24822
24823                 /*
24824                  * FIXME: here we must use the information from c1type and c2type
24825                  * to find out the proper collation, even on the InvariantCulture, the
24826                  * sorting is not done by computing the unicode values, but their
24827                  * actual sort order.
24828                  */
24829
24830 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24831
24832         * loader.c: for P/Invoke methods, allow the "Internal" shared
24833         library name to refer to the calling process symbol namespace.
24834
24835 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24836
24837         * Makefile.am: Add the security manager to the build.
24838         * security-manager.c|h: New. Initialization of the security manager.
24839
24840 2005-01-07  Dick Porter  <dick@ximian.com>
24841
24842         * threads.c: 
24843         * monitor.c: Update thread state during Monitor and WaitHandle
24844         waits.  Fixes bug 71031.
24845
24846 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24847
24848         * reflection.c (property_encode_signature): Correctly handle when the
24849         property has no methods.
24850
24851 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24852
24853         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24854         
24855         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24856         fields from mb, not rmb. Fixes #71017.
24857
24858         * marshal.c (emit_ptr_to_str_conv): Add support for 
24859         ByValTStr -> string conversion. Fixes #71015.
24860
24861         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24862
24863         * mempool.c (mono_mempool_contains_addr): New helper function.
24864
24865 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24866
24867         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24868         HasSematics encoded fields.
24869         
24870         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24871         invalid string marshalling.
24872
24873         * metadata.c: Fix warnings.
24874         
24875 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24876
24877         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24878         profiler support.
24879
24880 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24881
24882         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24883         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24884         tests.
24885
24886 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24887
24888         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24889         so methods containing these can be AOTed.
24890
24891 2005-01-03  Martin Baulig  <martin@ximian.com>
24892
24893         * loader.c (find_method): Removed the hack for generic instances.
24894         (method_from_memberref): If our parent is a generic instance, pass
24895         its generic type definition to find_method() and then inflate the
24896         method.
24897         (mono_get_method_constrained): Pass the generic type definition to
24898         find_method() and inflate the method later.
24899
24900         * class-internals.h (MonoStats): Added `generic_class_count'.
24901
24902         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24903         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24904
24905         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24906         generic type definitions.
24907
24908 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24909
24910         * loader.c icall.c: Fix warnings.
24911
24912 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24913
24914         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24915         blittable types. Fixes #70864.
24916
24917 2004-12-29  Martin Baulig  <martin@ximian.com>
24918
24919         * icall.c
24920         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24921
24922         * reflection.c (mono_method_get_object): Create a
24923         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24924         call mono_get_inflated_method().
24925
24926         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24927
24928 2004-12-27  Martin Baulig  <martin@ximian.com>
24929
24930         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24931         (MonoMethodInflated): Added `inflated' field.
24932
24933         * class.c (mono_class_inflate_generic_method): Don't really
24934         inflate the method here; just set the `is_inflated' flag in the
24935         MonoMethod.
24936         (mono_class_get_inflated_method): Actually inflate the method here
24937         if it's not already inflated; we use the MonoMethodInflated's new
24938         `inflated' field as a cache.
24939
24940 2004-12-26  Martin Baulig  <martin@ximian.com>
24941
24942         * class.c
24943         (inflate_generic_class): Moved some code out of inflate_generic_type().
24944         (mono_class_inflate_generic_method): If we're already inflated,
24945         inflate the context and use the declaring method; ie. make sure
24946         the declaring method of an inflated method is always the generic
24947         method definition.
24948         (mono_class_create_from_typedef): Create
24949         `class->generic_container->context->gclass'.
24950
24951 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24952
24953         * metadata-internals.h, marshal.c, reflection.c: More
24954         MonoGHashTable->GHashTable.
24955
24956         * domain-internals.h, class.c: Change MonoGHashTable's into
24957         GHashTables for some cases where no gc stuff is used
24958
24959         All users: update apis
24960
24961 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24962
24963         * metadata.c (builtin_types): Make this `const'. Makes this get
24964         put into the shareable section.
24965         (mono_metadata_init): Casts to make gcc happy.
24966
24967 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24968
24969         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24970
24971 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24972
24973         * icall.c: Added an internal call to retrieve the position and length
24974         of assembly-level declarative security attributes (RequestMinimum, 
24975         RequestOptional and RequestRefuse). This is used by the Assembly class
24976         to re-create the corresponding permission sets.
24977
24978 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24979
24980         * marshal.c: fix the stelemref wrapper to be type correct
24981         (and faster).
24982
24983 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24984
24985         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24986         to do key & 0x7fffffff. Hashtable already does this. It just
24987         results in longer code.
24988
24989 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24990
24991         * appdomain.c: Bump corlib version.
24992         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24993         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24994         * reflection.c|h: Add functions to get declarative security infos
24995         (blob position and length) for assemblies, classes and methods.
24996
24997 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24998
24999         * reflection.c: sort the constant table (bug #70693).
25000
25001 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25002
25003         * object-internals.h, threads.c, domain.c: add accessors for
25004         the MonoThread and MonoDomain tls keys.
25005
25006 2004-12-18  Martin Baulig  <martin@ximian.com>
25007
25008         * class.c (inflate_generic_type): If we're inflating a generic
25009         instance, set `ngclass->context->container = context->container';
25010         ie. the container we inflated into.
25011
25012         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25013         inflate_generic_type() changes.
25014
25015 2004-12-17  Martin Baulig  <martin@ximian.com>
25016
25017         * class-internals.h
25018         (MonoGenericClass): Replaced `MonoType *generic_type' with
25019         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25020         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25021         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25022
25023 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * exception.c (mono_exception_from_token): New helper function.
25026
25027 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * assembly.c (mono_assembly_load_with_partial_name): Call 
25030         mono_assembly_loaded before invoking the preload hooks. Fixes
25031         #70564.
25032
25033         * object-internals.h (MonoThread): Change culture_info and 
25034         ui_culture_info into an array.
25035
25036         * threads.c: Cache culture info objects from more than one appdomain.
25037
25038         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25039         current UI culture.
25040
25041 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25042
25043         * threads.h threads.c appdomain.c: Clear the culture_info field of
25044         all threads during unloading if they point to an object in the dying
25045         appdomain.
25046
25047 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25048
25049         * culture-info.h (TextInfoEntry): New struct
25050         * object-internals.h: sync with managed
25051         * locales.c: fill the `text_info_data' field
25052         * culture-info-tables.h: update
25053
25054 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25055
25056         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25057         collector.
25058
25059 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25060
25061         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25062         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25063
25064 2004-12-12  Martin Baulig  <martin@ximian.com>
25065
25066         * mono-debug-debugger.c (write_type): If we're an enum and the
25067         builtin types have already been initialized, call mono_class_init().
25068
25069 2004-12-11  Martin Baulig  <martin@ximian.com>
25070
25071         * metadata.c (mono_metadata_load_generic_params): Added
25072         `MonoGenericContainer *parent_container' argument; automatically
25073         compute `container->is_method'; pass the correct owner to
25074         get_constraints().      
25075
25076         * reflection.c (compare_genericparam): Sort the GenericParam table
25077         according to increasing owners. 
25078
25079 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25080
25081         * profiler.c: allow disabling the default profiler.
25082
25083 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25084
25085         * decimal.c, icall.c: allow disabling System.Decimal support.
25086
25087 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25088
25089         * reflection.c: Add support for null attribute arguments.
25090
25091 2004-12-09  Martin Baulig  <martin@ximian.com>
25092
25093         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25094         names to get rid of compiler warnings.
25095
25096 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25097
25098         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25099         mono_marshal_load_type_info (). Fixes #69625.
25100         (mono_marshal_get_ptr_to_struct): Likewise.
25101
25102 2004-12-08  Martin Baulig  <martin@ximian.com>
25103
25104         * mono-debug.h: Bumped version number to 47.
25105
25106         * mono-debug-debugger.c
25107         (mono_debugger_event_handler, mono_debugger_event): Take two
25108         guint64 arguments insteed of a gpointer and a guint32.  
25109
25110 2004-12-08  Martin Baulig  <martin@ximian.com>
25111
25112         * debug-mono-symfile.h
25113         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25114         `address' to `native_offset'.
25115
25116 2004-12-08  Martin Baulig  <martin@ximian.com>
25117
25118         * class.c (mono_class_create_from_typespec): Only inflate if we
25119         either have `context->gclass' or `context->gmethod'.
25120
25121 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25122
25123         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25124
25125         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25126
25127         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25128
25129         * reflection.c (mono_assembly_get_object): Remove the workaround put
25130         in for the release.
25131         
25132         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25133
25134         * appdomain.c: Bump corlib version.
25135
25136         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25137         be visible in other appdomains.
25138
25139 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25140
25141         * threads.c: Interlocked inc and dec for longs were messed up,
25142         use a KISS based impl for this. Fixes 70234
25143
25144 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25145
25146         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25147
25148 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25149
25150         * icall.c: fix to follow policy not to allow struct
25151         arguments in icalls.
25152
25153 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25154
25155         * process.c: make the patch that handles spaces in file paths work
25156         on mono/windows too.
25157
25158 2004-12-06  Martin Baulig  <martin@ximian.com>
25159
25160         * class.c (mono_class_create_generic): Call
25161         mono_class_setup_supertypes() if we're dynamic.
25162         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25163
25164 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25165
25166         * object-internals.h: Add new fields to MonoThread.
25167
25168         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25169
25170         * icall.c threads-types.h threads.c: Add new icalls.
25171
25172         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25173
25174         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25175         managed side.
25176
25177         * appdomain.c: Bump corlib version.
25178
25179         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25180         internal assemblies. Fixes #69181.
25181
25182 2004-12-05  Martin Baulig  <martin@ximian.com>
25183
25184         * class.c (mono_class_inflate_generic_signature): Make this a
25185         no-op if `context' is NULL or we don't have any type parameters;
25186         also copy `sentinelpos'.        
25187
25188 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25189
25190         * image.c: Add unbox_wrapper_cache.
25191
25192         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25193
25194         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25195         function generator.
25196         
25197         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25198         Fixes #70173.
25199
25200         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25201         
25202 2004-12-04  Martin Baulig  <martin@ximian.com>
25203
25204         * loader.c (mono_method_get_signature_full): New public function;
25205         like mono_method_get_signature(), but with an additional
25206         `MonoGenericContext *' argument.
25207
25208         * class.c (mono_class_inflate_generic_signature): Formerly known
25209         as inflate_generic_signature(); make this public.
25210
25211 2004-12-04  Martin Baulig  <martin@ximian.com>
25212
25213         * metadata.c
25214         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25215         instead of a `MonoGenericContainer *'.  
25216         (mono_metadata_parse_array_full): Likewise.
25217         (mono_metadata_parse_signature_full): Likewise.
25218         (mono_metadata_parse_method_signature_full): Likewise.
25219         (mono_metadata_parse_generic_inst): Likewise.
25220         (mono_metadata_parse_generic_param): Likewise.
25221         (mono_metadata_parse_mh_full): Likewise.
25222         (mono_type_create_from_typespec_full): Likewise.
25223
25224 2004-12-03  Martin Baulig  <martin@ximian.com>
25225
25226         * class-internals.h (MonoGenericContainer): Replaced the
25227         `MonoGenericContext * pointer with a `MonoGenericContext'
25228         structure and made it the first element.
25229
25230 2004-12-03  Martin Baulig  <martin@ximian.com>
25231
25232         * class.c
25233         (inflate_generic_type): Set the `context->container' when creating
25234         a new MonoGenericContext.
25235         (mono_class_inflate_generic_method): Likewise.
25236         (mono_class_create_from_typespec): Just use `context->container'
25237         to get the container.
25238
25239         * loader.c (method_from_methodspec): Set `context->parent' from
25240         `context->container' - and if that's a method container, use its
25241         parent.  Also set the `context->container' when creating a new
25242         MonoGenericContext.
25243         (mono_get_method_from_token): Use just `context->container' to get
25244         the container.
25245
25246         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25247         `gclass->context->container'.
25248
25249         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25250         the `context->container' when creating a new MonoGenericContext.
25251
25252 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25253
25254         * reflection.c (compare_genericparam): Sort params with identical
25255         owner by their number. Fixes gen-111 on sparc.
25256
25257 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25258
25259         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25260         around the domain changes.
25261
25262         * appdomain.c (mono_domain_unload): Handle the case when the thread
25263         calling Unload is itself being aborted during unloading. Fixes #70022.
25264
25265         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25266
25267         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25268         checkpoint_func as an icall so it gets a wrapper.
25269         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25270         in the cross-appdomain wrappers too.
25271
25272         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25273
25274         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25275
25276         * reflection.c: Fix some memory leaks.
25277         
25278 2004-12-02  Martin Baulig  <martin@ximian.com>
25279
25280         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25281
25282         * metadata.c (generic_class_cache): New static hashtable.
25283         (mono_metadata_lookup_generic_class): New public method.
25284
25285 2004-12-02  Martin Baulig  <martin@ximian.com>
25286
25287         * class.c (mono_class_create_from_typedef): Call
25288         mono_class_setup_parent() and mono_class_create_mono_type() before
25289         parsing the interfaces.
25290
25291 2004-12-02  Martin Baulig  <martin@ximian.com>
25292
25293         * metadata.c (generic_inst_cache): New static hashtable.
25294         (mono_metadata_lookup_generic_inst): New public function.
25295         (mono_metadata_inflate_generic_inst): New public function.
25296         (mono_metadata_parse_generic_inst): New public function.
25297         (do_mono_metadata_parse_generic_class): Use the new
25298         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25299         since this'll also use the cache.
25300
25301         * reflection.c (mono_reflection_bind_generic_method_parameters):
25302         Use mono_metadata_lookup_generic_inst() to use the new cache.
25303
25304         * class.c (inflate_mono_type): Use
25305         mono_metadata_inflate_generic_inst() to inflate a generic
25306         instance; this'll also use the new cache.
25307
25308         * loader.c (method_from_methodspec): Use
25309         mono_metadata_parse_generic_inst() and
25310         mono_metadata_inflate_generic_inst() rather than parsing it
25311         manually, so we can use the new cache.
25312
25313 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25314
25315         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25316         the wait times out.
25317
25318 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25319
25320         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25321         iter->args based on whether parameters are passed in registers (i.e.
25322         MONO_ARCH_REGPARMS is defined)
25323
25324 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25325
25326         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25327         the exception message. Fixes #70070.
25328         (method_from_methodspec): Fix warnings.
25329
25330 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25331
25332         * process.c: (complete_path) return the path quoted
25333
25334 2004-12-01  Martin Baulig  <martin@ximian.com>
25335
25336         * class-internals.h (MonoGenericInst): New structure.
25337         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25338         `is_open' with `MonoGenericInst *inst'.
25339         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25340         `is_open' with `MonoGenericInst *inst'.
25341
25342 2004-11-30  Martin Baulig  <martin@ximian.com>
25343
25344         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25345
25346         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25347         to `generic_class_cache'.
25348
25349         * metadata.c
25350         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25351         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25352         (mono_generic_inst_is_valuetype): Renamed to
25353         mono_generic_class_is_valuetype().
25354
25355         * class-internals.h
25356         (MonoGenericInst): Renamed to MonoGenericClass.
25357         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25358         (MonoClass): Renamed `generic_inst' to `generic_class'.
25359         (MonoGenericContext): Renamed `ginst' to `gclass'.
25360
25361         * object-internals.h
25362         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25363
25364         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25365         mono_reflection_generic_class_initialize().
25366
25367         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25368         now known as "System.Reflection.MonoGenericClass".
25369         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25370
25371 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25372
25373         * class-internals.h: Added a flag field to MonoClass to cache the
25374         declarative security attributes actions associated with the class.
25375         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25376         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25377         applicable to the JITted method.
25378         * reflection.c|h: Added functions to extract (as flags) which security
25379         actions are available (declaratively) for a method, class or assembly.
25380         * metadata.c|h: Added functions to search the declarative security
25381         table in the metadata.
25382         
25383 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25384
25385         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25386         EXPORTEDTYPES are already in the class name cache, so there is no
25387         need to add extra code here to look at them. Just removes a bit of
25388         cruft.
25389
25390         (ves_icall_System_Environment_get_TickCount): No need for #if
25391         WINDOWS. We already have the code in io-layer.
25392
25393 2004-11-28  Martin Baulig  <martin@ximian.com>
25394
25395         * loader.c
25396         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25397         Fixes gen-112.cs.
25398
25399 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25400
25401         * assembly.c (do_mono_assembly_open): Instead of having a
25402         conditional WITH_BUNDLE, incorporate support for bundles here, by
25403         having a global `bundles' variable holding a pointer to the actual
25404         bundles. 
25405
25406         (mono_register_bundled_assemblies): New API call used by the
25407         bundle code. 
25408
25409         See mkbundle.1 for details.
25410         
25411 2004-11-27  Martin Baulig  <martin@ximian.com>
25412
25413         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25414         the vtable for generic methods.
25415
25416 2004-11-26  Martin Baulig  <martin@ximian.com>
25417
25418         * metadata.c
25419         (mono_metadata_generic_method_hash): New public function.
25420         (mono_metadata_generic_method_equal): Likewise.
25421
25422         * class-internals.h
25423         (MonoGenericContainer): Added `GHashTable *method_hash'.
25424
25425         * reflection.c (ReflectionMethodBuilder): Added
25426         `MonoGenericContainer *generic_container'.
25427         (reflection_methodbuilder_to_mono_method): Don't create a new
25428         MonoGenericContainer each time we're called.
25429         (mono_reflection_bind_generic_method_parameters): Use
25430         `container->method_hash' to cache the results so we don't create a
25431         different method if we're called several times with the same
25432         arguments.
25433
25434         * loader.c (method_from_methodspec): Use the new
25435         `container->method_hash' here, too.
25436
25437 2004-11-26  Martin Baulig  <martin@ximian.com>
25438
25439         * class.c (inflate_generic_signature): Correctly compute
25440         `res->has_type_parameters'.
25441         (mono_class_vtable): Use the `has_type_parameters' flag to
25442         determine whether we're a generic method.
25443
25444         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25445
25446 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25447
25448         * object.c (mono_runtime_run_main): Fix a small memory leak.
25449
25450 2004-11-25  Martin Baulig  <martin@ximian.com>
25451
25452         * class.c (set_generic_param_owner): Fixed the loop.
25453
25454 2004-11-25  Martin Baulig  <martin@ximian.com>
25455
25456         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25457         generic methods.
25458
25459 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25460
25461         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25462         names. Fixes #69787.
25463
25464 2004-11-24  Martin Baulig  <martin@ximian.com>
25465
25466         * class.c (mono_class_create_generic_2): If we don't have a
25467         `ginst->parent', inflate `gklass->parent' to get our parent.
25468
25469 2004-11-24  Martin Baulig  <martin@ximian.com>
25470
25471         * reflection.c (compare_genericparam): Correctly sort the
25472         GenericParam table; fixes #69779.
25473
25474 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25475
25476         * reflection.c: When writing a PE file, don't create a huge
25477         buffer in memory. Just write the arrays we have to the file.
25478         This reduces memory usage.
25479
25480         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25481         globally.
25482
25483 2004-11-17  Martin Baulig  <martin@ximian.com>
25484
25485         * class.c (mono_class_init): Don't setup `class->parent' for
25486         dynamic instances; moved this to mono_class_generic_2().
25487         (mono_class_create_generic): Also set `klass->inited' for dynamic
25488         generic instances.
25489         (mono_class_create_generic_2): Don't do anything for dynamic
25490         generic instances.  Set `klass->parent' here and also call
25491         mono_class_setup_parent() here. 
25492
25493         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25494         `MonoType *parent' argument; set `ginst->parent' before calling
25495         mono_class_create_generic_2(), so we set the correct parent.
25496
25497 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25498
25499         * reflection.c: allow getting attributes from ModuleBuilder
25500         (used by ikvm).
25501
25502 2004-11-17  Martin Baulig  <martin@ximian.com>
25503
25504         * class.c (mono_class_create_from_typedef): If a type parameter is
25505         inherited from an outer class, set its owner to that class.
25506
25507 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25508
25509         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25510           for (int*) written size. This fixes bug #69592.
25511
25512 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25513
25514         * icall.c: Added IsAuthenticodePresnet internal call.
25515         * image.c|h: New function that check a MonoImage for an Authenticode
25516         signature in the certificate PE data directory.
25517         * security.c|h: New internal call to ask the runtime if an 
25518         Authenticode signature seems referenced in the PE header.
25519
25520 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25521
25522         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25523
25524         * reflection.c (mono_image_create_pefile): Free the assembly streams
25525         after writing out the assembly file.
25526
25527         * object.c (mono_runtime_run_main): Fix small memory leak.
25528
25529         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25530         property access modifiers. Fixes #69389.
25531
25532 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25533
25534         * domain.c, object.c, object-internals.h, domain-internals.h,
25535         object.h, marshal.c: keep dynamic code info per domain.
25536
25537 2004-11-15  Martin Baulig  <martin@ximian.com>
25538
25539         * class.c (mono_type_get_name_recurse): Put type arguments in
25540         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25541         see bug #68387.
25542
25543 2004-11-15  Martin Baulig  <martin@ximian.com>
25544
25545         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25546         (mono_class_setup_vtable): When computing `the_cname' for a
25547         generic instance, don't include the namespace since we'd otherwise
25548         add it twice.
25549
25550 2004-11-15  Martin Baulig  <martin@ximian.com>
25551
25552         * class.c (mono_class_create_generic): Changed return type to void.
25553         (mono_class_create_generic_2): New public function; setup
25554         `class->method', `class->field' and `class->interfaces' here
25555         instead of in mono_class_init().
25556
25557         * class.h (mono_class_create_generic): Moved to class-internals.h.
25558
25559 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25560
25561         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25562         rather than writing to memory, write to this file. Right now,
25563         we are just writting into a buffer, and copying that. However
25564         we can avoid the buffer later.
25565
25566         (mono_dynamic_stream_reset): new function
25567
25568         * icall.c, object-internals.h: update for the above.
25569
25570 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25571
25572         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25573         have been using gc'd memory. First it is slower, unlikely
25574         the comment in the source code said, secondly, it increases
25575         our footprint to do it in the gc.
25576
25577         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25578         the method so that it does not have to copy to managed code.
25579
25580 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25581
25582         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25583
25584 2004-11-12  Martin Baulig  <martin@localhost>
25585
25586         * reflection.c (mono_image_create_token): Allow generic method
25587         definitions here, since they may appear in an `.override'; see
25588         gen-98/gen-99 for an example.
25589
25590 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25591
25592         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25593         #69365.
25594
25595         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25596         descriptive.
25597
25598 2004-11-11  Martin Baulig  <martin@ximian.com>
25599
25600         * class.c (mono_class_setup_vtable): In an explicit interface
25601         implementation, the method name now includes the arity.
25602
25603 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25604
25605         * object.c (mono_array_full_copy): Fix warning.
25606
25607 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25608
25609         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25610         mono_class_get_method_from_name() instead.
25611         
25612         * class-internals.h: Added two new types of wrappers. 
25613         Added MonoRemotingTarget enum. Added new trampoline function type, which
25614         takes an additional MonoRemotingTarget value as parameter, so it is
25615         possible to request a trampoline for a specific target.
25616         
25617         * class.c: Added new mono_class_get_method_from_name() method.
25618         
25619         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25620         general remoting sinks and one specific for cross domain calls.
25621         
25622         * debug-helpers.c: Added new wrapper names.
25623         
25624         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25625         of a remote class.
25626         
25627         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25628         
25629         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25630         with several other methods (mono_marshal_get_xappdomain_dispatch,
25631         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25632         and others) can generate a fast remoting wrapper for cross domain calls.
25633         More information can be found in docs/remoting.
25634         Other changes: Removed mono_find_method_by_name, and used
25635         mono_class_get_method_from_name instead.
25636         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25637         is stored in the remoting invoke hashtable.
25638         
25639         * marshal.h: published the new method for getting the xdomain wrapper,
25640         and also added a method for getting the adequate wrapper for a given
25641         method and target.
25642         
25643         * object-internals.h, object.c: Added a couple of methods for capying and
25644         cloning arrays.
25645         Modified mono_install_remoting_trampoline, which takes the new remoting
25646         trampoline that has a remoting target as parameter.
25647         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25648         will return the most suitable vtable for the target.
25649         Added mono_remote_class_vtable, which returns the vtable of a remote class
25650         (which can be the normal remoting vtable or the xdomain vtable).
25651         
25652         * threads.c: the xdomain invoke and dispatch wrappers must also be
25653         protected against interruptions.
25654
25655 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25656
25657         * icall.c: use memmove in BlockCopyInternal when the source and
25658         destination arrays are the same.
25659
25660 2004-11-09  Martin Baulig  <martin@ximian.com>
25661
25662         * class-internals.h (MonoGenericContainer): Removed `method' and
25663         `signature', replaced them with `is_method' and `is_signature'
25664         flags.  Added `context'.
25665
25666         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25667         instead of a `MonoGenericContainer *'.
25668
25669         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25670         for dynamic type parameters.
25671         (mono_metadata_load_generic_params): Setup `container->context'.
25672
25673         * reflection.c (mono_reflection_setup_generic_class): Setup
25674         `tb->generic_container->context'.
25675         (do_mono_reflection_bind_generic_parameters): Use
25676         mono_class_inflate_generic_type() to correctly inflate types,
25677         rather than using our own hack just for MONO_TYPE_VAR.
25678
25679 2004-11-09  Martin Baulig  <martin@ximian.com>
25680
25681         * class.c (mono_class_inflate_generic_method): Small fix; don't
25682         crash here.
25683
25684         * icall.c
25685         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25686         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25687         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25688         (ves_icall_Type_BindGenericParameters): Likewise.
25689         (ves_icall_Type_get_IsGenericInstance): Likewise.
25690         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25691         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25692         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25693         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25694
25695 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25696
25697         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25698         assembly versions and public key tokens. Fixes #69113.
25699
25700 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25701
25702         * metadata.c: fix bug introduced with the type cache changes
25703         on 2004-11-06.
25704
25705 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25706
25707         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25708         the MonoClass pointer instead of the token in exception clauses.
25709         * reflection.c: updates for the above and make the code not depend
25710         on the structure of MonoExceptionClause.
25711
25712 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25713
25714         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25715         Add support for dynamic assemblies. Fixes #69114.
25716
25717         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25718
25719 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25720
25721         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25722         since most only those methods use it. the code member of
25723         MonoMethodPInvoke was dead, so that can be removed too. Also,
25724         remove inline_count (again, not used), and move slot so that it
25725         can share bits with some other flags. This saves 8 bytes in the
25726         structure and gives us about 50 kb back for mcs helloworld.cs
25727
25728         * *.[ch]: Do naming changes for the above.
25729
25730         * loader.c (mono_method_get_header): Lazily init the header
25731         on first access.
25732         (mono_get_method_from_token): don't init the header here
25733         (mono_free_method): the header may never be allocated
25734
25735         Overall, this saves 150 kb of unmanaged allocations
25736         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25737         memory at runtime.
25738         
25739         * loader.c, loader.h (mono_method_get_header): new accessor.
25740
25741         * *.[ch]: use the above method. Prepares us to lazily load
25742         the header.
25743
25744         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25745         three warnings, which are actual bugs (see 69206).
25746
25747         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25748         unused. Saves a cool 4 bytes / method.
25749
25750 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25751
25752         * metadata.c (builtin_types): Add types for System.Object here.
25753         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25754         for a class or valuetype from klass->this_arg or klass->byval_arg.
25755
25756         On mcs for a hello world, this gets us down from 21836 MonoType's
25757         to 14560.
25758
25759         (mono_metadata_free_type): Account for the above change.
25760
25761 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25762
25763         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25764         exception instead of asserting if name is null.
25765         (ves_icall_System_AppDomain_GetData): Ditto.
25766
25767 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25768
25769         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25770         EnumBuilder.
25771
25772         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25773         Return NULL when the domain does not have entry_assembly set.
25774
25775         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25776         Add a 'resource_modules' argument.
25777         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25778
25779         * reflection.c (mono_reflection_create_runtime_class): Move setting
25780         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25781         for enums too.
25782
25783         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25784         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25785         Throw an ArgumentNullException if 'ptr' is null.
25786
25787         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25788         assemblies here. Fixes #69020.
25789
25790 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25791
25792         * reflection.c (build_compressed_metadata): Fix the previous patch for
25793         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25794         the stack.
25795
25796 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25797
25798         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25799         the cultures is false. Fixes #69090.
25800
25801         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25802         detected by valgrind.
25803         
25804         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25805         TypeResolve multiple times for the same type. Fixes #65577.
25806
25807 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25808
25809         * marshal.c: Avoid using ldftn to call managed functions. It is
25810         much slower than just a call.
25811
25812         * reflection.c (mono_module_get_object): free the basename we
25813         allocate here from glib.
25814         
25815         * reflection.c (ensure_runtime_vtable): make sure to free
25816         overrides.  Also, we were allocating an array of MonoMethod not an
25817         array of MonoMethod*.
25818
25819         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25820
25821         * image.c (mono_image_close): free image->guid here.
25822
25823 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25824
25825         * reflection.c: Fix some spec conformance issues with the PE file
25826         structures so mcs compiled apps run on the Net 2.0 beta.
25827
25828 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25829
25830         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25831         Implement this. Fixes #67264.
25832
25833         * debug-helpers.h debug-helpers.c marshal.c: Move 
25834         mono_find_method_by_name to debug-helpers.c.
25835
25836 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25837
25838         * object.c (mono_release_type_locks): type_initialization_hash is
25839         a GHashTable.
25840
25841         * reflection.c object.c object-internals.h: Fix warnings.
25842
25843         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25844         without accessors. Fixes #61561.
25845
25846         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25847         application base from the root domain if not set. Fixes #65641.
25848         (mono_runtime_init): Fix warning.
25849
25850 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25851
25852         * appdomain.c: call mono_thread_pool_init.
25853         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25854         of worker threads based on the number of CPUs and the environment
25855         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25856         for non-windows (windows) systems.
25857
25858 2004-10-27  Chris Toshok  <toshok@ximian.com>
25859
25860         * mono-debug-debugger.c (write_class): don't call mono_class_init
25861         here, as even with the check for (!klass->init_pending), we get
25862         into a situation where we're hitting cycles in class
25863         initialization.  Fixes #68816.
25864
25865 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25866
25867         * image.c: Avoid overwriting values in the loaded_images_hash when an
25868         assembly is loaded multiple times. Fixes #61152.
25869
25870         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25871         so multiple satellite assemblies for the same name can be loaded.
25872         Fixes #68259.
25873
25874         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25875         not NULL.
25876
25877         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25878         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25879
25880         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25881         pending finalizers are not invoked after the appdomain has been 
25882         unloaded. Fixes #67862.
25883
25884 2004-10-22  Martin Baulig  <martin@ximian.com>
25885
25886         * mono-debug-debugger.c
25887         (mono_debugger_runtime_invoke): Don't box valuetypes.
25888
25889 2004-10-22  Chris Toshok  <toshok@ximian.com>
25890
25891         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25892         don't hide private methods.
25893
25894 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25895
25896         * icall.c: Allows the runtime to "share" (when known) the public key
25897         token of an assembly. This avoid the need to recalculate the token 
25898         (from the public key) in managed code.
25899
25900 2004-10-21  Chris Toshok  <toshok@ximian.com>
25901
25902         * debug-helpers.c (append_class_name): argh, revert last patch.
25903         
25904 2004-10-21  Chris Toshok  <toshok@ximian.com>
25905
25906         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25907         not '/', so that it matches what the debugger uses to look up
25908         methods.
25909
25910 2004-10-21  Martin Baulig  <martin@ximian.com>
25911
25912         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25913         public method; this is called each time an exception is thrown and
25914         allows the debugger to use exception catch points.
25915
25916 2004-10-21  Martin Baulig  <martin@ximian.com>
25917
25918         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25919         the stack pointer and the exception object in some struct and pass
25920         that to the debugger.
25921
25922 2004-10-21  Chris Toshok  <toshok@ximian.com>
25923
25924         * mono-debug-debugger.c (do_write_class): add instance/static
25925         event support.  We don't expose "raise" or "other" yet.
25926         (event_is_static): new method.
25927
25928 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25929
25930         * mono-debug-debugger.c
25931         (mono_debugger_handle_exception): Remove
25932         bogus return value for fussy compilers.
25933
25934 2004-10-20  Martin Baulig  <martin@ximian.com>
25935
25936         * mono-debug-debugger.c
25937         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25938         (mono_debugger_handled_exception): Likewise.
25939
25940 2004-10-20  Martin Baulig  <martin@ximian.com>
25941
25942         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25943         MONO_DEBUGGER_EVENT_EXCEPTION.
25944
25945         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25946         public function to send the debugger a notification for an
25947         exception and inform it about a catch/finally clause.
25948
25949 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25950
25951         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25952         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25953         fix 2.95 build. 
25954
25955         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25956
25957 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25958
25959         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25960         marshalled as [In,Out]. Fixes #58325.
25961
25962 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25963
25964         * reflection.c (mono_method_body_get_object): Implement some fields.
25965
25966 2004-10-12  Martin Baulig  <martin@ximian.com>
25967
25968         * reflection.c (mono_reflection_bind_generic_parameters): Small
25969         fix, correctly retrieve our parent from a generic instance.
25970
25971 2004-10-12  Martin Baulig  <martin@ximian.com>
25972
25973         * metadata.c (mono_metadata_generic_param_equal): We always have
25974         an owner.
25975
25976         * class.c
25977         (mono_class_from_generic_parameter): We need to have an owner.
25978         (my_mono_class_from_generic_parameter): Likewise.
25979
25980         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25981         mono_reflection_create_generic_class() and added a new
25982         mono_reflection_setup_generic_class().  
25983         (mono_reflection_initialize_generic_param): If we're a nested
25984         generic type and inherited from the containing class, set our
25985         owner to the outer class.
25986
25987 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25988
25989         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25990
25991         * reflection.c (mono_method_body_get_object): New function to create
25992         a MethodBody object.
25993
25994         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25995
25996 2004-10-11  Martin Baulig  <martin@ximian.com>
25997
25998         * metadata.c (_mono_metadata_type_equal): Renamed to
25999         do_mono_metadata_type_equal() and made static.
26000
26001 2004-10-11  Martin Baulig  <martin@ximian.com>
26002
26003         * appdomain.c: Bump corlib version number to 28.
26004
26005 2004-10-10  Martin Baulig  <martin@ximian.com>
26006
26007         * class-internals.h
26008         (MonoGenericInst): Added `MonoGenericContainer *container'.
26009         (MonoGenericMethod): Likewise.
26010         (MonoGenericContext): Likewise.
26011         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26012
26013         * metadata.c
26014         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26015         (do_mono_metadata_parse_generic_inst): Likewise.
26016         (mono_metadata_parse_type_full): New public method.  This is the actual
26017         mono_metadata_parse_type() implementation - with an additional
26018         `MonoGenericContainer *' argument.
26019         (mono_metadata_parse_array_full): Likewise.
26020         (mono_metadata_parse_signature_full): Likewise.
26021         (mono_metadata_parse_method_signature_full): Likewise.
26022         (mono_metadata_parse_mh_full): Likewise.
26023         (mono_type_create_from_typespec): Likewise.
26024         (mono_metadata_interfaces_from_typedef_full): New public method;
26025         this is similar to the other _full() methods, but we take a
26026         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26027         (mono_metadata_parse_generic_param): Take an additional
26028         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26029         from that container.
26030         (mono_metadata_generic_param_equal): New static method to compare
26031         two type parameters.
26032         (_mono_metadata_type_equal): New static method; takes an
26033         additional `gboolean signature_only' argument - if true, we don't
26034         compare the owners of generic parameters.
26035         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26036         with a TRUE argument - do a signature-only comparision.
26037
26038         * loader.c: Use the new _full() methods and pass the
26039         MonoGenericContainer to them.
26040
26041         * object-internals.h (MonoReflectionTypeBuilder): Added
26042         `MonoGenericContainer *generic_container' field.
26043         (MonoReflectionMethodBuilder): Likewise.
26044
26045 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26046
26047         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26048         case initial images of dynamic assemblies.
26049
26050         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26051
26052         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26053
26054         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26055         length of event->other array.
26056         (typebuilder_setup_events): Ditto.
26057
26058         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26059         'assembly_by_name' and add an 'assemblies' list.
26060
26061         * assembly.h assembly.c: Add a new search hook for determining whenever
26062         an assembly is already loaded. Use this instead of searching in the
26063         loaded_assemblies list.
26064
26065         * domain.c appdomain.c: Implement the new search hook so loaded 
26066         assemblies are now scoped by appdomain. Fixes #67727.
26067
26068 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26069
26070         * threads.c (mono_thread_attach): Initialize synch_lock field so
26071         mono_thread_detach works again.
26072
26073         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26074         'lib' too. Fixes #63130.
26075
26076 2004-10-06  Jackson Harper  <jackson@ximian.com>
26077
26078         * culture-info-tables.h: regenerated.
26079
26080 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26081
26082         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26083         implemented by other interfaces in the result. Fixes #65764.
26084         
26085         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26086         Handle unloadable modules without crashing.
26087
26088         * image.c (load_modules): Revert the previous patch since modules must
26089         have a fixed index inside the array.
26090         
26091         * image.c (load_modules): Don't include native modules in the modules
26092         array.
26093
26094 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26095
26096         * reflection.h: Add param_defaults field.
26097
26098         * reflection.c: Add support for parameter defaults in dynamic methods.
26099         Fixes #64595.
26100
26101         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26102         an empty string when a type has no namespace. Fixes #64230.
26103
26104 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26105
26106         * tabledefs.h: Added "internal" security actions to support non-CAS
26107         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26108         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26109
26110 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26111
26112         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26113         constructor of abstract class. Fixes #61689.
26114
26115 2004-10-04  Martin Baulig  <martin@ximian.com>
26116
26117         * class-internals.h (MonoGenericContainer): New type.
26118         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26119         `MonoGenericContainer *generic_container'.
26120         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26121         `MonoGenericContainer *generic_container'.
26122
26123         * metadata.c (mono_metadata_load_generic_params): Return a
26124         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26125         removed the `num' argument.
26126
26127 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26128
26129         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26130         for dynamic images.
26131
26132         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26133         machine fields.
26134
26135         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26136
26137         * reflection.c: Save pe_kind and machine values into the generated
26138         image file.
26139
26140         * appdomain.c: Bump corlib version number.
26141
26142         * object-internals.h: Reorganize layout of LocalBuilder.
26143
26144         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26145         New helper function.
26146
26147         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26148         created MonoType for dynamic types. Fixes #66180.
26149
26150 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26151
26152         * threadpool.c: the ares hashtable needs a critical section around it.
26153         this prevents some nasty segfaults
26154
26155 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26156
26157         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26158         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26159         bug 67324).
26160         
26161 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26162
26163         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26164         
26165 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26166
26167         * image.c: Always canonicalize image file names, to avoid loading
26168         the same assembly twice when referenced using a relative path.
26169
26170 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26171
26172         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26173
26174         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26175
26176         * marshal.c: Fix warnings.
26177
26178 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26179
26180         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26181         attempting to marshal the delegate_trampoline as the method_addr.
26182         This patch has a static hashtable of marshalled delegates so that 
26183         we can map delegate_trampoline addresses back to delegates.  This
26184         allows a delegate passed to managed code to be passed back into native
26185         code.  Fixes #67039
26186
26187 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26188
26189         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26190
26191         * reflection.c (method_encode_code): Align method headers properly.
26192         Fixes #66025.
26193
26194 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26195
26196         * marshal.c: In the runtime invoke wrapper, reset the abort
26197         exception if it is cached. This avoids the automatic rethrowal of 
26198         the exception after the catch of the wrapper. Also check for pending
26199         interruptions before calling the managed method. This is done using
26200         the new method emit_thread_force_interrupt_checkpoint, since the
26201         normal checkpoint method is ignored when running the invoke wrapper.
26202         * object.c: If the abort exception is rethrown, set the abort_exc
26203         field of the thread, so it will be rethrown aftere every catch.
26204         * threadpool.c: Only run an interruption checkpoint if what has been
26205         requested is a stop of the thread (aborts will be ignored).
26206         * threads.c: By default, a thread will now never be interrumped while
26207         running the runtime invoke wrapper (this ensures that runtime_invoke
26208         will always return to the caller if an exception pointer is provided).
26209         There is a new special method mono_thread_force_interruption_checkpoint()
26210         to force an interruption checkpoint even if running a protected
26211         wrapper, which is used by the same runtime invoke wrapper to do a check
26212         at a safe point.
26213
26214 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26215
26216         * object.c, object-internals.h: Implemented mono_release_type_locks,
26217         which releases the cctor locks held by a thread.
26218         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26219         by a thread. Added mono_thread_exit() method to be used to safely stop
26220         a thread.
26221
26222 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26223
26224         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26225         Move null check before dereference.  Avoid indexing beyond the end
26226         of the 'modules' array.
26227
26228 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26229
26230         * metadata-internals.h (MonoImage): Add module_count field.
26231         * image.c (load_modules): Set image->module_count.
26232         (mono_image_load_file_for_image): Use image->module_count.
26233         * reflection.c (mono_image_load_module): Append to image->modules array 
26234         of dynamic assembly.
26235         (mono_module_get_object): Fix loop to actually increment index.
26236         Use image->module_count.
26237         * assembly.c (mono_assembly_load_references): Use image->module_count.
26238         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26239         Likewise.
26240
26241 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26242
26243         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26244         Avoid assert on generic types.
26245
26246 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26247
26248         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26249
26250         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26251
26252         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26253         function to convert a MarshalSpec structure to its managed counterpart.
26254
26255         * reflection.c: Fix warnings.
26256         
26257         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26258         field.
26259
26260         * icall.c (mono_create_icall_signature): Fix build.
26261
26262 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26263
26264         * icall.c: Add MakePointType icall.
26265
26266         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26267         warnings.
26268
26269 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26270
26271         * threadpool.c: reuse allocated slots in the queue.
26272
26273 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26274
26275         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26276
26277         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26278
26279         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26280         previous change.
26281
26282         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26283         ThrowOnUnmappableChar.
26284
26285         * icall.c (ves_icall_Type_GetPacking): New icall.
26286
26287 2004-09-24  Martin Baulig  <martin@ximian.com>
26288
26289         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26290
26291 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26292
26293         * appdomain.c:
26294         (mono_domain_set): allow setting a domain that is being unloaded.
26295         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26296         being unloaded.
26297
26298 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26299
26300         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26301         the GetCustomAttributes icall.
26302
26303 2004-09-23  Martin Baulig  <martin@ximian.com>
26304
26305         * object-internals.h (MonoReflectionGenericParam): Replaced
26306         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26307         with `guint32 attrs'.
26308
26309 2004-09-23  Martin Baulig  <martin@ximian.com>
26310
26311         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26312
26313 2004-09-23  Martin Baulig  <martin@ximian.com>
26314
26315         * object-internals.h (GenericParameterAttributes): New enum.
26316
26317 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26318
26319         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26320         
26321         * class.c (init_events): Fill out event->other field.
26322
26323         * class.c: Fix warnings.
26324
26325         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26326
26327 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26328
26329         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26330         walk which doesn't supply the IL offset.
26331
26332 2004-09-22  Martin Baulig  <martin@ximian.com>
26333
26334         * reflection.c (mono_reflection_setup_internal_class): If we're
26335         System.ValueType, System.Object or System.Enum, set
26336         `klass->instance_size' and create the vtable.
26337         (mono_reflection_create_internal_class): If we're an enum type,
26338         get the base class from our current corlib.
26339
26340 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26341
26342         * reflection.h (MonoResolveTokenError): New type.
26343
26344         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26345         icall.
26346
26347         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26348
26349 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26350
26351         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26352         Support also calling constructors, but only for already allocated objects.
26353
26354 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26355
26356         * reflection.c (type_get_qualified_name): If the klass is null
26357         return the typename to avoid a NullRefEx.
26358         (encode_cattr_value): Get the qualified name of the boxed type,
26359         not the underlying enumtype.  Fixes #62984.
26360
26361 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26362
26363         * marshal.c: Fix problems with previous checkin.
26364
26365 2004-09-21    <vargaz@freemail.hu>
26366
26367         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26368         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26369
26370         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26371
26372 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26373
26374         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26375         should only return a type for pointers, arrays, and passbyref types.
26376         Fixes bug #63841.
26377
26378 2004-09-21  Martin Baulig  <martin@ximian.com>
26379
26380         * domain.c (mono_debugger_check_runtime_version): New public
26381         function.
26382
26383         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26384
26385 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26386
26387         * reflection.c: Added missing sort to the declarative security 
26388         attributes table. MS implementation stops seeing the attributes if the
26389         token number regress in the table (as shown by ildasm and permview).
26390
26391 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26392
26393         * object-internals.h (MonoReflectionModule): Add 'token' field.
26394         
26395         * reflection.c (mono_reflection_get_token): Add support for Module
26396         and Assembly.
26397         (mono_module_get_object): Set 'token' field.
26398         (mono_module_file_get_object): Set 'token' field.
26399
26400         * icall.c: Add new Assembly and Module icalls.
26401
26402         * appdomain.c: Bump corlib version.
26403
26404 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26405
26406         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26407         tokens of metadata objects.
26408
26409         * reflection.h reflection.c (mono_reflection_get_token): New function
26410         to obtain the token of a metadata object.
26411
26412         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26413
26414 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26415
26416         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26417         
26418         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26419
26420 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26421
26422         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26423         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26424         AssemblyBuilder to access the permissions set in the class lib.
26425         * reflection.c: Added security attributes encoding step in 
26426         mono_image_build_metadata.
26427         * tabledefs.h: Added new security actions defined in 2.0:
26428         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26429
26430 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26431
26432         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26433         macro parameter.
26434
26435 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26436  
26437         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26438           finalized. There where random SIGSEVs at program termination, when
26439           an object being finalized was trying to do a string comparison and
26440           the current culture was already finalized.
26441  
26442 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26443
26444         * threads.c: call thread_cleanup before finishing the thread if we get
26445         there.
26446
26447 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26448
26449         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26450         assemblies from the parent. Fixes #65665.
26451
26452 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26453
26454         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26455         modifiers.
26456
26457 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26458
26459         * reflection.h: add prototype for mono_get_dbnull_object
26460         * reflection.c: add prototypes for get_default_param_value_blobs 
26461         and mono_get_object_from_blob for fussier compilers
26462
26463 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26464  
26465         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26466         false deadlock checks in class initialization.
26467  
26468 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26469
26470         * image.c (mono_image_addref): Fix comment.
26471
26472         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26473         possible.
26474
26475 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26476
26477         * reflection.c (mono_param_get_objects): Modified to return
26478         ParameterInfo.DefaultValue object.
26479
26480         (get_default_param_value_blobs):
26481         (mono_get_object_from_blob):
26482         (mono_get_dbnull_object): New helper routines. 
26483
26484         * object.c (mono_get_constant_value_from_blob): New helper routine
26485         carved out from get_default_field_value ()
26486
26487         * object-internals.h (mono_get_constant_value_from_blob): Added
26488         function declaration.
26489
26490 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26491
26492         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26493         referenced assemblies. Fixes #62135.
26494
26495         * exception.h exception.c (mono_get_exception_file_not_found2): New
26496         helper function.
26497
26498 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26499
26500         * class.h class.c: Add mono_type_get_underlying_type ().
26501
26502 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26503
26504         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26505         Fix GetTypes() to support dynamically created assemblies.
26506
26507 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26508
26509         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26510         
26511         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26512         previous patch.
26513
26514         * reflection.h reflection.c loader.c: Allow dynamic construction of
26515         pinvoke methods. Fixes #65571.
26516         
26517         * reflection.c (mono_reflection_get_type): Revert previous change since
26518         it causes regressions.
26519
26520 2004-09-08  Martin Baulig  <martin@ximian.com>
26521
26522         * class.c (class_compute_field_layout): Don't call
26523         mono_class_layout_fields() for open generic instances.
26524
26525 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26526         * threads.c appdomain.c: fix typo in GC macro
26527
26528 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26529
26530         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26531         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26532
26533 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26534
26535         * image.c (mono_image_close): Applied patch from 
26536         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26537         assembly is loaded multiple times from data.
26538         
26539         * image.c (mono_image_open): Fix warning.
26540
26541 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26542
26543         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26544         once. Fixes #58334.
26545         
26546         * reflection.c (mono_reflection_create_runtime_class): Initialize
26547         klass->nested_classes. Fixes #61224.
26548
26549 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26550
26551         * threads.c: sched_yield() on exit, to allow threads to quit.
26552
26553 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26554
26555         * object.c (mono_unhandled_exception): Remove leftover debug code.
26556
26557 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26558
26559         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26560
26561 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26562
26563         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26564         
26565         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26566
26567 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26568
26569         * marshal.c (emit_marshal_array): Null terminate string arrays.
26570         
26571         * marshal.c (raise_auto_layout_exception): Fix warning.
26572
26573         * reflection.c (mono_param_get_objects): Initialize the default value
26574         with DBNull.Value, not null. Fixes #62123.
26575
26576 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26577
26578         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26579         throw an exception with a cute explanation.
26580
26581 2004-09-06  Dick Porter  <dick@ximian.com>
26582
26583         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26584         Close the new process's thread handle, as we don't use it.  The
26585         handle stays around forever otherwise.
26586
26587 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26588
26589         * object.c (arith_overflow): Fix warning.
26590
26591         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26592         calling conventions in method refs. Fixes #65352.
26593
26594         * reflection.c: Fix warnings.
26595
26596 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26597
26598         * icall.c: Add a new icall for Array.Clear
26599
26600 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26601
26602         * object.c: When allocating an array, we have to throw
26603         an overflow exception if any of the lengths are < 0.
26604
26605 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26606
26607         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26608         properly. Also move implementation of string array marshalling to 
26609         managed code. Fixes #42316.
26610
26611 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26612
26613         * assembly.c: provide more information when loading an assembly fails.
26614
26615 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26616
26617         * filewatcher.c: don't expect the development fam package to be
26618         installed.
26619
26620 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26621
26622         * marshal.c: Make a copy of the signature cookie since it will be
26623         freed by the caller.
26624         
26625         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26626
26627         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26628
26629         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26630         marshal specs.
26631
26632         * marshal.c: More refactoring.
26633         
26634         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26635         smaller functions.
26636
26637 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26638
26639         * object.c: In mono_message_invoke, fill the output parameter array after
26640           calling the managed method (it was done before the call). This fixes
26641           bug #59299.
26642
26643 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26644
26645         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26646         as well.
26647
26648 2004-09-02  Martin Baulig  <martin@ximian.com>
26649
26650         * class.c (mono_class_instance_size): Don't allow generic type
26651         definitions or open generic instances.
26652         (mono_class_array_element_size): If we're a value type, call
26653         mono_class_instance_size() on the original class.
26654
26655         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26656         handle generic instances.
26657
26658         * mono-debug-debugger.c (write_type): Handle generic instances
26659         like classes.
26660
26661 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26662
26663         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26664         the allocation request fails. Fixes #65089.
26665
26666         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26667         
26668         * object.c (mono_runtime_free_method): New function to free a dynamic
26669         method.
26670
26671         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26672         delegate trampoline.
26673
26674         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26675         with hasthis as dynamic,
26676
26677         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26678
26679         * domain.c (mono_jit_info_table_remove): New function to remove an
26680         entry from the jit info table.
26681
26682         * class-internals.h (MonoMethod): Add 'dynamic' field.
26683
26684         * loader.c: Fix warnings.
26685
26686 2004-09-01  Martin Baulig  <martin@ximian.com>
26687
26688         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26689         instead of mono_debugger_lock() because the latter one is a no-op
26690         unless running in the debugger.
26691
26692 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26693
26694         * class.c (class_compute_field_layout): Classes with auto-layout or
26695         reference fields are not blittable.
26696         
26697 2004-09-01  Dick Porter  <dick@ximian.com>
26698
26699         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26700         mono_image_get_filename() to get the assembly location.
26701
26702         * icall.c:
26703         * metadata.h: Fix compile warnings
26704
26705 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26706
26707         * class.c (class_compute_field_layout): System.Object is blittable.
26708
26709         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26710         as in/out. Fixes #59909.
26711
26712 2004-09-01  Martin Baulig  <martin@ximian.com>
26713
26714         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26715         mono_metadata_generic_inst_is_valuetype() if we're a generic
26716         instance to check whether our underlying type is a reference type.
26717
26718 2004-09-01  Martin Baulig  <martin@ximian.com>
26719
26720         * metadata.c (mono_type_size): If we're a generic instance, call
26721         mono_class_value_size() for value types.
26722
26723 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26724
26725         * marshal.c: Implement more custom marshalling functionality. Fixes
26726         #64915.
26727
26728 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26729
26730         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26731
26732 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26733
26734         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26735
26736         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26737
26738         * icall.c: Fix some warnings.
26739
26740         * threads.c (abort_appdomain_thread): Fix unref errors.
26741         (mono_thread_current): Fix THREAD_DEBUG define.
26742
26743 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26744
26745         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26746
26747         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26748
26749 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26750
26751         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26752         string arrays.
26753
26754 2004-08-28  Martin Baulig  <martin@ximian.com>
26755
26756         * metadata.c
26757         (mono_metadata_generic_inst_is_valuetype): New public function.
26758
26759         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26760         mono_metadata_generic_inst_is_valuetype() if we're a generic
26761         instance to check whether our underlying type is a valuetype.
26762
26763 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26764
26765         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26766         #63768.
26767
26768 2004-08-25  Martin Baulig  <martin@ximian.com>
26769
26770         * loader.c (mono_get_method_from_token): Abstract methods can also
26771         be generic and thus have type parameters.
26772
26773         * metadata-internals.h
26774         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26775
26776         * reflection.c (mono_image_get_generic_param_info): Don't create a
26777         metadata row, just add an entry to the `gen_params' array.
26778         (build_compressed_metadata): Sort the `gen_params' array and then
26779         actually create the metadata.
26780
26781 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26782
26783         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26784
26785 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26786
26787         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26788
26789 2004-08-24  Martin Baulig  <martin@ximian.com>
26790
26791         * class.cs (mono_class_is_subclass_of): Like an interface, a
26792         generic instance also derives from System.Object.
26793
26794 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26795
26796         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26797         custom modifiers to be in any order. Fixes #61990.
26798
26799 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26800
26801         * object.c: Register mono_object_new_fast icall.
26802         
26803         * object.c (mono_class_get_allocation_ftn): Return to calling
26804         mono_object_new_fast, since it seems faster to compute the object 
26805         size in unmanaged code than passing it as a parameter.
26806
26807         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26808
26809         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26810         this function with Boehm as the oom handler, so we don't have to check
26811         the result of GC_malloc.
26812
26813         * object.c: Remove checks for oom.
26814
26815         * object.h object.c (mono_class_get_allocation_ftn): New function to
26816         return the icall which can be used to allocate an instance of a given
26817         class. 
26818
26819         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26820
26821         * class-internals.h: Add 'enabled' field.
26822
26823 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26824
26825         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26826
26827 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26828         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26829         value 0x0010.
26830
26831 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26832
26833         * appdomain.c: use the Tls function for appdomain too,
26834         at Zoltan's request. Actually return in mono_context_get
26835
26836         * appdomain.c, profiler.c, threads.c: use __thread
26837
26838 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26839
26840         * appdomain.c threads.c: Call GC_CreateThread on windows.
26841
26842         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26843         multiple libraries since this don't work on windows.
26844
26845 2004-08-18  Martin Baulig  <martin@ximian.com>
26846
26847         * class-internals.h
26848         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26849         MonoMethodHeader.
26850
26851         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26852         MonoMethodNormal since we also need it for abstract and interface
26853         methods.
26854
26855         * reflection.c
26856         (build_compressed_metadata): Sort the GenericParam table.
26857         (mono_image_create_token): Added `gboolean create_methodspec'
26858         argument; this is false when generating a MethodImpl token.
26859         (reflection_methodbuilder_to_mono_method): Abstract and interface
26860         methods may also have generic parameters.
26861
26862 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26863
26864         * appdomain.c: thread local alloc
26865
26866 2004-08-17  Martin Baulig  <martin@ximian.com>
26867
26868         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26869
26870         * icall.c
26871         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26872         argument.
26873
26874         * class.c (mono_type_get_full_name): New public function.
26875         (mono_type_get_name): Don't include the type arguments.
26876
26877 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26878
26879         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26880         for inclusion into the mono executable.
26881
26882 2004-08-16  Martin Baulig  <martin@ximian.com>
26883
26884         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26885         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26886
26887 2004-08-14  Martin Baulig  <martin@ximian.com>
26888
26889         * class.c (dup_type): Also copy the `byref' field.
26890
26891 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26892
26893         * reflection.c (create_dynamic_mono_image): Revert the last change 
26894         since it breaks bootstrap.
26895
26896 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26897
26898         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26899
26900         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26901         not free them with g_free.
26902
26903 2004-08-11  Martin Baulig  <martin@ximian.com>
26904
26905         * reflection.c (mono_reflection_setup_internal_class): Also call
26906         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26907
26908 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26909
26910         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26911         called during default (first) AppDomain creation. Keep track of
26912         Evidence when loading assemblies.
26913
26914 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26915
26916         * opcodes.c, opcodes.h: reduce runtime relocations.
26917
26918 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26919
26920         * culture-info.h, locales.c: fixes and chages to sue the new
26921         optimized format of the locale data.
26922         * culture-info-tables.h: regenerated.
26923
26924 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26925         
26926         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26927
26928 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26929
26930         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26931         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26932         * domain-internals.h: icall declaration.
26933         * icall.c: icall registration.
26934         * object-internals.h: New fields in MonoAssembly for CAS.
26935
26936 2004-08-05  Duncan Mak  <duncan@ximian.com>
26937
26938         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26939         CEE_LDELEM_ANY.
26940
26941 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26942
26943         * reflection.c: fix to deal with object[] arrays in custom ctors
26944         (bug #62550).
26945
26946 2004-08-05  Martin Baulig  <martin@ximian.com>
26947
26948         * class.c (mono_class_array_element_size): Added support for
26949         generic instances and correctly handle "recursive" types.
26950
26951 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26952
26953         * assembly.c: Fix warnings.
26954
26955 2004-08-04  Martin Baulig  <martin@ximian.com>
26956
26957         * class.c
26958         (mono_type_get_name_recurse): Added `gboolean include_arity'
26959         argument specifying whether or not we should include the generic
26960         arity in the type name.
26961         (_mono_type_get_name): New static function.
26962         (mono_class_setup_vtable): If we're a generic instance, don't
26963         include the generic arity in the names of explicit method
26964         implementations.        
26965
26966 2004-08-03  Martin Baulig  <martin@ximian.com>
26967
26968         * class.c (mono_type_get_name_recurse): Enclose the generic type
26969         arguments in `<', '>'.
26970
26971 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26972
26973         * gc.c: make GC warning messages use the trace API, they are just
26974         noise to most of the users.
26975
26976 2004-08-03  Martin Baulig  <martin@ximian.com>
26977
26978         * debug-mono-symfile.c (read_string): Correctly read the string.
26979
26980 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26981
26982         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26983         
26984         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26985         icalls.
26986         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26987
26988 2004-07-30  Martin Baulig  <martin@ximian.com>
26989
26990         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26991         Reflect latest symbol writer changes.   
26992
26993 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26994
26995         * object.c: always create an object if null is passed
26996         to Invoke() where a valuetype is expected.
26997
26998 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26999
27000         * marshal.c (mono_marshal_init): make managed
27001         signatures match native ones better for 64bits.
27002
27003 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27004
27005         * appdomain.c: hack to build correctly the private bin path on windows.
27006         Fixes bug #61991.
27007
27008 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27009
27010         * assembly.c: Load mscorlib from the correct framework directory
27011           (mono/<version>/mscorlib.dll).
27012         * appdomain.h: Added prototypes for new functions.
27013         * internals.h: Added some prototypes.
27014         * domain.c: When initializing the runtime, get from the executable and
27015           the configuration files the runtime version that the app supports.
27016           Added support methods for reading app.exe.config. Added list of versions
27017           supported by the JIT. Added two new methods: mono_init_from_assembly,
27018           which initializes the runtime and determines the required version from
27019           the provided exe file, and mono_init_version, which initializes
27020           the runtime using the provided version.
27021         * icall.c: Get machine.config from version-specific directory.
27022         * reflection.c: When generating an image, embed the version number
27023           of the current runtime.
27024
27025 2004-07-28  Dick Porter  <dick@ximian.com>
27026
27027         * socket-io.c
27028         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27029         returned sockaddr size before creating the remote address object.
27030         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27031         61608.
27032
27033 2004-07-28  Dick Porter  <dick@ximian.com>
27034
27035         * locales.c (string_invariant_compare_char): Fix invariant char
27036         compares between upper and lower cases.  Fixes bug 61458.
27037
27038 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27039         
27040         * marshal.c: actually cache stelem.ref wrappers.
27041         
27042 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27043
27044         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27045         sections and remove the mono_cli_rva_map () function.
27046
27047 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27048
27049         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27050         by Geoff Norton (<gnorton@customerdna.com>).
27051
27052 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27053
27054         * class.c: fix class loads for pointer types (typeof(int) !=
27055         typeof(int*)).
27056
27057 2004-07-27  Martin Baulig  <martin@ximian.com>
27058
27059         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27060         reading the debugging information from an external ".mdb" file.
27061
27062 2004-07-24  Martin Baulig  <martin@ximian.com>
27063
27064         * reflection.c (mono_image_get_type_info): Only write a class
27065         layout entry if we actually have a size or a packing size.
27066
27067 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27068
27069         * reflection.c (type_get_fully_qualified_name): 
27070         insert cast to get type checking of ?: with non-gcc compilers
27071
27072 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27073
27074         * rand.c: use g_getenv for both lookups of
27075         MONO_EGD_SOCKET
27076
27077 2004-07-17  Martin Baulig  <martin@ximian.com>
27078
27079         * reflection.c (mono_reflection_bind_generic_method_parameters):
27080         Set `gmethod->reflection_info'.
27081
27082 2004-07-17  Martin Baulig  <martin@ximian.com>
27083
27084         * class.c (mono_class_create_from_typedef): Insert the newly
27085         created class into the hash table before computing the interfaces
27086         since we could be called recursively.
27087
27088 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27089
27090         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27091         function to implement stelem.ref in managed code
27092         * class-internals.h, debug-helpers.c: a new wrapper type
27093         for the above.
27094
27095 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27096
27097         * gc.c: allow GC handles to work even when no GC is compiled in.
27098         Fix part of bug #61134 (GetAddrOfPinnedObject).
27099
27100 2004-07-13  Peter Williams  <peter@newton.cx>
27101  
27102         * process.c (complete_path): Make sure we don't attempt to execute
27103         directories.
27104  
27105 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27106
27107         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27108           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27109           and will add/subtract the hour if needed
27110
27111 2004-07-12  Martin Baulig  <martin@ximian.com>
27112
27113         * reflection.c (mono_field_get_object): If we have
27114         `field->generic_info', take the attributes from
27115         `field->generic_info->generic_type'.    
27116
27117 2004-07-12  Martin Baulig  <martin@ximian.com>
27118
27119         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27120         This function must be called before initializing the runtime.
27121         (mono_debug_init_1): New function; call this after initializing
27122         the runtime, but before loading the assembly.  It tells the
27123         debugger to load corlib and the builtin types.
27124
27125         * mono-debug-debugger.c: Did some larger changes in the debugging
27126         code; support recursive class declarations, make sure we actually
27127         add all classes.
27128
27129 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27130
27131         * debug-helpers.c: undo my previous patch and fixed the real issue in
27132         ../mini/exceptions-x86.c
27133
27134 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27135
27136         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27137         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27138         called from other .cctors.
27139
27140 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27141
27142         * loader.c: Removed the mono_loader_wine_init hack now that we are
27143         doing a managed version of Windows.Forms.
27144
27145 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27146
27147         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27148         threadpool.c, threads.c: remove static data from rootset.
27149
27150 2004-07-09  Dick Porter  <dick@ximian.com>
27151
27152         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27153         Don't do any more processing if the matched length was 0.  It was
27154         increasing the size of the string before.  Fixes bug 61167.
27155
27156 2004-07-09  Dick Porter  <dick@ximian.com>
27157
27158         * socket-io.h:
27159         * socket-io.c
27160         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27161         Add support for SO_PEERCRED if its available.
27162
27163 2004-07-09  Peter Bartok <pbartok@novell.com>
27164         * loader.c: winelib.exe.so error message is now only displayed if
27165         MONO_DEBUG is set. To help us avoid questions when people are trying
27166         out the new Managed.Windows.Forms.
27167
27168 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27169
27170         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27171         for isinst and castclass wrappers.
27172
27173         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27174         to libmetadata from the JIT, so they could be used by the marshalling
27175         code and the interpreter.
27176
27177         * marshal.c: Register marshalling related JIT icalls here instead of
27178         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27179         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27180
27181         * metadata.h: Remove unneeded marshalling conversions.
27182
27183         * opcodes.c: Update for new opcodes.
27184         
27185 2004-07-08  Martin Baulig  <martin@ximian.com>
27186
27187         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27188         (mono_debug_get_domain_data): Make this function static.
27189
27190 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27191
27192         * gc.c, object.h: add nice GC handle API for embedders.
27193
27194 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27195
27196         * reflection.c: more changes for the new api
27197
27198         * object.c: When we reflect on a field w/ a constant value, it
27199         will not have a memory location, so we must access metadata. Also,
27200         allow easier reading of strings so that we can read them from
27201         the constant data.
27202
27203         * class.c (mono_class_layout_fields): no need for literal fields here.
27204
27205         * class-internals.h: api changes for const fields
27206
27207         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27208
27209 2004-07-06  Martin Baulig  <martin@ximian.com>
27210
27211         * mono-debug.h: Increment version number to 44.
27212
27213         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27214         now a gpointer, rewrote this whole method.
27215
27216         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27217         function.  Add information about the wrapper in a new "misc table".
27218
27219         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27220         for the new misc table.
27221
27222 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27223
27224         * metadata-internals.h image.c: Add a cache for helper signatures.
27225
27226         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27227
27228 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27229
27230         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27231         delegates from a delegate. Fixes #61033.
27232         
27233         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27234         marshalling of stringbuilder arrays. Fixes #59900.
27235
27236 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27237
27238         * icall.c: Add EnumBuilder:setup_enum_type icall.
27239
27240 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27241
27242         * icall.c: Added a new icall for the property version of
27243         OffsetOfStringData.
27244
27245 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27246
27247         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27248         it has a constant size across platforms.
27249
27250         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27251         stack trace.
27252
27253 2004-06-29  Martin Baulig  <martin@ximian.com>
27254
27255         * mono-debug.c (mono_debug_add_method): Protect the whole function
27256         in mono_debugger_lock(), not just parts of it.
27257
27258 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27259
27260         * reflection.c: make sure padding bytes in heaps are zeroed.
27261
27262 2004-06-24  David Waite  <mass@akuma.org>
27263
27264         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27265         image.c, loader.c, locales.c, marshal.c, metadata.c,
27266         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27267         string-icalls.c, threads.c: change to C90-style comments from C99 /
27268         C++ -style
27269
27270 2004-06-24  Dick Porter  <dick@ximian.com>
27271
27272         * threads.c
27273         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27274         return createdNew.  Fixes bug 60412.
27275
27276         * threads-types.h: 
27277         * icall.c: Add createdNew parameter to CreateMutex icall
27278
27279 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27280
27281         * reflection.c, object-internals.h: save default value in params.
27282
27283 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27284
27285         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27286         no need to build a new path combining that with the application base.
27287         Fixes bug #60442.
27288
27289 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27290
27291         * reflection.c: fixed minor standard compliance issues.
27292
27293 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27294
27295         * reflection.c: fixed issue with encoding some custom attributes
27296         (arrays in properties and fields, bug #60411).
27297
27298 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27299
27300         * reflection.c: fix start address when copying the public key token.
27301
27302 2004-06-23  Martin Baulig  <martin@ximian.com>
27303
27304         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27305         the `exc' object in a static object to put it into the GC's root set.
27306
27307 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27308
27309         * reflection.c: make mono_reflection_setup_internal_class ()
27310         callable a second time to setup a new parent class.
27311
27312 2004-06-23  Dick Porter  <dick@ximian.com>
27313
27314         * threads.c: Check for WAIT_IO_COMPLETION return values.
27315
27316 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27317
27318         * appdomain.c: Removed the g_free on the public key token. Now copy 
27319         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27320         * assembly.c: Added public key token string value when loading 
27321         assemblies. Fix bug #60439.
27322         * icall.c: Added missing informations (like public key) in 
27323         GetReferencedAssemblies. Fix #60519.
27324         * image.h: Changed definition for public key token from const char*
27325         public_tok_value to guchar public_key_token [17];
27326         * reflection.c: Updated for changes to public key token.
27327
27328 2004-06-22  Lluis Sanchez Gual
27329
27330         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27331         for the field in base classes.
27332
27333 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27334
27335         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27336         mark headers as not supported, they are installed only for use by the
27337         debugger.
27338
27339 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27340
27341         * *.c, *.h: avoid namespace pollution in public headers.
27342
27343 2004-06-21  Martin Baulig  <martin@ximian.com>
27344
27345         * exception.c (mono_get_exception_security): It's in
27346         "System.Security", not in "System".
27347
27348         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27349         the exception classes.
27350
27351 2004-06-21  Martin Baulig  <martin@ximian.com>
27352
27353         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27354         Protect the exception object from being finalized.
27355
27356 2004-06-21  Martin Baulig  <martin@ximian.com>
27357
27358         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27359         public function.
27360
27361 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27362
27363         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27364         if it was not loaded before. Fix parts of #60439.
27365
27366 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27367
27368         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27369         code that was broken since Ben's change: wrappers are now
27370         dependent on the method signature only again.
27371
27372 2004-06-21  Martin Baulig  <martin@ximian.com>
27373
27374         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27375         added interface support.
27376
27377 2004-06-21  Martin Baulig  <martin@ximian.com>
27378
27379         * class.c (mono_vtable_get_static_field_data): New public method.
27380
27381 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27382
27383         * filewatcher.c : Windows build fix to be compliant with API changes.
27384
27385 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27386
27387         * class.h, class.c: more accessors.
27388         * metadata.h, metadata.c: prepare for hiding MonoType and
27389         MonoMethodSignature: people should use the accessors from now on
27390         outside of the tree.
27391
27392 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27393
27394         * *.c, *.h: more API cleanups.
27395
27396 2004-06-18  Jackson Harper  <jackson@ximian.com>
27397
27398         * assembly.c: Trace loading assemblies.
27399         * loader.c: Trace loading native libraries.
27400         * mono-config.c: Trace loading config files.
27401         
27402 2004-06-18  Dick Porter  <dick@ximian.com>
27403
27404         * locales.c: Tell ICU the lengths of strings, it can cope with
27405         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27406
27407 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27408
27409         * image.c: swapped name/filename;
27410
27411 2004-06-18  Martin Baulig  <martin@ximian.com>
27412
27413         * mono-debug-debugger.c (write_class): Write the parent class at
27414         the end of the header.
27415
27416 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27417
27418         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27419
27420 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27421
27422         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27423         (bundle_obj): New conditional define.
27424         (BUILT_SOURCES): Remove.
27425         ($(bundle_srcs)): Make parallel-make safe.
27426         (libmonoruntime_la_LIBADD): Make unconditional.
27427         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27428         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27429
27430 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27431
27432         * culture-info-tables.h: It was inconsistent with the latest
27433           supp info files.
27434
27435 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27436
27437         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27438         be loaded.
27439
27440         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27441         with gcc 2.95.
27442
27443 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27444
27445         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27446         cleaned up public header threads.h.
27447
27448 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27449
27450         * Makefile.am, *.c, *.h: more API cleanups.
27451
27452 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27453
27454         * Makefile.am: removed monosn from compilation.
27455         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27456         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27457         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27458         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27459         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27460         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27461
27462 2004-06-15  Jackson Harper  <jackson@ximian.com>
27463
27464         * assembly.c: Make locales lower case when searching the GAC for
27465         assemblies. gacutil will always make locales lowercase when
27466         installing so this effectively makes them case insensitive.
27467         
27468 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27469
27470         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27471         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27472           parameter which allows to choose whether the wait can be interrupted or 
27473           not. Also added the method mono_monitor_enter(), which locks the monitor
27474           using an infinite wait and without allowing interruption.
27475           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27476           interrupted.
27477         * object.h: Added new fields in MonoThread. suspend_event holds the event
27478           used to susped/resume the thread. synch_lock is the lock object to use for
27479           modifying the thread state.
27480         * threads.c: Use the new synch_lock object for locking, instead of "this",
27481           which can generate deadlocks.
27482           Moved thread state change in Thread.Sleep and Thread.Join from managed
27483           to unmanaged code. This avoids a deadlock when the thread was suspended
27484           just after acquiring the thread lock.
27485           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27486           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27487           which is not fully implemented in the io-layer.
27488         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27489
27490 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27491
27492         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27493         threads-types.h: more API cleanups.
27494
27495 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27496
27497         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27498         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27499         threadpool.c, threads.c: first pass at the exported API cleanup.
27500
27501 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27502
27503         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27504
27505 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27506
27507         * icall.c: added internalGetHome.
27508
27509 2004-06-14  Dick Porter  <dick@ximian.com>
27510
27511         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27512         possible to return successfully when '.' or '..' were the only
27513         entries in a directory, but were skipped.  The MonoIOStat was not
27514         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27515         Fixes bug 59574.
27516
27517 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27518
27519         * reflection.c: make binaries run on .Net 1.1 by default.
27520
27521 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27522
27523         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27524
27525 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27526
27527         * marshal.c: keep track of struct size with explicit layout
27528         (bug #59979).
27529
27530 2004-06-12  Martin Baulig  <martin@ximian.com>
27531
27532         * mono-debug-debugger.c: Comment out a debugging g_message().
27533
27534 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27535
27536         * reflection.c, reflection.h: do not free custom attrs that are cached.
27537         * icall.c: use braces to make code clearer.
27538
27539 2004-06-11  Martin Baulig  <martin@ximian.com>
27540
27541         * class.h (MonoInflatedField): New type.
27542         (MonoClassField): Replaced `MonoType *generic_type' with
27543         `MonoInflatedField *generic_info'.
27544
27545         * icall.c
27546         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27547
27548 2004-06-11  Martin Baulig  <martin@ximian.com>
27549
27550         * reflection.c (mono_image_create_method_token): Correctly encode
27551         varargs methods.
27552
27553 2004-06-11  Martin Baulig  <martin@ximian.com>
27554
27555         * metadata.c (mono_metadata_parse_method_signature): When parsing
27556         a MethodDef which has VarArgs, also set sentinelpos if we don't
27557         have any parameters.
27558
27559 2004-06-11  Martin Baulig  <martin@ximian.com>
27560
27561         * verify.c (mono_method_verify): In CEE_CALL, use
27562         mono_method_get_signature() to get the method's signature, unless
27563         we're a PInvoke method.
27564
27565 2004-06-10  Jackson Harper  <jackson@ximian.com>
27566
27567         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27568         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27569         logical name as the supplied path is just a prefix to the gac not
27570         the direct path to it.
27571         
27572 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27573
27574         * reflection.c: make the token for a created method match
27575         the token of the MethodBuilder it was created from
27576         (IKVM requires this behaviour now).
27577
27578 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27579
27580         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27581         reflection.c, socket-io.c: leak fixes.
27582
27583 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27584
27585         * icall.c: handle sentinel pos in vararg methods in position different
27586         from 0.
27587
27588 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27589
27590         * culture-info-tables.h: freshly generated.
27591
27592 2004-06-09  Martin Baulig  <martin@ximian.com>
27593
27594         * loader.c (mono_get_method_constrained): Call `mono_class_init
27595         (constrained_class)'.   
27596
27597 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27598
27599         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27600         any methods. Fixes #59629.
27601
27602 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27603
27604         * culture-info-tables.h: reflecting locale-builder updates.
27605
27606 2004-06-08  Dick Porter  <dick@ximian.com>
27607
27608         * object.h:
27609         * locales.c: Fixed compile warnings, including a real bug in
27610         CompareInfo_internal_compare.
27611         
27612 2004-06-08  Dick Porter  <dick@ximian.com>
27613
27614         * locales.c
27615         (ves_icall_System_Globalization_CompareInfo_internal_index):
27616         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27617         Double-check the resuls of usearches, because ICU currently
27618         ignores most of the collator settings here.  Fixes bug 59720.
27619         
27620 2004-06-08  Dick Porter  <dick@ximian.com>
27621
27622         * locales.c
27623         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27624         Fix memory leak and segfault-causing typo.  No idea how this one
27625         lasted so long without being noticed.
27626
27627 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27628
27629         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27630         any methods. Fixes #59629.
27631
27632 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27633
27634         * assembly.c:
27635         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27636         own the critical section before). Removed dead code (that's done
27637         in the preload hook).
27638
27639         (mono_assembly_load_with_partial_name): call the preload hook.
27640
27641 2004-06-08  Martin Baulig  <martin@ximian.com>
27642
27643         * metadata.c (mono_metadata_signature_alloc): Default
27644         `sentinelpos' to -1.
27645
27646         * reflection.c (mono_image_get_array_token): Likewise.
27647
27648 2004-06-08  Martin Baulig  <martin@ximian.com>
27649
27650         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27651
27652         * metadata.c (mono_metadata_parse_method_signature): When parsing
27653         a MethodDef which has VarArgs, set sentinelpos.
27654
27655         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27656         `gint16' since we're using -1 for non-varargs methods.
27657
27658         * reflection.c
27659         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27660         (method_encode_signature): Added varargs support.
27661         (method_builder_encode_signature): Likewise.
27662         (mono_image_get_varargs_method_token): New static method.
27663         (mono_image_create_method_token): New public method; this is
27664         called via an icall instead of mono_image_create_token() when
27665         calling a varargs method.       
27666
27667 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27668
27669         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27670
27671 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27672
27673         * culture-info-tables.h : Reflecting the latest locale-builder that
27674           fixed empty array representation ({} to {0}).
27675
27676 2004-06-07  Jackson Harper  <jackson@ximian.com>
27677
27678         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27679         looking up extra gac paths. This allows MONO_GAC_PATH to act
27680         exactly like a prefix.
27681         
27682 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27683
27684         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27685         type name before modifying it. Fixes #59405.
27686
27687 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27688
27689         * culture-info.h: added fields for "all datetime patterns".
27690         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27691           _construct_datetime_format ()): fill xxx_patterns fields.
27692         * object.h: added fields for "all datetime patterns" to
27693           MonoDateTimeFormatInfo.
27694         * culture-info-tables.h: reflecting locale-builder updates.
27695
27696 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27697
27698         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27699         the event has no add and remove methods. Fixes #59629.
27700
27701 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27702
27703         * object.c: Fixed possible integer overflow when allocating large
27704         strings.
27705
27706 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27707
27708         * culture-info-tables.h: reflecting locale-builder updates.
27709
27710 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27711
27712         * culture-info-tables.h: reflecting locale-builder updates.
27713
27714 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27715
27716         * culture-info-tables.h: reflecting locale-builder updates.
27717
27718 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27719
27720         * threads.c: Made Thread.Sleep abortable.
27721
27722 2004-06-02  Martin Baulig  <martin@ximian.com>
27723
27724         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27725
27726         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27727
27728 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27729
27730         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27731
27732 2004-05-30  Jackson Harper  <jackson@ximian.com>
27733
27734         * reflection.c: Do not hardcode assembly versions or public key
27735         tokens anymore. All of this except the corlib section was dead
27736         code anyways.
27737         
27738 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27739
27740         * object.c (mono_runtime_invoke_array): Automatically create boxed
27741         objects for byref valuetypes if needed. Fixes #59300.
27742         
27743         * object.c (mono_method_return_message_restore): Handle 
27744         MONO_TYPE_OBJECT as well.
27745
27746 2004-05-28  Jackson Harper  <jackson@ximian.com>
27747
27748         * reflection.c: The modified type encoding was causing build
27749         problems. Reverted for now.
27750         
27751 2004-05-28  Jackson Harper  <jackson@ximian.com>
27752
27753         * reflection.c/h: Take an assembly ref so that we dont create
27754         fully qualified names when encoding types in the same assembly as
27755         the custom attribute being emitted.
27756         * appdomain.c: Increment version number.
27757         
27758 2004-05-26  Duncan Mak  <duncan@ximian.com>
27759
27760         * icall.c
27761         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27762         Set the full version number (major, minor, build, revision).
27763
27764 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27765
27766         * marshal.c (emit_struct_conv): increment src/dst after blit
27767         (mono_marshal_get_managed_wrapper,
27768         mono_marshal_get_native_wrapper): make sure we have marshalling
27769         info before marshalling params (info computation affects
27770         blittable)
27771
27772         * class.c (class_compute_field_layout): correctly deal with
27773         blittable
27774         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27775         value types (as per what windows dows by default)
27776         (mono_class_setup_mono_type): System.ValueType is blittable
27777         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27778         blittable
27779
27780         * marshal.c (mono_marshal_load_type_info): flag types  as
27781         non-blittable if the native layout doesn't match the managed
27782         layout
27783
27784 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27785
27786         * appdomain.c: don't add stuff in the private search path that is
27787         above the application base. If application base is not set, there's
27788         no private search path.
27789
27790 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27791
27792         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27793         byref struct arguments in native->managed marshalling.
27794
27795 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27796
27797         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27798         cache methods using signature (special case for methods
27799         that are value type or string class)
27800         
27801         * image.c (mono_image_close): clean up allocated GSList's
27802         in runtime_invoke_cache.
27803
27804 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27805
27806         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27807         there's no MONO_CFG_DIR environment variable defined.
27808
27809 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27810
27811         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27812
27813 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27814
27815         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27816           is interrumped.
27817         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27818           before waiting for it, and call CloseHandle after the wait to unref it.
27819           This will make sure that handles are not disposed too early.
27820
27821 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27822
27823         * appdomain.c:
27824         * appdomain.h:
27825         * icall.c: removed
27826         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27827         needed now.
27828
27829         * object.c: se the application_base only for the domain that runs
27830         Main. Fixes bug #59216,
27831
27832 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27833
27834         * appdomain.c:
27835         * object.c: only the domain in which Main is run have
27836         SetupInformation.ConfigurationFile set, so moved a few lines from
27837         appdomain.c to object.c.
27838
27839 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27840
27841         * appdomain.c: we tried to load [name].(dll|exe), but according
27842         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27843         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27844         There's a test case attached to bug #58922.
27845
27846 2004-05-27  Dick Porter  <dick@ximian.com>
27847
27848         * icall.c:
27849         * file-io.c: Implemented icalls for locking and unlocking regions
27850         in a file.
27851         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27852         FALSE on error (fixes both compiler warning and real bug.)
27853
27854 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27855
27856         * culture-info-tables.h: reflecting locale-builder updates.
27857
27858           (Added missing ChangeLog entry for 05/26)
27859
27860 2004-05-27  Jackson Harper  <jackson@ximian.com>
27861
27862         * locales.c: Fix some cut and paste errors.
27863         
27864 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27865
27866         * mono-config.c: set the correct path for config. directory on windows.
27867
27868 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27869
27870         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27871           on win32.
27872
27873 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27874
27875         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27876         from pinvoke functions.
27877         
27878         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27879
27880 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27881
27882         * culture-info-tables.h: reflecting locale-builder updates.
27883
27884 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27885
27886         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27887         #59086.
27888
27889 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27890
27891         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27892         * icall.c: Modified icalls for RNG.
27893         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27894         Windows (CryptoAPI).
27895
27896 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27897
27898         * locales.c: Fix build.
27899
27900 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27901
27902         * culture-info-tables.h: reflecting locale-builder updates.
27903
27904 2004-05-25  Jackson Harper  <jackson@ximian.com>
27905
27906         * locales.c: When creating the current culture use the $LANGs
27907         specific culture. So DateTimeFormat and NumberFormat entries are created.
27908         
27909 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27910
27911         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27912         a char array as parameter.
27913
27914 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27915
27916         * image.c: In mono_image_open(), always use an absolute path name to
27917           look for already loaded images.
27918
27919 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27920
27921         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27922         missing in the windows build (like older cygwin include files).
27923
27924 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27925
27926         * icall.c: Fixed check for possible integer overflow in Buffer_
27927         BlockCopy icall. Replaced comments style // by /* */.
27928
27929 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27930
27931         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27932         
27933         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27934         check after MONO_VTADDR. Fixes pinvoke2.exe.
27935
27936         * marshal.h marshal.c metadata.h: Add beginnings of support for
27937         ftnptr -> delegate marshalling.
27938
27939 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27940
27941         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27942         * threads.c: Fix warnings.
27943
27944 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27945
27946         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27947         * icall.c: Registered icalls for Suspend and Resume.
27948         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27949           Thread.Abort.
27950         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27951         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27952         * process.c: Use WaitForSingleObjectEx.
27953         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27954           checkpoints.
27955         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27956           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27957           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27958           background threads. Added basic support for Abort in Windows.
27959           Start new threads using a managed delegate invoke wrapper. This wrapper
27960           has an interruption checkpoint that is needed since an interruption
27961           can be requested before the thread leaves the unmanaged code that starts 
27962           the thread.
27963         * marshal.c: Added interruption checkpoint after every native call, and
27964           also before managed calls for wrappers called from unmanaged code to
27965           go into managed code.
27966         * object.h: Added new field in MonoThread to keep track of interruption
27967           requests.
27968
27969 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27970
27971         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27972         calls.
27973
27974 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27975
27976         * appdomain.c:
27977         * assembly.c:
27978         * gc.c:
27979         * locales.c:
27980         * mono-config.c:
27981         * rand.c: getenv -> g_getenv (windows!)
27982
27983         * process.c: complete_path is also used on non-windows platforms.
27984
27985 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27986
27987         * icall.c: new signature for Process_Start.
27988
27989         * process.[ch]: new signature for Process_Start. If we're on windows
27990         and UseShellExecute is false, we have to search for the program by
27991         ourselves if we don't get a full path.
27992
27993 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27994
27995         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27996         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27997
27998 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27999
28000         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28001         Fixes bug #58373.
28002
28003 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28004
28005         * process.c: use double quotes to quote program name and arguments on
28006         windows. Fixes bug #58575.
28007
28008 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28009
28010         * file-io.c: don't return "." and ".." when using windows Find*File.
28011
28012 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28013
28014         * marshal.c: Don't pass wrappers to message init because method 
28015         addressed used to lookup metadata. part of remoting[2|3] fix.
28016
28017 2004-05-15  Jackson Harper  <jackson@ximian.com>
28018
28019         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28020         path is essentially the same as MONO_PATH except that it points to
28021         GACs instead of lib directories.
28022         * loader.h: The user gac is gone so we dont need function to
28023         enable/disable it.
28024         * mono-config.c: user gac option is now gone.
28025         
28026 2004-05-15  Jackson Harper  <jackson@ximian.com>
28027
28028         * culture-info.h: Make defines more consistent, add calendar data
28029         to the culture info table.
28030         * culture-info-tables.h: Add basic calendar data. Basically
28031         everyone gets default gregorian until all the data is
28032         updated.
28033         * locales.c: Use the new consistent defines. Set calendar data for
28034         culture info objects.
28035         * object.h: add a field for calendar data to CultureInfo
28036         
28037 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28038
28039         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28040         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28041         a signature.
28042         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28043         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28044         an extra param that is the pointer of the method to invoke. The IL for
28045         the invoke method is no longer specific to the method, but to the
28046         signature of the method. Thus, we can share the same code for multiple
28047         methods. This reduces the number of methods that have to be compiled.
28048
28049 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28050
28051         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28052
28053         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28054
28055         * icall.c: Optimize Buffer.BlockCopy.
28056
28057 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28058
28059         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28060         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28061         quote). Changed them to "MMMM yyyy".
28062
28063 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28064
28065         * rand.c
28066         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28067
28068 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28069
28070         * reflection.h: Updated after changes to managed structures.
28071
28072         * appdomain.c: Bump corlib version.
28073
28074 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28075
28076         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28077         windows.
28078
28079 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28080
28081         * Makefile.am: link to ../os/libmonoos.la on windows.
28082
28083         * assembly.c:
28084                 -If MONO_DEBUG, warn about non-existing directories in
28085                 MONO_PATH.
28086                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28087                 compile time variable.
28088                 -Removed init_default_path and call mono_set_rootdir from
28089                 libmonoos.a instead (windows only).
28090
28091         * assembly.h: declare mono_assembly_getrootdir().
28092
28093         * domain.c:
28094         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28095
28096         * loader.c: s/getenv/g_getenv/
28097
28098 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28099
28100         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28101
28102         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28103
28104         * metadata.h: Add new marshalling conversions.
28105
28106         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28107         function.
28108
28109         * reflection.c (mono_reflection_get_type): Lookup the type in all
28110         modules of a multi-module assembly. Fixes #58291.
28111
28112 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28113
28114         * threads.c: Before aborting a background, set the StopRequested
28115         state.  This avoids throwing the Abort exception.
28116         In mono_thread_manage, don't continue with the shutdown until all
28117         aborted threads have actually stopped.
28118
28119 2004-05-10  Jackson Harper  <jackson@ximian.com>
28120
28121         * locales.c: Remove the modifier from culture names.
28122         
28123 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28124
28125         * Makefile.am: monosn is not installed any more. It has been deprecated
28126         in favor of sn.
28127
28128 2004-05-07  Jackson Harper  <jackson@ximian.com>
28129
28130         * locales.c
28131         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28132         Fix array construction, add bailout if the length is 0.
28133
28134 2004-05-07  Dick Porter  <dick@ximian.com>
28135
28136         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28137         machine doesn't have a DNS entry.  Patch by Urs Muff
28138         (umuff@quark.com), fixes bug 57928.
28139
28140 2004-05-06  Jackson Harper  <jackson@ximian.com>
28141
28142         * reflection.c: Handle null PublicTokens properly. alloc mem for
28143         assembly names culture so we dont crash when freeing it.
28144         
28145 2004-05-06  Jackson Harper  <jackson@ximian.com>
28146
28147         * assembly.c: Check the usergac when loading with partial names.
28148         
28149 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28150
28151         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28152         does nothing for now (not required for Linux/Windows) but the class
28153         library can call it (and a newer or modified runtime could need it).
28154         * icall.c: Registred icall.
28155
28156 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28157
28158         * loader.c: prints a message on module loading error we set MONO_DEBUG
28159         environment variable.
28160
28161 2004-05-05  Jackson Harper  <jackson@ximian.com>
28162
28163         * appdomain.c: Handle PublicKeyToken=null properly.
28164         
28165 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28166
28167         * environment.c|h: Added icall ves_icall_System_Environment_
28168         GetOSVersionString to get the current OS version as a string.
28169         * icall.c: Registred icall.
28170
28171 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28172
28173         * object.c: in mono_object_get_virtual_method(), take into account that
28174         non-virtual methods don't have a slot in the vtable. Check needed when
28175         the object is a proxy.
28176
28177 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28178
28179         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28180         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28181
28182         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28183
28184         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28185         passed when a valuetype is expected.
28186
28187         * object.c (mono_unhandled_exception): Only set the exit code if the
28188         exception happens in the main thread. Fixes thread5.exe.
28189
28190         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28191         invalid names. Fixes #58047.
28192
28193 2004-05-03  Jackson Harper  <jackson@ximian.com>
28194
28195         * assembly.c: This line was committed accidently and is unneeded.
28196         
28197 2004-05-03  Jackson Harper  <jackson@ximian.com>
28198
28199         * icall.c: Add new icall for Assembly::LoadWithPartialName
28200         * assembly.c/.h: new function that probes the GAC to load partial
28201         assembly names by Paolo Molaro.
28202         
28203 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28204
28205         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28206         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28207         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28208         full type name.
28209
28210 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28211
28212         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28213         * reflection.c: fix bug when parsing a full type name and Version is not
28214         the last thing in the string.
28215
28216 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28217
28218         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28219         crashes when it is freed.
28220
28221 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28222
28223         * assembly.c: print the compat warning to stderr.
28224
28225 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28226
28227         * assembly.c (mono_assembly_load_references): Add a compatibility
28228         hack to run old applications that might be still referencing the
28229         3300-based assemblies, only do this for System.xxx.
28230
28231 2004-05-01  Jackson Harper  <jackson@ximian.com>
28232
28233         * appdomain.c: If the culture is neutral we set it to "".
28234         
28235 2004-04-29  Jackson Harper  <jackson@ximian.com>
28236
28237         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28238
28239 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28240  
28241         * string-icalls.c: added low overhead function for copying chars
28242         * icall.c: added needed icall for the above function
28243  
28244 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28245
28246         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28247         Environment.GetLogicalDrives.
28248
28249 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28250
28251         * rand.c: try and talk to egd or prngd
28252         for random bytes if opening devices fail.
28253
28254 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28255
28256         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28257         alignment for the type using the native alignment of its members 
28258         instead of using klass->min_align.
28259
28260         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28261
28262 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28263
28264         * file-io.c:
28265         * socket-io.c: added check for sys/aio.h.
28266
28267 2004-04-28  Dick Porter  <dick@ximian.com>
28268
28269         * threads.c: Don't abort a thread thats already aborting, when
28270         terminating everything.
28271
28272 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28273
28274         * icall.c: added 2 new async calls for Socket.
28275
28276         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28277         IO on *nix systems.
28278
28279         * threadpool.c: removed unused variable.
28280
28281 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28282
28283         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28284
28285 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28286
28287         * locales.c: put back string_invariant_tolower () and
28288         string_invariant_toupper ().
28289
28290 2004-04-26 David Waite <mass@akuma.org>
28291
28292         * file-io.h:
28293         * socket-io.h:
28294         * threads.h:
28295         * unicode.h: remove comma from end of enumeration declarations
28296
28297 2004-04-26 David Waite <mass@akuma.org>
28298
28299         * debug-mono-symfile.h:
28300         * decimal.c:
28301         * mono_debug.h:
28302         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28303
28304
28305 2004-04-26  Jackson Harper  <jackson@ximian.com>
28306
28307         * appdomain.c: Increment version number.
28308         
28309 2004-04-26  Jackson Harper  <jackson@ximian.com>
28310
28311         * appdomain.c: Set assembly references public token value when
28312         PublicKeyToken is specified, not the hash_value. Free public token
28313         values when free assembly name data. Previously the public key
28314         token was hex decoded, however we are using hex encoded public key
28315         tokens, so this is not neccasary.
28316         * assembly.c: Lookup assemblies in the gac if their public token
28317         value is set. Add function to allow enabling user gac
28318         lookups. Specify whether or not the assembly was loaded from the
28319         GAC. Compare full assembly names when checking the cache for
28320         assemblies (Temporarily disabled see comment in code). Remove
28321         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28322         specifies trace-loader they get extra info to stdout on the
28323         loading of assemblies.
28324         * image.h: Add a field for an assembly references public token
28325         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28326         whether an assembly has been loaded from the GAC.
28327         * image.c: Remove a corlib -> mscorlib name mapping.
28328         * loader.h: Add function to enable/disable the user gac.
28329         * mono-config.c: Check if the usergac is enabled in the config
28330         file.
28331         * icall.c: New icall to determine whether or not an assembly has
28332         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28333         * tabldefs.h: Add constant for assemblyref flag that specifies a
28334         full public key is used instead of a public token.
28335         * reflection.c: Remove mscorlib -> corlib mappings. Set
28336         PublicTokenValue instead of hash value. This value is a hex
28337         string so it does not need to be expanded.
28338
28339 2004-04-26  Martin Baulig  <martin@ximian.com>
28340
28341         * mono-debug-debugger.c (mono_debugger_initialize): Set
28342         `mono_debugger_initialized' before calling mono_debug_lock().
28343
28344 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28345
28346         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28347           InternalToUpper/InternalToLower.
28348         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28349           removed invariant culture shortcut.  This is now done in managed code.
28350         * locales.c: (string_invariant_toupper/tolower) removed.
28351
28352 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28353
28354         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28355         Added Poll internal call.
28356
28357         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28358         call for Poll. Select was too heavy for polling a single socket.
28359
28360         * threadpool.[ch]: added mono_threadpool_cleanup.
28361         * threads.c: use it. Don't use Thread_Abort on windows.
28362
28363 2004-04-23  Martin Baulig  <martin@ximian.com>
28364
28365         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28366
28367 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28368
28369         * icall.c: Registred new icalls for key pair protection and added an
28370         icall for Environment.GetFolderPath on Windows.
28371         * security.c|h: Added new icalls for key pair protection.
28372
28373 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28374
28375         * socket-io.c: don't display the non-supported family warning for known
28376         families. Now this is not displayed on windows when checking support
28377         for IPv4/IPv6.
28378
28379 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28380
28381         * class.c: don't display the layout warning for static fields.
28382
28383 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28384
28385         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28386         * locales.c, locales.h: Added new icalls for culture-specific
28387         Char.ToLower and Char.ToUpper.
28388
28389 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28390
28391         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28392         by David Waite.
28393
28394 2004-04-20  Martin Baulig  <martin@ximian.com>
28395
28396         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28397         of the type name before passing it to mono_reflection_type_from_name().
28398
28399 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28400
28401         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28402         encodings here. Fixes #56965.
28403
28404 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28405
28406         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28407         fix test on strstr result not that I can see anything that
28408         relies on the result.
28409
28410 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28411
28412         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28413         Fixes #57081.
28414
28415         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28416
28417         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28418         function to determine which marshalling to use for strings. Fixes
28419         #56965.
28420
28421         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28422
28423         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28424
28425 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28426
28427         * icall.c: #include mono-config.h
28428
28429 2004-04-15  Jackson Harper  <jackson@ximian.com>
28430
28431         * culture-info-tables.h: Fix date formats for en-US culture.
28432         
28433 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28434
28435         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28436         ThreadPool.SetMinThreads.
28437         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28438         ThreadPool.SetMinThreads.
28439
28440 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28441
28442         * mono-config.c: also load the .config file in the directory
28443         where the assembly was found.
28444
28445 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28446
28447         * assembly.c: load per-assembly config files.
28448         * icall.c: decrapified code to get the config dir and moved to
28449         mono-config.c.
28450         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28451         per-assembly config files. When doing a dll map lookup give precedence
28452         to the per-assembly data.
28453
28454 2004-04-14  Martin Baulig  <martin@ximian.com>
28455
28456         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28457         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28458         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28459
28460         * mono-debugger-debugger.c: While the debugger is locked, remember
28461         whether the symbol tables have changes and send one single
28462         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28463
28464 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28465
28466         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28467
28468         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28469         function.
28470
28471         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28472         account when marshalling string arrays. Fixes #56965.
28473
28474 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28475
28476         * icall.c: Add new icalls mapping for security.
28477         * security.c|h: Add internal calls for WindowsIdentity,
28478         WindowsImpersonationContext and WindowsPrincipal.
28479
28480 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28481
28482         * class.c: Added comment to ensure the System.MonoDummy class
28483         is removed when no longer necessary
28484
28485 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28486
28487         * appdomain.c: Pass arguments to the bootstraping exceptions to
28488         minimize JITed methods at boot
28489
28490         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28491         second string to be null.
28492
28493         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28494         Change the protocol to minimize the JIT methods at startup.  Now
28495         it Returns the internal codepage, if the value of "int_code_page"
28496         is 1 at entry, and we can not compute a suitable code page
28497         number, returns the code page as a string.
28498
28499 2004-04-13  Jackson Harper  <jackson@ximian.com>
28500
28501         * culture-info-tables.h: Fix number of decimal digits for all
28502         english locales.
28503
28504 2004-04-13  Jackson Harper  <jackson@ximian.com>
28505
28506         * icall.c: Clairfy out of sync error message. It is not always
28507         your corlib that is out of sync.
28508
28509 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28510
28511         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28512         properties when only the set accessor is overriden. Fixes #55874.
28513
28514 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28515
28516         * assembly.c (mono_assembly_load_references): Make this thread safe.
28517         Fixes #56327.
28518
28519 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28520
28521         * monosn.c: Add missing initialization calls.
28522
28523 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28524
28525         * locales.c:
28526         ves_icall_System_Globalization_CultureInfo_construct_number_format
28527         Fix g_assert so it compiles on fussier compilers re int/ptr
28528         mismatch
28529
28530 2004-04-08  Dick Porter  <dick@ximian.com>
28531
28532         * socket-io.h:
28533         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28534         53992.  Also rearrange the code so that the internal calls return
28535         an error value and exceptions are thrown from managed code.
28536
28537         * icall.c: Add type info to the socket icalls.
28538
28539 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28540
28541         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28542         owes me a beer.
28543
28544 2004-04-07  Martin Baulig  <martin@ximian.com>
28545
28546         * class.c (mono_class_from_generic_parameter): Don't default
28547         `klass->parent' to `mono_defaults.object_type'.
28548
28549 2004-04-07  Martin Baulig  <martin@ximian.com>
28550
28551         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28552         `param->pklass->reflection_info'.       
28553
28554 2004-04-07  Jackson Harper  <jackson@ximian.com>
28555
28556         * culture-info-tables.h: Fix date separator symbol.
28557         
28558 2004-04-07  Martin Baulig  <martin@ximian.com>
28559
28560         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28561         from System.Type to System.MonoType.
28562
28563 2004-04-07  Martin Baulig  <martin@ximian.com>
28564
28565         * reflection.h
28566         (MonoReflectionGenericParam): Added `has_reference_type' and
28567         `has_value_type' fields.
28568
28569         * reflection.c (mono_image_get_generic_param_info): Encode the
28570         correct flags if we have the `class' or `struct' constraint.
28571
28572 2004-04-07  Martin Baulig  <martin@ximian.com>
28573
28574         * reflection.h
28575         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28576
28577 2004-04-07  Jackson Harper  <jackson@ximian.com>
28578
28579         * appdomain.c: Revert extra patches, just wanted to bump the
28580         version number.
28581         
28582 2004-04-07  Jackson Harper  <jackson@ximian.com>
28583
28584         * Makefile.am: Add culture-info private headers.
28585         * icall.c: Add new icalls for contructing locales.
28586         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28587         * locales.h: Declare new culture info construction methods.
28588         * object.h: Add new fields used to avoid the CultureMap to
28589         MonoCultureInfo.
28590         * culture-info.h: Definition of structs used in the culture info
28591         tables.
28592         * culture-info-tables.h: Autogenerated tables that contain culture
28593         info data. This file was generated with the locale-builder tool.
28594         * appdomain.c: Incement corlib version number.
28595         
28596 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28597
28598         * appdomain.c: (mono_runtime_init) move mono_thread_init
28599         to before mono_object_new calls so critical sections
28600         are initialized before use.
28601
28602 2004-04-07  Martin Baulig  <martin@ximian.com>
28603
28604         * icall.c
28605         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28606         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28607         (ves_icall_MonoGenericParam_initialize): Removed.
28608         (monogenericparam_icalls): Removed.
28609         (generictypeparambuilder_icalls): Added new table for
28610         System.Reflection.Emit.GenericTypeParameterBuilder.
28611
28612         * reflection.c
28613         (mono_reflection_define_generic_parameter): Removed.
28614         (mono_reflection_initialize_generic_parameter): This is now called
28615         from GenericTypeParameterBuilder's .ctor.
28616
28617 2004-04-06  Martin Baulig  <martin@ximian.com>
28618
28619         * class.c (mono_class_init): Don't inflate nested classes in a
28620         generic instance.
28621         (mono_type_get_name_recurse): Include the generic arguments for
28622         generic instances and generic type declarations.
28623         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28624         (_mono_class_get_instantiation_name): Removed.
28625         (mono_class_create_generic): Always use `gklass->name' as our name.
28626
28627         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28628
28629         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28630         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28631         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28632         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28633         closed generic methods here.
28634
28635         * reflection.c
28636         (mono_reflection_generic_inst_get_nested_types): Removed.
28637         (inflate_mono_method): Copy the generic parameters from the
28638         MonoMethodHeader into out MonoGenericMethod.
28639
28640 2004-04-06  Martin Baulig  <martin@ximian.com>
28641
28642         * row-indexes.h
28643         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28644
28645         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28646
28647         * reflection.c (build_compressed_metadata): If we have any entries
28648         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28649         set the header version to 1.1.
28650
28651 2004-04-06  Martin Baulig  <martin@ximian.com>
28652
28653         * class.c (mono_class_init): If we're a generic instance,
28654         initialize our nested classes, too.
28655         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28656         suffix. 
28657
28658 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28659
28660         * process.c: quote the argument passed to the shell on windows.
28661
28662 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28663
28664         * threads.c (mono_alloc_special_static_data): Allow this to be
28665         called during startup.
28666
28667 2004-04-02  Martin Baulig  <martin@ximian.com>
28668
28669         * icall.c
28670         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28671
28672 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28673
28674         * icall.c: Fix build.
28675
28676 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28677
28678         * Makefile.am: Added security.c|h.
28679         * icall.c: Added icall for get_UserName;
28680         * security.c: New file for security related icalls. Added function
28681         get_UserName for System.Environment (fix #56144).
28682         * security.h: New. Header file for security.c
28683
28684 2004-04-02  Dick Porter  <dick@ximian.com>
28685
28686         * icall.c: Deleted the icalls that were obsoleted some time ago
28687         by the ICU string code, and which were mixed into the icall
28688         rearranging.  Fixes bug 55969.
28689
28690         * string-icalls.h: 
28691         * string-icalls.c: Deleted the code that those icalls reference.
28692
28693 2004-04-01  Martin Baulig  <martin@ximian.com>
28694
28695         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28696
28697         * class.c (mono_class_from_generic_parameter): Don't set 
28698         TYPE_ATTRIBUTE_INTERFACE.
28699         (my_mono_class_from_generic_parameter): Likewise.
28700
28701 2004-04-01  Martin Baulig  <martin@ximian.com>
28702
28703         * loader.c (find_method): Added an optional `MonoClass *ic'
28704         argument to search in a specific interface.
28705         (mono_get_method_constrained): New public function.
28706
28707 2004-04-01  Martin Baulig  <martin@ximian.com>
28708
28709         * reflection.c (mono_image_get_generic_field_token): Use the
28710         `handleref' cache here.
28711
28712 2004-04-01  Martin Baulig  <martin@ximian.com>
28713
28714         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28715
28716         * reflection.c (create_generic_typespec): Use the `typespec' hash
28717         here, not the `typeref' one.    
28718
28719 2004-04-01  Martin Baulig  <martin@ximian.com>
28720
28721         * class.c (mono_class_inflate_generic_type): Moved the
28722         functionality into a new static inflate_generic_type() which
28723         returns NULL if it didn't do anything.  Only increment the
28724         `mono_stats.inflated_type_count' if we actually inflated
28725         something.
28726         (mono_class_get_full): Check the classes type to see whether we
28727         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28728
28729 2004-04-01  Jackson Harper  <jackson@ximian.com>
28730
28731         * reflection.c: Set culture for assembly references.
28732         
28733 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28734
28735         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28736
28737 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28738
28739         * assembly.c:
28740         (do_mono_assembly_open): the critical section also covers
28741         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28742
28743 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28744
28745         * threads.c:
28746         (mono_manage_threads): abort the background threads when finishing.
28747         Fixes bug #47232.
28748
28749 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28750
28751         * gc.c: only close the done_event handle if there was no timeout.
28752         C-ified comments.
28753
28754 2004-03-30  Martin Baulig  <martin@ximian.com>
28755
28756         * icall.c (icall_entries): It's called "System.Activator", not
28757         "System.Activation".    
28758
28759 2004-03-30  Martin Baulig  <martin@ximian.com>
28760
28761         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28762         (mono_class_create_from_typespec): Likewise.
28763
28764 2004-03-30  Martin Baulig  <martin@ximian.com>
28765
28766         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28767         `has_ctor_constraint' and `initialized'.
28768
28769 2004-03-30  Martin Baulig  <martin@ximian.com>
28770
28771         * reflection.c (encode_new_constraint): New static function to add
28772         the constructor constraint attribute to a type parameter.
28773         (encode_constraints): Call encode_new_constraint() if necessary.
28774
28775         * reflection.h
28776         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28777
28778         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28779         
28780 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28781
28782         * reflection.c, icall.c: add support for pinning variables. 
28783
28784 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28785
28786         * marshal.c (mono_marshal_get_managed_wrapper):
28787         init bool local with zero rather than null.
28788
28789 2004-03-29  Martin Baulig  <martin@ximian.com>
28790
28791         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28792         the "official" behavior here.
28793         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28794
28795 2004-03-29  Martin Baulig  <martin@ximian.com>
28796
28797         * icall.c: Reflect latest API changes.
28798
28799 2004-03-29  Martin Baulig  <martin@ximian.com>
28800
28801         * loader.c (mono_get_method_from_token): Also call
28802         mono_metadata_load_generic_params () for abstract and interface
28803         methods; replace the type arguments in the method signature with
28804         the ones which are loaded from the metadata.
28805
28806 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28807
28808         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28809         of the lock is not the current thread. MS.NET don't do it, in spite of
28810         what the documentation says. See bug #56157.
28811
28812 2004-03-28  Martin Baulig  <martin@ximian.com>
28813
28814         * class.c (mono_class_init): Don't call init_properties() and
28815         init_events() for generic instances; set `prop->parent' when
28816         inflating properties.
28817
28818         * reflection.c (mono_generic_inst_get_object): Call
28819         `mono_class_init (ginst->klass)'.
28820         (mono_type_get_object): Only create a MonoGenericInst if your
28821         generic type is a TypeBuilder.
28822         (do_mono_reflection_bind_generic_parameters): Only set
28823         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28824
28825 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28826
28827         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28828         Fixes #56091.
28829
28830 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28831
28832         * icall.c: added Kill_internal icall.
28833         * process.[ch]: added Kill_internal icall.
28834
28835 2004-03-25  Martin Baulig  <martin@ximian.com>
28836
28837         * class.h (MonoStats): Added `generic_instance_count',
28838         `inflated_method_count', `inflated_type_count' and
28839         `generics_metadata_size'.       
28840
28841 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28842
28843         * reflection.c: no warnings now.
28844
28845 2004-03-25  Martin Baulig  <martin@ximian.com>
28846
28847         * class.c (mono_class_get_full): New public function; does a
28848         mono_class_get(), but also takes a `MonoGenericContext *'.
28849
28850         * loader.c (mono_field_from_memberref): Renamed to
28851         `field_from_memberref', made static and added `MonoGenericContext *'
28852         argument.
28853         (mono_field_from_token): Added `MonoGenericInst *' argument.
28854         (method_from_memberef): Likewise.
28855         (mono_get_method_from_token): Likewise.
28856         (mono_get_method_full): New public function; does a
28857         mono_get_method(), but also takes a `MonoGenericContext *'.
28858
28859         * verify.c (mono_method_verify): Get the method's generic context
28860         and pass it to mono_field_from_token(), mono_get_method_full() and
28861         mono_class_get_full().
28862
28863 2004-03-25  Martin Baulig  <martin@ximian.com>
28864
28865         * class.c (mono_class_inflate_generic_type): Take a
28866         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28867         `MonoGenericMethod *'.
28868
28869 2004-03-25  Martin Baulig  <martin@ximian.com>
28870
28871         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28872         instead of the MonoGenericMethod here.
28873
28874 2004-03-25  Martin Baulig  <martin@ximian.com>
28875
28876         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28877         each time we create a new MonoGenericInst, we also create a new
28878         context which points back to us.
28879
28880         * class.c (inflate_method): Use `ginst->context' instead of
28881         creating a new context.
28882
28883         * loader.c (method_from_memberref): Use
28884         `klass->generic_inst->context' instead of creating a new context.
28885
28886 2004-03-25  Martin Baulig  <martin@ximian.com>
28887
28888         * class.h (MonoGenericContext): New struct.
28889         (MonoGenericMethod): Removed `generic_inst'.
28890
28891         * class.c (mono_class_inflate_generic_method): Take a
28892         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28893
28894 2004-03-25  Martin Baulig  <martin@ximian.com>
28895
28896         * loader.h (MonoMethodInflated): New typedef.
28897
28898         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28899         `generic_param_count' consume just 30 bits, added `is_inflated'
28900         and `has_type_parameters' flags (one bit each).
28901
28902         * class.c (mono_class_inflate_generic_method): Create a
28903         MonoMethodInflated instead of a MonoMethodNormal and set
28904         `is_inflated' in the method signature.
28905
28906         * class.h (MonoGenericMethod): Removed `generic_method'.
28907
28908 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28909
28910         * image.c: Make sure the name of a MonoImage is always an absolute path.
28911           This fixes bug #54415.
28912
28913 2004-03-24  Martin Baulig  <martin@ximian.com>
28914
28915         * class.c (mono_class_setup_vtable): If we're a generic instance,
28916         use our generic type's vtable size.
28917
28918 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28919
28920         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28921         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28922         problems.
28923
28924 2004-03-23  Martin Baulig  <martin@ximian.com>
28925
28926         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28927         `MonoEvent *events'.
28928
28929         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28930         (typebuilder_icalls): Added "get_event_info"; calls
28931         mono_reflection_event_builder_get_event_info(). 
28932
28933         * reflection.c (mono_reflection_generic_inst_initialize): Added
28934         `MonoArray *events'.
28935         (mono_reflection_event_builder_get_event_info): New function.
28936
28937 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28938
28939         * object.h: add mono_type_initialization_init
28940
28941         * object.c (mono_runtime_class_init): 
28942         implement class constructor synchronization rules
28943         to cope with threading issues.  
28944         add mono_type_initialization_init
28945
28946         * appdomain.c (mono_runtime_init): call 
28947         mono_type_initialization_init
28948
28949         * class.h: removing initializing field from MonoVTable
28950
28951 2004-03-23  Martin Baulig  <martin@ximian.com>
28952
28953         * class.c (my_mono_class_from_generic_parameter): Use
28954         `param->name' if it's not NULL. 
28955
28956 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28957
28958         * class.c: do not insert non-virtual methods in the vtable.
28959         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28960         that means the method is non-virtual. This never would have
28961         happened before.
28962
28963 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28964
28965         * profiler.c: Added lock for accessing coverage_hash.
28966
28967 2004-03-22  Martin Baulig  <martin@ximian.com>
28968
28969         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28970         `method->method->signature->generic_param_count != 0' to make it
28971         work for interface methods.
28972
28973 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28974
28975         * process.c: quote the string passed to the shell using g_shell_quote.
28976
28977 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28978
28979         * threads.c:
28980         (mono_threads_manage): don't remove the finalizer thread and self
28981         from the threads hash table so that mono_thread_manage can be called
28982         more than once.
28983
28984 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28985
28986         * process.c: quote the arguments when UseShellExecute is true. Fixes
28987         bug #55790.
28988
28989 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28990
28991         * threads.c: set mono_thread_detach as a cleanup routine for every
28992         thread. This way it's always executed upon thread termination, either
28993         aborted or finished normally. No more xsp hangs!
28994
28995 2004-03-17  Martin Baulig  <martin@ximian.com>
28996
28997         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28998         `int count_nested' and a `MonoType **nested'.
28999
29000         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29001         most of the functionality into a new static
29002         do_mono_reflection_bind_generic_parameters() and don't take a
29003         `MonoType *nested_in' argument any more.  Don't compute nested
29004         types here.
29005         (mono_reflection_generic_inst_get_nested_types): New public method
29006         to get nested types.
29007
29008         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29009         we're a nested class.
29010
29011         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29012         mono_reflection_generic_inst_get_nested_types() to compute the
29013         nested types.
29014
29015 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29016
29017         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29018         descriptive error message under windows.
29019         
29020 2004-03-17  Martin Baulig  <martin@ximian.com>
29021
29022         * class.c (dup_type): Added `const MonoType *original' argument;
29023         copy the attrs from the original type.
29024
29025 2004-03-17  Martin Baulig  <martin@ximian.com>
29026
29027         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29028         `m->generic_inst_cache' here.
29029
29030 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29031
29032         * exception.h exception.c: Add stack_overflow_exception.
29033
29034 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29035
29036         * threadpool.c:
29037         (overlapped_callback): call SetEvent *after* invoking the callback.
29038         No need to call CloseHandle.
29039
29040 2004-03-16  Martin Baulig  <martin@ximian.com>
29041
29042         * reflection.c (mono_image_get_fieldref_token): Take a
29043         `MonoReflectionField *' instead of a `MonoClassField *' and a
29044         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29045
29046 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29047
29048         * appdomain.c: don't add the culture to the filename we're looking for
29049         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29050
29051 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29052
29053         * locales.c: don't ignore symbols when doing case insensitive compares.
29054         Thanks Dick! Fixes bug #54046.
29055
29056         * threads.c: surround 'threads' usage with enter/leave in
29057         mono_thread_manage.
29058
29059 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29060
29061         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29062         implicitly marshalled as [Out]. Fixes #55450.
29063
29064         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29065         an exception.
29066
29067 2004-03-16  Martin Baulig  <martin@ximian.com>
29068
29069         * class.c (mono_class_from_generic_parameter): Use the actual
29070         parameter name. 
29071
29072 2004-03-16  Martin Baulig  <martin@ximian.com>
29073
29074         * reflection.c (type_get_signature_size): New static function.
29075         Compues the size of the type in a method signature.
29076         (method_get_signature_size): New static function; calls
29077         type_get_signature_size() to compute the actual size of the
29078         method's signature.
29079         (method_encode_signature): Use method_get_signature_size() to get
29080         the signature's size rather than using `nparams * 10'.
29081
29082 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29083
29084         * file-io.h: define here WapiOverlapped on windows. I don't want the
29085         regular OVERLAPPED one.
29086
29087         * file-io.c:
29088         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29089         Disabling AIO on windows.
29090
29091 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29092
29093         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29094         bug #55385.
29095
29096 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29097
29098         * appdomain.c: upgraded corlib version.
29099
29100         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29101         and BeginWrite. Allow opening files for asynchrnous operations.
29102
29103         * file-io.h: new struct that maps FileStreamAsyncResult.
29104         * icall.c: added new icalls.
29105         * process.[ch]: support setting child process environment variables
29106         and use the SHELL or COMSPEC when UseShellExecute is true.
29107
29108         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29109         callback for async. IO is here and also BindHandle.
29110
29111         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29112         from here.
29113
29114 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29115
29116         * reflection.c (create_custom_attr): Allow len == 0.
29117
29118         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29119         computation on big-endian machines.
29120
29121 2004-03-13  Martin Baulig  <martin@ximian.com>
29122
29123         * class.h (MonoGenericInst): Added `int count_ifaces'.
29124
29125         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29126         `ginst->count_ifaces' instead `klass->interface_count' since we
29127         may get called before the vtable is created.
29128
29129         * loader.c (mono_method_get_param_names): If we're a generic
29130         instance, return and don't initialize the class.
29131
29132         * reflection.c (mono_reflection_setup_generic_class): Don't call
29133         ensure_runtime_vtable().
29134         (mono_reflection_bind_generic_parameters): Set
29135         `ginst->count_ifaces'.
29136
29137 2004-03-11  Jackson Harper <jackson@ximian.com>
29138
29139         * icall.c:
29140         * unicode.c:
29141         * unicode.h: Remove unused System.Char icalls.
29142         
29143 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29144
29145         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29146         code when we P/Invoke the first library in Windows.Forms, instead
29147         of when we first open the assembly.
29148
29149         * assembly.c: Drop the lookup from here.
29150
29151 2004-03-10  Martin Baulig  <martin@ximian.com>
29152
29153         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29154         class for properties, fields and events.  Finally fixes #54945.
29155
29156 2004-03-10  Martin Baulig  <martin@ximian.com>
29157
29158         * metadata.c (mono_metadata_class_equal): New static function;
29159         checks whether two generic instances or two generic parameters are
29160         equal.
29161         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29162         compare classes.        
29163
29164 2004-03-10  Martin Baulig  <martin@ximian.com>
29165
29166         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29167
29168         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29169         argument and write it into the `reflection_info' field.
29170
29171         * icall.c
29172         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29173         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29174
29175 2004-03-09  Jackson Harper  <jackson@ximian.com>
29176
29177         * char-conversions.h: use 8 bits for numeric data its all we need
29178         * icall.c: numeric data is only 8 bits now.
29179
29180 2004-03-09  Martin Baulig  <martin@ximian.com>
29181
29182         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29183
29184         * class.c (init_properties, init_events): Initialize the new
29185         `parent' field.
29186
29187         * reflection.c (typebuilder_setup_properties): Likewise.
29188         (typebuilder_setup_events): Likewise.
29189
29190         * reflection.h (MonoEventInfo): Replaced `parent with
29191         `declaring_type' and `reflected_type'.
29192
29193         * icall.c (ves_icall_get_property_info): Distinguish between
29194         declaring and reflected type.
29195         (ves_icall_get_event_info): Likewise.
29196
29197 2004-03-09  Martin Baulig  <martin@ximian.com>
29198
29199         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29200         (ves_icall_Type_GetField): Correctly set field->klass.
29201
29202 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29203
29204         * loader.h: Fix warning.
29205
29206 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29207
29208         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29209         library routine if present.  Notice that it will still continue
29210         executing even if its missing, for those working on the Gtk#
29211         edition of Windows.Forms.
29212
29213         * assembly.c (do_mono_assembly_open): If loading the
29214         System.Windows.Forms call mono_loader_wini_init.
29215
29216 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29217
29218         * class.h: Added MonoRemoteClass struct.
29219         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29220         function for MonoStrings.
29221         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29222         Added internal call for getting the proxy type.
29223         * marshal.c: Get the type of transparent proxies from its remote_class.
29224         Added methods that generate the IL for type checks and casts:
29225         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29226         mono_marshal_get_proxy_cancast.
29227         * marshal.h: Declaration of the previous new methods.
29228         * object.c: Added new moethods for creating and updating MonoRemoteClass
29229         instances: mono_remote_class, mono_upgrade_remote_class, 
29230         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29231         * verify.c: FIx transparent_proxy_fields layout.
29232         * appdomain.c: Bump corlib version.
29233
29234 2004-03-04  Jackson Harper  <jackson@ximian.com>
29235
29236         * icall.c: Add icall to access char conversion tables.
29237         * char-conversions.h: Character conversion tables.
29238         * Makefile.am: Add char-conversions.h private header file.
29239         
29240 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29241
29242         * appdomain.c (unload_thread_main): Increase unloading timeout to
29243         10 sec as a temporary workaround for Nant problems.
29244
29245 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29246
29247         * gc.c: Add checks for GC_enable and GC_disable.
29248
29249         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29250         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29251         (bug #54988).
29252         
29253 2004-02-27  Martin Baulig  <martin@ximian.com>
29254
29255         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29256         `MonoReflectionType *' instead of a `MonoType *'.
29257
29258 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29259
29260         * gc.c (run_finalize): Avoid finalizing the object representing the
29261         finalizer thread.
29262         (finalizer_thread): Fix warning.
29263
29264 2004-02-25  Martin Baulig  <martin@ximian.com>
29265
29266         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29267         argument for nested types.
29268         (mono_class_create_generic): Added support for nested generictypes.
29269
29270         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29271         `GList *nested'.
29272
29273         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29274
29275         * reflection.c (method_encode_signature): Increase the minimum
29276         value of `size' from 10 to 11.
29277         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29278         and `MonoType **types' arguments instead of the `MonoArray
29279         *types'; added `MonoType *nested_in'.  Recursively instantiate
29280         nested classes. 
29281
29282 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29283
29284         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29285         stack_overflow_ex members which are used by exception handling.
29286
29287         * appdomain.c (mono_runtime_init): Initialize the new members.
29288
29289         * gc.c (mono_gc_enable): New helper function.
29290         * gc.c (mono_gc_disable): New helper function.
29291
29292 2004-02-23  Martin Baulig  <martin@ximian.com>
29293
29294         * icall.c: I must have been really stupid - make it actually work
29295         this time ;-)
29296
29297 2004-02-23  Martin Baulig  <martin@ximian.com>
29298
29299         * loader.c (method_from_memberref): Only inflate the method if
29300         it's in another klass.
29301
29302 2004-02-23  Martin Baulig  <martin@ximian.com>
29303
29304         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29305         (mono_class_init): If we're a generic instance and an interface,
29306         compute `class->interface_id'; also create `class->interfaces'
29307         here and inflate them.
29308
29309         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29310         `ginst->is_open'.
29311         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29312
29313         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29314
29315 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29316
29317         * reflection.c (method_encode_code): Improved the error message
29318         generated by the exception.
29319
29320 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29321
29322         * icall.c: Martin did not do what he said in the ChangeLog for
29323         2004-02-18, but put back the changes for properties and events.
29324         Commenting those changes out again and adding comment to bug #54518.
29325         
29326         * process.c: removed warning.
29327
29328 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29329
29330         * marshal.c (emit_struct_conv): Print an error message instead of
29331         asserting when a type does not have the StructLayout attribute.
29332
29333 2004-02-20  Martin Baulig  <martin@ximian.com>
29334
29335         * reflection.c (mono_type_get_object): Also use the cache for
29336         generic instances.
29337         (mono_reflection_bind_generic_parameters): Always compute
29338         `ginst->ifaces'.        
29339
29340 2004-02-20  Martin Baulig  <martin@ximian.com>
29341
29342         * class.h (MonoGenericMethod): Removed `klass'.
29343
29344         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29345         *klass' argument.
29346
29347 2004-02-20  Martin Baulig  <martin@ximian.com>
29348
29349         * reflection.c (method_encode_methodspec): Actually use the
29350         uninflated signature for the memberref.
29351
29352 2004-02-20  Martin Baulig  <martin@ximian.com>
29353
29354         * class.h (MonoGenericMethod): Removed `declaring'.
29355
29356         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29357         is NULL, compute it here.
29358
29359 2004-02-20  Martin Baulig  <martin@ximian.com>
29360
29361         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29362
29363         * metadata.c (mono_metadata_generic_inst_hash): New method.
29364         (mono_metadata_generic_inst_equal): New method.
29365
29366         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29367         `klass->image->generic_inst_cache' cache to avoid creating
29368         duplicate MonoGenericInst's.
29369
29370         * class.c (mono_class_inflate_generic_type): Use the cache.
29371
29372 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29373
29374         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29375
29376 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29377
29378         * icall.c: added Socket.WSAIoctl icall.
29379
29380         * socket-io.[ch]: implemented
29381         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29382
29383 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29384
29385         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29386
29387 2004-02-18  Urs C Muff  <umuff@quark.com>
29388
29389         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29390         this work on PPC and other big-endian architectures.
29391
29392         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29393         fields with an underscore to make sure they're only accessed by
29394         the read32() macro.
29395
29396 2004-02-18  Martin Baulig  <martin@ximian.com>
29397
29398         * icall.c: Put the klass->refclass changes back for methods and
29399         fields, but not for properties and events.  We're currently not
29400         distinguishing between DeclaringType and ReflectedType for
29401         properties and events, that's what caused the regressions.
29402
29403 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29404
29405         * object.c:
29406         (mono_async_result_new): the handle can be NULL.
29407
29408         * threadpool.c: Use an event instead of a semaphore, don't initialize
29409         it until needed. This saves quite a few semaphores from being created
29410         when using the threadpool.
29411
29412 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29413
29414         * object.c (mono_string_is_interned_lookup): Fix interning of long
29415         strings. Fixes #54473.
29416
29417         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29418
29419         * icall.c: Revert the klass->refclass changes since they introduce
29420         regressions (bug #54518).
29421
29422 2004-02-18  Martin Baulig  <martin@ximian.com>
29423
29424         * class.c (mono_class_init): If we're a generic instance and don't
29425         come from a TypeBuilder, inflate our members here.
29426         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29427         (mono_class_create_generic): New public method.
29428         (mono_class_initialize_generic): Removed.
29429         (get_instantiation_name): Renamed to
29430         _mono_class_get_instantiation_name() and made it public.
29431
29432 2004-02-18  Martin Baulig  <martin@ximian.com>
29433
29434         * class.c (mono_class_inflate_generic_type): Clear the new
29435         instance's `nginst->klass' when inflating a generic instance.
29436         (mono_class_is_subclass_of): Added (basic) support for generic
29437         instances.
29438
29439 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29440
29441         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29442         MonoMempool to hold compiled native code.
29443
29444 2004-02-17  Martin Baulig  <martin@ximian.com>
29445
29446         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29447         `properties'.
29448
29449         * reflection.c (mono_reflection_generic_inst_initialize): Added
29450         `MonoArray *properties' argument.
29451
29452         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29453
29454 2004-02-17  Martin Baulig  <martin@ximian.com>
29455
29456         * icall.c (ves_icall_Type_GetFields): Renamed to
29457         ves_icall_Type_GetFields_internal() and added a
29458         `MonoReflectionType *rtype' argument; pass it to
29459         mono_field_get_object() to set the field's "reflected" type.
29460         (ves_icall_Type_GetConstructors): Likewise.
29461         (ves_icall_Type_GetEvents): Likewise.
29462         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29463         argument; pass it to mono_method_get_object() to set the method's
29464         "reflected" type.       
29465
29466 2004-02-17  Martin Baulig  <martin@ximian.com>
29467
29468         * class.h (MonoDynamicGenericInst): New type.
29469         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29470
29471         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29472         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29473         (ves_icall_MonoGenericInst_GetFields): New interncall.
29474
29475         * class.c (mono_class_from_generic): Don't call
29476         mono_class_initialize_generic() if this is a dynamic instance;
29477         ie. it's being created from a TypeBuilder.
29478         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29479         `class->byval_arg.type'.
29480
29481         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29482         to `inflate_method' and made static.
29483         (mono_reflection_inflate_field): Removed.
29484         (mono_reflection_generic_inst_initialize): New public method.
29485
29486         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29487         `ctors' and `fields'; added `initialized'.
29488
29489 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29490
29491         * debug-helpers.c (mono_method_full_name): Fix output for empty
29492         namespaces.
29493
29494 2004-02-12  Martin Baulig  <martin@ximian.com>
29495
29496         * class.h (MonoClassField): Added `MonoType *generic_type'.
29497
29498         * reflection.c (mono_image_get_fieldref_token): Added support for
29499         instantiated generic types.
29500         (field_encode_inflated_field): Removed.
29501         (mono_image_get_inflated_field_token): Removed.
29502         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29503
29504         * reflection.h (MonoReflectionInflatedField): Removed.
29505
29506 2004-02-12  Martin Baulig  <martin@ximian.com>
29507
29508         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29509         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29510
29511         * reflection.c (mono_image_get_methodspec_token): Take a
29512         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29513         (mono_image_create_token): Check whether we have a
29514         `method->signature->gen_method' and call
29515         mono_image_get_methodspec_token() if appropriate.
29516         (inflated_method_get_object): Removed.
29517         (mono_reflection_bind_generic_method_parameters): Return a
29518         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29519         (mono_reflection_inflate_method_or_ctor): Likewise.
29520
29521         * reflection.h (MonoReflectionInflatedMethod): Removed.
29522
29523 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29524
29525         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29526         for custom valuetype marshalling.
29527
29528         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29529
29530 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29531
29532         * icall.c: fixed WSAGetLastError_internal name.
29533
29534 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29535
29536         * threads.c (mono_thread_attach): Allow this to be called multiple
29537         times for a thread.
29538         
29539         * threads.c (build_wait_tids): Do not wait for ourselves.
29540
29541         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29542         appdomain list is empty.
29543
29544         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29545         memory returned by mono_string_builder_to_utf16, since it points into
29546         managed memory. Thanks to Bernie Solomon for noticing this.
29547
29548         * icall.c: Add AppDomainSetup icalls.
29549
29550         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29551
29552         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29553         types.
29554
29555         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29556         custom attributes to the method_aux struct. Also fix array indexes etc.
29557
29558         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29559         
29560 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29561
29562         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29563         (both static and runtime) and reduce startup time.
29564
29565 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29566
29567         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29568         AsAny marshalling conversion instead of crashing.
29569
29570         * marshal.c: Fix warnings.
29571
29572 2004-02-09  Martin Baulig  <martin@ximian.com>
29573
29574         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29575
29576         * reflection.h (MonoReflectionInflatedMethod): Removed the
29577         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29578
29579         * reflection.c (method_encode_methodspec): Removed the `method'
29580         argument; we get it from `gmethod->declaring'.
29581         (inflated_method_get_object): Removed the `declaring' argument.
29582
29583 2004-02-09  Martin Baulig  <martin@ximian.com>
29584
29585         * class.h (MonoGenericMethod): New type.
29586         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29587         `generic_method'.
29588
29589         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29590         a `MonoGenericMethod *gen_method' one.
29591
29592         * class.c (mono_class_inflate_generic_type): Take an additional
29593         `MonoGenericMethod * argument.  This is only non-NULL if we're
29594         inflating types for a generic method.   
29595         (mono_class_inflate_generic_signature): Renamed to
29596         inflate_generic_signature() and made static; take a
29597         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29598         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29599         instead of a `MonoGenericInst *' one.
29600         (mono_class_inflate_generic_method): Likewise.
29601
29602         * reflection.c (encode_generic_method_sig): Take a
29603         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29604         (method_encode_methodspec): Likewise.
29605         (inflated_method_get_object): Likewise. 
29606
29607         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29608         field with a `MonoGenericMethod *gmethod' one.  
29609
29610 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29611
29612         * class.h (mono_class_has_parent): add parens to expansion
29613         so you can ! this.
29614
29615 2004-02-08  Martin Baulig  <martin@ximian.com>
29616
29617         * image.h (MonoImage): Removed `generics_cache'.
29618
29619         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29620         instead of a `MonoType *' argument; removed the `inflate_methods'
29621         argument.  Don't inflate methods here.
29622
29623         * loader.c (find_method): If it's a generic instance, call
29624         mono_class_init() on the `sclass->generic_inst->generic_type'.
29625
29626         * metadata.c (mono_type_size): Make this work on uninitialized
29627         generic instances; call it on the `ginst->generic_type's class.
29628
29629         * reflection.c (mono_reflection_bind_generic_parameters): Call
29630         mono_class_from_generic() to create the `ginst->klass'.
29631
29632 2004-02-08  Martin Baulig  <martin@ximian.com>
29633
29634         * class.h (MonoClass): Changed type of `generic_inst' from
29635         `MonoType *' to `MonoGenericInst *'.
29636
29637 2004-02-08  Martin Baulig  <martin@ximian.com>
29638
29639         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29640         mono_type_get_object(), this is now creating a `MonoGenericInst'
29641         for MONO_TYPE_GENERICINST.
29642         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29643         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29644
29645         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29646         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29647         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29648         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29649         and reflected type.
29650
29651         * reflection.h (MonoReflectionInflatedMethod): Removed
29652         `declaring_type' and `reflected_type'.
29653
29654 2004-02-08  Martin Baulig  <martin@ximian.com>
29655
29656         * class.h (MonoGenericInst): Added `MonoType *parent' and
29657         `MonoType **ifaces'.
29658
29659         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29660         `parent' and `interfaces'.
29661
29662         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29663         `MonoType *' argument and return a `MonoType *'.
29664
29665         * icall.c
29666         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29667         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29668
29669 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29670
29671         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29672         valuetype marshalling.
29673
29674 2004-02-06  Martin Baulig  <martin@ximian.com>
29675
29676         * class.c
29677         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29678         (my_mono_class_from_generic_parameter): Likewise.
29679
29680 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29681
29682         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29683         contents of the symbol files lazily.
29684
29685         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29686
29687         * threads.h threads.c icall.c: New icalls for getting and setting the
29688         threads name.
29689
29690 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29691
29692         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29693         Raise an exception when the domain is not found.
29694
29695 2004-02-03  Martin Baulig  <martin@ximian.com>
29696
29697         * reflection.c (mono_image_get_methodspec_token): Use the
29698         uninflated signature; fixes gen-33.
29699
29700 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29701
29702         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29703         the finalizer code can use thread functionality.
29704
29705         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29706         the finalizer thread.
29707
29708         * threads.c: Make some functions more robust.
29709
29710         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29711
29712         * metadata.h: Add new marshalling conventions.
29713
29714         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29715         stringbuilder marshalling. Fixes #53700.
29716
29717         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29718
29719         * reflection.c (mono_image_get_type_info): Save declarative security
29720         info.
29721
29722         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29723         unmanaged fields as well.
29724
29725         * appdomain.c: Bump corlib version.
29726
29727 2004-02-01  Martin Baulig  <martin@ximian.com>
29728
29729         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29730         method type arguments.  
29731
29732 2004-01-30  Duncan Mak  <duncan@ximian.com>
29733
29734         * marshal.h: Add prototype for
29735         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29736         and
29737         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29738         fix the build.
29739
29740 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29741
29742         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29743         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29744
29745 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29746
29747         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29748         custom marshalling of valuetypes.
29749
29750         * marshal.c: Fix some warnings.
29751
29752 2004-01-29  Martin Baulig  <martin@ximian.com>
29753
29754         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29755         for generic method parameters.
29756
29757         * reflection.c (method_encode_methodspec): Write the uninflated
29758         signature into the methodspec table.
29759         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29760         is always the uninflated method.
29761         (reflection_methodbuilder_to_mono_method): Copy the generic
29762         parameters from the MethodBuilder into `header->gen_params'.
29763
29764 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29765
29766         * class.c (mono_class_from_generic_parameter): Fix warning.
29767
29768 2004-01-27  Martin Baulig  <martin@ximian.com>
29769
29770         * class.c (mono_class_from_generic_parameter): Don't create
29771         `klass->methods' here.  
29772
29773 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29774
29775         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29776         extension since it does not work with libraries named lib<FOO>.dll.so.
29777
29778 2004-01-25  Martin Baulig  <martin@ximian.com>
29779
29780         * class.c (mono_class_inflate_generic_type): Added support for
29781         MONO_TYPE_GENERICINST.
29782
29783         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29784         inflate methods on open constructed types.      
29785
29786 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29787
29788         * object.c: fire ProcessExit event in the root AppDomain after running
29789         Main. Fixes bug #53299.
29790
29791 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29792
29793         * socket-io.c: include the new socket-wrappers.h header.
29794         Use the wrappers instead of the unix socket functions to make the code
29795         more clear.
29796
29797 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29798
29799         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29800
29801         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29802         Fixes #22532.
29803
29804 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29805
29806         * reflection.c (mono_image_create_pefile): Handle the case when the
29807         entry point is not a MethodBuilder.
29808
29809         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29810         field to ReflectionMethod since it is not allways a builder.
29811
29812         * reflection.c (type_get_fully_qualified_name): New helper function to
29813         return the fully qualified name of a type.
29814
29815         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29816         type name for custom marshallers.
29817
29818         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29819
29820         * class.c (mono_class_setup_vtable): If a parent class already 
29821         implements an interface, use the implementing methods from that class.
29822         Fixes #53148.
29823
29824 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29825
29826         * threadpool.c: just return instead of ExitThread to allow for thread
29827         clean up earlier.
29828
29829 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29830
29831         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29832         when closing resource modules.
29833
29834         * reflection.c (mono_image_create_pefile): Handle the case when the
29835         entry point is not a MethodBuilder.
29836
29837         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29838         field to ReflectionMethod since it is not allways a builder.
29839
29840 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29841
29842         * marshal.c (mono_marshal_get_managed_wrapper): 
29843         mono_marshal_alloc takes native int so CONV_I
29844         the arg for 64bits.
29845
29846 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29847
29848         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29849         tokens in the cattr table. Fixes #53108.
29850
29851 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29852
29853         * loader.c: don't trim ".dll" before looking up in the config file.
29854         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29855
29856 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29857
29858         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29859         Return the module which contains the resource as well.
29860         (ves_icall_System_Reflection_Module_Close): New icall.
29861
29862         * appdomain.c: Bump corlib version number.
29863
29864         * image.c (mono_image_addref): New public function.
29865
29866         * assembly.c: Call mono_image_addref.
29867
29868         * reflection.c (mono_module_get_object): Increase reference count of 
29869         the image.
29870
29871         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29872         Fixes #22532.
29873
29874         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29875         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29876         proper exceptions on DllImport problems.
29877
29878 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29879
29880         * class.c, metadata.c: eliminate CSIZE macro.
29881
29882 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29883
29884         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29885         * object.h: Added async_callback field in MonoAsyncResult.
29886         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29887         * verify.c: Added async_callback in MonoAsyncResult layout.
29888
29889 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29890
29891         * reflection.c (mono_reflection_get_custom_attrs): Add support
29892         for Modules.
29893
29894 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29895
29896         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29897         marshalling.
29898         (mono_marshal_method_from_wrapper): Add null pointer check.
29899
29900 2004-01-16  Martin Baulig  <martin@ximian.com>
29901
29902         * debug-mono-symfile.h: Set version number to 36 and reflect
29903         latest symbol writer changes.
29904
29905 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29906
29907         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29908         multi-dimensional arrays.
29909         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29910         (mono_class_from_mono_type): Use bounded_array_class_get.
29911         
29912         * class.c (mono_bounded_array_class_get): New function which takes
29913         a 'bounded' bool argument to distinguish vectors from one dimensional
29914         arrays.
29915
29916         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29917         bounded_array_class_get if the array has bounds.
29918
29919         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29920         Search modules loaded using AssemblyBuilder:AddModule as well.
29921
29922 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29923
29924         * appdomain.c: increased corlib version.
29925         * filewatcher.c: removed g_print.
29926         * icall.c:
29927         (get_property_info): only allocate what is actually requested.
29928         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29929
29930 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29931
29932         * Makefile.am: added filewatcher.[ch]
29933         * filewatcher.[ch]: FileSystemWatcher runtime support.
29934         * icall.c: added new FSW icalls.
29935
29936 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29937
29938         * string-icalls.c: fix stringbuilder regression as suggested by
29939         Iain McCoy <iain@mccoy.id.au>.
29940
29941 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29942
29943         * process.c (process_read_stringtable_block): Recognize '007f' as
29944         a language neutral stringtable block.
29945
29946 2004-01-12  Patrik Torstensson
29947
29948         * object.h (MonoStringBuilder) : Changed layout to support our
29949         new stringbuilder class.
29950         * marshal.c: Change marshalling to support the new layout of 
29951         string builder.
29952         * appdomain.c: increased version number because new layout of
29953         string builder.
29954
29955 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29956
29957         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29958         assembly name as an string instead of an AssemblyName, since it is
29959         easier to extract info from it.
29960
29961         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29962         the culture subdirectories too. Fixes #52231.
29963
29964 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29965
29966         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29967         It takes 2 new parameters with an optional name for the method to look
29968         for and case ignoring info.
29969
29970         * threadpool.c: removed unused variable.
29971
29972 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29973
29974         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29975         It takes 2 new parameters with an optional name for the property to look
29976         for and case ignoring info.
29977         Fixes bug #52753.
29978
29979 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29980
29981         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29982         Fix #52451.
29983
29984 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29985
29986         * appdomain.c:
29987         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29988         Fixes bug #52630.
29989
29990 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29991
29992         * reflection.c: Add support for more than one unmanaged resource.
29993
29994         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29995         in field->def_value, as done in all other cases.
29996
29997         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29998         TypeBuilders.
29999
30000         * reflection.c (mono_reflection_create_runtime_class): Remove 
30001         errorneous assignment to klass->element_class, since it is already
30002         done in mono_reflection_setup_internal_class.
30003
30004 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30005
30006         * gc.c: added missing LeaveCriticalSection.
30007         * icall.c: indented a couple of lines.
30008         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30009         if we call EndInvoke inside a callback. Fixes bug #52601.
30010
30011 2004-01-07  Martin Baulig  <martin@ximian.com>
30012
30013         * mono-debug-debugger.h
30014         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30015
30016 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30017
30018         * appdomain.c: Use messages in NotImplementedException.
30019
30020         * exception.c (mono_get_exception_not_implemented): Now this takes
30021         a message argument.
30022
30023         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30024         exception instead of g_asserting an aborting when something is not
30025         implemented.
30026
30027         Add some inline docs.
30028
30029 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30030
30031         * reflection.h: Update after changes to object layout.
30032
30033         * reflection.c: Implement saving of unmanaged aka win32 resources.
30034
30035         * appdomain.c: Bump version number.
30036
30037         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30038         Handle missing domains gracefully.
30039
30040 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30041
30042         * file-io.c : On Windows, there are much more invalid_path_chars.
30043
30044 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30045
30046         * class.h, object.c: prepare for GetType () speedup.
30047
30048 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30049
30050         * profiler.c: workaround for --profile null reference exception on
30051           cygwin. Patch by Patrik Torstensson.
30052
30053 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30054
30055         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30056         make work for unaligned access.
30057
30058 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30059
30060         * class.c: small cleanup (class->fields [i] -> field).
30061         * image.c: check address of metadata is valid.
30062
30063 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30064
30065         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30066         search the list of loaded assemblies.
30067
30068         * reflection.c (mono_reflection_type_from_name): Use 
30069         mono_assembly_loaded instead of mono_image_loaded.
30070
30071         * reflection.c: Fix warnings.
30072
30073 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30074
30075         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30076         is dynamic. This is needed since an assembly can contain both dynamic and
30077         non-dynamic images.
30078
30079         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30080         assembly->dynamic.
30081
30082         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30083
30084         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30085         to store modules loaded using AddModule.
30086
30087         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30088         on Modules.
30089
30090         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30091
30092         * reflection.c (mono_image_fill_export_table_from_module): New function to
30093         fill out the EXPORTEDTYPES table from a module.
30094
30095         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30096         into a separate function. Also handle loaded non-dynamic modules.
30097
30098         * reflection.c (mono_image_basic_init): Fix memory allocation.
30099
30100         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30101
30102         * assembly.c (mono_assembly_load_references): Make this public.
30103
30104 2003-12-19  Martin Baulig  <martin@ximian.com>
30105
30106         * class.c (mono_class_initialize_generic): Made this static, take
30107         a `MonoGenericInst *' instead of a `MonoClass *'.
30108         (mono_class_from_generic): Call mono_class_initialize_generic()
30109         unless we're already initialized or being called from
30110         do_mono_metadata_parse_generic_inst().
30111
30112         * class.h (MonoGenericInst): Added `initialized' and
30113         `init_pending' flags.
30114
30115         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30116         `mono_class_init (gklass)' or mono_class_initialize_generic()
30117         here; set `generic_inst->init_pending' while parsing the
30118         `type_argv'.
30119
30120 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30121
30122         * locales.c: include string.h for memxxx prototypes
30123
30124 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30125
30126         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30127         constructor when accessing literal fields.
30128
30129 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30130
30131         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30132
30133         * reflection.c (assembly_add_resource_manifest): New function to fill
30134         the MANIFESTRESOURCE table.
30135
30136         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30137
30138         * reflection.h: Update to changes in class layout.
30139
30140         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30141         Reenable call to mono_runtime_is_shutting_down ().
30142
30143         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30144         determine if the runtime is shutting down.
30145
30146 2003-12-16  Jackson Harper <jackson@ximian.com>
30147
30148         * icall.c: comment out call to mono_runtime_is_shutting_down to
30149         fix build.
30150         
30151 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30152
30153         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30154         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30155
30156 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30157
30158         * reflection.c: move definition of swap_with_size
30159         to before its first call
30160
30161 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30162
30163         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30164
30165         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30166         icall.
30167
30168         * object.c: Fix warnings.
30169
30170         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30171         members if FlattenHierarchy is set.
30172
30173         * reflection.c (mono_image_add_decl_security): New function to emit
30174         declarative security.
30175
30176         * reflection.h reflection.c: Add support for declarative security.
30177
30178         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30179         
30180 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30181
30182         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30183         
30184         * appdomain.c verify.c: Moved corlib version checking into its own
30185         function in appdomain.c since it needs to create vtables etc.
30186
30187 2003-12-13  Patrik Torstensson <p@rxc.se>
30188
30189         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30190         instead of unwrapped server.
30191
30192 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30193
30194         * verify.c (check_corlib): Fix field index.
30195
30196 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30197
30198         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30199         GetGacPath icall.
30200
30201 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30202
30203         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30204         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30205         cope with sizeof(size_t) != sizeof(guint32).
30206
30207 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30208
30209         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30210         in case of failure.
30211
30212 2003-12-10  Mark Crichton <crichton@gimp.org>
30213
30214         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30215         in managed code.
30216
30217         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30218
30219 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30220
30221         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30222         marked as deleted.
30223
30224 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30225
30226         * verify.c (check_corlib): Handle the case when the version field is 
30227         initialized by a static constructor.
30228
30229 2003-12-08  Patrik Torstensson  <p@rxc.se>
30230
30231     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30232
30233 2003-12-08  Martin Baulig  <martin@ximian.com>
30234
30235         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30236         a MonoReflectionGenericParameter, also take the parameter index
30237         and name as arguments.
30238         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30239         (ves_icall_MonoGenericParam_initialize): New interncall.
30240         (ves_icall_Type_make_byref_type): New interncall.
30241
30242         * reflection.h (MonoReflectionGenericParam): Derive from
30243         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30244         `index' fields.
30245
30246         * reflection.c (mono_reflection_define_generic_parameter): Create
30247         and return a new MonoReflectionGenericParam; don't initialize the
30248         constraints here.
30249         (mono_reflection_initialize_generic_parameter): New public method;
30250         initializes the constraints and creates the `param->pklass'.
30251
30252 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30253
30254         * reflection.h reflection.c: Use the new fields 'num_types', 
30255         'num_fields' and 'num_methods' to track the number of types etc.
30256
30257         * verify.c (check_corlib): Check corlib version number.
30258
30259 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30260
30261         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30262         function works on all methods.
30263
30264 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30265
30266         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30267         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30268         the custom_type_info flag of the transparent proxy.
30269         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30270         objects that supports IRemotingTypeInfo.
30271         * object.h: Added custom_type_info field in transparent proxy.
30272
30273 2003-12-06  Martin Baulig  <martin@ximian.com>
30274
30275         * class.c (mono_class_create_from_generic): Removed.
30276         (mono_class_from_generic): Check `ginst->klass' before doing
30277         anything else.  This is important to fully support "recursive"
30278         generic types.
30279
30280         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30281         empty `generic_inst->klass' before doing anything else.
30282
30283 2003-12-06  Dick Porter  <dick@ximian.com>
30284
30285         * verify.c: 
30286         * object.h:
30287         * icall.c:
30288         * locales.c: Use C structs to access class fields.  Don't do a
30289         conversion between MonoString and UChar because both are
30290         platform-endian UTF-16.  Compare now takes startindex and count
30291         parameters.  Add a char overload for IndexOf.  Speed up the
30292         invariant string IndexOf.
30293
30294 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30295
30296         * Makefile.am (monosn_LDADD): Fix parallel build.
30297
30298 2003-12-04  Martin Baulig  <martin@ximian.com>
30299
30300         * icall.c
30301         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30302         (ves_icall_Type_make_array_type): New interncall.       
30303
30304 2003-12-04  Martin Baulig  <martin@ximian.com>
30305
30306         * locales.c: also change it in the !HAVE_ICU case.
30307
30308 2003-12-04  Dick Porter  <dick@ximian.com>
30309
30310         * icall.c:
30311         * locales.c: construct_compareinfo is now in CompareInfo, not
30312         CultureInfo.
30313
30314 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30315
30316         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30317         image->files array.
30318
30319         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30320         table as well.
30321
30322         * assembly.c (mono_assembly_load_references): Only load references
30323         once.
30324
30325         * class.c (mono_class_from_name): Avoid linear search of the 
30326         EXPORTEDTYPE table.
30327
30328         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30329
30330 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30331
30332         * image.h (MonoImage): Add 'field_cache' field.
30333
30334         * loader.c (mono_field_from_token): Cache field lookups.
30335         
30336         * reflection.c (mono_module_get_object): Fix name property.
30337
30338         * icall.c (ves_icall_get_enum_info): Update after changes to 
30339         mono_metadata_get_constant_index ().
30340
30341         * icall.c: Get rid of get_type_info icall, use a separate icall for
30342         each type property to avoid needless memory allocations. Fixes #51514.
30343
30344         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30345         to avoid needless binary searches.
30346
30347         * class.c (class_compute_field_layout): Move the initialization of
30348         field->def_value to mono_class_vtable ().
30349
30350         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30351         non-corlib types.
30352
30353         * object.c (mono_object_allocate): Make it inline.
30354
30355         * object.c (mono_object_allocate_spec): Make it inline.
30356         
30357 2003-12-02  Dick Porter  <dick@ximian.com>
30358
30359         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30360         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30361
30362 2003-12-01  Dick Porter  <dick@ximian.com>
30363
30364         * threads.c: Fix signature and call in CreateMutex and
30365         CreateEvent.
30366
30367 2003-12-01  Dick Porter  <dick@ximian.com>
30368
30369         * icall.c: 
30370         * locales.c: Implement string compares and searching
30371
30372         * object.h: Add extra Thread field
30373
30374 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30375
30376         * reflection.c (fixup_method): Add support for MonoCMethod.
30377
30378 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30379
30380         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30381
30382         * reflection.c (assembly_name_to_aname): Allow extra characters in
30383         assembly names. Fixes #51468.
30384
30385 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30386
30387         * exception.c (mono_exception_from_name_domain): New helper function.
30388
30389         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30390         exception object in the correct domain.
30391
30392         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30393         formatting + make a copy a the input data.
30394
30395         * loader.c (mono_get_method_from_token): Methods which contain
30396         native code do not have entries in the ImplMap.
30397
30398         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30399         Thanks to Gonzalo for spotting this.
30400         
30401         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30402         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30403
30404         * assembly.h (mono_assembly_load_from): Split the second part of 
30405         assembly loading into a new public function.
30406
30407         * exception.h (mono_get_exception_bad_image_format): New function.
30408
30409 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30410
30411         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30412         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30413         
30414         * icall.c: Add new icall for creating dynamic methods.
30415
30416         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30417
30418         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30419
30420         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30421         create a dynamic method.
30422
30423         * reflection.c (resolve_object): New helper function.
30424
30425         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30426         which manipulate it so they can also work on dynamic methods.
30427
30428         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30429         creating the MonoReflectionMethodAux structure if it is not needed.
30430         
30431         * reflection.h verify.c: Update after changes to object layout.
30432
30433         * reflection.c (method_builder_encode_signature): Fix compilation on
30434         gcc 2.95.x.
30435
30436 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30437
30438         * appdomain.h: Added support for context static fields. Added static_data
30439           field to MonoAppContext and renamed thread_static_fields to a more
30440           generic special_static_fields in MonoAppDomain, since it can now contain
30441           context static fields.
30442         * domain.c: Updated hashtable name.
30443         * object.c: Replaced field_is_thread_static() for a more generic
30444           field_is_special_static() which also checks for context static attribute.
30445           In mono_class_vtable(), added support for static context fields.
30446         * threads.c: Changed methods that manage thread static fields to more
30447           generic methods so they can be reused both for thread and context static
30448           data.
30449         * threads.h: Declared some new methods.
30450
30451 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30452
30453         * reflection.h: Update after changes to the managed types.
30454
30455         * reflection.c (encode_custom_modifiers): New helper function.
30456
30457         * reflection.c (method_encode_signature): Emit custom modifiers.
30458
30459         * reflection.c (field_encode_signature): Emit custom modifiers.
30460
30461 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30462
30463         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30464
30465         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30466         implementation.
30467
30468         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30469         icall.
30470
30471         * object.c (mono_field_get_value_object): New function.
30472
30473         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30474         specific.
30475
30476 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30477
30478         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30479         return a preallocated out-of-memory exception instance.
30480
30481         * object.c (out_of_memory): Use the new function.
30482
30483         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30484         flag is before the custom modifiers. Fixes #49802.
30485
30486 2003-11-16  Martin Baulig  <martin@ximian.com>
30487
30488         * class.c (mono_class_is_open_constructed_type): Implemented the
30489         MONO_TYPE_GENERICINST case.
30490
30491 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30492
30493         * assembly.c (mono_assembly_fill_assembly_name): New function to
30494         fill out the MonoAssemblyName structure.
30495         (mono_assembly_open): Use the new function.
30496
30497         * icall.c (fill_reflection_assembly_name): New helper function.
30498
30499         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30500         new function.
30501
30502         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30503
30504 2003-11-15  Martin Baulig  <martin@ximian.com>
30505
30506         * class.c (mono_class_is_open_constructed_type): New public
30507         function; checks whether a type is an open constructed type,
30508         ie. whether it still contains type parameters.
30509         (mono_class_inflate_generic_type): If we're a type parameter and
30510         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30511         type.
30512
30513         * class.h (MonoGenericInst): Added `guint32 is_open'.
30514
30515         * loader.c (method_from_methodspec): Check whether we're an open
30516         or closed constructed type and set `ginst->is_open'.
30517
30518         * reflection.c (mono_reflection_bind_generic_parameters): Check
30519         whether we're an open or closed constructed type and set
30520         `ginst->is_open'.
30521         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30522         from open constructed types.
30523
30524 2003-11-15  Martin Baulig  <martin@ximian.com>
30525
30526         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30527         a generic instance (instead of a generic type declaration) with
30528         unbound generic parameters, bind them to our actual types.
30529
30530 2003-11-14  Martin Baulig  <martin@ximian.com>
30531
30532         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30533
30534         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30535         an interface type, populate `res->interfaces' with instantiated
30536         versions of all the interfaces we inherit.
30537
30538 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30539
30540         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30541         when MONO_PATH is set but doesn't contain the install dir.
30542
30543 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30544
30545         * icall.c:
30546         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30547         it's also implemented in base classes. Fixes bug #50927.
30548
30549 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30550
30551         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30552         if this method is called from a finalizer. Fixes #50913.
30553
30554 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30555
30556         * threads.c: Implement VolatileRead/VolatileWrite
30557
30558         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30559
30560 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30561
30562         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30563         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30564         2.95.3.
30565
30566         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30567         from Peter Ross (pro@missioncriticalit.com).
30568         
30569 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30570
30571         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30572
30573 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30574
30575         * assembly.c (mono_assembly_load_references): Disable check because it
30576         triggers on older corlibs which lots of people have.
30577
30578 2003-11-12  Jackson Harper  <jackson@ximian.com>
30579
30580         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30581         load corlib.dll if mscorlib.dll is not found.
30582         * assembly.h: Remove corlib name define.
30583         * class.c:
30584         * domain.c:
30585         * image.c: Change corlib name to mscorlib.
30586         
30587 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30588
30589         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30590
30591 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30592
30593         * appdomain.h: Added loader_optimization here to sync with the C#
30594         code, and add disallow_binding_redirects field.
30595
30596 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30597
30598         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30599
30600         * reflection.c (mono_image_build_metadata): Fix crash on modules
30601         with no types.
30602
30603         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30604
30605         * icall.c (ves_icall_get_method_info): Return callingConvention as
30606         well.
30607
30608         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30609         namespaces from the EXPORTEDTYPE table as well.
30610
30611         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30612         from all modules inside the assembly.
30613         
30614 2003-11-11  Martin Baulig  <martin@ximian.com>
30615
30616         * reflection.c (mono_reflection_bind_generic_parameters): Make
30617         this work for interfaces.
30618
30619 2003-11-11  Martin Baulig  <martin@ximian.com>
30620
30621         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30622
30623 2003-11-11  Martin Baulig  <martin@ximian.com>
30624
30625         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30626         "MonoInflatedMethod" and "MonoInflatedCtor".
30627
30628 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30629
30630         * reflection.c (resolution_scope_from_image): Use the assembly table
30631         from the manifest module, since other modules don't have it.
30632
30633         * debug-helpers.c (mono_type_full_name): New helper function.
30634
30635         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30636
30637         * image.c (mono_image_load_file_for_image): New public function which
30638         is a replacement for the load_file_for_image in class.c.
30639
30640         * assembly.c (mono_assembly_load_module): A wrapper for the function
30641         above which does assembly association and reference loading too.
30642
30643         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30644
30645 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30646
30647         * appdomain.c: not all of the attributes for the full assembly name
30648         are required and the order doesn't matter. Fixes bug #50787.
30649
30650 2003-11-10  Dick Porter  <dick@ximian.com>
30651
30652         * locales.c: Use platform-endian UTF16
30653
30654 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30655
30656         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30657         
30658 2003-11-10  Martin Baulig  <martin@ximian.com>
30659
30660         * metadata.c
30661         (mono_metadata_load_generic_params): Make this actually work.
30662
30663         * reflection.c (mono_reflection_bind_generic_parameters): If our
30664         parent is a generic instance, pass all the `types' to it, no
30665         matter whether it has the same number of type parameters or not.
30666
30667 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30668
30669         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30670
30671         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30672         assignment code to this function so it gets called recursively for all
30673         modules.
30674
30675         * image.c (load_modules): Remove the assembly assignment since it is
30676         now done by mono_assembly_load_references.
30677         
30678         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30679         Add 'module' argument.
30680         (mono_module_get_types): New helper function.
30681         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30682
30683 2003-11-08  Martin Baulig  <martin@ximian.com>
30684
30685         * class.c (mono_class_inflate_generic_method): Interface method
30686         don't have a header.
30687
30688         * reflection.c (mono_image_get_methodspec_token): Take an
30689         additional `MonoGenericInst *' argument instead of reading it from
30690         the header; this is necessary to support interfaces.
30691         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30692         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30693         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30694         argument.
30695
30696         * reflection.h (MonoReflectionInflatedMethod): Added
30697         `MonoGenericInst *ginst'.
30698
30699 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30700
30701         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30702
30703 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30704
30705         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30706
30707 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30708
30709         * reflection.c 
30710         (reflection_methodbuilder_from_method_builder):
30711         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30712         initialize a ReflectionMethodBuilder structure.
30713         (mono_image_get_methodbuilder_token):
30714         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30715         tokens which point to types in another module inside the same assembly.
30716
30717         * reflection.c: Use the new helper functions.
30718         
30719         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30720
30721         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30722         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30723
30724         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30725         neccesary.
30726
30727         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30728         current module. Emit the manifest only for the main module.
30729
30730         * reflection.c (mono_image_create_token): Add assertion when a 
30731         memberref needs to be created.
30732
30733         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30734
30735         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30736         larger buffer for the custom attribute blob. Fixes #50637.
30737         
30738 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30739
30740         * threadpool.c: notify listener on async processing handles after
30741         invoking the async callback. Thanks to Zoltan.
30742
30743 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30744
30745         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30746         avoid code duplication.
30747
30748         * reflection.h (MonoDynamicImage): New type which is currently unused,
30749         but will be used through the ref.emit code in place of 
30750         MonoDynamicAssembly.
30751
30752         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30753         object layout.
30754
30755         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30756         a MonoDynamicImage instead of just a MonoImage.
30757         
30758         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30759         icalls to ModuleBuilder but keep their semantics, so they will work
30760         with moduleb->assemblyb. This will change later.
30761         
30762 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30763
30764         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30765         object layout.
30766
30767         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30768         main module, since it is now done by the managed code.
30769
30770 2003-11-03  Martin Baulig  <martin@ximian.com>
30771
30772         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30773         `ginst->klass' here.
30774         (method_encode_methodspec): Don't use the `ginst->generic_method's
30775         klass if it's a generic instance, use `ginst->klass' in this case.
30776
30777 2003-11-03  Martin Baulig  <martin@ximian.com>
30778
30779         * reflection.c (mono_image_get_generic_method_param_info):
30780         Removed, use mono_image_get_generic_param_info() instead.
30781         (mono_image_get_type_info): Write the GenericParam table before
30782         the Method table.  This is neccessary because in the GenericParam
30783         table, type parameters of the class (ie. '!0' etc.) must come
30784         before the ones from its generic methods (ie. '!!0' etc).
30785
30786 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30787
30788         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30789
30790 2003-11-02  Martin Baulig  <martin@ximian.com>
30791
30792         * reflection.c (create_generic_typespec): Take a
30793         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30794         the generic parameters from it.
30795
30796 2003-11-02  Martin Baulig  <martin@ximian.com>
30797
30798         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30799         instead of a `MonoClassField *' since we just need the type.
30800         (create_generic_typespec): New static function.  Creates a
30801         TypeSpec token for a generic type declaration.
30802         (mono_image_get_generic_field_token): New static function.
30803         (mono_image_create_token): If we're a FieldBuilder in a generic
30804         type declaration, call mono_image_get_generic_field_token() to get
30805         the token.
30806
30807 2003-11-02  Martin Baulig  <martin@ximian.com>
30808
30809         * reflection.h
30810         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30811         `MonoReflectionGenericInst *declaring_type' and
30812         `MonoReflectionGenericInst *reflected_type' fields.
30813
30814         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30815         `MonoReflectionGenericInst *declaring_type' and a
30816         `MonoReflectionGenericInst *reflected_type' argument instead of a
30817         single `MonoReflectionGenericInst *type' one.  Set
30818         `res->declaring_type' and `res->reflected_type' from them.
30819         (mono_reflection_inflate_field): Likewise.      
30820
30821 2003-11-02  Martin Baulig  <martin@ximian.com>
30822
30823         * class.c (mono_class_setup_vtable): Don't store generic methods
30824         in the vtable.  
30825
30826 2003-11-02  Martin Baulig  <martin@ximian.com>
30827
30828         * reflection.h (MonoReflectionGenericInst): Added
30829         `MonoReflectionType *declaring_type'.
30830
30831         * reflection.c (mono_reflection_bind_generic_parameters): Use
30832         `if (tb->parent)' instead of `klass->parent'.
30833
30834 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30835
30836         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30837         with an empty ASSEMBLY table.
30838
30839         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30840         variable in the inner and outer loops.
30841
30842 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30843
30844         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30845         argument.
30846
30847         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30848         
30849         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30850         icalls. Instead, do everything in managed code. This is needed since
30851         it is hard to restore the original domain etc. in unmanaged code in the
30852         presence of undeniable exceptions.
30853
30854         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30855         New icalls to push and pop appdomain refs.
30856
30857 2003-10-31  Martin Baulig  <martin@ximian.com>
30858
30859         * class.c (inflate_generic_type): Renamed to
30860         mono_class_inflate_generic_type() and made it public.
30861
30862         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30863         New interncall.
30864
30865         * loader.c (mono_field_from_memberref): Also set the retklass for
30866         typespecs.
30867
30868         * fielder.c (mono_image_get_inflated_field_token): New static
30869         method; creates a metadata token for an inflated field.
30870         (mono_image_create_token, fixup_method): Added support for
30871         "MonoInflatedField".
30872         (fieldbuilder_to_mono_class_field): New static function.
30873         (mono_reflection_inflate_field): New public function.
30874
30875         * reflection.h
30876         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30877         (MonoReflectionInflatedField): New typedef.     
30878
30879 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30880
30881         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30882         for Solaris and other platforms without s6_addr16
30883
30884 2003-10-30  Martin Baulig  <martin@ximian.com>
30885
30886         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30887         argument instead of two.
30888         (mono_class_inflate_generic_signature): Likewise.
30889         (inflate_generic_header): Likewise.
30890         (mono_class_inflate_generic_method): Likewise.  In addition, if
30891         `ginst->klass' is set, it becomes the new `method->klass'.
30892
30893         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30894         field.
30895
30896         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30897         first byte. [FIXME]
30898         (method_encode_methodspec): If we have generic parameters, create
30899         a MethodSpec instead of a MethodRef.
30900         (fixup_method): Added support for "MonoInflatedMethod" and
30901         "MonoInflatedCtor".
30902         (mono_image_create_token): Added support for "MonoInflatedMethod"
30903         and "MonoInflatedCtor".
30904         (inflated_method_get_object): New static function; returns a
30905         managed "System.Reflection.MonoInflatedMethod" object.
30906         (mono_reflection_bind_generic_method_parameters): Return a
30907         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30908         (mono_reflection_inflate_method_or_ctor): Likewise.
30909         (mono_image_get_generic_method_param_info): Initialize unused
30910         fields to zero.
30911         (mono_image_get_generic_param_info): Likewise.
30912
30913         * reflection.h (MonoReflectionInflatedMethod): New public
30914         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30915         "S.R.MonoInflatedCtor" classes.
30916
30917         * loader.c (method_from_memberref): If we're a TypeSpec and it
30918         resolves to a generic instance, inflate the method.
30919
30920 2003-10-28  Dick Porter  <dick@ximian.com>
30921
30922         * object.c (mono_runtime_run_main): Convert command-line arguments
30923         into utf8, falling back to the user's locale encoding to do so.
30924
30925 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30926
30927         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30928         at this time.
30929
30930         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30931
30932         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30933         up icalls at method definition time. Partially fixes #33569.
30934
30935 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30936
30937         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30938         marshalling of arrays. Fixes #50116.
30939
30940         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30941
30942         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30943         points to a vtable in the dying appdomain.
30944
30945         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30946         listeners into unmanaged code inside the lock.
30947
30948         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30949         domains and add some comments.
30950
30951 2003-10-25  Martin Baulig  <martin@ximian.com>
30952
30953         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30954
30955         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30956
30957         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30958         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30959         currently parsing.  Create the generic class and store it in
30960         `generic_inst->klass' before parsing the type arguments.  This is
30961         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30962         for an example.
30963         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30964         to support recursive typespec entries.
30965
30966         * class.c (mono_class_setup_parent): If our parent is a generic
30967         instance, we may get called before it has its name set.
30968         (mono_class_from_generic): Splitted into
30969         mono_class_create_from_generic() and mono_class_initialize_generic().
30970
30971 2003-10-25  Martin Baulig  <martin@ximian.com>
30972
30973         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30974         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30975         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30976         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30977
30978         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30979         (create_typespec): Likewise.
30980         (mono_reflection_bind_generic_parameters): Return a
30981         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30982         (mono_reflection_inflate_method_or_ctor): New public function.
30983
30984         * reflection.h (MonoReflectionGenericInst): New typedef.        
30985
30986 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30987
30988         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30989         inside the domain lock. Fixes #49993.
30990         
30991         * object.c (mono_class_vtable): When typed allocation is used, 
30992         allocate vtables in the GC heap instead of in the mempool, since the
30993         vtables contain GC descriptors which are used by the collector even
30994         after the domain owning the mempool is unloaded.
30995
30996         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30997
30998         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30999         reflect what it does. Also invalidate mempools instead of freeing
31000         them if a define is set.
31001
31002         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31003         of the appdomain.
31004         
31005         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31006         hold the finalizable objects in this domain.
31007
31008         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31009         appdomain.
31010
31011         * appdomain.c (mono_domain_set): New function to set the current
31012         appdomain, but only if it is not being unloaded.
31013
31014         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31015         appdomain which is being unloaded.
31016         
31017         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31018         unloading of the root appdomain.
31019
31020         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31021         icall to execute a method in another appdomain. Intended as a 
31022         replacement for InternalSetDomain, which can confuse the code 
31023         generation in the JIT.
31024
31025         * appdomain.c (mono_domain_is_unloading): New function to determine
31026         whenever an appdomain is unloading.
31027
31028         * appdomain.c (mono_domain_unload): New function to correctly unload
31029         an appdomain.
31030
31031         * assembly.c (mono_assembly_load_references): Check that an assembly
31032         does not references itself.
31033
31034         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31035         domain manually, it asks the finalizer thread to do it, then waits for
31036         the result. Also added a timeout.
31037
31038         * icall.c: Register the new icalls.
31039
31040         * threads.h threads.c: Export the mono_gc_stop_world and 
31041         mono_gc_start_world functions.
31042         
31043         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31044         function to fill out the mempool with 0x2a.
31045
31046 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31047
31048         * reflection.h (MonoReflectionMethodAux): New structure to store
31049         information which is rarely used, thus is not in the MonoMethod
31050         structure.
31051
31052         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31053         store the aux info.
31054
31055         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31056         and marshalling info into the aux structure.
31057
31058         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31059         from the aux structure.
31060
31061         * loader.c (mono_method_get_param_names): Retrieve the param names from
31062         the aux structure.
31063         
31064 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31065
31066         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31067         warning.
31068
31069 2003-10-21  Dick Porter  <dick@ximian.com>
31070
31071         * socket-io.c
31072         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31073         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31074
31075 2003-10-21  Martin Baulig  <martin@ximian.com>
31076
31077         * reflection.c (mono_reflection_bind_generic_parameters):
31078         `klass->parent' is NULL for interfaces.
31079
31080 2003-10-21  Martin Baulig  <martin@ximian.com>
31081
31082         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31083
31084 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31085
31086         * exception.c (mono_exception_from_name_msg): New helper function for
31087         creating exceptions and initializing their message field.
31088
31089         * exception.c: Simplify functions using the new helper.
31090
31091         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31092         New function.
31093
31094         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31095         mono_raise_exception, since otherwise gcc doesn't generate the function
31096         epilog for raise_exception, confusing the stack unwinding in the JIT.
31097         Fixes #45043.
31098
31099         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31100         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31101         Fixes #49499.
31102
31103 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31104
31105         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31106         utf8.
31107
31108 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31109
31110         * icall.c: Removed GetUninitializedObject method because
31111           AllocateUninitializedClassInstance does the same.
31112
31113 2003-10-18  Martin Baulig  <martin@ximian.com>
31114
31115         * class.c (inflate_generic_signature): Renamed to
31116         mono_class_inflate_generic_signature() and made it public.
31117         (my_mono_class_from_generic_parameter): New static function; if we
31118         don't already have the generic parameter's MonoClass, create a
31119         very simple one which is just used internally in the runtime and
31120         not passed back to managed code.
31121
31122         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31123
31124         * metadata.h (MonoMethodSignature): Moved the
31125         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31126         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31127
31128         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31129         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31130         interncall on the MonoMethod class, not on MethodInfo.
31131         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31132         calling mono_reflection_bind_generic_method_parameters() directly.
31133
31134         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31135         return the already computed `method->signature'.
31136         (method_from_methodspec): New static function to load a method
31137         from a MethodSpec entry.
31138         (mono_get_method_from_token): Call the new method_from_methodspec()
31139         for MethodSpec tokens.  
31140         (mono_get_method_from_token): If we're a generic method, load the
31141         type parameters.
31142
31143         * reflection.c (mono_image_get_memberref_token): Allow
31144         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31145         table.
31146         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31147         (mono_image_create_token): First check whether it's a generic
31148         method (so we'd need to create a MethodSpec), then do the other
31149         two alternatives.
31150         (mono_reflection_bind_generic_method_parameters): Return a
31151         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31152         called directly from the interncall.
31153
31154 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31155
31156         * reflection.c (load_public_key): Move loading of the public key
31157         into managed code.
31158
31159         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31160
31161         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31162         fields.
31163
31164         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31165         culture, hash_alg and public_key. Fixes #49555.
31166
31167 2003-10-17  Martin Baulig  <martin@ximian.com>
31168
31169         * class.h (MonoGenericInst): Moved this declaration here and added
31170         `MonoMethod *generic_method'.
31171
31172         * icall.c
31173         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31174         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31175
31176         * metadata.c (mono_metadata_type_equal): Two types of
31177         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31178         index; ie. don't compare the address of the `MonoGenericParam'
31179         structure.
31180         (mono_metadata_load_generic_params): Removed the `MonoMethod
31181         *method' argument.
31182
31183         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31184         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31185
31186         * reflection.c (method_encode_signature): Encode the number of
31187         generic parameters.
31188         (encode_generic_method_sig): New static function.
31189         (method_encode_methodspec): New static function; creates an entry
31190         in the MethodSpec table for a generic method.
31191         (mono_image_get_methodspec_token): New static function.
31192         (mono_image_create_token): Call mono_image_get_methodspec_token()
31193         for generic methods.
31194         (mono_reflection_bind_generic_method_parameters): New public
31195         function.  Instantiates a generic method.
31196
31197 2003-10-16  Martin Baulig  <martin@ximian.com>
31198
31199         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31200         *gen_params' here from MonoMethodHeader.
31201
31202         * metadata.c (mono_metadata_parse_method_signature): If we have
31203         generic parameters, initialize `method->gen_params' and then set
31204         the correct `type->data.generic_param' in all the parameters.
31205
31206 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31207
31208         * threads.c (mono_threads_get_default_stacksize): New function to 
31209         return the default stacksize.
31210
31211         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31212         termination of the finalizer thread, since the previous method had
31213         race conditions. Fixes #49628.
31214
31215         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31216         as for the other managed threads.
31217
31218 2003-10-16  Martin Baulig  <martin@ximian.com>
31219
31220         * class.c (inflate_generic_signature): Copy `generic_param_count'
31221         and `gen_params'.
31222
31223         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31224         New interncall.
31225
31226         * metadata.c (mono_metadata_parse_method_signature): Actually set
31227         the `method->generic_param_count' here.
31228         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31229
31230 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31231
31232         * object.h: Add a new field to TypedRef to simplify the implementation
31233         of the REFANY opcodes in the JIT.
31234
31235         * icall.c: Make use of the new field.
31236
31237         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31238         dynamically.
31239
31240 2003-10-15  Martin Baulig  <martin@ximian.com>
31241
31242         * class.c (mono_class_from_gen_param): Renamed to
31243         mono_class_from_generic_parameter() and moved most of the
31244         functionality from mono_reflection_define_generic_parameter()
31245         here; ie. we create a "real" class here.
31246         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31247         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31248         previously been called.
31249
31250         * class.h (MonoGenericParam): Moved the declaration of this struct
31251         here from metadata.h and added `MonoMethod *method'.
31252
31253         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31254         interncall.
31255
31256         * loader.c (mono_get_method_from_token): If we have any generic
31257         parameters, call mono_metadata_load_generic_params() to read them
31258         from the MONO_TABLE_GENERICPAR.
31259
31260         * metadata.c (mono_metadata_load_generic_params): Added
31261         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31262
31263         * metadata.h (MonoMethodSignature): Replaced
31264         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31265         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31266
31267         * reflection.c (mono_reflection_define_generic_parameter): Moved
31268         most of the functionality into the new
31269         mono_class_from_generic_parameter(); set the `method' field if
31270         we're a method parameter.       
31271
31272 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31273
31274         * marshal.c (emit_struct_conv): if native size is 0
31275         emit no code.
31276
31277 2003-10-14  Martin Baulig  <martin@ximian.com>
31278
31279         * icall.c: The generics API has changed in the spec since it was
31280         added to System.Type; these modifications make it match the spec
31281         again.
31282         (ves_icall_Type_GetGenericParameters): Renamed to
31283         `ves_icall_Type_GetGenericArguments'.
31284         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31285         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31286         `ves_icall_MonoType_get_HasGenericArguments'.
31287         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31288         `ves_icall_MonoType_get_IsGenericParameter'.
31289         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31290         this is no interncall anymore.
31291         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31292         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31293
31294 2003-10-14  Martin Baulig  <martin@ximian.com>
31295
31296         * reflection.c (mono_reflection_bind_generic_parameters): Also
31297         inflate generic methods if we're reading the class from IL.
31298
31299 2003-10-13  Martin Baulig  <martin@ximian.com>
31300
31301         * reflection.c (mono_reflection_define_generic_parameter): This
31302         method isn't called directly from the icall anymore; take a
31303         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31304         method generic parameters.
31305         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31306         (method_builder_encode_signature): Encode generic parameters.
31307         (mono_image_get_method_info): Write generic params to the
31308         MONO_TABLE_GENERICPARAM table.
31309
31310         * reflection.h (MonoReflectionMethodBuilder): Added
31311         `MonoArray *generic_params'.
31312
31313         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31314
31315         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31316         wrapper for mono_reflection_define_generic_parameter().
31317         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31318
31319 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31320
31321         * marshal.h: Add missing function to fix build.
31322
31323         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31324         the SetLastError pinvoke attribute.
31325
31326         * marshal.c (mono_marshal_set_last_error): New helper function called
31327         by the generated code.
31328         
31329         * marshal.c (mono_mb_emit_branch): New helper function.
31330
31331         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31332
31333         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31334         classes as parameters and return values of delegates. Fixes #29256. 
31335
31336 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31337
31338         * locales.c: use gint32 in non HAVE_ICU case
31339
31340 2003-10-11  Martin Baulig  <martin@ximian.com>
31341
31342         * mono-debug.c (mono_debug_add_method): Added a workaround for
31343         bug #48591.
31344
31345 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31346
31347         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31348         delegates passed to native code must use the STDCALL calling 
31349         convention. Fixes #35987.
31350
31351 2003-10-10  Martin Baulig  <martin@ximian.com>
31352
31353         * class.c (inflate_generic_type): If we're inflating for a generic
31354         type instance (and not for a generic method), return
31355         MONO_TYPE_MVAR unchanged.
31356
31357 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31358
31359         * string-icalls.c: Join ignores null strings in the source array.
31360         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31361         * threads.c: GetAvailableTheads is slightly more accurate.
31362
31363 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31364
31365         * threads.h threads.c : add mono_threads_set_default_stacksize
31366         and pass default to CreateThread calls.
31367
31368 2003-10-09  Dick Porter  <dick@ximian.com>
31369
31370         * icall.c:
31371         * locales.h:
31372         * locales.c: Internal calls for constructing CultureInfo and
31373         related objects from libicu (if its available.)
31374
31375 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31376
31377         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31378
31379 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31380
31381         * threadpool.c: added an argument to async_invoke_thread that is the
31382         item to process, pass the MonoAsyncResult to the thread start function
31383         when creating a new thread. This way we don't need to acquire any lock
31384         when we're creating a new thread. Readded a semaphore for faster
31385         response times (instead of that Sleep i added).
31386
31387 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31388
31389         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31390         get daylight change dates better on Windows, fix handling
31391         of platforms without tm_gmtoff.
31392
31393 2003-10-06  Martin Baulig  <martin@ximian.com>
31394
31395         * class.c (inflate_generic_method): Renamed to
31396         mono_class_inflate_generic_method() and made public.
31397         (mono_class_init): Don't inflate the generic methods here.
31398         (mono_class_from_generic): Added `gboolean inflate_methods'
31399         argument.  Inflate the methods here.
31400
31401         * loader.c (mono_method_get_param_names): Ignore instances of
31402         generic types for the moment.
31403
31404         * reflection.c (fixup_method): Added support for inflated methods.
31405         (mono_image_create_token): Use mono_image_get_methodref_token()
31406         for inflated methods.
31407         (mono_custom_attrs_from_param): Ignore instances of generic types
31408         for the moment.
31409         (mono_reflection_bind_generic_parameters): New public function.
31410         Moved all the functionality from
31411         ves_icall_Type_BindGenericParameters() here and added support for
31412         dynamic types.
31413         (mono_reflection_define_generic_parameter): Initialize
31414         `klass->methods' here.
31415
31416         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31417         functionality into mono_reflection_define_generic_parameter().
31418         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31419         TypeBuilder, return that TypeBuilder.
31420
31421 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31422
31423         * appdomain.c: removed mono_delegate_semaphore.
31424
31425         * threadpool.c:
31426         (mono_thread_pool_add): moved hash table creation inside and the thread 
31427         creation outside of the critical region.
31428         (mono_thread_pool_finish): removed obsolete code.
31429         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31430         continue or exit the thread depending on the queue.
31431
31432 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31433
31434         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31435         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31436         handle more bool marshalling options
31437
31438 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31439
31440         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31441         arrays of structs. Also add a more descriptive error message when
31442         a structure member is marshalled as LPArray.
31443
31444 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31445
31446         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31447         marshalling arrays of complex types. Fixes #29098. Also remove an
31448         usused and incomplete function.
31449
31450 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31451
31452         * gc.c: report heap_size - free_bytes as total memory allocated
31453         (bug#49362).
31454
31455 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31456
31457         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31458         fix timezone handling problems on Windows.
31459         
31460         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31461         asserts when the year is outside the range handled by ms the functions.
31462
31463         * class.c (setup_interface_offsets): If the class is an interface,
31464         fill out its interface_offsets slot.
31465
31466 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31467
31468         * threadpool.c: mark threadpool threads as background.
31469
31470 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31471
31472         * decimal.c - define DECINLINE to nothing if not using GCC
31473
31474 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31475
31476         * assembly.c: More refcount fixes.
31477
31478 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31479
31480         * string-icalls.c: if we're not trimming, return the same string.
31481         When not splitting, don't create a new string.
31482
31483 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31484
31485         * image.c:
31486         (mono_image_open): increment the ref_count inside the critical section.
31487
31488 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31489
31490         * image.c (mono_image_open): Fix reference counting bug.
31491
31492 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31493
31494         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31495         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31496         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31497         mono_lookup_pinvoke_call throws.        
31498
31499 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31500
31501         * reflection.c (mono_reflection_parse_type): Fix #49114.
31502
31503         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31504         temporary workaround for cygwin header problem.
31505
31506         * object.c (mono_object_isinst): Synchronize this with the code
31507         generated by the JIT for casts.
31508
31509 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31510
31511         * reflection.c (encode_type): Fix #38332.
31512
31513 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31514
31515         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31516         the original method from the wrapper method.
31517
31518 2003-09-25  Martin Baulig  <martin@ximian.com>
31519
31520         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31521         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31522         (ves_icall_Type_get_IsGenericInstance): New interncall.
31523
31524 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31525
31526         * object.c: fix cast warning in big endian code.
31527
31528 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31529
31530         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31531         
31532 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31533
31534         * assembly.c: don't call check_env from mono_assembly_load. It's
31535         already done once in mono_assemblies_init and may cause headaches when
31536         multiple threads are loading assemblies.
31537
31538 2003-09-19  Martin Baulig  <martin@ximian.com>
31539
31540         * reflection.c (mono_reflection_define_generic_parameter): Don't
31541         allocate `klass->methods', set `klass->flags' to
31542         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31543
31544 2003-09-18  Martin Baulig  <martin@ximian.com>
31545
31546         * class.c (mono_class_init): Don't create `class->methods' if it's
31547         already initialized.
31548
31549         * metadata.c (mono_metadata_load_generic_params): Make this
31550         actually work.
31551
31552         * reflection.c (mono_reflection_define_generic_parameter): Set
31553         parent class and interfaces from the constraints.
31554
31555         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31556         to keep this struct in sync with the declaration in TypeBuilder.cs.
31557
31558 2003-09-17  Martin Baulig  <martin@ximian.com>
31559
31560         * metadata.h (MonoType): Replaced the data's `int type_param'
31561         field with `MonoGenericParam *generic_param'.
31562         (MonoGenericParam): Added `MonoClass *klass'.
31563
31564         * class.c (mono_class_from_gen_param): Removed the
31565         `MonoImage *image' and `int type_num' arguments.
31566
31567         * metadata.c (mono_metadata_parse_generic_param): New static
31568         method; creates a MonoGenericParam which just contains the index.
31569         (do_mono_metadata_parse_type): Call
31570         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31571         MONO_TYPE_MVAR.
31572
31573         * reflection.c (mono_image_typedef_or_ref): Generic type
31574         parameters may be in the same assembly, but never use a typedef
31575         for them.
31576         (mono_reflection_define_generic_parameter): We're now creating a
31577         "real" class for the type parameter; it's now safe to call
31578         mono_class_from_mono_type() on the class'es type, it'll do the
31579         right thing.
31580
31581 2003-09-16  Martin Baulig  <martin@ximian.com>
31582
31583         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31584         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31585         the `symfile' data structure must be fully initialized before it
31586         gets added to the table.
31587
31588 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31589
31590         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31591
31592         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31593         class init trampolines.
31594
31595 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31596
31597         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31598         to the built-in profiler to turn off time and allocation profiling
31599         respectively.
31600
31601 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31602
31603         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31604         g_direct_equal.
31605
31606         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31607         in human readable form.
31608
31609 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31610
31611         * reflection.c icall.c: Fixed warnings.
31612
31613         * image.c (load_class_names): Use a temporary hash table to hold the
31614         namespaces in order to avoid doing many string comparisons.
31615
31616         * image.h: Fix typo.
31617
31618         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31619         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31620         since the NULL case is short-circuited inside g_hash_table_lookup, 
31621         leading to better performance.  
31622
31623         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31624         obtain the first custom attribute for a given index. Depends on the
31625         CustomAttribute table being sorted by the parent field.
31626
31627         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31628         for better performance.
31629
31630 2003-09-07  Martin Baulig  <martin@ximian.com>
31631
31632         * class.c (mono_class_init): If we're a generic instance, inflate
31633         all our methods instead of loading them from the image.
31634         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31635
31636 2003-09-07  Martin Baulig  <martin@ximian.com>
31637
31638         * mono-debug-debugger.c: Added support for constructors.
31639
31640 2003-09-06  Martin Baulig  <martin@ximian.com>
31641
31642         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31643         New interncall.
31644
31645         * reflection.c (mono_reflection_setup_generic_class): Call
31646         ensure_runtime_vtable() to create the vtable.
31647
31648 2003-09-05  Martin Baulig  <martin@ximian.com>
31649
31650         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31651         MONO_TYPE_MVAR.
31652
31653 2003-09-04  Martin Baulig  <martin@ximian.com>
31654
31655         * reflection.c (mono_reflection_define_generic_parameter): Generic
31656         parameters start with zero.
31657
31658 2003-09-04  Martin Baulig  <martin@ximian.com>
31659
31660         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31661
31662         * reflection.h (MonoReflectionGenericParam): New typedef.
31663         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31664         the generic parameters from the managed TypeBuilder.
31665
31666         * reflection.c (mono_reflection_define_generic_parameter): New function.
31667         (mono_reflection_create_runtime_class): Encode generic parameters.
31668         (mono_reflection_setup_generic_class): New function; this is
31669         called after adding adding all generic params to the TypeBuilder.
31670         (encode_type): Added MONO_TYPE_VAR.
31671
31672 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31673
31674         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31675         here from the JIT.
31676
31677         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31678         load hook.
31679
31680 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31681
31682         * reflection.h reflection.c class.h class.c: Delete duplicate 
31683         definition of mono_type_get_name () from reflection.c and export the
31684         one in class.c.
31685
31686         * class.c: Class loading fixes from Bernie Solomon 
31687         (bernard@ugsolutions.com).
31688
31689         * reflection.c: Endianness fixes from Bernie Solomon 
31690         (bernard@ugsolutions.com).
31691         
31692 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31693
31694         * assembly.h assembly.c: Define a file format version for AOT
31695         libraries.
31696         
31697         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31698
31699         * appdomain.h (MonoJitInfo): New field to determine whenever the
31700         code is domain neutral.
31701         
31702 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31703
31704         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31705
31706 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31707
31708         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31709         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31710         Avoid caching the result since strings must be domain specific. Fixes
31711         #48050.
31712
31713 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31714
31715         * marshal.c (mono_marshal_init): Make this callable multiple times
31716         since it is hard to find a correct place to call it.
31717
31718         * object.c (mono_runtime_class_init): Execute static constructors in
31719         the correct appdomain.
31720
31721         * image.c (build_guid_table): Handle the case when multiple images have
31722         the same GUID.
31723
31724 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31725
31726         * icall.c: added a couple of icalls for System.Web.
31727
31728 2003-08-28  Martin Baulig  <martin@ximian.com>
31729
31730         * icall.c (ves_icall_Type_BindGenericParameters): Use
31731         `klass->generic_inst' instead of `&klass->byval_arg' in the
31732         mono_type_get_object() call.  The returned type must be
31733         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31734
31735 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31736
31737         * NOTES: New file.
31738
31739         * object.c (mono_class_proxy_vtable): Make it thread safe.
31740
31741         * pedump.c: Fix warning.
31742
31743         * object.c appdomain.h: Get rid of metadata_section. 
31744         It is no longer needed and it was causing deadlocks with domain->lock.
31745
31746         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31747
31748 2003-08-26  Martin Baulig  <martin@ximian.com>
31749
31750         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31751
31752 2003-08-26  Martin Baulig  <martin@ximian.com>
31753
31754         * pedump.c (main): Call mono_metadata_init(),
31755         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31756         and mono_loader_init().
31757
31758 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31759
31760         * loader.h: Add missing include to fix build.
31761
31762         * image.h: mono_image_load_references is no more.
31763
31764         * assembly.c: Reworked assembly loading to make it really thread safe.
31765         After these changes, the assembly returned by mono_assembly_open is
31766         fully initialized, i.e. all its references assemblies are loaded.
31767
31768         * assembly.c (mono_image_load_references): Renamed to 
31769         mono_assembly_load_references, and made private, since clients no
31770         longer need to call it.
31771
31772         * class.c: Removed calls to mono_assembly_load_references, since it was
31773         a source of deadlocks.
31774
31775         * loader.h loader.c class.h class.c: Protect data structures using a 
31776         new lock, the loader lock.
31777
31778         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31779         GPtrArrays only when needed.
31780
31781         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31782         into empty structures by mcs. Fixes pinvoke7.cs.
31783         
31784         * domain.c (mono_init): Call a new initialization function.
31785
31786         * appdomain.c (mono_runtime_init): Call the new initializer function
31787         of the marshal module.
31788
31789         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31790         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31791
31792         * marshal.h marshal.c: Added locks around the wrapper caches to make
31793         this module thread safe.
31794
31795         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31796         this argument. Fixes pinvoke1.exe.
31797
31798 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31799
31800         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31801         enumeration of values. Removed fields to store remote call output values in
31802         MonoAsyncResult. Not needed any more.
31803         * object.c: Initialize call_type and async_result fields in mono_message_init.
31804         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31805         dispatching the message.
31806         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31807         async call to finish. To do it use a message with EndInvoke call type.
31808
31809 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31810
31811         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31812         determines whenever a method has marshalling info.
31813
31814 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31815
31816         * assembly.c: fix the build on windows.
31817
31818 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31819
31820         * object.cs: Fixed bug #47785.
31821
31822 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31823
31824         * string-icalls.c (StringReplace): If their are no occurances of
31825         the old string found return a reference to the supplied
31826         string. This saves some memory and matches MS behavoir.
31827         
31828 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31829
31830         * socket-io.c: fixed compilation for systems that define AF_INET6
31831         and don't define SOL_IP/SOL_IPV6.
31832
31833 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31834
31835         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31836         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31837
31838         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31839
31840         * domain.c: Make this module thread safe.
31841
31842         * domain.c (mono_init): Call new initialization function.
31843
31844         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31845         reference types too. Fixes #38812.
31846
31847         * image.c (mono_image_init): Fixed warnings.
31848
31849         * class.c (mono_class_from_typeref): Handle assembly load failure
31850         correctly.
31851
31852         * appdomain.c (add_assemblies_to_domain): Handle the case when
31853         the references of an assembly are not yet loaded.
31854
31855         * metadata.c image.c assembly.c: Moved initialization of global
31856         variables to a separate function called at startup since lazy 
31857         initialization of these variables is not thread safe.
31858         
31859         * image.c assembly.c: Made this module thread safe by adding locks in 
31860         the appropriate places.
31861
31862         * domain.c (mono_init): Call the new initialization functions of the
31863         three modules.
31864
31865 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31866
31867         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31868           make a direct call. It is proxy's work to make the call asynchronous.
31869           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31870           the return values.
31871         * object.cs: mono_method_call_message_new(): read AsyncResult and
31872           state object from parameters list, if this info is requested.
31873         * object.h: Added fields to store remote call output values in
31874           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31875
31876 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31877
31878         * object.h: add needed fields to MonoThread.
31879         * threads.c, threads.h: allow registering a function to cleanup data
31880         allocated per thread by the JIT.
31881
31882 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31883
31884         * loader.h: portability fix by Bernie Solomon
31885         * <bernard@ugsolutions.com>.
31886
31887 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31888
31889         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31890         return a MonoArray. This simplifies the code and also ensures that
31891         the cache allways contains an object reference as a value.
31892
31893         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31894         function.
31895
31896 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31897
31898         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31899         fixes a problem with byte ordering when getting the address family for
31900         a socket.
31901
31902 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31903
31904         * .cvsignore: Added monosn.
31905
31906         * reflection.h reflection.c loader.c: Added support for parameter
31907         marshalling to dynamically created types. Fixes #47295.
31908
31909 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31910
31911         * rand.c: remove useless warnings.
31912
31913 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31914
31915         * class.c: implemented ldtoken for methods and fieldrefs.
31916
31917 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31918
31919         * threadpool.c: when mono_async_invoke was called, no one took care of
31920         monitoring the queue. So if the method invoked took some time and we
31921         got new async invoke requests after 500 ms (the thread created waited
31922         that long in WaitForSingleObject), the new async invoke was not called
31923         until the previous one finished.
31924
31925         This is fixed now. Thanks to Totte for helping with it.
31926
31927 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31928
31929         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31930
31931 2003-08-11  Martin Baulig  <martin@ximian.com>
31932
31933         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31934
31935 2003-08-06  Martin Baulig  <martin@ximian.com>
31936
31937         * mono-debug-debugger.c: Added support for static fields,
31938         properties and methods.
31939
31940 2003-08-06  Martin Baulig  <martin@ximian.com>
31941
31942         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31943         make this work for applications with multiple application domains.
31944
31945 2003-08-04  Martin Baulig  <martin@ximian.com>
31946
31947         * mono-debug-debugger.c: Completely reworked the type support; the
31948         most important thing is that we're now just using one single
31949         `MonoType' instance per type.
31950
31951 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31952
31953         * mono-endian.h, mono-endian.c, icall.c: Added icall
31954         ves_icall_System_Double_AssertEndianity to assert double word endianity
31955         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31956
31957 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31958
31959         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31960         support, icalls and fixes.
31961
31962 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31963
31964         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31965         classes that are a punctuation character in .NET is not the same a
31966         g_unichar_ispunct.
31967
31968 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31969
31970         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31971
31972 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31973
31974         * icall.c: Add new MemCopy internalcall.
31975         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31976         Simplified code; It is not necessary to handle all the cases here,
31977         as the C# code takes care of it.  Only handle the case of the name
31978         resource embedded into the assembly.
31979
31980         Changed signature to return the data pointer and the size of the
31981         data. 
31982
31983 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31984
31985         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31986         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31987
31988 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31989
31990         * socket-io.c: ignore EINTR error in select.
31991
31992 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31993
31994         * class.h, class.c: removed unused subclasses field in MonoClass.
31995
31996 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31997
31998         * icall.c: improve fix of get_base_definition(). If the parent class
31999           doesn't have the mehod, look at the parent of the parent.
32000         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32001           to check if a parameter is an in or out parameter
32002           (PARAM_ATTRIBUTE_IN is not set by default).
32003           mono_method_return_message_restore(): Use mono_class_value_size to
32004           get the size of a value type. mono_type_stack_size (parameterType)
32005           does not return the correct value if parameterType is byRef.
32006           mono_load_remote_field(), mono_load_remote_field_new(),
32007           mono_store_remote_field(), mono_store_remote_field_new():
32008           raise exception if the remote call returns an exception.
32009
32010 2003-07-28  Martin Baulig  <martin@ximian.com>
32011
32012         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32013         method.  This is a wrapper around mono_runtime_invoke() which
32014         boxes the instance object if neccessary.
32015
32016 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32017
32018         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32019         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32020
32021 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32022
32023         * icall.c: disable mcs bug workaround.
32024
32025 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32026
32027         * object.c (mono_runtime_class_init): Take the metadata_section
32028         mutex before obtaining the domain mutex.
32029
32030         * appdomain.h: Added definition of metadata_section mutex here. 
32031
32032         * object.c: define metadata_mutex here.
32033
32034 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32035
32036         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32037         fixed.
32038
32039 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32040
32041         * reflection.c: Fix bug #46669
32042
32043 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32044
32045         * exception.c:
32046         * exception.h:
32047         * icall.c:
32048         * object.h: fill in the type name for TypeLoadException.
32049
32050 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32051
32052         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32053         relationship between TypeBuilders while compiling corlib) and bug
32054         45993 (Array types returned from the runtime while compiling
32055         corlib were from the loaded corlib).
32056
32057 2003-07-22  Martin Baulig  <martin@ximian.com>
32058
32059         * mono-debug-debugger.c: Reworked the type support a bit more;
32060         distinguish between types and classes.
32061
32062 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32063
32064         * icall.c: add IsArrayImpl icall.
32065
32066 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32067
32068         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32069         initializing real_size only once. Also fix bug #46602.
32070
32071 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32072
32073         * object.c: Renamed mono_metadata_section to metadata_section.
32074
32075 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32076
32077         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32078           empty array if the type is an array. Fixed.
32079           ves_icall_MonoMethod_get_base_definition: if the base method
32080           is abstract, get the MethodInfo from the list of methods of
32081           the class.
32082         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32083           and it was 1-based. Fixed in mono_param_get_objects.
32084
32085 2003-07-20  Martin Baulig  <martin@ximian.com>
32086
32087         * mono-debug.h: Set version number to 31.
32088         (mono_debug_init): Added `MonoDomain *' argument.
32089
32090         * mono-debug-debugger.c: Reworked the type support; explicitly
32091         tell the debugger about builtin types; pass the `klass' address to
32092         the debugger.
32093
32094 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32095
32096         * image.c: Allow new metadata tables to be loaded without a
32097         warning. Also update the warning message to give the new constant value.
32098                 
32099 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32100
32101         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32102         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32103         array type representation changes.
32104
32105 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32106
32107         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32108         on Environment.Exit () call.
32109
32110 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32111
32112         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32113         requires a matching corlib.
32114
32115 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32116
32117         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32118           Committed again without the CRs.
32119         
32120 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32121
32122         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32123           getting it from the "this" socket instance. Did not work
32124           if the socket is a subclass of Socket.
32125           Also fixed bug #35371.
32126
32127 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32128
32129         * metadata.c: fixed size for TypedByRef.
32130         * loader.c: when searching for a method, consider the vararg amrker.
32131         * unicode.c, decimal.c: constify some arrays.
32132
32133 2003-07-15  Dick Porter  <dick@ximian.com>
32134
32135         * socket-io.c: Fixed compilation for gcc < 3.2.
32136
32137         Fixed compilation for machines that don't have AF_INET6 (thanks to
32138         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32139
32140         Fixed compile warnings.
32141         
32142         Fixed formatting and line endings.
32143
32144 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32145
32146         * socket-io.h:
32147         * socket-io.c: Added IPv6 support.
32148
32149 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32150
32151         * class.c (mono_class_is_assignable_from): New function to implement
32152         the is_assignable_from logic. Used by mono_object_isinst, 
32153         Type::IsAssignableFrom () and the interpreter.
32154
32155         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32156         Object, even interfaces.
32157         
32158         * object.c (mono_object_isinst): Implement in terms of 
32159         is_assignable_from.
32160
32161         * icall.c (ves_icall_type_is_assignable_from): New icall.
32162
32163 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32164
32165         * domain.c (foreach_domain): fix compiler warning.
32166
32167 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32168
32169         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32170         not available on all plattforms
32171
32172 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32173
32174         * image.h image.c: Store the metadata version string in MonoImage.
32175         * icall.c: New icall to retrieve the image version.
32176         * reflection.c (create_dynamic_image): Fill in the image version field
32177         * reflection.c (build_compressed_metadata): Use the image version
32178         from the image structure.
32179
32180 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32181
32182         * appdomain.c: modified comment.
32183         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32184         That will be its last iteration when mono_gc_cleanup is called from
32185         mono_runtime_cleanup and before the domain is unloaded.
32186
32187         Fixes bug #45962.
32188
32189 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32190
32191         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32192         attributes.
32193
32194 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32195
32196         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32197         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32198         Bernie Solomon <bernard@ugsolutions.com>.
32199
32200 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32201
32202         * object.c, object.h: provide mono_object_new_fast() for faster
32203         allocation in some special cases.
32204
32205 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32206
32207         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32208         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32209
32210 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32211
32212         * threadpool.c: fix leaks.
32213
32214 2003-07-01  Dick Porter  <dick@ximian.com>
32215
32216         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32217         using MonoGHashTables.  Fixes threadpool bug posted to list.
32218
32219 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32220
32221         * image.h, image.c: added support to load an assembly from a byte array.
32222         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32223         assembly bundle support.
32224
32225 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32226
32227         * threadpool.c (mono_thread_pool_add): keep a reference to the
32228         AsyncResult to prevent GC
32229
32230 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32231
32232         * class.c: leak fix.
32233
32234 2003-06-25  Dick Porter  <dick@ximian.com>
32235
32236         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32237         for the async object, the WaitHandle object will close the handle.
32238         Fixes bug 45321.
32239
32240 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32241
32242         * class.c: in mono_array_class_get (), lookup from the hash with the
32243         same type we insert: this works around a bug in
32244         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32245         lluis. The real fix will have to wait for after the release.
32246
32247 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32248
32249         * icall.c: fix memory leak when getting type members.
32250
32251 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32252
32253         * reflection.c: added more pubtoken special cases.
32254
32255 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32256
32257         * class.c: handle field offset correctly when class size
32258         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32259
32260 2003-06-20  Martin Baulig  <martin@ximian.com>
32261
32262         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32263         *image' field.
32264
32265 2003-06-20  Martin Baulig  <martin@ximian.com>
32266
32267         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32268
32269 2003-06-20  Martin Baulig  <martin@ximian.com>
32270
32271         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32272         just distinguish between variables in registers and variables at
32273         an offset relative to a register.
32274
32275 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32276
32277         * icall.c: #ifdef out latest changes until mcs is fixed.
32278
32279 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32280
32281         * icall.c: return members in metadata order.
32282
32283 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32284
32285         * icall.c: avoid infinite loop in GetTimeZoneData.
32286
32287 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32288
32289         * icall.c: added Marshal.Prelink/All icalls.
32290
32291 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32292
32293         * object.c, object.h: fix warnings and do some overflow checking
32294         when creating arrays.
32295
32296 2003-06-17  Dick Porter  <dick@ximian.com>
32297
32298         * file-io.h:
32299         * file-io.c: File attributes need to be tweaked slightly when
32300         passed from the managed to the w32 world.
32301
32302 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32303         * profiler.h profiler-private.h profiler.c: Rework last patch
32304         based on suggestion by Paolo.
32305         
32306 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32307
32308         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32309         instruction level coverage data collection.
32310         * profiler.h profiler.c (: Added new callback function which can be
32311         used by the profiler to limit which functions should have coverage
32312         instrumentation.
32313         * profiler.c (mono_profiler_load): Call g_module_build_path to
32314         generate the file name of the profiler library.
32315
32316 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32317
32318         * profiler.c, profiler.h, profiler-private.h: added basic block 
32319         coverage profiling API.
32320
32321 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32322
32323         * reflection.c (mono_reflection_create_runtime_class): Add support
32324         for events in dynamically generated code.
32325
32326         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32327         not allocated.
32328
32329 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32330
32331         * icall.c: when getting timezone info, return reasonable values if we
32332         can't get the actual data.
32333
32334 2003-06-14  Dick Porter  <dick@ximian.com>
32335
32336         * threads.c (start_wrapper): Remove the reference to the thread
32337         object in the TLS data, so the thread object can be finalized.
32338         This won't be reached if the thread threw an uncaught exception,
32339         so those thread handles will stay referenced :-( (This is due to
32340         missing support for scanning thread-specific data in the Boehm GC
32341         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32342
32343 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32344
32345         * reflection.c: ensure streams and tables are first allocated with
32346         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32347
32348 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32349
32350         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32351
32352 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32353
32354         * reflection.c (mono_reflection_create_runtime_class): Add support for
32355         properties to dynamically created classes.
32356         * reflection.c: Fix a few places where non-MonoObjects were inserted
32357         into the tokens hashtable.
32358
32359 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32360
32361         * object.c: some support to handle out of memory exceptions.
32362
32363 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32364
32365         * marshal.c (mono_marshal_get_native_wrapper): support reference
32366         return types
32367
32368 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32369
32370         * object.h, object.c: more portability stuff from Bernie Solomon.
32371         Unexport mono_object_allocate(). Added mono_object_unbox ().
32372         Set exitcode when an unhandled exception is thrown.
32373
32374 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32375
32376         * marshal.c (mono_marshal_get_native_wrapper): use custom
32377         marshaler for return types.
32378
32379 2003-06-10  Dick Porter  <dick@ximian.com>
32380
32381         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32382         ip_mreq is available
32383
32384 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32385
32386         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32387         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32388         by Bernie Solomon <bernard@ugsolutions.com>.
32389
32390 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32391
32392         * gc.c (mono_gc_init): Avoid error message on shutdown when
32393         GC_DONT_GC=1 is used.
32394
32395         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32396         New icall to return the GUID of a module.
32397
32398 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32399
32400         * class.c: ensure instance size always includes the parent's size
32401         even whem class size is set explicitly (fixes bug#44294).
32402
32403 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32404
32405         * profiler.h, profiler.c: made the simple profiler thread-safe,
32406         get more accurate timing info. Allow the loading of an
32407         externally-developed profiler module.
32408
32409 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32410
32411         * marshal.c (mono_marshal_get_native_wrapper): improved
32412         class/byref arguments.
32413         (mono_marshal_get_native_wrapper): better string marshaling support.
32414
32415 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32416
32417         * class.c: ensure .pack and .size are handled correctly and
32418         simplified layout of static fields.
32419
32420 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32421
32422         * appdomain.c
32423         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32424
32425         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32426         current directory (fix bug 44008)
32427
32428 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32429
32430         * marshal.c (mono_marshal_get_native_wrapper): started support for
32431         custom marshalers.
32432         (mono_delegate_to_ftnptr): consider marshalling specifications
32433
32434 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32435
32436         * reflection.c, reflection.h: emit custom marshal info.
32437
32438 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32439
32440         * object.c: free the GError.
32441         * icall.c: added CloseEvent_internal.
32442         * threads.[ch]:
32443         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32444         call.
32445
32446 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32447
32448         * loader.c (mono_method_get_signature): Add support for dynamic
32449         assemblies.
32450
32451 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32452
32453         * reflection.c: fixed bug #43905.
32454
32455 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32456
32457         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32458         handling TypedReference and ArgIterator.
32459         * loader.c, loader.h: added function to get signature at call site.
32460
32461 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32462
32463         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32464         data readonly. Buglets and warning fixes. Some MethodSpec support.
32465
32466 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32467
32468         * class.h, class.c, object.c: remove relative numbering support.
32469
32470 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32471
32472         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32473         free the string, until we get a chance to fix Gtk#
32474
32475 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32476
32477         * marshal.c: revert last patch.
32478
32479 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32480
32481         * icall.c: updates for new mono_class_vtable() not calling
32482         the type constructor anymore.
32483
32484 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32485
32486         * object.h, object.c: separate vtable creation from type
32487         initialization. Make running the .cctor thread safe.
32488
32489 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32490
32491         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32492
32493 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32494
32495         * loader.c (mono_get_method): consider calling convention
32496
32497 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32498
32499         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32500         to return the invisible global type for a module.
32501
32502         * reflection.c (mono_image_build_metadata): Emit global fields too.
32503
32504 2003-05-20  Peter Williams  <peterw@ximian.com>
32505
32506         * loader.c (mono_lookup_internal_call): Add a few newlines.
32507
32508 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32509
32510         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32511         literal strings.
32512
32513         * appdomain.c (set_domain_search_path): Recalculate search path when
32514         AppDomainSetup.PrivateBinPath changes.
32515
32516         * object.c (mono_class_compute_gc_descriptor): It turns out some
32517         parts of the class libs (like System.Thread) holds pointers to
32518         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32519         to treat native int a pointer type here.
32520         
32521 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32522
32523         * appdomain.h, domain.c: add hashtable for jump target resolution.
32524
32525 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32526
32527         * reflection.h reflection.c icall.c: Added new icalls 
32528         GetManifestResourceInfoInternal, GetModulesInternal and support
32529         infrastructure.
32530
32531 2003-05-16  Dick Porter  <dick@ximian.com>
32532
32533         * icall.c:
32534         * file-io.h:
32535         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32536
32537 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32538
32539         * object.c: mono_store_remote_field: little fix to previous patch.
32540
32541 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32542
32543         * class.c: add constructors to array classes.
32544         * icall.c: special case array construction for InternalInvoke (),
32545
32546 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32547
32548         * class.h class.c reflection.c object.c: Added support for field
32549         defaults in dynamically generated classes.
32550
32551 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32552
32553         * reflection.c: properly encode charset for ddlimport.
32554
32555 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32556
32557         * threads.c: allow compiling without GC.
32558
32559 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32560
32561         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32562         handling of thread static data.
32563
32564 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32565
32566         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32567
32568 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32569
32570         * class.c (mono_array_class_get): always set the serializable flags
32571         (mono_array_class_get): always set the SEALED attribute for array types
32572
32573 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32574
32575         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32576         attributes (fix for bug 42021).
32577
32578 2003-05-12  Dick Porter  <dick@ximian.com>
32579
32580         * gc.c: Don't run finalizers when the finalizer thread is
32581         finishing up, because the default domain has already been
32582         destroyed.
32583
32584 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32585
32586         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32587         value is null, we should throw an exception.   This is slightly
32588         different than the other conventions used for the constructor.
32589
32590 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32591
32592         * socket-io.c: fixed windows build.
32593
32594 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32595
32596         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32597
32598 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32599
32600         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32601         compilers.
32602
32603 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32604
32605         * class.c (mono_class_layout_fields): Add experimental GC aware
32606         auto layout facility. Requires class library changes to work correctly.
32607
32608         (mono_class_setup_vtable): Avoid overriding explicit interface
32609         method implementations. Fixes iface3.exe test.
32610
32611         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32612         object reference.
32613         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32614         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32615
32616         * metadata.h: Add new type classification macro which determines
32617         whenever the type holds an object reference.
32618
32619 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32620
32621         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32622
32623 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32624
32625         * gc.c (finalizer_thread): Work around a GC bug.
32626
32627 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32628
32629         * marshal.c (emit_struct_conv): allow unions
32630
32631         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32632
32633 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32634
32635         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32636
32637 2003-05-06  Martin Baulig  <martin@ximian.com>
32638
32639         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32640
32641 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32642
32643         * socket-io.c:
32644         (Select_internal): allow NULLs, don't create arrays if not needed.
32645         Coupled with Socket.cs changes.
32646
32647         * threadpool.c:
32648         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32649         register a finalizer for it that will close the semaphore handle. This
32650         fixes the leak and make Lupus' test run with > 4080 loops.
32651
32652 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32653
32654         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32655         Jerome Laban (bug #42287)
32656
32657 2003-05-02  Martin Baulig  <martin@ximian.com>
32658
32659         * debug-mono-symfile.h
32660         (MonoSymbolFile): Moved declaration into mono-debug.h.
32661         (MonoDebugMethodJitInfo): Likewise.
32662         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32663         argument.
32664         (_mono_debug_address_from_il_offset): Take a
32665         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32666
32667         * mono-debug.h
32668         (MonoDebugDomainData): New struct.
32669         (mono_debug_get_domain_data): New function.
32670         (mono_debug_add_method): Take an additional `MonoDomain *'
32671         argument.
32672         (mono_debug_source_location_from_address): Likewise.
32673         (mono_debug_il_offset_from_address): Likewise.
32674         (mono_debug_address_from_il_offset): Likewise.
32675
32676 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32677
32678         * reflection.c: one more check for null type in custom attrs.
32679
32680 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32681
32682         * reflection.c: avoid warning (comparison is always false due to limited
32683         range of data type).
32684
32685 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32686
32687         * icall.c: throw an exception in Type.GetField if the argument 'name'
32688         is NULL.
32689
32690 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32691
32692         * reflection.c: fixed handling of enums in named arguments to custom
32693         attributes (bug #42123).
32694
32695 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32696
32697         * reflection.c: use the right array element type and handle
32698         a null for a Type argument, too.
32699
32700 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32701
32702         * reflection.c: handle arrays as arguments to custom attributes.
32703
32704 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32705
32706         * reflection.c: handle a string value in a custom attr
32707         ctor that takes an object.
32708
32709 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32710
32711         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32712         (fix bug #42063)
32713
32714 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32715
32716         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32717
32718 2003-04-27  Martin Baulig  <martin@ximian.com>
32719
32720         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32721         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32722         MONO_DEBUGGER_EVENT_BREAKPOINT.
32723         (mono_breakpoint_trampoline_code): Removed.
32724         (mono_debugger_event_handler): The last argument is now a
32725         `guint32'.
32726         (mono_debugger_insert_breakpoint_full): Removed the
32727         `use_trampoline' argument.
32728         (mono_debugger_method_has_breakpoint): Likewise.
32729         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32730         mono_debugger_breakpoint_callback(); take the method and
32731         breakpoint number as arguments.
32732
32733 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32734
32735         * metadata.c: fix off by one when loading parameters attributes.
32736
32737 2003-04-24  Martin Baulig  <martin@ximian.com>
32738
32739         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32740
32741 2003-04-24  Martin Baulig  <martin@ximian.com>
32742
32743         * mono-debug-debugger.c: Moved all code which interacts with the
32744         Mono Debugger here.
32745
32746         * debug-mono-symfile.c: This code now just deals with the symbol
32747         file itself, the debugger code is now in mono-debug-debugger.c.
32748
32749 2003-04-23  Martin Baulig  <martin@ximian.com>
32750
32751         * mono-debug.c (mono_debug_source_location_from_il_offset):
32752         New method; like mono_debug_source_location_from_address(), but
32753         takes an IL offset instead of a machine address.
32754
32755 2003-04-23  Martin Baulig  <martin@ximian.com>
32756
32757         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32758         `line' field; this is now computed by the debugger.
32759
32760 2003-04-23  Martin Baulig  <martin@ximian.com>
32761
32762         * mono-debug.[ch]: New files.  This is the new debugging interface.
32763
32764         * mono-debug-debugger.[ch]: New files.  Moved all code which
32765         interacts with the Mono Debugger here.
32766
32767 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32768
32769         * domain.c (mono_init): initialize mono_defaults.monitor_class
32770
32771 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32772
32773         * reflection.c (method_encode_code): Add a spicy exception to help
32774         future compiler authors.
32775
32776 2003-04-21  Martin Baulig  <martin@ximian.com>
32777
32778         * icall.c
32779         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32780         Make this work with relative pathnames; g_filename_to_uri() needs
32781         an absolute filename.
32782
32783 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32784
32785         * icall.c: Track name changes in Object and ValueType.
32786
32787 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32788
32789         * metadata.c (mono_type_stack_size): size should be a multiple of
32790         sizeof (gpointer)
32791
32792 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32793
32794         * gc.c:
32795         (internal_domain_finalize): moved into mono_domain_finalize. No need
32796         to create another thread because the finalizers will be run in the
32797         finalizer thread.
32798         
32799         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32800         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32801         to be run (MS does this too).
32802
32803 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32804
32805         * object.c (mono_class_compute_gc_descriptor): Update comment.
32806
32807         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32808
32809         * image.h: Add synchronized wrapper cache.
32810
32811         * image.c (do_mono_image_open): Initialize cache.
32812
32813         * reflection.c (create_dynamic_mono_image): Initialize cache.
32814
32815 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32816
32817         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32818         ves_icall_System_Buffer_ByteLengthInternal.
32819
32820 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32821
32822         * reflection.c: setup klass->nested_in earlier. Allow
32823         a dash in the assembly name.
32824
32825 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32826
32827         * metadata.c (mono_type_to_unmanaged): dont access
32828         type->data.klass for MONO_TYPE_OBJECT
32829         (mono_type_to_unmanaged): consider System.Delegate class
32830
32831 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32832
32833         * class.c: just setup supertypes in the proper place instead of
32834         initializing the full element class for arrays.
32835
32836 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32837
32838         * class.c: ensure the element class of arrays is initialized.
32839         Setup the supertype info for array classes, too.
32840
32841 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32842
32843         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32844
32845 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32846
32847         * Makefile.am: re-added -m option when running cygpath. This way,
32848         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32849         separator.
32850         * mono-config.c: same codepath for locating mono config file for WIN32
32851         and the rest.
32852         * assembly.c: if mono_assembly_setrootdir is called, don't override
32853         the value set.
32854
32855 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32856
32857         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32858         MONO_ASSEMBLIES variable.
32859
32860 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32861
32862         * icall.c: added Assembly::GetNamespaces() icall.
32863
32864 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32865
32866         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32867
32868 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32869
32870         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32871         * object.c: fixed bug in the construction of vtable for proxies
32872
32873 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32874
32875         * object.c (mono_array_new): Mark mono_array_new as an icall.
32876
32877 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32878
32879         * class.c: fixed test for public method when overriding interfaces.
32880         Closes bug #40970.
32881
32882 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32883
32884         * appdomain.h, domain.c: added mono_domain_foreach() to
32885         be able to access the currently loaded appdomains.
32886         * object.c: make string interning work across sppdomains.
32887         Mark some functions for use as icalls.
32888
32889 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32890
32891         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32892
32893         * reflection.h reflection.c: Allocate long living data using 
32894         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32895
32896         * reflection.c: Double the allocation size in streams instead of
32897         increasing it, to prevent unneccesary copying on large assemblies.
32898         
32899         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32900         creation if the assembly does not have the Run flag set.
32901
32902 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32903
32904         * class.h: avoid the C++ keywords in header files (Jerome Laban
32905         spotted and fixed this).
32906
32907 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32908
32909         * object.c:
32910         (mono_unhandled_exception): fill in the arguments for the
32911         UnhandledException event. Only trigger that event for the default
32912         domain (as MS does).
32913
32914 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32915
32916         * object.c: Improve typed allocation stuff based on suggestions from
32917         Paolo. Also turn it on if the GC library supports it.
32918
32919 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32920
32921         * object.c object.h class.h: Added experimental typed allocation
32922         facility using the interfaces in gc_gcj.h.
32923
32924         * os/gc_wrapper.h: Added new include files.
32925         
32926 2003-04-03  Martin Baulig  <martin@ximian.com>
32927
32928         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32929         which is not yet enabled by default.
32930
32931         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32932         functions.
32933         (mono_gc_lock, mono_gc_unlock): New static functions.
32934
32935         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32936         functions; stop/start the world for the garbage collector.  This
32937         is using the windows API; we need to complete the SuspendThread()/
32938         ResumeThread() implementation in the io-layer to make this work on Unix.
32939         (mono_gc_push_all_stacks): New public function; tells the garbage
32940         collector about the stack pointers from all managed threads.
32941
32942 2003-04-03  Martin Baulig  <martin@ximian.com>
32943
32944         * object.h (MonoThread): Added `gpointer stack_ptr'.
32945
32946         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32947
32948 2003-04-03  Martin Baulig  <martin@ximian.com>
32949
32950         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32951
32952 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32953
32954         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32955         field.last.
32956
32957 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32958
32959         * loader.c (mono_lookup_internal_call): Report the corlib that is
32960         out of sync.
32961
32962 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32963
32964         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32965         System.DBNull (it's class not valuetype).
32966
32967 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32968
32969         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32970         if the array method was already assigned a token (fixes bug#40646).
32971
32972 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32973
32974         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32975         if no assembly is given.
32976
32977 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32978
32979         * metadata.h: Added the new tables.
32980
32981         * row-indexes.h: Added definitions for new tables.
32982
32983         * metadata.c: Add schemas for new tables, and add support for
32984         computing the sizes of them.
32985
32986         * class.c: Update for handling the new type cases.
32987
32988 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32989
32990         * metadata.h (MONO_TYPE_IS_VOID): new macro
32991
32992 2003-03-31  Martin Baulig  <martin@ximian.com>
32993
32994         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32995
32996         * threads.c (mono_thread_new_init): Call `thread_created' in the
32997         mono_thread_callbacks.
32998
32999 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33000
33001         * loader.h: added marshalbyrefobject_class to mono_defaults
33002         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33003         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33004           generation of output parameters.
33005           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33006         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33007           contextbound and the target object belongs to the context of the caller.
33008         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33009         * object.c: Implemented support for interfaces and abstract classes
33010           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33011           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33012
33013 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33014
33015         * class.h class.c (mono_class_is_subclass_of): New function.
33016         
33017         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33018         routines for most common case (calls from ArrayList::ToArray).
33019
33020         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33021         routine so programs which call Environment::Exit() can be profiled.
33022
33023         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33024         Added MONO_ARCH_SAVE_REGS.
33025
33026         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33027
33028 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33029
33030         * blob.h: Add a couple of new MonoType types definitions.
33031
33032         * tabledefs.h: Add a couple of new call convs.
33033
33034 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33035
33036         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33037         the layout of the class.
33038
33039         * reflection.c (alloc_table): double the size on overflow to avoid
33040         unnecessary copying.
33041
33042         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33043         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33044         null so it can be garbage collected.
33045         
33046 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33047
33048         * reflection.c (mono_reflection_get_type): Return the resolved type
33049         only if it is in the assembly we searched.
33050
33051         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33052
33053         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33054         method.
33055
33056 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33057
33058         * appdomain.c:
33059         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33060         the right one is 'file:///blah', but MS allows it.
33061         * assembly.c:
33062         (mono_assembly_open): allow 'file://blah'
33063
33064         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33065
33066 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33067
33068         * socket-io.c: fixes bug #40310.
33069
33070 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33071
33072         * reflection.c (mono_reflection_parse_type): handle deeply nested
33073         types correctly.
33074
33075         * reflection.c (mono_image_create_token): Use unique token values
33076         since they will be put into a hash table.
33077
33078         * class.c (mono_class_setup_vtable): If a method occurs in more than
33079         one place in the vtable, and it gets overriden, then change the
33080         other occurances too.
33081
33082         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33083         object as return type.
33084
33085 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33086
33087         * icall.c: Deleted "ToString" implementation for double and float
33088         because they are full implemented in managed code.
33089
33090 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33091
33092         * reflection.c, reflection.h: implemented and exported functions
33093         to retrieve info about custom attributes.
33094
33095 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33096
33097         * appdomain.c: moved Uri handling to assembly.c
33098         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33099         work when using a file Uri in *nix and windows.
33100
33101         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33102         GetReferencedAssemblies.
33103
33104 2003-03-18  Dick Porter  <dick@ximian.com>
33105
33106         * icall.c: Rename a couple of internal calls
33107
33108         * threads.c: Set the thread state to Stopped when a thread exits.
33109         Fixes bug 39377.
33110
33111 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33112
33113         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33114         New icall.
33115
33116         * object.c (mono_class_vtable): fix warning.
33117
33118 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33119
33120         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33121
33122         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33123         memory.
33124         (method_encode_clauses): Create exception info structures in the right
33125         order.
33126         (mono_reflection_setup_internal_class): Initialize supertypes field.
33127
33128         * class.c object.c: Handle interfaces which implement other interfaces 
33129         correctly.
33130
33131         * class.h class.c: Move the supertypes array initialization code into 
33132         a separate function so it can be used for dynamic types too. Also call
33133         it earlier, in mono_class_init(), since it can be used before the
33134         type is initialized.
33135
33136 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33137
33138         * Makefile.am:
33139         * assembly.c:
33140         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33141
33142         * appdomain.c:
33143         * appdomain.h:
33144         * marshal.c:
33145         * object.c: remove warnings.
33146
33147 2003-03-13  Martin Baulig  <martin@ximian.com>
33148
33149         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33150         (MonoDebugLexicalBlockEntry): New types.
33151
33152         * debug-mono-symfile.c
33153         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33154
33155 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33156
33157         * process.c: ret can be any non-zero value accroding to MS doc.
33158
33159 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33160
33161         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33162         fixing a warning for a miss-used prototype, would have cause
33163         random memory corruption.
33164
33165 2003-03-07  Martin Baulig  <martin@ximian.com>
33166
33167         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33168         getting really annoying ....
33169
33170 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33171
33172         * reflection.c (fixup_method): added support for array methods.
33173
33174 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33175
33176         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33177         (pointed out by Michael Adams).
33178
33179 2003-03-04  Dick Porter  <dick@ximian.com>
33180
33181         * icall.c: Temporarily reverted the Double and Single ToString()
33182         change, because it broke nunit.
33183
33184 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33185
33186         * object.h, threads.h: make include files compatible with C++
33187         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33188
33189 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33190
33191         * icall.c: Erased ToString helper functions for Double and Single.
33192         Now, that implementations ar all in managed code (Double and Single
33193         Formatters).
33194
33195 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33196
33197         * appdomain.c: Added method for initializing the default context of
33198         a domain. Added internal call for getting the default context.
33199         * appdomain.h: Added context variable in MonoDomain struct.
33200         * domain.c: mono_domain_set also sets the default context of the domain
33201         * icall.c: Mapped internal method InternalGetDefaultContext.
33202         * object.c: mono_object_get_virtual_method returns always a remoting
33203         wrapper if the object is a transparent proxy.
33204         mono_runtime_invoke_array: when creating an object by calling the
33205         constructor, if the created object is a proxy, then the constructor should
33206         be called using the a remoting wrapper.
33207
33208 2003-03-03  Dick Porter  <dick@ximian.com>
33209
33210         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33211         variable so it compiles on solaris.  Problem spotted by
33212         Christopher Taylor <ct@cs.clemson.edu>
33213
33214 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33215
33216         * appdomain.c:
33217         (get_info_from_assembly_name): don't leak value.
33218
33219         * icall.c:
33220         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33221         result.
33222
33223 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33224
33225         * assembly.c: export mono_image_load_references ().
33226         * class.c: handle function pointers. mono_class_from_name() now
33227         supports nested type names directly.
33228
33229 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33230
33231         * reflection.h reflection.c: Encode already created dynamic methods 
33232         and fields correctly as a DEF instead of a REF.
33233
33234         * reflection.c: Get rid of the force_ref argument to 
33235         mono_image_typedef_or_ref since it was wrong in the first place.
33236
33237         * string-icalls.c: add error checking to string constructors according
33238         to the MSDN docs.
33239
33240         * reflection.c: Emit types in the order their TypeBuilders were 
33241         created. Previously, a new table index was assigned to each type before
33242         the tables were emitted. This was wrong because the signature blob
33243         might already refer to a type by its original table index.
33244
33245 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33246
33247         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33248         change.
33249         
33250 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33251
33252         * Makefile.am: make assemblies dir have \ instead of / on windows.
33253
33254 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33255
33256         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33257         iterate over the NESTEDCLASS table using a linear search since the
33258         table is not guaranteed to be sorted by the secondary key.
33259
33260         * class.c (mono_class_create_from_typedef): fixed up call to
33261         mono_metadata_nesting_typedef.
33262         
33263 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33264
33265         * marshal.c (mono_string_to_byvalstr): clear the memory as
33266         suggested by Jerome Laban <jlaban@wanadoo.fr>
33267
33268 2003-02-26  Dick Porter  <dick@ximian.com>
33269
33270         * process.c: Cope with padding in .rsrc blocks
33271
33272 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33273
33274         * metadata.h: reverted the filter_len change, it breaks reflection
33275         
33276 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33277
33278         * metadata.h: added a new field to store the filter_len
33279         
33280
33281 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33282
33283         * reflection.c: handle custom attributes for types and members
33284         created with Reflection.Emit (bug#38422).
33285
33286 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33287
33288         * reflection.c: define RTSpecialName automatically for constructors for
33289         compatibility with MS.NET.
33290
33291         * reflection.c (mono_reflection_create_runtime_class): initialize
33292         nested_in field of dynamically created classes.
33293
33294 2003-02-22  Martin Baulig  <martin@ximian.com>
33295
33296         * debug-mono-symfile.h: Incremented version number.
33297
33298 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33299
33300         * object.h icall.c process.c: fix warnings.
33301
33302 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33303
33304         * appdomain.h appdomain.c:
33305         (mono_domain_try_type_resolve): split the 
33306         name_or_tb argument into a name and a tb argument.
33307         (mono_domain_has_type_resolve): new function to check whenever the
33308         application has registered a TypeResolve event handler.
33309         
33310         * icall.c reflection.h reflection.c: move the type resolve logic into
33311         mono_reflection_get_type () so it will be invoked when 
33312         Assembly::GetType () is called.
33313
33314         * reflection.c:
33315         (mono_reflection_get_type): renamed to get_type_internal.
33316         (mono_reflection_get_type): fixed type name generation so it works 
33317         for nested types too.
33318         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33319         costly type name generation if there is no resolve event handler.
33320
33321 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33322
33323         * class.c, image.c: load exported types from file references.
33324
33325 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33326
33327         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33328           used to cache the managed methods used to create proxies and make 
33329           remote invocation of methods.
33330         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33331           to be remotely created.
33332         * object.c: Modified the method mono_class_vtable(). It now initializes 
33333           the remote flag of the vtable. Modified mono_object_new_specific(), 
33334           so now it checks the remote flag.
33335         * icall.c: Added a couple of internal methods, one for enabling instance 
33336           creation interception for a type, and one for creating objects bypassing
33337           the remote check.
33338
33339 2003-02-18  Martin Baulig  <martin@ximian.com>
33340
33341         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33342         New interncall to get a method's metadata token.
33343
33344         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33345         New interncall for the debugger.
33346
33347 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33348
33349         * class.c (mono_class_setup_vtable): allocate supertype array
33350
33351 2003-02-18  Martin Baulig  <martin@ximian.com>
33352
33353         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33354
33355 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33356
33357         * reflection.c:
33358         (assembly_name_to_aname): jump over unknown properties (i've found
33359         something like: 'type, assembly, version=xxx, custom=null, public...',
33360         so now will ignore custom=null and still get the rest of the values).
33361
33362 2003-02-17  Dick Porter  <dick@ximian.com>
33363
33364         * threads.c: Have Thread.Start() wait for a semaphore to signal
33365         that the thread has set up all its local data.  This fixes bug
33366         34323, where Abort() raced the new thread's TLS data.
33367
33368         Also removes the handle_store() call from start_wrapper, because
33369         threads are now always created suspended and there is no longer a
33370         race between the parent and child threads to store the info.
33371
33372 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33373
33374         * image.c: explain the #- heap issue in a message, hopefully
33375         avoiding FAQs on mono-list.
33376
33377 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33378
33379         * icall.c:
33380         (GetEntryAssembly): if the domain has not invoked
33381         AppDomain.ExecuteAssembly yet, return the assembly of the default
33382         AppDomain.
33383
33384 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33385
33386         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33387
33388 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33389
33390         * metadata.c, reflection.c: simple speedup to type hash
33391         and equals code.
33392
33393 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33394
33395         * image.c, image.h, class.c, assembly.c: move module loading
33396         to MonoImage. When loading metadata, consider alignemnet from
33397         the start of metadata, not from the metadata address in memory.
33398
33399 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33400
33401         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33402         AssemblyBuilder objects. Factored out custom attribute creation into
33403         a separate function.
33404         (create_custom_attr): new function to create custom attributes.
33405
33406 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33407
33408         * Makefile.am: Got tired of typing the full pathname to pedump.
33409         Until there is another option, am installing this.
33410
33411 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33412
33413         * class.c (class_compute_field_layout): always set field->parent 
33414         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33415
33416 2003-02-11  Dick Porter  <dick@ximian.com>
33417
33418         * threads-types.h:
33419         * monitor.c: Rewrote Monitor, making lock much faster and
33420         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33421         creates them as needed.
33422
33423         * exception.c: Added SynchronizationLockException
33424
33425         * threads.c: Deleted old Monitor implementation.  The new one is
33426         in a new file.
33427
33428 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33429
33430         * class.c: handled TypedReference type code. Set the correct size for
33431         class data. Setup interface_offsets for interface classes, too.
33432
33433 2003-02-09  Martin Baulig  <martin@ximian.com>
33434
33435         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33436
33437 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33438
33439         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33440         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33441         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33442         * verify.c: check for code that runs after the end of the method.
33443
33444 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33445
33446         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33447         "System.Math::Round2".
33448         * sysmath.h: Added Floor, Round and Round2 definitions.
33449         * sysmath.c: Modified certain functions that were not 100% compliant
33450         with MS.NET (math precision) and added the implementation of Floor,
33451         Round and Round2.
33452
33453 2003-02-07  Martin Baulig  <martin@ximian.com>
33454
33455         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33456
33457 2003-02-07  Martin Baulig  <martin@ximian.com>
33458
33459         * debug-mono-symfile.c: Reflected latest symwriter changes.
33460         (mono_debug_create_mono_symbol_file): Removed.
33461         (mono_debug_open_mono_symbol_file): Take an argument which
33462         specifies whether to create a dynamic symbol file.
33463
33464 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33465
33466         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33467
33468 2003-02-05  Martin Baulig  <martin@ximian.com>
33469
33470         * reflection.c (mono_image_build_metadata): Make this public,
33471         protect it against being called multiple times, don't create
33472         resources and don't build the compressed metadata here.
33473         (mono_image_create_pefile): Do this here.
33474
33475         * icall.c
33476         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33477
33478 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33479
33480         * socket-io.c: fixed bug #36322.
33481
33482 2003-02-06  Piers Haken <piersh@friskit.com>
33483
33484         * appdomain.[ch]:
33485         * class.h:
33486         * debug-mono-symfile.c:
33487         * icall.c:
33488         * loader.c:
33489         * mono-config.c:
33490         * monosn.c:
33491         * reflection.c:
33492         * socket-io.c: warning cleanups
33493
33494 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33495
33496         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33497         function. works like remoting invoke, but does a check for the Proxy first.
33498
33499 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33500
33501         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33502
33503 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33504
33505         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33506         array of pointers.
33507         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33508         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33509
33510         * object.c (mono_store_remote_field_new): used by the new jit
33511         instead of mono_store_remote_field
33512         (mono_load_remote_field_new): used by the new jit
33513         instead of mono_load_remote_field
33514
33515 2003-02-05  Patrik Torstensson
33516
33517         * appdomain.c: changed unload to take the domain id instead
33518         of domain
33519         
33520         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33521
33522
33523 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33524
33525         * appdomain.c: don't look for assemblies in ApplicationBase if
33526         PrivateBinPathProbe is set.
33527
33528 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33529
33530         * object.c: make the first argument in main_args contain the absolute
33531         path to the assembly. Fixes bug #37511.
33532
33533 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33534
33535         * icall.c: get correct UTC offset for countries not using daylight
33536         time saving. Fixes bug #30030.
33537
33538 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33539
33540         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33541         and 1 are the family).
33542
33543 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33544
33545         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33546
33547         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33548
33549 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33550
33551         * reflection.c: added support for SignatureHelper tokens, which is
33552         needed by the Calli opcode.
33553
33554         * reflection.h: track changes to SignatureHelper class.
33555
33556         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33557
33558 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33559
33560         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33561
33562 2003-02-03  Patrik Torstensson
33563         * appdomain.[c|h], domain.c : 
33564          - Added support for getting a domain via domain id
33565          - Support for setting and getting domain from System.AppDomain 
33566            (used in cross appdomain channel)
33567          - Added support for get/set for a MonoAppContext on a thread 
33568            (Context class in System.Runtime.Remoting.Contexts),
33569          - Removed hack in Get/SetData and ExecuteAssembly.
33570         
33571         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33572         the managed world to get control when a proxy is created.
33573
33574         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33575         
33576 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33577
33578         * icall.c
33579         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33580         Populate the codebase field as well.
33581
33582 2003-02-02  Martin Baulig  <martin@ximian.com>
33583
33584         * debug-mono-symfile.c
33585         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33586         (mono_debug_symfile_add_method): Allow interncalls.
33587
33588 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33589
33590         * icall.c: throw parse exception if strtod fails or the string is empty.
33591
33592 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33593
33594         * marshal.c: handle object type separately from defined
33595         class types.
33596
33597 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33598
33599         * marshal.c: handle NATIVE_LPSTR for strings when it's
33600         explicitly specified.
33601
33602 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33603
33604         * reflection.c, reflection.h, icall.c: setup the reflection
33605         handle cache for ModuleBuilders and AssemblyBuilders.
33606
33607 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33608
33609         * reflection.c (reflection_methodbuilder_to_mono_method): set
33610         pinvoke flag
33611
33612 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33613
33614         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33615
33616 2003-01-29  Dick Porter  <dick@ximian.com>
33617
33618         * threads.c: No need for the fake_thread kludge now that Thread
33619         doesn't run a class constructor
33620         
33621 2003-01-29  Dick Porter  <dick@ximian.com>
33622
33623         * threads.c: Use g_direct_hash instead of the rather bogus
33624         g_int_hash
33625
33626 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33627
33628         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33629         (fix pinvoke12.exe)
33630         (mono_marshal_get_struct_to_ptr): generate valid IL code
33631         (mono_marshal_get_ptr_to_struct): generate valid IL code
33632         (*): correctly set sig->pinvoke, we need to memdup the signature
33633         to do that
33634
33635 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33636
33637         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33638         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33639
33640 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33641
33642         * profiler.c: provide more callers information.
33643
33644 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33645
33646         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33647
33648         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33649
33650         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33651
33652 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33653
33654         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33655         exception instead of going into an infinite loop on dates which it 
33656         can't yet handle.
33657
33658         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33659         out-of-range exception if needed.
33660
33661         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33662         an implementation for an interface method and to override an inherited
33663         method at the same time. 
33664         Imagine a scenario when a virtual method is used to override a
33665         virtual abstract method in a parent class, and this same method 
33666         provides an implementation for an method inherited from an interface. 
33667         In this case, the interface resolution code will set im->slot, which 
33668         means that the virtual method override pass will skip this method 
33669         which means a pointer to the abstract method inherited from the parent
33670         will remain in the vtable of this non-abstract class.
33671
33672         * class.c: (mono_class_setup_vtable): continue search for a real 
33673         method if only an abstract method is found.     
33674
33675 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33676
33677         * reflection.c: add size to encoding for ByValStr and ByValArray
33678         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33679
33680 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33681
33682         * class.c (mono_class_setup_vtable): pass the override info as an
33683         argument.
33684
33685         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33686         correctly.
33687         
33688         * reflection.c (ensure_runtime_vtable); add support for method 
33689         overrides.
33690         
33691 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33692
33693         * reflection.c (resolution_scope_from_image): Hack to work to work with
33694         dynamic assemblies.
33695
33696         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33697         added a 'force_ref' argument to force this function to allways return 
33698         a TypeRef. This is needed by mono_image_get_memberref_token ().
33699         
33700 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33701
33702         * reflection.c (mono_image_get_type_info): interfaces really don't have
33703         a parent.
33704
33705         * reflection.c (mono_image_basic_init): fill out missing fields of
33706         image structure.
33707
33708         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33709         dynamic assemblies. This is required so dynamic assemblies show up in
33710         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33711         Type::GetType() etc. This is consistent with MS behaviour.
33712
33713         * image.c image.h reflection.c: add newly created classes to the name 
33714         cache so mono_class_get () will find them.      
33715
33716 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33717
33718         First part of changes to get IKVM.NET running under mono.
33719         
33720         * appdomain.h, appdomain.c: added new function 
33721         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33722         This function will call AppDomain::DoTypeResolve to do the actual work.
33723
33724         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33725         moved existing code dealing with dynamic tokens to a new function 
33726         called mono_reflection_lookup_dynamic_token (). This function will 
33727         raise TypeResolve events when appropriate. Since reflection.c is not 
33728         part of libmetadata, a new hook function called 
33729         mono_lookup_dynamic_token() is added to class.c which will call this.
33730
33731         * assembly.h assembly.c: make the invoke_load_hook function public,
33732         so it can be called for dynamic assemblies.
33733
33734         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33735
33736         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33737         type isn't found.
33738
33739         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33740         MonoGHashTable, since it contains pointers to objects which the GC 
33741         needs to track.
33742
33743         * assembly.c (search_loaded): remove unused variable.
33744         
33745 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33746
33747         * object.c: fixed issue exposed by gcc-generated IL programs
33748         that use RVA data for pointers.
33749
33750 2003-01-25  Martin Baulig  <martin@ximian.com>
33751
33752         * threads.c (start_wrapper): Moved the initialization of
33753         `start_func' above the mono_new_thread_init() call to which we
33754         pass it as argument.
33755
33756 2003-01-24  Martin Baulig  <martin@ximian.com>
33757
33758         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33759         the MonoThread pointer.
33760
33761 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33762
33763         * icall.c: Rename `PowImpl' to Pow.
33764
33765 2003-01-23  Dick Porter  <dick@ximian.com>
33766
33767         * threads.c (start_wrapper): Create a Thread object if needed, so
33768         the Main() thread can do the class initialisation in a subthread
33769         that has been set up to allow managed code execution.
33770
33771         Pass the thread ID instead of the MonoThread pointer to the thread
33772         start and attach callbacks.  This change is required, because the
33773         jit thread start callback must be called _before_ the Thread
33774         object can be created.
33775         
33776         (mono_thread_init): Removed much object creation code that is no
33777         longer needed.  No managed code is called from here now.
33778
33779         * object.c (mono_runtime_exec_managed_code): Create a subthread
33780         for Main, and call back to the runtime to use it.
33781         Set the exit code when Main exits.
33782
33783         * gc.c: Make sure domain finalisation happens in a subthread.
33784         Re-enable threaded GC, fixing bug 31333 (again).
33785
33786         * environment.c: System.Environment internall calls (so far just
33787         ExitCode is here, the others are still in icall.c)
33788
33789         * appdomain.c (mono_runtime_cleanup): All threads running managed
33790         code should have finished before mono_runtime_cleanup() is
33791         reached, so no need to clean up threads.
33792
33793 2003-01-22  Martin Baulig  <martin@ximian.com>
33794
33795         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33796         `gpointer func' arguments.      
33797         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33798         but added `MonoThread *thread' argument.
33799         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33800
33801         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33802         and pass it to the mono_thread_start_cb callback.
33803         (mono_install_thread_callbacks): New public function to install a
33804         set of callbacks which are set by the debugger.
33805         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33806
33807 2003-01-22  Martin Baulig  <martin@ximian.com>
33808
33809         * Makefile.am: Install debug-mono-symfile.h.
33810
33811 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33812
33813         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33814
33815 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33816
33817         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33818         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33819         (mono_array_class_get): correctly set access levels of arrays
33820
33821 2003-01-20      Patrik Torstensson
33822         * image.h (MonoAssemblyName): changed major, minor, build, revision
33823         from signed to unsigned.
33824
33825 2003-01-20  sean kasun <skasun@azstarnet.com>
33826
33827         * reflection.c (load_cattr_value): Now this handles
33828         MONO_TYPE_SZARRAY.  Fixes bug #35629
33829
33830 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33831
33832         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33833         integer value
33834
33835 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33836
33837         * decimal.c: fixed bug #26056.
33838
33839 2003-01-17  Martin Baulig  <martin@ximian.com>
33840
33841         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33842
33843 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33844
33845         * exception.[ch]:
33846         (mono_get_exception_type_initialization): new function.
33847
33848         * object.c: throw a TypeInitializationException when an exception is
33849         thrown invoking the class constructor.
33850
33851 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33852
33853         * reflection.c: fixed attribute reading.
33854
33855 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33856
33857         * icall.c:
33858         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33859         provided, look for the type in the calling assembly and then in
33860         mscorlib; if the assembly name is provided, only try that one.
33861
33862 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33863
33864         * object.c: register the vtable before there is a chance it's
33865         queried again recursively.
33866
33867 2003-01-13  Duncan Mak  <duncan@ximian.com>
33868
33869         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33870         gc-internal.h. 
33871         
33872 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33873
33874         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33875
33876 2003-01-11  Martin Baulig  <martin@ximian.com>
33877
33878         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33879         this to 20 for the release.
33880
33881 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33882
33883         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33884
33885         * loader.c (mono_method_get_marshal_info): bug fix
33886
33887         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33888         structures with explicit layout
33889
33890 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33891
33892         * profiler.c: made the output more readable (and sorted). 
33893         Added caller information for the allocation profiler.
33894
33895 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33896
33897         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33898
33899 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33900
33901         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33902         to get value types.
33903         
33904 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33905
33906         * object.c, profiler.h, profiler.c, profiler-private.h:
33907         Added object allocation profiler.
33908
33909 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33910
33911         * reflection.h, reflection.c: handle global methods.
33912         Compress blob entries.
33913
33914 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33915
33916         * marshal.c: fix compilation.
33917
33918 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33919
33920         * loader.c (mono_method_get_marshal_info): impl.
33921
33922         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33923
33924 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33925
33926         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33927         for reference types.
33928
33929 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33930
33931         * loader.c: fixed off by one error in loaded parameter names.
33932
33933 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33934
33935         * marshal.c (mono_marshal_get_icall_wrapper): like
33936         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33937         instead of a MonoMethod.
33938
33939 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33940
33941         * decimal.c: fixed bug #36537.
33942
33943 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33944
33945         * marshal.c: throw a missing method exception if a
33946         P/Invoke method is not found.
33947
33948 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33949
33950         * icall.c: allow a null this for constructors.
33951
33952 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33953
33954         * icall.c: raise the proper exceptions if the arguments to the
33955         internal Invoke are incorrect.
33956
33957 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33958
33959         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33960
33961 2003-01-03  Martin Baulig  <martin@ximian.com>
33962
33963         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33964
33965 2002-12-31  Martin Baulig  <martin@ximian.com>
33966
33967         * debug-mono-symfile.c: Completely rewrote the type section.
33968         Instead of using individual malloc()ed fields, we use one big
33969         continuous memory area and offsets into this area.
33970         See the comments in the source code for details.
33971
33972 2002-12-30  Martin Baulig  <martin@ximian.com>
33973
33974         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33975
33976 2002-12-30  Martin Baulig  <martin@ximian.com>
33977
33978         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33979         line number table in this data blob instead of using an external
33980         pointer.
33981
33982 2002-12-28  Martin Baulig  <martin@ximian.com>
33983
33984         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33985
33986 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33987
33988         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33989         as a boxed return type.
33990
33991 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33992
33993         * appdomain.c
33994         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33995         g_build_filename to properly get separators on the filename created.
33996
33997         * object.h: Small change, introduce MonoMarshalByRefObject to
33998         track the layout of that structure in the C# universe as we make
33999         changes there.
34000
34001 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34002
34003         * object.c: removed assert to allow static fields on interfaces.
34004         * loader.c: a TypeSpec may be used for any type, not just arrays.
34005
34006 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34007
34008         * class.c, class.h: added mono_class_array_element_size ().
34009         Ignore static methods in interfaces.
34010
34011 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34012
34013         * threads.c: fixed the build under cygwin.
34014
34015 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34016
34017         * reflection.c: handle nullref constants. Allocate keys for
34018         reflection handles with the GC.
34019
34020 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34021
34022         * threads.c, threads.h: added mono_thread_get_abort_signal()
34023         to get a suitable signal for thread abort.
34024
34025 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34026
34027         * metadata.c: fix handling of ExportedType table.
34028
34029 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34030
34031         * icall.c: added WriteWindowsDebugString internal call.
34032
34033 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34034
34035         * reflection.h: added fields to match C# implementation.
34036
34037 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34038
34039         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34040
34041 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34042
34043         * gc.h, gc-internal.h: Rename header for GC internal calls to
34044         gc-internal.h from gc.h as to not clash with Boehm GC having its
34045         header installed as <gc.h> in outside include paths.
34046         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34047         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34048
34049 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34050
34051         * icall.c: assign minor, build and revision in FillName.
34052
34053 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34054
34055         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34056         Added support for running code generated by Reflection.Emit.
34057
34058 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34059
34060         * appdomain.c: check for NULL argument in LoadFrom.
34061
34062 2002-12-10  Dick Porter  <dick@ximian.com>
34063
34064         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34065
34066 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34067
34068         * appdomain.c: fix buglet when building exe file name.  Handle full
34069         assembly name (needed after latest changes to AssemblyName).
34070         * image.c:
34071         (mono_image_close): free some hashtables.
34072
34073 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34074
34075         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34076         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34077         on some systems (redhat 7.3) 
34078
34079 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34080
34081         * threads.c: delete the critical section of a sync block,
34082         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34083
34084 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34085
34086         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34087
34088 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34089
34090         * appdomain.[ch]: handle the assembly preload event to try loading the
34091         assemblies using the paths we have in the current domain.
34092
34093         * assembly.[ch]: created an assembly preload hook that is called to try
34094         loading the assembly by other means that the ones provided here.
34095
34096         * domain.c: initialize the domain search path.
34097
34098         From now on, assemblies (TODO: except corlib and System) are loaded
34099         according to these rules when using mono_assembly_load ():
34100
34101                 1. It tries to load the assembly from the ApplicationBase
34102                 of the current domain appending .dll and .exe (TODO: have to
34103                 try loading from name/name.dll and name/name.exe).
34104
34105                 2. It tries the search path specified in PrivateBinPath for the
34106                 current domain (if any).
34107
34108                 3. Previous behavior.
34109
34110 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34111
34112         * icall.c: implemented GetInterfaceMap() related icall.
34113         * domain.c, loader.h: load MethodInfo in mono_defaults.
34114
34115 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34116
34117         * gc.c: disable the finalizer thread for now, untill all the issues
34118         with it are resolved.
34119
34120 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34121
34122         * string-icalls.c: handle embedded nulls in string ctor when the
34123         length is specified.
34124
34125 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34126
34127         * class.c: look for explicit interface implementation in parent
34128         classes, too.
34129
34130 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34131
34132         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34133
34134 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34135
34136         * gc.c: protect handles with a critical section.
34137
34138 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34139
34140         * icall.c:
34141         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34142         parameters. If no assembly specified, try getting the type from all
34143         the assemblies in the current domain, else, load the assembly and get
34144         the type from it.
34145
34146 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34147
34148         * marshal.c: applied patch from Aleksey Demakov that fixes
34149         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34150
34151 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34152
34153         * icall.c: fixed get_location.
34154
34155 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34156
34157         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34158         declarations to make it work with older gcc. 
34159
34160         * loader.c (mono_get_method): set signature->pinvoke for native calls
34161
34162 2002-11-20  Dick Porter  <dick@ximian.com>
34163
34164         * threads.c (mono_thread_init): Set the main thread's handle
34165
34166 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34167
34168         * gc.c: allow compilation without GC support. Changed to match the
34169         mono coding style.
34170
34171 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34172
34173         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34174
34175 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34176
34177         * reflection.c: set a public key token on the core assemblies.
34178
34179 2002-11-18  Dick Porter  <dick@ximian.com>
34180
34181         * threads.c: Split out some thread initialisation so that other
34182         files can set the start callback function.
34183
34184         * gc.c: Run finalisers in a separate thread, to avoid stack
34185         overflow.  Fixes bug 31333.
34186
34187         * appdomain.c: Set up GC finalisation thread.
34188
34189         * reflection.c: 
34190         * object.c: 
34191         * domain.c: Use gc.h macros for GC_malloc
34192         
34193 2002-11-15  Dick Porter  <dick@ximian.com>
34194
34195         * threadpool.c: 
34196         * threads.c:
34197         * appdomain.c: Removed mono_runtime_init_with_attach(),
34198         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34199         merging the extra parameter with the existing function.  Removed
34200         unneeded code in mono_thread_attach().
34201
34202 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34203
34204         * image.c (mono_image_loaded_by_guid): a method to get loaded
34205         images by guid. 
34206         (load_metadata_ptrs): we store the guid as string.
34207
34208 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34209
34210         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34211
34212         * metadata.c (mono_guid_to_string): imported method form Zoltan
34213         Varga (slightly modified)
34214
34215         * assembly.c (mono_assembly_open): load precompiled code
34216
34217         * loader.h (MonoMethod): we store the method token for use in the
34218         aot compiler. 
34219
34220 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34221
34222         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34223         the hook function called when an assembly is loaded.
34224         
34225         * domain.c: Modified file.
34226         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34227
34228         Fixes bug #33196.
34229
34230 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34231
34232         * reflection.c: Map PEFileKind to the value expected by the WinNT
34233         image loader. 
34234
34235 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34236
34237         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34238         Read until the buffer is filled completely.
34239
34240 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34241
34242         * icall.c: implemented MonoType.InternalGetEvent ().
34243
34244 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34245
34246         * appdomain.c: implemented InitAppDomainSetup. Delayed
34247         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34248         the entry_assembly.
34249
34250         * assembly.c: base_dir is now an absolute path ending with
34251         G_DIR_SEPARATOR.
34252
34253         * icall.c: modified get_location according to the above changes.
34254
34255         * object.c: init AppDomain.SetupInformation for the default domain after
34256         we have the entry assembly.
34257
34258         * domain.c: when unloading a domain, setup = NULL.
34259
34260 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34261
34262         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34263
34264 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34265
34266         * object.h, object.c: introduced mono_object_get_virtual_method ()
34267         to lookup the method invoked on an object when a callvirt is done on
34268         a method.
34269         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34270
34271 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34272
34273         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34274         current domain when loaded an assembly and failed to load it.
34275
34276         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34277
34278 2002-10-31  Dick Porter  <dick@ximian.com>
34279
34280         * icall.c: 
34281         * file-io.h: 
34282         * file-io.c: Return the error status in a parameter, as the
34283         GetLastError() value has long since been blown away if we try and
34284         look it up in a subsequent internal call invocation.  Delete the
34285         GetLastError() internal call, because it's useless.
34286
34287 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34288
34289         * class.[ch]: added cast_class to fix bug 29517
34290
34291 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34292
34293         * marshal.c: create valid IL code in the filter clause:
34294         the new JIT is less forgiving:-)
34295
34296 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34297
34298         * icall.c: removed get_property internal call.
34299
34300 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34301
34302         * appdomain.h domain.c: Added an ID to appdomains.
34303         
34304         * threads.c threads.h icall.c: Implement icall
34305         Thread:GetDomainID(), and remove unused icall 
34306         CurrentThreadDomain_internal.
34307
34308 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34309
34310         * icall.c: Don't recurse through the base types in GetConstructor.
34311         Fixes bug #32063. 
34312
34313 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34314
34315         * mempool.h, mempool.c: added mono_mempool_empty() and
34316         mono_mempool_stats().
34317
34318 2002-10-23  Dick Porter  <dick@ximian.com>
34319
34320         * file-io.c: 
34321         * file-io.h: 
34322         * icall.c: Added MonoIO.GetFileType internal call
34323
34324 2002-10-17  Dick Porter  <dick@ximian.com>
34325
34326         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34327         delegate semaphore before waiting for all threads to finish,
34328         because new threads can also call async delegates.  Fixes bug
34329         32004.
34330
34331         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34332         of 3 seconds, in case another async job is queued.  (This part is
34333         needed because the bug fix reintroduced the 3s exit lag.)  This
34334         makes the mono_runtime_shutdown flag superfluous.
34335
34336 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34337
34338         * reflection.c: include ehader size in method section headers.
34339         Really check for suplicated modules entries.
34340
34341 2002-10-17  Martin Baulig  <martin@gnome.org>
34342
34343         * debug-mono-symfile.c: Added back support for locals.
34344
34345 2002-10-14  Martin Baulig  <martin@gnome.org>
34346
34347         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34348         MONO_TYPE_VOID.
34349
34350 2002-10-14  Martin Baulig  <martin@gnome.org>
34351
34352         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34353         mono_class_get() instead of looking in the class cache. 
34354
34355 2002-10-13  Martin Baulig  <martin@gnome.org>
34356
34357         * debug-mono-symfile.c: Set version number to 28, include the
34358         signature in method names.
34359
34360 2002-10-13  Martin Baulig  <martin@gnome.org>
34361
34362         * debug-mono-symfile.h: Set version number to 27.
34363
34364 2002-10-11  Martin Baulig  <martin@gnome.org>
34365
34366         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34367
34368 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34369
34370         * metadata.c, metadata.h: added helper function to allocate signatures.
34371
34372 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34373
34374         * icall.c: added internal call to get the location of machine.config.
34375
34376 2002-10-08  Martin Baulig  <martin@gnome.org>
34377
34378         * debug-mono-symfile.c: Ignore classes with a pending init for the
34379         moment.
34380
34381 2002-10-03  Dick Porter  <dick@ximian.com>
34382
34383         * threads.c: Freebsd pthread_t is a pointer
34384
34385 2002-10-03  Dick Porter  <dick@ximian.com>
34386
34387         * socket-io.c: Implemented GetHostName_internal
34388
34389 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34390
34391         * mono-config.c:
34392         (mono_config_parse_file): don't leak the text.
34393
34394 2002-10-02  Martin Baulig  <martin@gnome.org>
34395
34396         * debug-mono-symfile.c: Added support for methods.
34397
34398 2002-10-01  Martin Baulig  <martin@gnome.org>
34399
34400         * debug-mono-symfile.c: Don't emit methods and line numbers for
34401         the dynamic symbol file, just write the type table.  We can easily
34402         have an external helper program which creates a symbol file for an
34403         IL file.        
34404
34405 2002-10-01  Dick Porter  <dick@ximian.com>
34406
34407         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34408         Only add the handle to the cleanup array when we're about to
34409         launch the thread.  Bug 31425 deadlocked when the test was run on
34410         mono under w32.
34411
34412 2002-10-01  Martin Baulig  <martin@gnome.org>
34413
34414         * debug-mono-symfile.c: Added support for properties.
34415
34416 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34417
34418         * reflection.c: unaligned store fix from Mark Crichton
34419         <crichton@gimp.org>.
34420
34421 2002-09-27  Martin Baulig  <martin@gnome.org>
34422
34423         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34424         New interncall.
34425
34426 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34427
34428         * assembly.h, assembly.c: use a sane API to hook into the assembly
34429         loading process instead of a useless special-purpouse hack
34430         (ngen needs a hook, too, for example).
34431
34432 2002-09-27  Dick Porter  <dick@ximian.com>
34433
34434         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34435         io-layer can set up some process handle info.  Not needed on w32,
34436         but doesn't hurt either.
34437
34438         * process.c: Pass the program name in the second parameter to
34439         CreateProcess, so the path is searched.  Include the working
34440         directory. Implemented process name, process enumeration, and some
34441         process detail internal calls.
34442         
34443         * icall.c: Added internal calls for process lookup, and some
34444         process details
34445
34446 2002-09-26  Martin Baulig  <martin@gnome.org>
34447
34448         * assembly.c (mono_install_open_assembly_hook): New global
34449         function to install a function to be invoked each time a new
34450         assembly is loaded.
34451         (mono_assembly_open): Run this callback function if set.
34452
34453         * debug-mono-symfile.c: Put back line numbers for the dynamic
34454         symbol file and also record the .il file as source file.  This
34455         allows us to install the temporary symbol file as `file.dbg' just
34456         like a compiler-generated one.
34457
34458 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34459
34460         * Corrected typo in gc.c (BOHEM vs BOEHM).
34461
34462 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34463
34464         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34465         GetProperties. Also avoid calling g_slist_length in GetProperties and
34466         GetMethods.
34467
34468 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34469
34470         * reflection.c: avoid unaligned stores (bug spotted by
34471         Mark Crichton  <crichton@gimp.org>).
34472
34473 2002-09-25  Martin Baulig  <martin@gnome.org>
34474
34475         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34476         instead of guint64 for addresses and added prologue/epilogue info.
34477
34478 2002-09-25  Martin Baulig  <martin@gnome.org>
34479
34480         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34481         store line number info.  For the dynamic symbol file, we only need
34482         to provide the JIT generated dynamic line number info for the dynamic
34483         symbol file.
34484
34485 2002-09-25  Martin Baulig  <martin@gnome.org>
34486
34487         * debug-mono-symfile.h: Incremented version number.
34488
34489 2002-09-24  Martin Baulig  <martin@gnome.org>
34490
34491         * class.c (mono_debugger_class_init_func): New global function
34492         pointer variable.
34493         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34494         call it.
34495
34496         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34497         function.  This is called via the mono_debugger_class_init_func
34498         hook to add all types to the dynamic type table.
34499         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34500         from its metadata token.
34501
34502         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34503         New interncall for the debugger.
34504
34505 2002-09-24  Nick Drochak <ndrochak@gol.com>
34506
34507         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34508         before using it in case it is null.
34509         
34510 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34511
34512         * metadata.c: allow custom modifiers in local var signatures
34513         (bug spotted by Zoltan Varga).
34514
34515 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34516
34517         * class.c: deal with the <Module> class that may have a NULL vtable.
34518         Eliminate warnings.
34519
34520 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34521
34522         * image.c, image.h: more strong name helpers.
34523         * monosn.c: more work: convert pem keys to cryptoapi format.
34524
34525 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34526
34527         * string-icalls.c: speedup IndexOf.
34528
34529 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34530
34531         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34532
34533 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34534
34535         * icall.c: cleanup: use mono_object_domain ().
34536
34537 2002-09-23  Martin Baulig  <martin@gnome.org>
34538
34539         * debug-mono-symfile.c: Improved type support.
34540
34541 2002-09-22  Martin Baulig  <martin@gnome.org>
34542
34543         * debug-mono-symfile.c: Added support for reference types and strings.
34544
34545 2002-09-22  Martin Baulig  <martin@gnome.org>
34546
34547         * debug-mono-symfile.c: Started to work on the type table.
34548
34549 2002-09-21  Martin Baulig  <martin@gnome.org>
34550
34551         * debug-mono-symfile.c: Largely reworked the symbol table format.
34552         The symbol table is now incrementally updated each time a new
34553         method is added.  We're now also using our own magic and version
34554         so that you don't need to recompile all your classes if the
34555         dynamic table changes.
34556         (mono_debug_update_mono_symbol_file): Removed.
34557         (mono_debug_symfile_add_method): New function to add a method.
34558
34559 2002-09-21  Martin Baulig  <martin@gnome.org>
34560
34561         * icall.c
34562         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34563         New interncall.
34564
34565         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34566         New interncall to get a method from its metadata token.
34567
34568 2002-09-21  Martin Baulig  <martin@gnome.org>
34569
34570         * debug-mono-symfile.c: Create type table.
34571
34572 2002-09-20  Martin Baulig  <martin@gnome.org>
34573
34574         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34575
34576 2002-09-20  Martin Baulig  <martin@gnome.org>
34577
34578         * debug-mono-symfile.c: Provide information about params and locals.
34579
34580 2002-09-20  Martin Baulig  <martin@gnome.org>
34581
34582         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34583         New interncall.
34584
34585         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34586         interncall to get a method from its metadata token.
34587
34588 2002-09-20  Martin Baulig  <martin@gnome.org>
34589
34590         * debug-mono-symfile.c: Added a few checks for method->header
34591         being non-NULL.  This should never happen, but for the moment
34592         let's use a g_warning() rather than a g_assert().
34593
34594 2002-09-19  Mark Crichton  <crichton@gimp.org>
34595
34596         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34597         even if support for it isn't present.  Added an #ifdef to fix this.
34598
34599         * socket-io.c: Added checks back for Solaris support.
34600
34601 2002-09-19  Martin Baulig  <martin@gnome.org>
34602
34603         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34604         changes in the symbol file format.
34605
34606 2002-09-18  Martin Baulig  <martin@gnome.org>
34607
34608         * debug-mono-symfile.c: Set version number to 21.
34609
34610 2002-09-18  Dick Porter  <dick@ximian.com>
34611
34612         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34613         on netbsd.  Fixes bug 30051.
34614
34615 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34616
34617         * reflection.c:
34618         (set_version_from_string): little fix.
34619
34620 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34621
34622         * monosn.c, Makefile.am: added strong name utility.
34623         * reflection.h, reflection.c: implemented delayed signing,
34624         locale, version and hash id assembly attributes.
34625
34626 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34627
34628         * loader.c, metadata.c: load param attributes in signatures.
34629
34630 2002-09-16  Martin Baulig  <martin@gnome.org>
34631
34632         * debug-mono-symfile.c: Added string table with all method names.
34633
34634 2002-09-14  Martin Baulig  <martin@gnome.org>
34635
34636         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34637         fast method lookup.
34638
34639 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34640
34641         * reflection.c: record the public key token of referenced assemblies.
34642
34643 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34644
34645         * image.c, image.h: added functions to get the strong name and the
34646         public key of an assembly.
34647         * pedump.c: use them.
34648
34649 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34650
34651         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34652
34653 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34654
34655         * marshal.c (mono_marshal_get_managed_wrapper): Added
34656         MONO_TYPE_BOOLEAN 
34657
34658 2002-09-11  Martin Baulig  <martin@gnome.org>
34659
34660         * gc.c: Call GC_unregister_disappearing_link() on all links when
34661         finalizing them, this is necessary to aviod a crash in boehm's
34662         finalize handler.
34663
34664 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34665
34666         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34667         nick@chemlab.org.
34668
34669 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34670
34671         * icall.c: implemented MonoType::Module.
34672         * reflection.c, reflection.h: mono_module_get_object () from
34673         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34674
34675 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34676
34677         * icall.c: ignore overridden methods in GetMethods ().
34678         Fix for FieldInfo::SetValue().
34679         * object.c: handle float/double in runtime invoke.
34680
34681 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34682
34683         * object.c: allow a constructor to be called again on an object.
34684
34685 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34686
34687         * class.h, class.c: move field layout code to it's own function and
34688         export it. Get an interface id earlier. Move fields in MonoClass
34689         so they are more cache friendly and align the bitfields.
34690         * loader.c: temporary handle get_param_names() for a runtime method.
34691         * reflection.c, reflection.h: more code to handle runtime creation of
34692         types.
34693
34694 2002-09-09  Martin Baulig  <martin@gnome.org>
34695
34696         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34697         signature with the pinvoke field being set for the actual call.
34698
34699 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34700
34701         * icall.c: removed some unused icalls. Start of map of glib charsets
34702         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34703
34704 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34705
34706         * debug-helpers.c: break infinite loop (found and fixed by
34707         Holger Arnold <harnold@gmx.de>).
34708
34709 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34710
34711         * icall.c: target may be null in create_delegate.
34712
34713 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34714
34715         * marshal.c: handle a boolean return type.
34716
34717 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34718
34719         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34720
34721 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34722
34723         * gc.c: fix weakreferences.
34724
34725 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34726
34727         * icall.c: added icall to get default codepage.
34728
34729 2002-09-03  Dick Porter  <dick@ximian.com>
34730
34731         * threads.h: 
34732         * threads.c: Use MonoThread instead of MonoObject where
34733         apropriate.
34734
34735         Store running thread objects in a hash table, so that we have all
34736         the info to hand when waiting for them to finish
34737         (means we don't need OpenThread() any more, so mingw builds should
34738         be fully functional again.)
34739
34740         * verify.c:
34741         * object.h: Added thread ID to MonoThread
34742
34743 2002-09-03  Martin Baulig  <martin@gnome.org>
34744
34745         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34746
34747 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34748
34749         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34750
34751 2002-09-03  Martin Baulig  <martin@gnome.org>
34752
34753         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34754         argument to store the end address of the disassembled instruction.
34755
34756         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34757         here from debug-symfile.h.
34758         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34759         JIT into this struct.
34760         (MonoSymbolFile): Added `char *image_file' field.
34761         (MonoDebugGetMethodFunc): Removed.
34762         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34763         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34764         (mono_debug_find_method): New method.
34765
34766         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34767         create a full symbol file.
34768         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34769         and static symbol files.
34770         (mono_debug_find_method): The symbol file keeps an internal method hash,
34771         call this to get a MonoDebugMethodInfo from a MonoMethod.
34772
34773         * debug-symfile.[ch]: Removed.
34774
34775 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34776
34777         * image.c (do_mono_image_open): Remove linker version check.
34778
34779 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34780
34781         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34782         wrappers for instance methods.
34783         
34784 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34785
34786         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34787
34788 2002-08-28  Dick Porter  <dick@ximian.com>
34789
34790         * Makefile.am: Export HOST_CC for w32 builds
34791
34792 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34793
34794         * file-io.c process.c: MonoString are null terminated, no
34795         need for mono_string_to_utf16() anymore.
34796
34797 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34798
34799         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34800
34801 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34802
34803         * icall.c, reflection.h: speedup System.MonoType.
34804
34805 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34806
34807         * reflection.c: allow null as the value of a string argument in
34808         custom attributes constructors.
34809
34810 2002-08-27  Martin Baulig  <martin@gnome.org>
34811
34812         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34813         `trampoline_address' field.
34814
34815 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34816
34817         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34818         check (fixes bug #29486) 
34819
34820 2002-08-27  Martin Baulig  <martin@gnome.org>
34821
34822         * debug-mono-symfile.c: Changed the file format in a way that allows us
34823         open it read-only and to use a specially malloced area for all the
34824         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34825         debugging IL code and there is no MCS generated symbol file for it.
34826
34827 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34828
34829         * object.c: added a define for a good string and array
34830         creation speedup (not enabled by default because we need to deal with
34831         the synch stuff).
34832
34833 2002-08-26  Martin Baulig  <martin@gnome.org>
34834
34835         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34836         function to create a dynamic symbol file.  This is used by the
34837         debugger to create a symbol file for IL code on-the-fly.
34838
34839 2002-08-26  Martin Baulig  <martin@gnome.org>
34840
34841         * loader.c (mono_lookup_pinvoke_call): Include the error message
34842         from g_module_error() in the error message.
34843
34844 2002-08-24  Martin Baulig  <martin@gnome.org>
34845
34846         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34847         function to update the symbol file.  The symbol file is mmap()ed
34848         writable, but private.  This allows us to install the symbol file
34849         together with the assembly.
34850
34851 2002-08-24  Martin Baulig  <martin@gnome.org>
34852
34853         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34854         but they can read the new symbol file format which mcs is now creating.
34855
34856         * debug-symfile.c (mono_debug_find_source_location): Moved to
34857         debug-mono-symfile.c; this is now operating on the new symbol file.
34858
34859 2002-08-23  Martin Baulig  <martin@gnome.org>
34860
34861         * debug-helpers.c (mono_method_desc_from_method): New function to get
34862         a MonoMethodDesc from a MonoMethod.
34863
34864 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34865
34866         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34867         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34868
34869 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34870
34871         * string-icalls.[ch]: make helper methods static.
34872
34873 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34874
34875         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34876         types to it and to SetValueInternal.
34877
34878         * object.c: Moved handle_enum label to its proper place. This was the
34879         f... bug! ;-)
34880
34881         This time i compiled mcs and gtk-sharp and they both work.
34882
34883 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34884
34885         * icall.c: reverted partially my previous patch until 
34886         object.c:set_value handles enums correcly.
34887
34888 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34889
34890         * icall.c:
34891         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34892         (ves_icall_System_Environment_get_MachineName): removed warning when
34893         compiling under cygwin.
34894
34895 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34896
34897         * object.c: fixed field_get_value() for reference types.
34898
34899 2002-08-22  Dick Porter  <dick@ximian.com>
34900
34901         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34902         Don't free a buffer while it's still needed.  Patch from Jonathan
34903         Liger <Jonathan.liger@wanadoo.fr>
34904
34905 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34906
34907         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34908         internal call.
34909
34910 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34911
34912         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34913         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34914
34915         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34916         we call unmanaged code which throws exceptions.
34917
34918 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34919
34920         * appdomain.h: added per-domain entry_assembly.
34921         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34922         arguments.
34923         * icall.c: Assembly::GetEntryAssembly icall.
34924         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34925         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34926
34927 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34928
34929         * appdomain.h, gc.c: added mono_domain_finalize ().
34930
34931 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34932
34933         * object.c:
34934         (mono_print_unhandled_exception): changed g_warning by g_printerr
34935         because g_log has a 1024 characters limit (yeah, i got a big stack
34936         trace). Don't print exception name, that should be in ToString 
34937         returned string.
34938
34939 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34940
34941         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34942         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34943
34944 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34945
34946         * object.c:
34947         (mono_print_unhandled_exception): after previous commit, i realized
34948         that MS calls ToString on the exception. I changed this function to
34949         do that. This way we get stack_trace for free.
34950
34951 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34952
34953         * object.c:
34954         (mono_print_unhandled_exception): invoke Message property instead of
34955         getting 'message' field from Exception. Don't allocate memory for
34956         'trace' and 'message' if not needed.
34957
34958 2002-08-18  Dick Porter  <dick@ximian.com>
34959
34960         * unicode.c: Fix asserts to match Encoder.cs checks
34961
34962 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34963
34964         * marshal.c: fix unaligned store issue and a few wrong
34965         opcode argument types.
34966
34967 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34968
34969         * icall.c: added GetUninitializedObjectInternal internal call.
34970
34971 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34972
34973         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34974         to the right domain.
34975
34976 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34977
34978         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34979
34980         * class.c (class_compute_field_layout): set blittable to false for Strings
34981
34982         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34983
34984 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34985
34986         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34987         first chunk of code to create types at runtime. Code to
34988         handle ReflectedType/DeclaringType. Make reflection handles
34989         domain specific.
34990
34991 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34992
34993         * class.c: set correct name in arrays.
34994
34995 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34996
34997         * appdomain.c (mono_domain_transfer_object): make it work with
34998         valuetypes. bug fixes.
34999
35000 2002-08-12  Dick Porter  <dick@ximian.com>
35001
35002         * object.h: Rename some parameters to avoid c++ keywords (Patch
35003         from Joseph Wenninger <kde@jowenn.at>)
35004
35005 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35006
35007         * icall.c: added icall to implement Assembly.GetFile*.
35008
35009 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35010
35011         * reflection.h, reflection.c: code to embed managed resources.
35012
35013 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35014
35015         * class.c: move all the type size stuff into
35016         class_compute_field_layout().
35017
35018 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35019
35020         * class.c: ensure enums have always the correct instance size.
35021         * unicode.c: remove wrong assert.
35022
35023 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35024
35025         * assembly.c: fix mem corruption issue.
35026         * image.h, image.c: added mono_image_get_resource () to access
35027         managed resources.
35028         * icall.c: implemented Assembly.EntryPoint property and some
35029         Managed Resources related internalcalls.
35030
35031
35032 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35033
35034         * image.c, image.h: impemented mono_image_get_entry_point ().
35035         * appdomain.c: use mono_image_get_entry_point.
35036
35037 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35038
35039         * reflection.c: support the object type argument when loading
35040         custom attributes.
35041
35042 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35043
35044         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35045         String as return type.
35046
35047 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35048
35049         * reflection.c: fix encoding of named args for custom attrs to match
35050         the ms implementation. Read them back when instantiating custom
35051         attributes.
35052
35053 2002-08-02  Radek Doulik  <rodo@ximian.com>
35054
35055         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35056         by Dietmar as quick fix
35057         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35058         16 as stack size, used on more places as quick fix before Dietmar
35059         will fix it properly
35060
35061 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35062
35063         * object.h, object.c: added accessors for fields and properties.
35064
35065 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35066
35067         * class.c, class.h: made mono_class_get_field_from_name ()
35068         loop on parent types.
35069         Added mono_class_get_property_from_name ().
35070
35071 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35072
35073         * class.c, class.h: move the code to setup the type vtable in its own
35074         function so that it can be reused also for types created at runtime.
35075         Eliminate the "class" identifier from the header file.
35076         * reflection.c: setup the vtable for enums so that we can create
35077         objects for use in SetConstant ().
35078
35079 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35080
35081         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35082         instead of the delegate itself as this pointer (bug #28383)
35083
35084 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35085
35086         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35087         conversions.
35088
35089 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35090
35091         * loader.c: don't set the pinvoke bit on icalls.
35092
35093 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35094
35095         * debug-helpers.c (mono_method_full_name): only print a number to
35096         indicate wrapper type (so that the output is more readable in traces).
35097
35098 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35099
35100         * class.c (mono_class_init): include method override patch from Paolo
35101
35102 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35103
35104         * icall.c: fixed GetTypeCode().
35105
35106 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35107
35108         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35109         use real delegate invoke function to make it work with multicast
35110         delegates (fix bug# 28291).
35111
35112 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35113
35114         * object.c: load constant strings.
35115
35116 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35117
35118         * reflection.c: no magic numbers.
35119         * tabledefs.h: security action enum.
35120
35121 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35122
35123         * assembly.c: fix possible memory corruption.
35124
35125 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35126
35127         * reflection.h, reflection.c: added support for linking resources.
35128         * verify.c: check we have an updated corlib.
35129
35130 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35131
35132         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35133         string arrays.
35134         (mono_marshal_string_array): null terminate unmanaged string arrays.
35135         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35136
35137 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35138
35139         * icall.c: Type.GetType () can now return also types from the
35140         calling assembly.
35141
35142 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35143
35144         * loader.h, loader.c: stack walking support.
35145         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35146         GetCallingAssembly.
35147
35148 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35149
35150         * marshal.c: added optimisations for blittable types 
35151
35152         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35153         (mono_class_setup_mono_type): set blittable attribute for single
35154         and double.
35155
35156         * marshal.c (mono_string_utf8_to_builder): impl.
35157         (mono_string_builder_to_utf8): impl.
35158         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35159
35160 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35161
35162         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35163         (mono_marshal_get_managed_wrapper): impl. byref types
35164
35165 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35166
35167         * icall.c:
35168         (search_method): don't display debug message. 
35169
35170 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35171
35172         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35173
35174 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35175
35176         * appdomain.c: set the missing filename when throwing exception.
35177
35178 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35179
35180         * metadata.c (mono_type_size): code cleanup
35181         (mono_type_stack_size): removed some test code
35182
35183 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35184
35185         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35186         mono_get_exception_file_not_found now.
35187
35188         * exception.c (mono_exception_from_name_two_strings): New version
35189         that will call a constructor with two string arguments. 
35190         (mono_get_exception_file_not_found): New helper routine, used to
35191         report file-not-found errors.
35192
35193 2002-07-20  Dick Porter  <dick@ximian.com>
35194
35195         * process.h:
35196         * process.c: Pass file handles to CreateProcess
35197         
35198         * icall.c:
35199         * file-io.h:
35200         * file-io.c: Implemented CreatePipe
35201
35202 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35203
35204         * metadata.c (mono_get_param_info): set alignment for value types
35205
35206 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35207
35208         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35209         Constify mono_domain_assembly_open().
35210         * loader.c: handle null namespace in icalls.
35211
35212 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35213
35214         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35215         (emit_str_to_ptr_conv): marshal object as structs
35216
35217         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35218
35219         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35220
35221 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35222
35223         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35224         (mono_marshal_get_native_wrapper): we an now return value types
35225
35226 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35227
35228         * verify.c: more checks implemented.
35229
35230 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35231
35232         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35233         (fix bug #27695)
35234         (mono_marshal_get_native_wrapper): allow byref arguments
35235         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35236         impl. PtrToStringXXX methods
35237         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35238         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35239         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35240         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35241         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35242
35243 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35244
35245         * reflection.c: fix buglet in parsing an assembly name.
35246
35247 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35248
35249         * marshal.c (emit_ptr_to_str_conv): first impl.
35250
35251 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35252
35253         * object.c, class.h: cache the vtable in the class as suggested by
35254         vargaz@freemail.hu (Zoltan Varga).
35255
35256 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35257
35258         * class.h, loader.c: added mono_field_from_token().
35259         * verify.c: first cut of type checking code.
35260
35261 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35262
35263         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35264
35265 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35266
35267         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35268         (fix bug #27782)
35269         (mono_marshal_get_remoting_invoke): impl.
35270         (mono_delegate_begin_invoke): impl.
35271         (mono_mb_emit_save_args): impl.
35272         (mono_delegate_end_invoke): impl.
35273         (mono_marshal_get_delegate_begin_invoke):
35274         (mono_marshal_get_delegate_end_invoke):
35275         (mono_marshal_get_delegate_invoke): generate a special name for
35276         those methods (including the signature) and associate them whith
35277         the delegate class. 
35278
35279 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35280
35281         * reflection.[ch]: 
35282         (mono_reflection_type_from_name): now it has a MonoImage parameter
35283         which is used as the default image to search the type in. If the image
35284         is NULL or getting the type from it fails, it defaults to corlib.
35285
35286         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35287         new parameter.
35288
35289 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35290
35291         * reflection.c: update the parameter table index.
35292
35293 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35294
35295         * domain.c: don't include the mark byte in the string hash.
35296
35297 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35298
35299         * icall.cs: icall for Type.GetTypeCode ().
35300         * verify: a couple of fixes and disabled local initialization checks.
35301
35302 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35303
35304         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35305
35306         * debug-helpers.c (mono_method_full_name): print the type of the
35307         runtime wrapper
35308
35309         * metadata.c (mono_signature_hash): a hash function for signatures
35310         (mono_signature_hash): better hash algorithm
35311
35312         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35313
35314         * debug-helpers.c (mono_method_full_name): this can now generate
35315         method names with signatures
35316
35317         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35318         method dont have this pointers.
35319
35320 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35321
35322         * reflection.c: fixup typebuilder tokens.
35323         * image.c: fix buglet.
35324         * marshal.h: remove whitespace.
35325         * metadata.h, metadata.c: reinstate code that was removed.
35326         * verify.c: handle catch directives and fix another couple of bugs.
35327
35328 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35329
35330         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35331         (mono_marshal_get_native_wrapper): make it comp. with the old code
35332         (mono_marshal_get_native_wrapper): support boolean
35333         (mono_marshal_get_managed_wrapper): support more types
35334
35335 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35336
35337         * class.c (class_compute_field_layout): compute class->blittable attribute.
35338
35339 2002-07-09  Dick Porter  <dick@ximian.com>
35340
35341         * threads.c: Make the thread cleaning up cope with threads that
35342         call ExitThread()
35343
35344 2002-07-08  Radek Doulik  <rodo@ximian.com>
35345
35346         * reflection.c (method_encode_code): use non-translated values to
35347         compute finally_start, this fixes exception handling on ppc, yay!
35348
35349         * decimal.h (struct signscale): fix endianess
35350
35351 2002-07-07  Radek Doulik  <rodo@ximian.com>
35352
35353         * reflection.c: swap box_val and not val
35354
35355 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35356
35357         * reflection.c, reflection.h: handle full assembly info in type name.
35358         Handle Type arguments when loading custom attributes.
35359         * icall.c: updated to use new mono_reflection_type_from_name () method.
35360
35361 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35362
35363         * loader.c:
35364         (method_from_memberref): also print assembly name when method not found.
35365
35366 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35367
35368         * icall.c:
35369         (ves_icall_TypeGetProperties): fixed bug #27473. 
35370
35371 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35372
35373         * reflection.c: display image name and token when cannot find the
35374         .ctor for an attribute.
35375
35376 2002-07-05  Martin Baulig  <martin@gnome.org>
35377
35378         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35379
35380 2002-07-04  Dick Porter  <dick@ximian.com>
35381
35382         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35383         compile on mingw.  This will cause mingw builds to not wait for
35384         subthreads to terminate after the main thread does.  I've lodged a
35385         bug with the mingw developers for them to wrap OpenThread().
35386
35387 2002-07-03  Dick Porter  <dick@ximian.com>
35388
35389         * threads.c: Store thread IDs instead of handles, because
35390         GetCurrentThread() returns a pseudohandle and therefore stores
35391         useless values.  mono_thread_cleanup() continues checking the
35392         array of threads until it is empty, to cope with subthreads
35393         spawning new threads after the main thread has finished.
35394
35395         * profiler.h:
35396         * profiler.c:
35397         * profiler-private.h: Pass the thread ID to thread profiler
35398         functions, instead of a handle
35399
35400 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35401
35402         * verify.c: fixes to make it more usable.
35403         * pedump.c: added --verify code to verify IL code in an assembly.
35404
35405 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35406
35407         * reflection.c: turn errors into warnings to allow compiling corlib.
35408
35409 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35410
35411         * reflection.c: add special cases to compile corlib.
35412
35413 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35414
35415         * reflection.c: handle properties with only a set method.
35416
35417 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35418
35419         * opcodes.h: add enum with opcodes in opval order.
35420
35421 2002-07-01  Dick Porter  <dick@ximian.com>
35422         
35423         * object.h:
35424         * object.c (mono_runtime_run_main): Removed unneeded argument
35425
35426 2002-06-28  Martin Baulig  <martin@gnome.org>
35427
35428         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35429
35430 2002-06-27  Dick Porter  <dick@ximian.com>
35431
35432         * threads.c: Store the handle in both the parent thread and in the
35433         subthread, to minimise the time between starting a new thread and
35434         storing its ID.
35435
35436 2002-06-26  Dick Porter  <dick@ximian.com>
35437
35438         * appdomain.c (mono_runtime_cleanup): Close the socket library
35439         after all the threads have finished, not before
35440
35441 2002-06-26  Martin Baulig  <martin@gnome.org>
35442
35443         * debug-symfile.c (mono_debug_find_source_location): Added
35444         `guint32 *line_number' argument.  If it's not NULL, store the line number
35445         there and return the file name without the line number.
35446
35447 2002-06-25  Dick Porter  <dick@ximian.com>
35448
35449         * icall.c:
35450         * process.h:
35451         * process.c: Process forking and other support functions
35452
35453 2002-06-25  Dick Porter  <dick@ximian.com>
35454
35455         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35456         things dont happen when the image is closed.
35457         (mono_image_lookup_resource): Walk the resource section looking
35458         for a particular entry
35459
35460         * cil-coff.h: PE resource section decoding
35461
35462 2002-06-25  Dick Porter  <dick@ximian.com>
35463         
35464         * assembly.h:
35465         * assembly.c: 
35466         (mono_assembly_foreach): Accessor functions to walk the list of
35467         loaded assemblies
35468         (mono_assembly_set_main):
35469         (mono_assembly_get_main): Process methods need to know which
35470         assembly is the "main" one
35471
35472         * object.c (mono_runtime_run_main): Record the main assembly
35473
35474         * debug-helpers.c: Fix typo
35475
35476 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35477
35478         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35479         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35480
35481 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35482
35483         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35484
35485 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35486
35487         * image.c (do_mono_image_open): Initialize reference count,
35488         otherwise we leak the MonoImage.
35489
35490 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35491
35492         * reflection.c: small tweak to handle self-hosting.
35493
35494 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35495
35496         * reflection.c: fix type name parse code.
35497
35498 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35499
35500         * reflection.c: break out of the loop.
35501         * image.c: special case corlib.
35502
35503 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35504
35505         * reflection.c: add all the custom attrs at the end to ensure the
35506         ctors have been properly initialized when the attributes are defined
35507         in the current assembly.
35508
35509 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35510
35511         * reflection.c: handle correctly multiple-nested types.
35512
35513 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35514
35515         * row-indexes.h: fix typos.
35516         * reflection.c: adjust for typos and fix method_def_or_ref
35517         encoding in MethodImpl table.
35518
35519 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35520
35521         * reflection.c: fix entry point patching (thanks Serge!).
35522
35523 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35524
35525         * verify.c: add check for System.Exception
35526
35527 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35528
35529         * image.c, class.c: minifix for code just c&p'ed.
35530         * reflection.c: warning fix.
35531         * object.h, loader.h, domain.c: load also StringBuilder.
35532
35533 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35534
35535         * marshal.h, marshal.c: some support code to handle complex marshaling.
35536
35537 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35538
35539         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35540         Better signatures with vtable error dump.
35541
35542 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35543
35544         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35545
35546 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35547
35548         * icall.c (ves_icall_Type_GetField): impl.
35549
35550 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35551
35552         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35553         to retrieve a marshal description blob for a field or param.
35554
35555 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35556
35557         * reflection.h, reflection.c: change order of nested type emission
35558         to avoid table corruption. The NestedTypes table is sorted.
35559         * icall.c: change order of GetConstructor results to workaround mcs bug.
35560
35561 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35562
35563         * reflection.h, reflection.c: handle field and param marshal
35564         information.
35565
35566 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35567
35568         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35569
35570 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35571
35572         * reflection.c: fix call convention.
35573
35574 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35575
35576         * reflection.h, reflection.c: mono_image_get_memberref_token()
35577         takes a type instead of a class, now. Added
35578         mono_image_get_array_token() to create tokens for the special
35579         multi-dim array methods.
35580
35581 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35582
35583         * assembly.c: handle modules (no assembly table). Split
35584         loading references in its own function.
35585         * class.c: handle moduleref resolution scope.
35586         * image.c, image.h: cache module name in image.
35587
35588 2002-06-07  Martin Baulig  <martin@gnome.org>
35589
35590         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35591         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35592
35593 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35594
35595         * icall.c: more signature fixes that used uint instead of int.
35596
35597 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35598
35599         * reflection.c: fixed signature of field refs.
35600
35601 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35602
35603         * class.c, reflection.c: handle typerefs of nested types
35604         (both on read and when writing files).
35605
35606 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35607
35608         * icall.c: fix method signatures that tried to workaround the previous
35609         typo, d'oh!
35610
35611 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35612
35613         * debug-helpers.c: fix typo.
35614
35615 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35616
35617         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35618         rewrote the PE/COFF writing code (our programs are understood by the
35619         ms runtime, now).
35620
35621 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35622
35623         * gc.c, gc.h, icall.c: weakreference support.
35624
35625 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35626
35627         * Makefile.am, mono-config.c: use $(sysconfdir).
35628
35629 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35630
35631         * icall.c: changed default precision of Double.ToString() to 15.
35632         Fixed memory leak. Unified with Single.ToString.
35633
35634 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35635
35636         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35637
35638 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35639
35640         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35641         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35642         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35643         and myself.
35644
35645 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35646
35647         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35648
35649 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35650
35651         * reflection.c, socket-io.c: more compilation fixes.
35652
35653 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35654
35655         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35656         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35657         unicode.c: warning and compiler compatibility fixes.
35658
35659 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35660
35661         * class.h, metadata.c: fixed warnings/compilation errors.
35662
35663 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35664
35665         * Makefile.am, mono-config.c, mono-config.h: configuration file
35666         support routines.
35667         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35668         config file. Export methods to insert and lookup mappings.
35669
35670 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35671
35672         * reflection.c: handle types and boxed objects in custom attr
35673         constructors.
35674
35675 2002-05-30  Martin Baulig  <martin@gnome.org>
35676
35677         * debug-symfile.c
35678         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35679
35680 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35681
35682         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35683         to lookup the implmap row for a P/Invoke method.
35684         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35685         P/Invoke method from the runtime on an as needed basis.
35686
35687 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35688
35689         * metadata.c (mono_metadata_parse_signature): impl.
35690
35691 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35692
35693         * class.c: handle .pack directive.
35694
35695 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35696
35697         * object.c: initialize static fields with RVA data.
35698
35699 2002-05-25  Martin Baulig  <martin@gnome.org>
35700
35701         * debug-symfile.c
35702         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35703
35704 2002-05-24  Martin Baulig  <martin@gnome.org>
35705
35706         * debug-symfile.c
35707         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35708         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35709         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35710
35711 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35712
35713         * object.c: special case string ctros in invoke.
35714         * gc.c: silly whitespace changes.
35715
35716 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35717
35718         * threadpool.[ch]: impl. a threadpool that can
35719         be used by mint and mono.
35720
35721 2002-05-22  Martin Baulig  <martin@gnome.org>
35722
35723         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35724         The first argument is now a `MonoReflectionModuleBuilder *', the return
35725         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35726         `methods' field to get the method builder.  The `token' argument is the
35727         unfixed token.
35728
35729         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35730         invalid characters instead of g_assert_not_reached()ing.  This seems
35731         to be the behaviour of mscorlib.
35732
35733 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35734
35735         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35736         Hestilow to fix bug #25104
35737
35738 2002-05-21  Martin Baulig  <martin@gnome.org>
35739
35740         * debug-symfile.c (mono_debug_find_source_location): New function.
35741         Looks up an IL offset in the line number table and returns the source
35742         location as a string.
35743
35744 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35745
35746         * icall.c:
35747         (mono_double_ToStringImpl): changed %f by %g until we have something
35748         better.
35749
35750 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35751
35752         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35753         parameters first in C#.
35754
35755 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35756
35757         * icall.c, reflection.h: added icall to get info about an event.
35758
35759 2002-05-20  Radek Doulik  <rodo@ximian.com>
35760
35761         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35762         endian
35763         (mono_value_box): don't use memcpy for small sizes on
35764         architectures with unaligned access
35765
35766 2002-05-20  Martin Baulig  <martin@gnome.org>
35767
35768         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35769         if `tb->parent == NULL'.
35770         (mono_reflection_create_internal_class): New function.  This is
35771         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35772         for enum types.
35773
35774         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35775         New interncall.
35776
35777 2002-05-19  Martin Baulig  <martin@gnome.org>
35778
35779         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35780         argument to get the length, don't default to the array length.
35781
35782 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35783
35784         * assembly.c (mono_assembly_setrootdir): New function used to
35785         override the MONO_ASSEMBLIES directory.
35786
35787 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35788
35789         * icall.c: ValueType_GetHashCode() initialize local var.
35790
35791 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35792
35793         * reflection.c: sort custom attributes table.
35794
35795 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35796
35797         * reflection.c: support named args in custom attributes (write support).
35798
35799 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35800
35801         * reflection.c: fix finally position calculation.
35802
35803 2002-05-15  Radek Doulik  <rodo@ximian.com>
35804
35805         * reflection.c: fixed endianess at many places
35806
35807         * icall.c (ves_icall_InitializeArray): comment out debug msg
35808
35809 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35810
35811         * object.c (mono_unhandled_exception): new function to handle
35812         unhandled exceptions.
35813         (mono_unhandled_exception): call the UnhandledException event.
35814         (mono_runtime_delegate_invoke): impl.
35815
35816 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35817
35818         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35819         returns the RVA, not the direct pointer to the data. Handle the case
35820         when the class size is fixed.
35821
35822 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35823
35824         * reflection.c: fix some endianess issues.
35825
35826 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35827
35828         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35829
35830         * threads.c (mono_thread_init): added a callback which is invoked
35831         at thread start.
35832
35833 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35834         
35835         * icall.c: make GetHashCode return non-negative values.
35836
35837 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35838
35839         * object.c, icall.c, gc.c: revert to address-based hashcode.
35840
35841 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35842
35843         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35844
35845 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35846
35847         * icall.c, class.c: special case <Module>.
35848
35849 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35850
35851         * icall.c: fix bug in GetNow().
35852
35853 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35854
35855         * object.c (mono_runtime_class_init): make sure that we call all
35856         static class constructors.
35857
35858 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35859
35860         * reflection.c: sort methodsemantics table.
35861
35862 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35863
35864         * reflection.h, reflection.c: honour init locals setting.
35865
35866 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35867
35868         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35869
35870 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35871
35872         * reflection.c: support ContructorBuilders in attribute blob creation.
35873
35874 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35875
35876         * reflection.c: some changes to build a binary that can be run
35877         directly in windows.
35878
35879 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35880
35881         * loader.c: print a big message when an icall can't be found.
35882
35883 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35884
35885         * string-icalls.c: fix bug 24248.
35886
35887 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35888
35889         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35890         icall.c, reflection.h: separate assembly loading by pathname and by
35891         assembly name. Use the MONO_PATH env var to search for assemblies.
35892
35893 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35894
35895         * assembly.c, image.h: add some support for assemblies
35896         with multiple modules.
35897         * class.c, class.h: export mono_class_from_typeref().
35898         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35899         instead.
35900
35901 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35902
35903         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35904         documentation says (the ECMA one is correct).
35905
35906 2002-05-02  Dick Porter  <dick@ximian.com>
35907
35908         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35909         Don't name the synchronisation mutex.
35910
35911 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35912
35913         * rand.c
35914         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35915         Make the prototypes match.
35916         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35917         Same.
35918
35919         * icall.c
35920         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35921         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35922         all systems have tm.tm_zone, so use strftime() with %Z to print
35923         the timezone abreviation into a temp string.
35924
35925         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35926         rather than mono_array_addr() on a MonoString on Big Endian
35927         machines.
35928
35929 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35930
35931         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35932         fix bug 24041
35933
35934 2002-04-30  Dick Porter  <dick@ximian.com>
35935
35936         * socket-io.c: Cope with SOCKET being an integer rather than a
35937         pointer now.
35938
35939         * threads.c: Added Thread_free_internal, to deal with thread
35940         handle cleanup.  Moved calls to handle_store() and handle_remove()
35941         to start_wrapper(), so each can only be called once.  Allocate
35942         synchronisation blocks with GC_malloc(), and use GC finalisation
35943         to close the handles.
35944
35945         * icall.c: added System.Threading.Thread::Thread_free_internal
35946
35947 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35948
35949         * icall.c: support Environment.Exit, CommandLineArgs().
35950
35951 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35952
35953         * object.c, object.h: added mono_runtime_run_main () and
35954         mono_runtime_get_main_args () for use in System.Environment.
35955
35956 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35957
35958         * gc.c: fix thinko, enable actual finalization since the jit is now
35959         fixed.
35960
35961 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35962
35963         * gc.c, object.c: take into account that an object may be offset wrt the address
35964         returned by GC_malloc().
35965
35966 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35967
35968         * image.c: handle files without entries in the assembly table (modules).
35969
35970 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35971
35972         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35973         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35974         allowed to be null when it's System.Object class setup.
35975
35976 2002-04-27  Martin Baulig  <martin@gnome.org>
35977
35978         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35979         if `tb->parent == NULL' rather than crashing.
35980
35981 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35982
35983         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35984         calling acos() where asin() should have been called.
35985
35986 2002-04-26  Martin Baulig  <martin@gnome.org>
35987
35988         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35989         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35990         there's a subdirectory called `System', but we don't want to read that
35991         subdirectory as an assembly.
35992
35993 2002-04-25  Martin Baulig  <martin@gnome.org>
35994
35995         * debug-symfile.c: Reflect latest MonoString changes.
35996
35997 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35998
35999         * rand.c, rand.h: instance method icalls need to have an explicit
36000         this pointer as first argument in the C implementation.
36001
36002 2002-04-25  Nick Drochak <ndrochak@gol.com>
36003
36004         * icall.c: Fix typo in map for GetNonZeroBytes
36005
36006 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36007
36008         * string-icalls.c : String does now passes unit tests without any 
36009         errors, the following changes has been made:
36010         
36011         Implemented replace methods.
36012         Renaming of methods to (try) follow the standard.
36013         Fixed compare ordinal
36014         Made all memory allocated directly to function instead of via icall function.
36015         Small performance fix in is_in_array function
36016                         
36017  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36018
36019         c (mono_string_Internal_ctor_charp_int_int):
36020         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36021         sindex < 0, throw ArgumentOutOfRangeException instead of
36022         ArgumentNullException.
36023
36024         Added new check for length == 0, however
36025         I need to make it return String.Empty from the C code.
36026         
36027         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36028         that calculate the length for us here.
36029         
36030         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36031         mono_string_new_utf16 with mono_string_new, since value is utf8.
36032
36033 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36034
36035         * object.c: register the object for finalization if needed.
36036         Allocate one more char in the string for the terminating 0 char.
36037
36038 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36039
36040         * class.c, class.h, image.c: check if a type implemenst a destructor.
36041         Use the proper key for array class lookups.
36042         * icall.c: register the icalls in the System.GC class.
36043         * gc.c, gc.h: GC-related functions and icalls.
36044
36045 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36046
36047         * icall.c:
36048         * socket-io.c:
36049         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36050         changed a couple of free () by g_free ().
36051
36052         * decimal.c: one-liner in the comments for decimal2string ().
36053
36054 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36055
36056         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36057
36058 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36059
36060         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36061         * object.c (mono_runtime_invoke_array) : handle null in params
36062
36063 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36064
36065         * string-icalls.c: fixed bug in split (one off bug)
36066
36067 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36068
36069         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36070         * icalls.c: added String::Equals as internal method
36071
36072 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36073
36074         * threads.c: fixed bug in the double interlocked functions
36075
36076 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36077
36078         * threads.c: implemented all of the new interlocked icalls.
36079         * string-icalls.c: fix a bug in insert.
36080         * icalls.c: added the icalls for interlocked, removed old string functions.
36081         
36082 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36083
36084         * loader.c: fix off-by-one error when reading argument names.
36085
36086 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36087
36088         * profiler.c: win32 counter implementation (untested).
36089         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36090         (the latter needs testing and more complete impl. from win32 folks).
36091
36092 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36093
36094         * object.c: mono_array_new_full workaround mono_array_class_get
36095         problem.
36096
36097 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36098
36099         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36100         * object.h (mono_string_chars): Changed casting type.
36101
36102 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36103
36104         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36105                            method signatures to use gunichar2 instead of gint16.
36106
36107 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36108
36109         * object.h, object.c: domain-specific versions of mono_object_new and
36110         mono_array_new.
36111
36112 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36113
36114         * object.c: changed String layout
36115
36116         * string-icalls.c (mono_string_Internal_ctor_chara): added
36117         internal string constructors.
36118
36119 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36120
36121         * threads.c: pass 'this' to the thread start routine.
36122
36123 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36124
36125         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36126         InternalCompareStr don't call twice mono_string_cmp_char for the last
36127         character. Improved performance in mono_string_cmp_char.
36128
36129 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36130
36131         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36132         code into its own library: libmonoruntime.
36133
36134 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36135
36136         * object.h, object.c: changed array format so that szarrays do not
36137         require a bounds structure.
36138         * icall.c, appdomain.c: support for new szarray format.
36139
36140 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36141
36142         * metadata.c: compare also the retuns type when comparing signatures:
36143         we didn't do this as an optimization since really overloaded methods
36144         must differ also in the arguments, but this doesn't work with
36145         low-level IL code (or when using explicit conversion operators: see
36146         bug#23498 for an example).
36147
36148 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36149
36150         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36151
36152 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36153
36154         * icall.c: make MonoType::GetElementType its own icall.
36155
36156 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36157
36158         * icall.c: remove MonoMethod_get_Name().
36159         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36160         object.
36161
36162 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36163
36164         * string-icalls.c: optimized a few methods.
36165
36166 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36167
36168         * icall.c: added all new string internal calls
36169         * string-icalls.c: added, new string internal call implementation.
36170         * object.c: added mono_string_new_size for allocating a string a size
36171
36172 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36173
36174         * object.c (mono_object_isinst): use the same code as in the
36175         optimized x86 version.
36176
36177 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36178
36179         * profiler.c: TSC-based timer code (faster and more accurate).
36180         Not hooked up in configure, yet (set USE_X86TSC to 1).
36181
36182 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36183
36184         * profiler.c, profiler.h: track time spent compiling methods.
36185         * threads.c: track thread creation/destruction.
36186
36187 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36188
36189         * profiler.c, profiler.h, profiler-private.h: profiling interface
36190         and sample implementation. Moved here so that it can be used also by
36191         the jit.
36192
36193 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36194
36195         * reflection.c, reflection.h: keep types and other handles separate in
36196         the hash tables for referred tokens. Add guid for modules.
36197
36198 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36199
36200         * assembly.c: fix bugs found with valgrind.
36201         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36202
36203 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36204
36205         * threads: added icall support for getting current domain for
36206                    the thread.
36207  
36208 2002-04-13  Martin Baulig  <martin@gnome.org>
36209
36210         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36211         (MonoDebugVarInfo): Added `index' field for register based addresses.
36212         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36213         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36214         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36215         `MonoDebugVarInfo *this_var'.
36216
36217         * debug-symfile.c (relocate_variable): New static function to write
36218         a location description for a local variable or method parameter.
36219
36220 2002-04-12  Martin Baulig  <martin@gnome.org>
36221
36222         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36223         stack offset and begin/end scope address of a local variable.
36224         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36225         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36226         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36227
36228         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36229         Added new relocation types for start/end scope of a local variable.
36230
36231 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36232
36233         * object.h: add mono_object_domain() macro.
36234         * reflection.c: handle typespecs.
36235         * icall.c: MonoMethod::get_Name() implementation.
36236
36237 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36238
36239         * icall.c: String::GetHashCode() icall implementation.
36240
36241 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36242
36243         * icall.c: String::IndexOfAny icall.
36244         * object.c, object.h: make array->max_length more useful.
36245         Intrduced mono_object_class() and mono_string_length() macros.
36246
36247 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36248
36249         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36250         instead of g_unichar_isdigit.
36251
36252 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36253
36254         * icall.c: Implement a simple Double.ToString().
36255
36256 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36257
36258         * appdomain.h: only io-layer.h is supposed to be included.
36259         * icall.c: explicitly import environ. Fix warning.
36260
36261 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36262
36263         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36264                 return true even if it's not Daylight Savings time.
36265                 Only return false for the case where the function isn't
36266                 implemented for a plaform (read Windows).
36267
36268 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36269
36270         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36271         data with a mutex.
36272
36273 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36274
36275         * mempool.c (mono_mempool_alloc): only use g_malloc when
36276         absolutely necessary.
36277
36278 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36279
36280         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36281
36282         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36283         (mono_class_proxy_vtable): use domain mempool
36284
36285 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36286
36287         * appdomain.h, appdomain.c: split initialization that requires the
36288         execution engine support into mono_runtime_init().
36289
36290 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36291
36292         * class.c (mono_class_init): don't include vtable inside MonoClass
36293         to save some memory, gather some statistics.
36294         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36295
36296 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36297
36298         * icall.c: internalcall implementation for ValueType.Equals().
36299
36300 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36301
36302         * object.c (mono_message_init): moved 
36303         (mono_runtime_exec_main): new arch. independent impl.
36304         (mono_runtime_invoke_array): new method - like
36305         mono_runtime_invoke, but you can pass an array of objects.
36306         (mono_remoting_invoke): new arch. independent impl.
36307         (mono_message_invoke): new arch. independent impl.
36308         (mono_runtime_class_init): new arch. independent impl.
36309         (mono_runtime_object_init): new arch. independent impl.
36310
36311 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36312
36313         * metadata.c, object.c, reflection.c: documented the exported
36314         functions.
36315
36316 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36317
36318         * icall.c: simpler code to pass the assembly builder data to corlib.
36319         Implement GetNestedTypes() internalcall.
36320
36321 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36322
36323         * class.c: warn if a type can't be loaded.
36324
36325 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36326
36327         * image.h: typedef MonoImageOpenStatus
36328         * types.h: removed unused file
36329         
36330 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36331
36332         * icall.c: Enum_ToObject accepts enum value arguments.
36333
36334 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36335
36336         * class.c: move initialization of properties, events and nested
36337         classes, so that they happen for interfaces, too.
36338
36339 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36340
36341         * icall.c: cleanup some ugly casts in Array_SetValue*.
36342
36343 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36344
36345         * icall.c: the values array fro enums is of the correct type, now.
36346         Implement (correctly) getFullName instead of assQualifiedName for
36347         MonoType.
36348         * reflection.h, reflection.c: added mono_type_get_name ().
36349
36350 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36351
36352         * assembly.c, image.h: for each MonoImage, record from wich assembly
36353         it was loaded.
36354         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36355         Make Type.Assembly work.
36356
36357 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36358
36359         * debug-symfile.h: use char* instead of gpointer to avoid
36360         unnecessary casts.
36361
36362         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36363
36364         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36365         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36366
36367 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36368
36369         * icall.c (mono_message_init): impl. (code cleanup)
36370         (ves_icall_InternalExecute): impl. FieldGetter
36371
36372         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36373         defined we call all (non-static)methods through the vtable. 
36374
36375 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36376
36377         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36378         finalizer even though the memory is still referenced (and the chunk of
36379         memory is not freed).
36380
36381 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36382
36383         * assembly.c: fix brokeness.
36384
36385 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36386
36387         * class.c: kill some warnings. Check explicit interface method
36388         implementation also without considering the namespace.
36389         Load also literal strings in static class data.
36390
36391 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36392
36393         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36394         (default_assembly_name_resolver): Make the resolver take the
36395         "base" directory where the assembly was originally defined, so we
36396         can load DLLs that are in the same directory as the assembly that
36397         is being referenced.
36398
36399 2002-03-28  Dick Porter  <dick@ximian.com>
36400
36401         * file-io.h: 
36402         * file-io.c:
36403         * socket-io.c: 
36404         * unicode.h: 
36405         * unicode.c: Warning cleanups
36406
36407 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36408
36409         * object.h, reflection.h: use the correct type instead of MonoObject.
36410
36411 2002-03-28  Martin Baulig  <martin@gnome.org>
36412
36413         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36414         (mono_debug_update_symbol_file): Initialize classes if necessary.
36415
36416 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36417
36418         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36419         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36420
36421 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36422
36423         * assembly.h: fix function prototype.
36424         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36425         * mono-endian.h: use const cast.
36426
36427 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36428
36429         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36430
36431 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36432
36433         * loader.c: don't assert when a typeref can't be loaded, give
36434         a chance to the runtime to trow an exception instead.
36435         * loader.h: fix warning.
36436
36437 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36438
36439         * class.c (mono_class_proxy_vtable): added proxy support
36440
36441 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36442
36443         * icall.c: removed last of PAL calls, added System.Environment
36444         * file-io.h, file-io.c: MonoIO implementation
36445         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36446
36447 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36448
36449         * appdomain.c: do not use the byte marker in ldstr table lookup.
36450         * debug-helpers.c: allow two ':' to separate class and method name.
36451         * object.c: allocate arrays bounds with the GC, too.
36452         * verify: add a few more checks.
36453
36454 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36455
36456         * reflection.c: output also literal strings. Allocate parameter data
36457         with GC_malloc() (thanks, Martin, for catching this!).
36458
36459 2002-03-26  Martin Baulig  <martin@gnome.org>
36460
36461         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36462         include the `this' offset in the `param_offsets'.
36463
36464 2002-03-25  Martin Baulig  <martin@gnome.org>
36465
36466         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36467         mono_debug_get_class() function to get the classes. Added new
36468         relocation types for arrays and strings.
36469         (mono_debug_get_class): New static function to search in all
36470         referenced assemblies for a metadata token.
36471
36472         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36473
36474 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36475
36476         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36477         hold gc-allocated objects. Make the string heap a stream like the
36478         others. Removed duplicated code when writing stream info.
36479         Added asserts to catch possible buffer overflows. Set the sorted map
36480         for tables that need sorting. Added some documentation.
36481
36482 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36483
36484         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36485         for interned strings and vtables.
36486
36487 2002-03-24  Martin Baulig  <martin@gnome.org>
36488
36489         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36490         it in the array since it was created with g_slist_prepend().
36491
36492 2002-03-24  Martin Baulig  <martin@gnome.org>
36493
36494         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36495         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36496         (mono_debug_method_from_token): Renamed to
36497         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36498         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36499
36500         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36501         relocation types.
36502
36503         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36504
36505 2002-03-24  Martin Baulig  <martin@gnome.org>
36506
36507         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36508         (mono_debug_method_from_token): New func.
36509
36510         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36511         New interncall, calls mono_debug_local_type_from_signature().
36512         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36513         calls mono_debug_method_from_token().
36514
36515 2002-03-23  Martin Baulig  <martin@gnome.org>
36516
36517         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36518         specifies the number of bytes to be converted, not the array size.
36519         Return the number of chars, not the number of bytes.
36520         (ves_icall_iconv_get_chars): The `byteCount' argument
36521         specifies the number of bytes to be converted, not the array size.
36522
36523 2002-03-23  Martin Baulig  <martin@gnome.org>
36524
36525         * reflection.h (MonoReflectionSigHelper): New type.
36526
36527         * reflection.c (mono_reflection_sighelper_get_signature_local),
36528         (mono_reflection_sighelper_get_signature_local): New functions.
36529
36530         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36531         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36532         interncalls.
36533
36534 2002-03-23  Martin Baulig  <martin@gnome.org>
36535
36536         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36537         is_writeable is set.
36538         (mono_raw_buffer_update): New function to write the modified map
36539         back to disk.
36540
36541         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36542
36543         * debug-symfile.c (mono_debug_update_symbol_file): Call
36544         mono_raw_buffer_update() when done writing.
36545
36546 2002-03-23  Martin Baulig  <martin@gnome.org>
36547
36548         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36549
36550         * debug-symfile.c: Added support for arguments and local variables.
36551
36552 2002-03-23  Dick Porter  <dick@ximian.com>
36553
36554         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36555         protected by ifdefs, hence breaking the w32 build.
36556
36557 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36558
36559         * object.c: implement is_interned() the right way.
36560
36561 2002-03-21  Martin Baulig  <martin@gnome.org>
36562
36563         * debug-symfile.[ch]: New files to handle debugging information
36564         files. There's also support to dynamically update these symbol
36565         files to include machine dependent information.
36566
36567 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36568
36569         * threads.c (mono_thread_create): new function to create thread
36570         from C
36571
36572 2002-03-20  Martin Baulig  <martin@gnome.org>
36573
36574         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36575         method is a constructor.
36576         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36577         points to ves_icall_InternalInvoke().
36578
36579 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36580
36581         * file-io.c: Flush shouldn't throw exceptions.
36582
36583 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36584
36585         * file-io.c: FileStream flush support; FileSetLength now
36586         restores file pointer.
36587
36588 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36589
36590         * class.c: set image for pointer classes.
36591
36592 2002/03/19  Nick Drochak <ndrochak@gol.com>
36593
36594         * sysmath.c: Forgot one.
36595
36596 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36597
36598         * sysmath.c: Avoid redefining existing names.
36599
36600 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36601
36602         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36603         handled by runtime as icall rather than dllimport from libm.so
36604         * file-io.c, file-io.h: fixed handle argument type.
36605
36606 2002-03-18  Dick Porter  <dick@ximian.com>
36607
36608         * reflection.c (mono_image_get_type_info): rename interface to
36609         iface, because of "#define interface struct" on windows.
36610
36611 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36612
36613         * class.c, class.h: rename and export mono_ptr_class_get().
36614         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36615         * reflection.c, reflection.h, icall.c: better/saner type name
36616         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36617         method signatures.
36618
36619 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36620
36621         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36622
36623         * icall.c (ves_icall_InternalInvoke): impl.
36624
36625 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36626
36627         * reflection.c: output the interface map table, too.
36628
36629 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36630
36631         * class.c (class_compute_field_layout): separate computation of 
36632         static field layout
36633
36634 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36635
36636         * icall.c: added System.Buffer support.
36637         * file-io.c: moved file icalls from PAL to FileStream.
36638
36639 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36640
36641         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36642
36643 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36644
36645         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36646
36647 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36648
36649         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36650
36651 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36652
36653         * debug-helpers.{c,h}: moved here from monograph some useful functions
36654         to locate a method by name/signature in a class or image. Included
36655         also a small and flexible IL disassembler.
36656
36657 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36658
36659         * reflection.c: fixup tokens in methods with small header size, too.
36660
36661 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36662
36663         * object.c (mono_string_to_utf8): remove assert(!error), instead
36664         print a warning. 
36665
36666 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36667
36668         * icall.c: update to the new mono_Array_class_get interface.
36669
36670 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36671
36672         * appdomain.c, object.c: Boehm-GC enable.
36673         * icall.c: make get_data_chunk() support split data requests.
36674         Ensure a class is initialized in more cases. Return only the first
36675         property found in GetProperties() or the compiler gets confused. 
36676         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36677         * reflection.h, reflection.c: add fixup mechanism for field and method
36678         tokens. Initialize assembly->typeref in a single place. Output
36679         properties after events. Support custom attributes for events, too.
36680         Typo fix for paramter custom attrs.
36681
36682 2002-03-07  Martin Baulig  <martin@gnome.org>
36683
36684         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36685
36686 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36687
36688         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36689
36690 2002-03-06  Martin Baulig  <martin@gnome.org>
36691
36692         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36693         non-zero lower bounds. See testcases #F10-#F13.
36694
36695 2002-03-05  Martin Baulig  <martin@gnome.org>
36696
36697         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36698
36699         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36700         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36701         here.
36702         (ves_icall_System_Array_SetValue): Likewise.
36703         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36704         as argument and does the actual work. This function is used when copying a
36705         multi-dimensional array.
36706         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36707         now do all the widening conversions of value types.
36708         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36709
36710 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36711
36712         * class.c: remove some magic numbers and use the smbolic names,
36713         instead. Added init_events() to load event info at class init time.
36714         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36715         and mono_metadata_methods_from_event().
36716         * reflection.h, reflection.c: added support for writing out the evnets
36717         related information.
36718
36719 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36720
36721         * reflection.h, icall.c: use a different method (GetInterfaces)
36722         to gather interface info and add isbyref, isprimitive and
36723         ispointer to the ves_icall_get_type_info() return value.
36724
36725 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36726
36727         * class.h: stared adding support for events.
36728         * icall.c: split find_members implementation. Added debug icall to get
36729         the address of an object.
36730         * reflection.c: handle TypeBuilders in mono_type_get_object().
36731
36732 2002-03-01  Martin Baulig  <martin@gnome.org>
36733
36734         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36735         ArgumentOutOfRangeException(), not an ArgumentException().
36736         (ves_icall_System_Array_GetLowerBound): Likewise.
36737         (ves_icall_System_Array_GetValue): Improved argument checking.
36738         (ves_icall_System_Array_SetValue): Improved argument checking.
36739
36740 2002-03-01  Martin Baulig  <martin@gnome.org>
36741
36742         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36743         called with invalid arguments rather than just dying with g_assert().
36744         (ves_icall_System_Array_SetValue): Likewise.
36745         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36746         raise a NotImplementedException instead.
36747         (ves_icall_System_Array_GetLength): Added argument checking.
36748         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36749
36750 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36751
36752         * object.h (mono_assert): new macros mono_assert and
36753         mono_assert_not_reached
36754
36755 2002-02-28  Martin Baulig  <martin@gnome.org>
36756
36757         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36758         and "System::String::IsInterned" to "System::String::_IsInterned".
36759
36760 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36761
36762         * icall.c: remove hacks for typebuilder. Added icall to create a
36763         modified type from a tybebuilder.
36764         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36765         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36766         to create a backing MonoClass for a TypeBuilder.
36767
36768 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36769
36770         * class.c, class.h: more refactoring of class init.
36771         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36772
36773 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36774
36775         * marshal.c, marshal.h: start of marshaling interface.
36776
36777 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36778
36779         * icall.c: fix order in assembly qualified name icall.
36780
36781 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36782
36783         * class.c: do not free str, since we store it in the hash table.
36784         * reflection.h: add label field to MonoILExceptionInfo.
36785         * reflection.c: handle references to more than one assembly. Handle
36786         case when there isn't a module created in the assembly.
36787
36788 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36789
36790         * class.c: Fix typo. Start refactoring of class init code.
36791
36792 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36793
36794         * appdomain.c: exit with 1 on error.
36795         * class.c: we already have the name in MonoClassField.
36796         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36797         MonoStreamHeader instead of an offset of image->raw_metadata.
36798
36799 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36800
36801         * appdomain.c (mono_init): Be even more descriptive about the error.
36802
36803 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36804
36805         * appdomain.c: give the user an informative message when corlib can't
36806         be loaded.
36807
36808 2002-02-26  Martin Baulig  <martin@gnome.org>
36809
36810         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36811         New icall to get the time zone data.
36812
36813 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36814
36815         * reflection.c: set virtual and raw size of section correctly.
36816         * threads.c: transfer domain information to newly created threads.
36817
36818 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36819
36820         * class.c: when instancing a class in a domain, load the default
36821         vaules for static fields from the constant table. Fix System.Enum to
36822         not be an enum.
36823         * icall.c: implement Object::GetType() internalcall. Implemented
36824         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36825         Fixed checking of binding flags in find_members().
36826         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36827         * reflection.c: handle enumerations when writing to the constant
36828         table. Use a different object cache for types.
36829
36830
36831 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36832
36833         * object.c (mono_object_isinst): fix for arrays
36834
36835         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36836
36837 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36838
36839         * object.c: don't use mprotect ()  and fix intern pool hash table
36840         lookup for big endian systems.
36841
36842 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36843
36844         * icall.c: change type_is_subtype_of () signature.
36845
36846 2002-02-21  Mark Crichton  <crichton@gimp.org>
36847
36848         * rand.c, rand.h: Added random number generator for
36849         System.Security.Cryptography classes.
36850
36851         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36852
36853         * icall.c: Added System.Security.Cryptography calls.
36854
36855 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36856
36857         * class.c, icall.c, metadata.c: better support for pointer types.
36858         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36859         * reflection.c: Add support for getting custom attrs for properties
36860         and simplify some code.
36861
36862 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36863
36864         * icall.c: change getToken () and add custom attribute GetBlob()helper
36865         method.
36866         * reflection.h: add custom attrs array to the reflection builder structures.
36867         * reflection.c: encode and emit custom attributes for all the relevant
36868         reflection objects. Cache fieldref and methodref tokens. Change
36869         mono_image_create_token() interface to take a MonoDynamicAssembly.
36870         More complete custom attributes decoder. Load custom attributes for
36871         Assembly, Field, Method and Constructor objects, too. Make the
36872         returned array an Attribute[] one, not object[]. Added
36873         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36874         custom attribute constructor.
36875
36876 2002-02-20  Dick Porter  <dick@ximian.com>
36877
36878         * icall.c:
36879         * rawbuffer.c:
36880         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36881         problem code out for now).
36882
36883 2002-02-19  Radek Doulik  <rodo@ximian.com>
36884
36885         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36886
36887 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36888
36889         * icall.c: register the GetCustomAttributes method.
36890         * object.c, object.h: add mono_string_new_len ().
36891         * reflection.h, reflection.c: added mono_runtime_invoke(),
36892         mono_install_runtime_invoke(). Added
36893         mono_reflection_get_custom_attrs () to load custom attributes and
36894         create the attribute objects.
36895
36896 2002-02-19  Dick Porter  <dick@ximian.com>
36897         * threads-dummy-types.c:
36898         * threads-dummy-types.h:
36899         * threads-dummy.c:
36900         * threads-dummy.h:
36901         * threads-pthread-types.c:
36902         * threads-pthread-types.h:
36903         * threads-pthread.c:
36904         * threads-pthread.h:  Deleted obsolete files
36905
36906 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36907
36908         * class.c (mono_class_vtable): runtime init the class when we
36909         allocate static class data.
36910
36911         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36912
36913         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36914         and String - but we will need generic marshalling support in the
36915         future. 
36916         (mono_init): set the domain name in a ms compatible way
36917
36918         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36919         String[].
36920
36921 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36922
36923         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36924         for sizes
36925
36926         * appdomain.c (mono_domain_unload): impl.
36927
36928 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36929
36930         * appdomain.c, object.c: fix intern pool implementation.
36931         * class.c: fix alignment code.
36932
36933 2002-02-16  Radek Doulik  <rodo@ximian.com>
36934
36935         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36936         and s2 > s1, just copy lower bytes to be compatible with little
36937         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36938         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36939
36940         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36941         force big_endian to be 1 for big endian machines 
36942         (ves_icall_iconv_new_decoder): ditto
36943
36944 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36945
36946         * socket-io.c (convert_sockopt_level_and_name): If the system
36947         doesn't define SOL_IP or SOL_TCP, get them by hand using
36948         getprotobyname() and caching the values (because this could be a
36949         slow operation).
36950         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36951         Use the appropriate struct when the system does support it. Ie,
36952         not all systems have struct ip_mreqn so use struct ip_mreq when
36953         appropriate.
36954
36955 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36956
36957         * reflection.c: handle finally clauses.
36958
36959 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36960
36961         * socket-io.c: use g_snprintf() instead of snprintf.
36962
36963 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36964
36965         * reflection.c (mono_param_get_objects): Cast second argument to
36966         mono_method_get_param_names to a const char** to silence the
36967         compiler warning.
36968
36969         * appdomain.c (mono_domain_assembly_open): Put parens around the
36970         truth statement in the for-loop.
36971
36972         * unicode.c (iconv_convert): Got rid of a compiler warning about
36973         int i being unused when the system has a new iconv.
36974         (iconv_get_length): Same.
36975
36976         * image.c (load_class_names): Cast the second argument to
36977         g_hash_table_insert() to char* to hush compiler warnings about the
36978         arg being a const.
36979         (mono_image_open): Same here.
36980
36981         * socket-io.c: Don't conditionally include sys/filio.h or
36982         sys/sockio.h here anymore since we now get them from
36983         io-layer/io-layer.h
36984         (inet_pton): If the system doesn't support inet_aton, implement
36985         using inet_addr and also #define INADDR_NONE if it isn't defined
36986         by the system.
36987
36988 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36989
36990         * metadata.c, metadata.h: added function to get packing and size info
36991         of a typedef.
36992         * reflection.h, reflection.c: handle field RVA data. Save info about
36993         the table layout if needed. Assign typedef indexes to all the types
36994         before dumping the info about them to avoid forward reference problems.
36995
36996 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36997
36998         * socket-io.c (convert_sockopt_level_and_name): ifdef
36999         SO_ACCEPTCONN because it is not defined on my system (old debian)
37000
37001 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37002
37003         * opcode.c: use stddef.h to get NULL.
37004
37005 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37006
37007         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37008         for FIONBIO, FIONREAD and SIOCATMARK.
37009         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37010         define INADDR_NONE and besides, inet_addr() is deprecated and
37011         should not be used. Use inet_pton() instead - it also has the
37012         added bonus that it can easily handle IPv6 addresses as well.
37013         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37014
37015 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37016
37017         * decimal.c: remove _MSC_VER conditional.
37018
37019 2002-02-13  Dick Porter  <dick@ximian.com>
37020
37021         * socket-io.c: 
37022         * icall.c: Internal calls for Blocking, Select, Shutdown,
37023         GetSocketOption and SetSocketOption
37024
37025 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37026
37027         * assembly.cs: better resolver: use it instead of some kludgy
37028         code.
37029
37030 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37031
37032         * reflection.c: the best way to speed-up the compiler is to avoid
37033         infinite loops.
37034
37035 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37036
37037         * class.c (mono_class_vtable): changed the object layout
37038         (obj->vtable->class). 
37039         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37040
37041 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37042
37043         * assembly.c: look for assemblies in the assembly dir, too.
37044
37045 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37046
37047         * class.c: fix thinko in mono_class_from_type().
37048
37049 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37050
37051         * exception.h, exception.c: added TypeLoadException.
37052         * object.h, object.c: added mono_array_clone ().
37053         * icall.c: handle throwOnError in AssemblyGetType().
37054         Added Array.Clone().
37055         * opcode.h, opcode.c: use a single value for the opcode val.
37056         Compile fix for non-gcc compilers.
37057
37058 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37059
37060         * opcodes.c, opcodes.h: export interesting info about opcodes.
37061
37062 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37063
37064         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37065         icalls. 
37066
37067         * class.c (class_compute_field_layout): set element_class for enums
37068         (mono_class_create_from_typedef): set element_class for normal classes
37069
37070         * icall.c (ves_icall_System_Enum_get_value): impl.
37071
37072         * class.c (mono_class_create_from_typedef): do not set valuetype
37073         flag for System.ValueType and System.Enum
37074
37075 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37076
37077         * unicode.c (iconv_convert): fix big endian problem.
37078
37079 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37080
37081         * class.c: add asserts if we are ever going to scribble over memory.
37082         * socket-io.c: not all systems have AF_IRDA defined.
37083
37084 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37085
37086         * class.c (class_compute_field_layout): do not consider static
37087         fields to compute alignment
37088
37089 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37090
37091         * appdomain.c (mono_appdomain_get): impl.
37092         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37093
37094 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37095
37096         * icall.c: ignore "file://" prefix when loading an assembly.
37097
37098 2002-01-23  Dick Porter  <dick@ximian.com>
37099
37100         * socket-io.c:
37101         * icall.c:
37102         * Makefile.am: Added socket support
37103
37104 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37105
37106         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37107         code back.  This should return the assemblies that are loaded by
37108         the runtime on behalf of an application domain. 
37109
37110         The current implementation is still broken, it just returns every
37111         assembly loaded, but until we get real applications domain this
37112         will do.
37113
37114 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37115
37116         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37117         AppDomain object.
37118
37119 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37120
37121         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37122         the mono_class_from_name lookup.
37123         (ves_icall_get_parameter_info): ditto.
37124         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37125         method.
37126         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37127
37128 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37129
37130         * class.c: load also nested classes on class init.
37131         System.ValueType instance methods gets passed boxed
37132         values, unless methods in derived classed that get a pointer to the
37133         data.
37134         * icall.c: use better name parsing code in GetType().
37135         * image.c, image.h: add mono_image_loaded ().
37136         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37137         * reflection.c, reflection.h: added mono_reflection_parse_type().
37138
37139 2002-01-22  Veronica De Santis <veron78@interfree.it>
37140
37141         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37142         * threads.c : Added the implementation of internal calls for events
37143         * threads.h : Added prototypes of internal calls for events
37144         
37145 2002-01-21  Radek Doulik  <rodo@ximian.com>
37146
37147         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37148
37149 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37150
37151         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37152         (mono_class_value_size): use min_align
37153
37154 2002-01-20  Dick Porter  <dick@ximian.com>
37155
37156         * threads.h:
37157         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37158         so it compiles on w32.
37159
37160 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37161
37162         * metadata.c (mono_type_stack_size): impl.
37163
37164         * class.c (mono_class_get_field): impl. memberref token
37165
37166 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37167
37168         * icall.h : Added the internal calls mapping for CreateMutex_internal
37169                     and ReleaseMutex_internal.
37170         * threads.h : Added the prototype of mutexes internal calls.
37171         * threads.c : Added the implementations of mutexes internal calls.
37172
37173 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37174
37175         * metaparse.h: removed unused file.
37176         * reflection.c, reflection.h: added stream_data_align () function 
37177         to align data in streams and keep stream aligned. Add support for
37178         exception support in method headers.
37179
37180 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37181
37182         * unicode.c: make iconv_convert () return the number of bytess written
37183         in the output buffer.
37184
37185 2002-01-15  Dick Porter  <dick@ximian.com>
37186         * threads.c: Make the runtime's idea of infinite timeouts coincide
37187         with the class library's
37188
37189         Fix a particularly egregious bug in mono_thread_cleanup(). That
37190         code was so utterly bogus it must have been written on a Monday.
37191
37192 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37193
37194         * reflection.h: add subtypes field to TypeBuilder.
37195         * reflection.c: encode constants for literal fields.
37196         Handle subtypes. Fix user string token (and add a zero byte)
37197         at the end.
37198         
37199 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37200
37201         * class.c (mono_class_init): bug fix: assign slot numbers for
37202         abstract methods.
37203
37204 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37205
37206         * reflection.c: don't try to output a code RVA for abstract methods.
37207         Small fixes for method header format. Output parameter info to the
37208         ParamDef table. Save method overriding info to MethodImpl table.
37209         Fix property support. Allow typedef.extends to be a type in the
37210         building assembly.
37211         * verify.c: fix off-by-one error.
37212
37213 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37214
37215         * class.c: fix mono_class_from_mono_type () for szarray types.
37216         Remove unused cache check in mono_class_from_type_spec().
37217         * icall.c: *type_from_name () functions handle simple arrays and byref.
37218         * reflection.c: handle byref and szarray types. Handle methods without
37219         body (gets P/Invoke compilation working). Handle types and fields in
37220         get_token ().
37221         * reflection.h: add rank to MonoTypeInfo.
37222
37223 2002-01-10  Dick Porter  <dick@ximian.com>
37224
37225         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37226         internal calls
37227
37228 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37229
37230         * icall.c: initialize class in type_from_handle ().
37231         Loop also in parent classes for get_method ().
37232         * reflection.c: properly encode class and valuetype types.
37233         Start on encoding TypeBuilder types. Handle fieldrefs.
37234         Use correct length when registering a user string.
37235         Handle ConstructorBuilder and MonoMethod in get_token ().
37236         Make mono_type_get_object () aware of cached types.
37237         * object.c: back out change to mono_string_new ().
37238
37239 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37240         * object.c: mono_string_new should return a NULL when the string 
37241         passed in is NULL -- not try to deference it.
37242         
37243 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37244
37245         * icall.c: hack to make IsSubType work for TypeBuilders.
37246         * reflection.c: emit constructors before methods.
37247         Retrieve param names in mono_param_get_objects().
37248
37249 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37250
37251         * Makefile.am: fix list of headers and sources so automake 1.5
37252         doesn't complain. Removed \# at end of list.
37253
37254 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37255
37256         * reflection.c: get token for a method ref. Set return type of
37257         constructor to void.
37258         * loader.c: debug message.
37259         * class.c: typo fix.
37260
37261 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37262
37263         * icall.c: fix array init with rank > 1. FindMembers
37264         loops in parent class as well.
37265         * image.c: do not insert nested types in name cache.
37266         * reflection.c: warning fix.
37267         * reflection.h: add override method (for interface impl).
37268
37269 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37270
37271         * metadata.c: fix customattr decoding.
37272
37273 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37274
37275         * rawbuffer.cs: Added native Win32 implementation, avoids using
37276         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37277
37278 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37279
37280         * class.c: make the low-level routines handle the cache.
37281
37282 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37283
37284         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37285
37286 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37287
37288         * class.c: fix mono_array_element_size() for objects.
37289         * class.h, class.c: add properties to MonoClass and load them
37290         at init time.
37291         * icall.c: check with isinst() when assigning a value to an array
37292         instead of requiring the classes to match exactly.
37293         Implemented icall for System.Type::GetType().
37294         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37295         enums. Handle bindingflags when looking for methods and fields.
37296         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37297         and mono_metadata_methods_from_property().
37298         * reflection.h, reflection.c: added structures for propreties,
37299         parameters and enums. Implemented mono_property_get_object() and
37300         mono_param_get_objects().
37301
37302 2001-12-18  Dick Porter  <dick@ximian.com>
37303
37304         * file-io.c: Use mono_string_to_utf16() instead of
37305         mono_string_chars()
37306
37307         * object.c: Added mono_string_to_utf16(), which copies the non
37308         NULL-terminated MonoString into a new double-null-terminated
37309         buffer.
37310
37311 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37312
37313         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37314
37315 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37316
37317         * file-io.c: raise exceptions if handle is invalid.
37318
37319 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37320
37321         * assembly.c: yet another check for mscorlib.
37322         * class.c, class.h: load nesting info for classes.
37323         * icall.c: many new functions to support the Reflection classes.
37324         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37325         * reflection.h, reflection.c: mono_image_create_token(),
37326         mono_assembly_get_object(), mono_type_get_object(),
37327         mono_method_get_object(), mono_field_get_object(): methods to return
37328         objects that parallel the C representation of assemblies, types,
37329         methods, fields.
37330
37331 2001-12-11  Dick Porter  <dick@ximian.com>
37332
37333         * icall.c:
37334         * file-io.c: Internal calls for file IO.
37335
37336 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37337
37338         * tabledefs.h: missing FileAttributes.
37339         * verify.h, verify.c: use is_valid_string () to simplify and check for
37340         valid strings more correctly. Fix warnings and speeling.
37341         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37342         Check code: branches, maxstack, method calls.
37343
37344 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37345
37346         * object.c (mono_object_allocate): removed static, so that the jit
37347         can allocate value types.
37348
37349         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37350
37351 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37352
37353         * class.c: init enum types right away and register the
37354         token->MonoClass map in mono_class_create_from_typedef ().
37355         * verify.h, verify.c: first cut of the verifier.
37356         * pedump.c: add --verify switch to verify metadata tables.
37357         * tabledefs.h: add some missing enums.
37358
37359 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37360
37361         * class.c (mono_install_runtime_class_init): impl.
37362         (mono_class_init): renamed mono_class_metadata_init to
37363         mono_class_init, also removed the metadata_inited flag
37364
37365         * object.c (mono_object_isinst): use faster algorithm
37366
37367 2001-11-30  Radek Doulik  <rodo@ximian.com>
37368
37369         * mono-endian.h: reverted last change
37370         added function prototypes
37371
37372         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37373         add mono-endian.c back
37374
37375         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37376         for unaligned access, I've mistaked it with endianess. I am
37377         sorry.
37378         (mono_read16): fix reverted endianess
37379         (mono_read64): ditto
37380         (mono_read32): ditto
37381
37382 2001-11-30  Dick Porter  <dick@ximian.com>
37383
37384         * exception.c: Implement mono_exception_from_name()
37385
37386 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37387
37388         * metadata.h, metadata.c: remove params_size and locals_size and their
37389         calculation from the metadata code: they are only usefult to the
37390         interp.
37391
37392 2001-11-29  Radek Doulik  <rodo@ximian.com>
37393
37394         * object.c (mono_ldstr): swap bytes here, it's probably not the
37395         best place, but works for me now, I'll redo it once I know mono
37396         better, also note that I add PROT_WRITE and don't reset back, also
37397         note that it's only affects big endians, so x86 should be OK
37398
37399         * mono-endian.h (read16): use just glib macros for both endians
37400
37401         * mono-endian.c: removed as glib macros are used in in
37402         mono-endian.h so we don't need to care about endianess for read
37403         macros as glib does that for us already
37404
37405 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37406
37407         * class.h, class.h: take minimum alignment into consideration so
37408         that the fields of a class remain aligned also when in an array.
37409
37410 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37411
37412         * loader.h, loader.c: add mono_method_get_param_names().
37413         * class.c: 0-init class fields.
37414
37415 2001-11-26  Dick Porter  <dick@ximian.com>
37416
37417         * icall.c:
37418         * threads-types.h:
37419         * threads.c: New file that handles System.Threading on all platforms
37420
37421         * object.c: 
37422         * object.h: Remove the synchronisation struct from MonoObject,
37423         replace it with a pointer that gets initialised on demand
37424
37425         * Makefile.am: Replace all the system-specific threading code with
37426         a single file that uses the new wrapper library
37427
37428 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37429
37430         * class.c, class.h: add mono_install_trampoline() so that the runtime
37431         can register a function to create a trampoline: removes the ugly
37432         requirement that a runtime needed to export arch_create_jit_trampoline.
37433         * object.h, object.c: added mono_install_handler() so that the runtime
37434         can install an handler for exceptions generated in C code (with
37435         mono_raise_exception()). Added C struct for System.Delegate.
37436         * pedump.c: removed arch_create_jit_trampoline.
37437         * reflection.c: some cleanups to allow registering user strings and
37438         later getting a token for methodrefs and fieldrefs before the assembly
37439         is built.
37440         * row-indexes.h: updates and fixes from the new ECMA specs.
37441
37442 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37443
37444         * class.h, class.c: add enum_basetype field to MonoClass.
37445         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37446         to get index in the constant table reated to a field, param or
37447         property.
37448         * reflection.h, reflection.c: handle constructors. Set public-key and
37449         version number of the built assembly to 0.
37450         * row-indexes.h: update from new ECMA spec.
37451
37452 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37453
37454         * class.h, class.c: add a max_interface_id to MonoClass.
37455         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37456         since it's used to do that. Added mono_type_type_from_obj().
37457         Make GetType() return NULL instead of segfaulting if the type was not
37458         found. Handle simple arrays in assQualifiedName.
37459         * object.h: add a struct to represent an Exception.
37460         * reflection.c: output call convention in method signature.
37461         Add code to support P/Invoke methods and fixed offsets for fields.
37462
37463 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37464
37465         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37466         the value.
37467         * icall.c: use mono_array_addr instead of array->vector: fixes the
37468         reflection image writing.
37469         * reflection.c: init call convention byte to 0 in method signature.
37470         Encode the property signature. Don't output property-related methods
37471         twice. Really process the properties for a type (don't cast a field to
37472         a property, my mom always told me that).
37473         Fix 64 bit issues in pointer alignment in a different and more
37474         readable way.
37475
37476 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37477
37478         * loader.h: Removed type class from MonoDefaults, added monotype
37479
37480         * loader.c: Loaded MonoType, removed loading of Type
37481
37482         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37483         and fills in System.Type._impl with a RuntimeTypeHandle rather
37484         than the actual MonoClass *
37485
37486         (ves_icall_type_from_handle): change from type_class to
37487         monotype_class
37488
37489         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37490         implemented
37491
37492         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37493         implemented
37494
37495         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37496
37497         (ves_icall_System_Reflection_Assembly_GetType): implemented
37498
37499         (ves_icall_System_MonoType_assQualifiedName): implemented
37500
37501         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37502
37503 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37504
37505         * assembly.c (mono_assembly_open): Implement a cache for the
37506         assemblies. 
37507
37508         (mono_assembly_close): only destroy the assembly when the last
37509         reference is gone.
37510         
37511 2001-11-09  Dick Porter  <dick@ximian.com>
37512
37513         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37514
37515 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37516
37517         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37518
37519 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37520
37521         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37522         from Martin Weindel.
37523         * object.h: add mono_string_chars ().
37524
37525 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37526
37527         * reflection.c (build_compressed_metadata): Eliminates warnings
37528         and uses 64-bit clean code.
37529
37530         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37531         (mono_type_equal): Change signature to eliminate warnings.
37532
37533 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37534
37535         * icall.c, loader.c: remove the internalcall array constructors.
37536         Changes to match the new MonoArray structure.
37537         * object.h, object.c: an array object doesn't allocate an extra
37538         vector. Add mono_array_new_full () to create jagged arrays easily.
37539
37540 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37541
37542         * metadata.h, metadata.c: add mono_metadata_field_info () to
37543         retreive all the info about a field from vairous tables.
37544         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37545         * class.h, class.c: augment MonoClassField with more info.
37546         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37547         policy and load a field's RVA if needed.
37548
37549 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37550
37551         * class.c (mono_class_metadata_init): create a trampoline for all
37552         virtual functions instead of actually compiling them.
37553
37554 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37555
37556         * class.h, class.c: include name in MonoClassField.
37557         * class.c: fix fundamental type of System.Object and System.String.
37558         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37559         tokens in ldtoken.
37560         * icall.c: remove internalcalls for the Reflection stuff that is now
37561         done in C# code.
37562         * loader.c: mono_field_from_memberref () implementation.
37563         * mono-endian.c: thinko (s/struct/union/g).
37564         * object.c, object.h: make the mono_string_* prototypes actually use
37565         MonoString instead of MonoObject.
37566         * reflection.c, reflection.h: updates for changes in the reflection
37567         code in corlib: we use C structures that map to the actual C# classes.
37568         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37569         fat method header if needed and use the info from the ILGenerator for
37570         methods. Handle fields in types. Misc fixes.
37571
37572 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37573
37574         * class.c (mono_class_metadata_init): bug fix: always allocate
37575         space for static class data
37576
37577 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37578
37579         * class.c (mono_compute_relative_numbering): use relative
37580         numbering to support fast runtime type checks.
37581
37582 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37583
37584         * class.c (mono_class_create_from_typeref): added debugging output
37585         to print class name when MonoDummy is returned instead of real class
37586
37587 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37588
37589         * class.c (mono_class_metadata_init): interface offset table now
37590         contains pointers into the vtable - this is more efficient for the jit
37591
37592 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37593
37594         * class.c (mono_class_metadata_init): use a temporary vtable (the
37595         old algorithm only worked for the interpreter, but not for the jit)
37596
37597 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37598
37599         * loader.c (method_from_memberref): use mono_class_get to get the
37600         class of an array instead of using System.Array directly.
37601         (mono_get_method): also add MEMBERREF methods to the method cache
37602         which usefull for arrays.
37603
37604 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37605
37606         * pedump.c (arch_compile_method): added to compute vtable entry
37607
37608         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37609         number of interfaces.
37610         
37611         * class.h: merged MonoArrayClass into MonoClass
37612
37613         * class.c (mono_class_create_from_typedef): compute the vtable size and
37614         allocate space to include the vtable inside MonoClass
37615         (mono_class_metadata_init): initialize the vtable
37616
37617 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37618
37619         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37620         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37621         * image.c: endian fixes by Laurent Rioux.
37622         * object.h, object.c: rename MonoStringObject to MonoString and
37623         MonoArrayObject to MonoArray. Change some function names to conform to
37624         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37625         guint16* as first argument, so don't use char*.
37626         Provide macros to do the interesting things on arrays in a portable way.
37627         * threads-pthread.c: updates for the API changes and #include <sched.h>
37628         (required for sched_yield()).
37629         * icall.c: updates for the API changes above.
37630         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37631         platforms that need them.
37632
37633 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37634
37635         * class.c: set the correct type for all the fundamental
37636         type when loading the class.
37637
37638 2001-10-05  Dick Porter  <dick@ximian.com>
37639
37640         * threads-pthread.c (pthread_mutex_timedlock): Simple
37641         compatibility version for C libraries that lack this call.
37642
37643 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37644
37645         * class.c: MonoTypes stored in MonoClass are stored as
37646         fundamental MonoTypes when the class represents a
37647         fundamental type (System.Int32, ...).
37648         The TypeHandle return by ldtoken is a MonoType*.
37649         * icall.c: ves_icall_get_data_chunk () write out all the
37650         PE/COFF stuff. Implement ves_icall_define_method (),
37651         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37652         * image.c: properly skip unknown streams.
37653         * loader.h, loader.c: add type_class to mono_defaults.
37654         * metadata.c, metadata.h: export compute_size () as
37655         mono_metadata_compute_size () with a better interface.
37656         Typo and C&P fixes.
37657         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37658         * reflection.c, reflection.h: many cleanups, fixes, output method
37659         signatures and headers, typedef and typeref info, compress the metadata
37660         tables, output all the heap streams, cli header etc.
37661         * row-indexes.h: typo fixes.
37662
37663 2001-10-04  Dick Porter  <dick@ximian.com>
37664
37665         * object.h: Add a synchronisation mutex struct to MonoObject
37666
37667         * object.c (mono_new_object): Initialise the object
37668         synchronisation mutexes
37669
37670         * icall.c: System.Threading.Monitor internal calls
37671         
37672         * threads-pthread.h:
37673         * threads-pthread.c: System.Threading.Monitor internal calls
37674
37675         * threads-types.h: New file, includes the system-specific thread
37676         structures
37677         
37678         * threads-pthread-types.h:
37679         * threads-pthread-types.c: New files, handle pthread-specific
37680         synchronisation types
37681
37682         * threads-dummy-types.h: 
37683         * threads-dummy-types.c: New files of dummy support for
37684         thread-specific types
37685
37686         * metadata.c:
37687         * image.c:
37688         * pedump.c: include mono-endian.h not endian.h
37689         
37690         * Makefile.am: More threads files.
37691         Name mono-endian.h not endian.h
37692
37693 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37694
37695         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37696         stuff and implement a few more bits.
37697         * icall.c: a field needs to be dereferenced twice. Do not use the same
37698         name for two variables in the same scope.
37699         * image.c, image.h: cleanups.
37700
37701 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37702
37703         * class.c (mono_class_metadata_init): bug fix: compute the right size
37704
37705 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37706
37707         * icall.c: implemented some of the Reflection internalcalls.
37708         * image.c, image.h: start writing out the PE/COFF image.
37709         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37710         that does the reverse than decode_blob_size ().
37711         * object.c: use mono_metadata_encode_value (). Move here
37712         temporary implementation of mono_string_to_utf8 ().
37713         * rawbuffer.c: make malloc_map static.
37714
37715 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37716
37717         * metadata.c: fix type comparison for arrays.
37718         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37719         Added a couple of new classes to monodefaults.
37720         * icall.c: added a couple of Reflection-related internalcalls.
37721         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37722         Added a byval_arg MonoType to MonoClass.
37723
37724 2001-09-28  Dick Porter  <dick@ximian.com>
37725
37726         * icall.c:
37727         * threads-pthread.h: 
37728         * threads-pthread.c: Implemented internal calls for
37729         LocalDataStoreSlot operations.  Applied mutexes around all shared
37730         data.  Reworked the thread creation and Start() operations to
37731         avoid a race condition.
37732         
37733         * threads-dummy.h:
37734         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37735
37736 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37737
37738         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37739
37740 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37741
37742         * class.c, loader.c: warn and return NULL instead of erroring out.
37743         * icall.c: added System.AppDomain::getCurDomain().
37744         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37745
37746 2001-09-25  Dick Porter  <dick@ximian.com>
37747
37748         * threads-pthread.h:
37749         * threads-pthread.c: Implemented timed thread joining and added
37750         System.Threading.Thread::Join_internal internal call
37751
37752         * icall.c: Added System.Threading.Thread::Join_internal internal call
37753
37754         * threads-dummy.h:
37755         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37756
37757 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37758
37759         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37760         mono_string_intern () to implement the semantics of the ldstr opcode
37761         and the interning of System.Strings.
37762         * icall.c: provide hooks to make String::IsIntern and String::Intern
37763         internalcalls.
37764
37765 2001-09-23  Dick Porter  <dick@ximian.com>
37766
37767         * threads-dummy.c: 
37768         * threads-dummy.h: New files of dummy threading routines
37769
37770         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37771         support code based on system specifics
37772
37773         Rename PTHREAD_LIBS to THREAD_LIBS
37774         
37775 2001-09-23  Dick Porter  <dick@ximian.com>
37776
37777         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37778         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37779         internal calls.
37780         (mono_thread_init): Set up a Thread object instance to return when
37781         the main thread calls Thread.CurrentThread
37782         (mono_thread_cleanup): Wait for all subthreads to exit
37783
37784         * icall.c: New internal calls for System.Threading.Thread::Sleep
37785         (including Schedule) and CurrentThread
37786
37787         * threads.h: New file, to insulate thread-specific stuff from the
37788         rest of the code
37789
37790 2001-09-21  Dick Porter  <dick@ximian.com>
37791
37792         * threads-pthread.h: 
37793         * threads-pthread.c: New file, for handling pthreads-style
37794         threading support.  Start() now starts a new thread and executes
37795         the ThreadStart delegate instance.
37796
37797         * icall.c: Added the internalcall for
37798         System.Threading.Thread::Start_internal
37799
37800         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37801
37802 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37803
37804         * loader.c: work around the different signatures for delegates
37805         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37806
37807 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37808
37809         * class.h, class.c: add mono_class_get_field_from_name ().
37810         * *: Fix C comments and other ANSI C issues.
37811
37812 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37813
37814         * endian.h, assembly.c: fix some endianness issues.
37815
37816 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37817
37818         * loader.h, load.c: add delegate_class to mono_defaults.
37819         Handle runtime provided methods in mono_get_method ().
37820
37821 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37822
37823         * loader.c (mono_get_method): use pinvoke for internal call
37824
37825         * icall.c: use pinvoke for internal call
37826
37827         * loader.c (method_from_memberref): set the method name
37828
37829 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37830
37831         * metadata.c: help the compiler generate better code for
37832         mono_class_from_mono_type ().
37833
37834 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37835
37836         * class.c (mono_class_metadata_init): delayed computing of the
37837         class size to mono_class_metadata_init ()
37838
37839 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37840
37841         * class.c, class.h: add an interfaces member to MonoClass.
37842         * image.c, image.h: add assembly_name field to MonoImage
37843         from the assembly table.
37844         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37845
37846 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37847
37848         * class.c: Handle Array in mono_class_from_mono_type ().
37849         * metadata.c, pedump.c: some endian fixes.
37850
37851 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37852
37853         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37854         * metadata.c: fix small problem introduced with the latest commit.
37855
37856 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37857
37858         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37859         We don't need a MonoMetadata pointer anymore to compare signatures in
37860         mono_metadata_signature_equal (), update callers.
37861         Reduced memory usage an number of allocations for MonoMethodHeader and
37862         MonoMethodSignature.
37863
37864 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37865
37866         * metadata.c: added compare for szarray.
37867
37868 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37869
37870         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37871         and add a couple more types to it and mono_defaults. Give an hint on
37872         classes that need implementing in our corlib and are referenced
37873         in mscorlib.
37874
37875 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37876
37877         * class.h, class.c: keep track if a class is also an Enum.
37878         * loader.c: Implement a couple more types for use in libffi
37879         marshalling. Gives better diagnostics when failing to dlopen
37880         a library. Set method->klass for P/Invoke methods, too.
37881
37882 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37883
37884         * class.c, class.h: add a MonoType this_arg to MonoClass that
37885         represents a pointer to an object of the class' type that
37886         can be used by the interpreter and later the type cache.
37887         Add best guess alignment info for valuetype objects.
37888
37889 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37890
37891         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37892         into MonoType: one less level of indirection and allocation and
37893         simplifies quite a bit of code. Added cache for MonoTypes that are
37894         used frequently, so that we don't need to allocate them all the time.
37895
37896 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37897
37898         * class.c (mono_class_create_from_typedef): System.Enum is also a
37899         value type, although it does not derive from System.ValueType
37900         (maybe a bug in the ms compiler?)
37901
37902         * metadata.c (mono_type_size): return the right size for value types
37903
37904         * loader.c (mono_get_method): only initialize method header if not abstract
37905
37906         * class.c (mono_class_from_mono_type): use mono_default values. 
37907
37908 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37909
37910         * *: use MonoClass pointers instead of <type_tokens>
37911         
37912         * class.h: new flag: metadata_inited.
37913
37914         * class.c (mono_class_metadata_init): impl.
37915         (mono_class_instance_size): impl.
37916         (mono_class_data_size): impl.
37917
37918 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37919
37920         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37921         MonoClass now has the name and name_space fields. 
37922         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37923         mono_get_method () takes and optional MonoClass as argument.
37924         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37925         instead that takes advantage of a map from class names to typedef
37926         tokens in MonoImage.
37927
37928 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37929
37930         * metadata.c: zero is not a valid alignment boundary.
37931         Merge MONO_TYPE_VOID in default decoding code.
37932
37933 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37934
37935         * image.h: merged MonoMetadata into MonoImage
37936
37937         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37938         identify the type of elements.
37939
37940 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37941
37942         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37943         * cil-coff.h: split MonoMSDOSHeader and add size info.
37944         * image.c: add some consistency checks.
37945         * metadata.c: fix row size computation: one programmer
37946         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37947         add explanation for the locator routine.
37948         Fix decoding of size in method header.
37949         
37950 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37951
37952         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37953         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37954         function from gnome-libs.  This uses the right path separator
37955         based on the OS, and also works around a bug in some systems where
37956         a double slash is not allowed. 
37957         (default_assembly_name_resolver): Use g_concat_dir_and_file
37958         (mono_assembly_open): ditto.
37959
37960 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37961
37962         * metadata.c (mono_metadata_signature_equal): impl.
37963
37964         * *: void is now a realy MonoType (instead of using NULL)
37965         
37966         * metadata.c (do_mono_metadata_parse_type): use
37967         mono_metadata_parse_type to parse void value.
37968
37969 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37970
37971         * metadata.c, metadata.h: in the signature and method header store
37972         only the space required for holding the loca vars and incoming arguments.
37973
37974 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37975
37976         * metadata.c (do_mono_metadata_parse_type): treat void like any
37977         other type (instead of assigning NULL);
37978
37979 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37980
37981         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37982
37983 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37984
37985         * image.c (do_mono_image_open): added a cache for arrays.
37986
37987 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37988
37989         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37990         decode a single column from a row in a metadata table and changes
37991         to take advantage of it in the typedef locator (gives a nice speed up).
37992         Store offset info for function params.
37993
37994 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37995
37996         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37997
37998 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37999
38000         * assembly.c: how could mono_assembly_close () had ever worked?
38001         * metadata.c, metadata.h: provide offset info for local vars.
38002         Implement mono_type_size () to take care of alignment as well
38003         as size (it was mono_field_type_size in cli/class.c before).
38004
38005 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38006
38007         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38008
38009         * assembly.h (CORLIB_NAME): set to corlib.dll
38010
38011         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38012
38013 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38014
38015         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38016         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38017         tokentype.h: massive namespace cleanup.
38018
38019 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38020
38021         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38022
38023 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38024
38025         * metadata.c (mono_metadata_free_type): added check for type !=
38026         NULL (void) before calling mono_metadata_free_type()
38027
38028 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38029
38030         * metadata.h, row_indexes.h: added header with enumerations to use
38031         to index in the columns from tables in metadata and to decode coded
38032         tokens: we should start using this instead of embedding magic numbers
38033         all over the code.
38034
38035 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38036
38037         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38038         Move metadata_t info from cli_image_info_t to MonoImage, where
38039         it's easily accessible. Changed all the uses accordingly.
38040         Added the method and class caches to MonoImage.
38041         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38042         and mono_metadata_decode_value () signature to be more consistent
38043         with the other parse functions (and simplify code). Taken advantage
38044         of zero-length array allocation with GCC. Removed reduntant (and
38045         wrong) MonoFieldType struct and use MonoParam instead. Changed
38046         mono_metadata_parse_field_type () to use common code for parsing.
38047         Added mono_metadata_typedef_from_field () and
38048         mono_metadata_typedef_from_method () to lookup a typedef index from a
38049         field or method token.
38050         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38051
38052 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38053
38054         * metadata.c (mono_metadata_parse_field_type): Implement. 
38055         (do_mono_metadata_parse_type): Split engine from
38056         mono_metadata_parse_type, so that we can create smaller structures
38057         for things that just have one pointer to the MonoType (look at
38058         the MonoFieldType)
38059
38060 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38061
38062         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38063         as Jan Gray found out, it is incorrect. 
38064
38065 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38066
38067         * assembly.c: Implement asssembly loading.  This loads an image
38068         and loads all the referenced assemblies.  Come to think of it, we
38069         could always do lazy loading of the assemblies. 
38070
38071         * image.c (mono_image_open): Keep loaded images in a hashtable.
38072
38073         * image.h (MonoImage): Add reference count.
38074
38075 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38076
38077         * assembly.c (mono_assembly_open): Keep track of the file name in
38078         case the assembly has no ASSEMBLY table.
38079
38080         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38081         from get.c here.
38082
38083 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38084
38085         * metadata.c, metadata.h: decode local vars in method header
38086         parse function. Change callers accordingly.
38087
38088 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38089
38090         * metadata.h, cil-coff.h: protect against multiple inclusion.
38091         Added some new structures to hold information decoded from metadata:
38092         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38093         and relevant decoding/free functions.
38094         * metadata.c: implement decoding functions. Add warning for out of bounds
38095         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38096         all the info about a method signature and invocation. Remove check on
38097         uninitialized local var in parse_mh() and fix memory leak.
38098
38099 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38100
38101         * metadata.h: More macros.
38102
38103         * tokentype.h: New file.
38104
38105 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38106
38107         * assembly.c: added a consistency check and initialize
38108         some structures with g_new0().
38109         * metadata.c: fixed a couple more bugs in table size computation
38110         and add other checks for out-of bound access to metadata.
38111
38112 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38113
38114         * metatada.c: fix bugs computing table sizes. Spew a
38115         warning when index in string heap is out of bounds.
38116
38117 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38118
38119         * metadata.h: Add a couple of macros to manipulate tokens. 
38120
38121 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38122
38123         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38124         cli_section_tables).
38125
38126 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38127
38128         * metadata.c (mono_metadata_user_string): New function, provides
38129         access to the UserString heap. 
38130
38131 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38132
38133         * metadata.c: Add inline documentation.
38134
38135 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38136
38137         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38138         files. 
38139
38140 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38141
38142         * typeattr.h: New file, TypeAttribute flags. 
38143
38144 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38145
38146         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38147         mono_assembly_ensure_section): Section loading code.
38148         (load_section_tables): Load the sections.
38149
38150         * mono/metadata/metadata.c (mono_metadata_locate_token,
38151         mono_metadata_locate): Functions to locate the information
38152         definition given a token or a table and an index.
38153         (mono_metadata_compute_table_bases): New.
38154         (compute_size): New function to compute the sizes of the various
38155         tables.
38156
38157         * mono/metadata/metadata.h: Finish listing the different index
38158         types. 
38159
38160         * mono/metadata/pedump.c: Improve to dump new information.
38161
38162 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38163
38164         * mono/metadata/metadata.c: Entered all the tables matching
38165         Beta2. 
38166
38167         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2