2010-07-09 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-07-09  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-marksweep.c (major_finish_major_collection): Don't free
4         major heap blocks on 32 bit platforms because it can lead to
5         address space fragmentation.  We'll figure this out later.
6
7 2010-07-09  Mark Probst  <mark.probst@gmail.com>
8
9         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
10         heap blocks for mark&sweep eventually.
11
12 2010-07-09  Mark Probst  <mark.probst@gmail.com>
13
14         * sgen-protocol.c: Fix build when binary protocol is disabled.
15
16 2010-07-09  Mark Probst  <mark.probst@gmail.com>
17
18         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
19         thread-safe.
20
21 2010-07-08 Neale Ferguson <neale@sinenomine.net>
22
23         * sgen-archdep.h: Add support for s390x
24         * domain.c: Use gsize so that 64-bit big endian systems produce 
25         bitmap.
26
27 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
28
29         * pedump.c (verify_image_file): Initialize the vtable as well.
30
31 2010-07-07  Geoff Norton  <gnorton@novell.com>
32
33         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
34         header.
35
36 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
37
38         * assembly.c (mono_assembly_load_reference): Replace a g_warning
39         with a mono_trace calls. This makes compiling MD a lot less scary.
40
41 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
42
43         * verify.c (do_stobj): Improve error message.
44
45 2010-07-08  Mark Probst  <mark.probst@gmail.com>
46
47         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
48         from the object because it might have pinned/forwarding bits set.
49
50 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
51
52         * Makefile.am (sgen_sources): Add missing sgen files.
53
54 2010-06-07  Martin Baulig  <martin@ximian.com>
55
56         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
57         New helper function since mono_thread_get_abort_signal() is now
58         internal.
59
60 2010-06-07  Martin Baulig  <martin@ximian.com>
61
62         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
63
64 2010-07-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
65
66         * file-io.c: don't prepend anything to the names returned
67         from FindFirst/FindNext.
68
69 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
70
71         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
72         public, as mono_string_to_utf_8 is deprecated.
73
74         * object.(c|h): Added mono_object_to_string, a public helper function 
75         that calls ToString on a MonoObject and returns a MonoString.
76
77         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
78
79 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
80
81         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
82         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
83         match their declarations and vice-versa.
84
85
86 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
87
88         * class-internals.h, domain-internals.h: mark functions that are
89         needed by the llvm module.
90
91 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
92
93         * assembly.c (framework_assemblies): Add 3.5 assemblies.
94
95         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
96         by one to have room to remap 3.5 assemblies.
97
98         * domain.c (supported_runtimes): Add 3.5 remapping information.
99
100 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * reflection.c (mono_image_create_token): Handle a
103         FieldBuilder from a different assembly.
104
105         Fixes #611836.
106
107 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * verify.c (do_store_static_field): Improve error
110         message.
111
112 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
113
114         * assembly.c: Revert r159692 since it breaks loading 3.5
115         assemblies under 2.0.
116
117 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
118
119         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
120         TypedByRef is passed.
121
122         * icall.c (ves_icall_Type_make_byref_type): Ditto.
123
124         * icall.c (ves_icall_Type_MakePointerType): Ditto.
125
126         Fixes #612780.
127
128 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
129
130         * assembly.c: Add a few more assemblies to the list of framework
131         assemblies.
132
133         Fixes #617714.
134
135 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
136
137         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
138         fails.
139
140 2010-06-25  Mark Probst  <mark.probst@gmail.com>
141
142         * class.c (mono_class_inflate_generic_method_full_checked): Added
143         a comment regarding a hack in mini-trampolines.c.
144
145 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
146
147         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
148         sizeof(SIZEOF_VOID_P) which is 4.
149
150         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
151
152 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
153
154         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
155         GCs too.
156
157         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
158
159         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
160         objects.
161
162         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
163         desktop mode.
164
165 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
166
167         * *-gc.c (mono_gc_get_description): New function returning a human readable
168         description of the current GC.
169
170 2010-06-24  Miguel de Icaza  <miguel@novell.com>
171
172         * mono-hash.c: Moved here from mono/utils as this file is
173         GC-aware, and the utils directory is not.
174
175 2010-06-23  Miguel de Icaza  <miguel@novell.com>
176
177         * Makefile.am: Add support for building a sgen-aware versions of
178         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
179         they share all the components of the default, but use a differen
180         set of CFLAGS to enable SGEN instead.
181
182         Put the BOEHM defines in the CFLAGS definition. 
183
184         * domain-internals.h (MonoJitInfo): this structure used to have
185         different sizes depending on the GC that was configured (Boehm vs
186         SGen).   I have removed this difference for the sake of avoiding
187         the complexity of dealing with the mono/arch directory requiring
188         GC-specific changes to their Makefiles.
189
190 2010-06-23  Mark Probst  <mark.probst@gmail.com>
191
192         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
193
194 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * metadata.c (mono_metadata_type_hash): Don't hash
197         the type kind for dynamic types since it can change.
198
199 2010-06-22 Geoff Norton  <gnorton@novell.com>
200
201         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
202         alloca instead to prevent a deadlock.
203
204 2010-06-22  Geoff Norton  <gnorton@novell.com>
205
206         * domain.c: Allow gettings the tls key, since we need it for
207         cross thread tls poking in sgen-mach
208         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
209         in external files for platform specific STW support.
210         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
211         * sgen-os-posix.c: Move the existing posix signal based STW here.
212
213 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
214
215         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
216
217 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
218
219         * object-internals.h: Map new PropertyBuilder fields.
220
221         * reflection.c (property_encode_signature): Emit an instance
222         signature if property's callconv is hasthis.
223
224         * appdomain.c: Bump corlib version.
225
226 2010-06-20  Jb Evain  <jbevain@novell.com>
227
228         * metadata-verify.c: do not consider the assembly invalid if it
229         doesn't have a #Blob stream as resource assemblies don't
230         necessarily have one.
231
232 2010-06-17  Geoff Norton  <gnorton@novell.com>
233
234         * sgen-archdep.h: sgen support for arm linux and darwin.
235
236 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
237
238         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
239         has a faulty header.
240
241 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
244         way to mono_gc_wbarrier_value_copy but takes a bitmap that
245         indicates which slots need a write barrier.
246
247 2010-06-14  Jonathan Pryor <jpryor@novell.com>
248
249         * Makefile.am (EXTRA_DIST): Add runtime.h.
250
251 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
252
253         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
254
255 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
256
257         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
258         IMT slot which is passed to callbacks.get_imt_trampoline.
259
260 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
261
262         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
263         imt trampoline per imt slot when using LLVM.
264
265 2010-06-10  Jonathan Pryor <jpryor@novell.com>
266
267         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
268           runtime.c:mono_runtime_shutdown().
269         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
270           AppDomain.ProcessExit event in all AppDomains.
271
272 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
273
274         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
275         done by the caller.
276
277 2010-06-05  Mark Probst  <mark.probst@gmail.com>
278
279         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
280         up freeing.
281
282 2010-06-05  Mark Probst  <mark.probst@gmail.com>
283
284         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
285         segments of memory at once, to reduce the number of mmap/munmap
286         calls.
287
288 2010-06-05  Mark Probst  <mark.probst@gmail.com>
289
290         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
291         allocations and distinguish between normal, degraded and pinned
292         allocations.
293
294 2010-06-05  Mark Probst  <mark.probst@gmail.com>
295
296         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
297         allocations count toward major collections and trigger major
298         collections from degraded allocations if appropriate.
299
300 2010-06-05  Mark Probst  <mark.probst@gmail.com>
301
302         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
303
304 2010-06-05  Mark Probst  <mark.probst@gmail.com>
305
306         * sgen-gc.c: Enable mark&sweep again.
307
308 2010-06-05  Mark Probst  <mark.probst@gmail.com>
309
310         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
311
312 2010-06-05  Mark Probst  <mark.probst@gmail.com>
313
314         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
315         major heap allowance for minor collections, instead of two
316         separate ones for small and large objects.  This reduces the
317         number of major collections.
318
319 2010-06-04  Marek Habersack  <mhabersack@novell.com>
320
321         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
322         the BFLAGS_IgnoreCase is raised
323
324 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
325
326         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
327         all information in a single structure. Return information about scopes as well.
328
329         * mono-debug.c (mono_debug_lookup_locals): Ditto.
330
331 2010-06-02  Geoff Norton  <gnorton@novell.com>
332
333         * appdomain.c: If we are running with IOMAP we might
334         have been provided a string that isn't case-aware for our file-
335         system, so we need to use io-portability to check if the file 
336         exists, rather than a simple glib test.
337
338         Fixes #608849
339
340 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * verify.c (verify_generic_parameters): Verify if
343         there are not loops in constraints.
344
345 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
346
347         * verify.c (is_compatible_boxed_valuetype): Constaints
348         must be recursively checked if one generic argument
349         has a constraint on another.
350
351         Fixes #610625.
352
353 2010-05-31  Miguel de Icaza  <miguel@novell.com>
354
355         * console-unix.c (terminal_get_dimensions): Fix my previous
356         botched commit and return the actual value obtained from the ioctl.
357
358 2010-05-29  Mark Probst  <mark.probst@gmail.com>
359
360         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
361         references so that we don't have to do the cache-cold fetch of the
362         class in copy_object_no_checks().
363
364 2010-05-29  Robert Jordan  <robertj@gmx.net>
365
366         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
367         mono_marshal_string_to_utf16_copy () to avoid memory allocation
368         mismatches under Windows. Fixes pinvoke2:test_0_asany.
369
370 2010-05-28  Mark Probst  <mark.probst@gmail.com>
371
372         * sgen-gc.c: Change default nursery size to 4MB, because it
373         improves performance on many applications and benchmarks.
374
375 2010-05-28  Mark Probst  <mark.probst@gmail.com>
376
377         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
378         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
379         the GC descriptor by one bit, and don't encode the size for value
380         types not containing references.  Also get rid of
381         DESC_TYPE_STRING.
382
383 2010-05-28  Mark Probst  <mark.probst@gmail.com>
384
385         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
386         other than for remset processing.
387
388 2010-05-28  Mark Probst  <mark.probst@gmail.com>
389
390         * sgen-gc.c: More and better remset consistency checks.
391
392 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * sgen-gc.c: Add a note about the int[] trick to avoid some
395         memset.
396
397 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * sgen-gc.c (sort_addresses): Use heap sort since it has better
400         performance.
401
402         This helps programs with lots of threads or thread with big stacks
403         since the bottleneck the pin queue can get quite big.
404
405 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
408         a separate function called setup_fragment.
409
410         * sgen-gc.c (search_fragment_for_size_range): Variant of
411         search_fragment_for_size that does search for a secondary smaller
412         size.
413
414         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
415         for tlab allocation so small fragments are used.
416
417         This patch uses small fragments for tlab allocation when possible in order
418         to improve nursery utilization. With a fixed size tlab this patch is not very
419         usefull but once size gets dynamically adjusted, this will be invaluable.
420
421         Performance under pystone 500k is unchanged. Nursery utilization improves by
422         3.5% and 18 more fragments are used per minor GC.
423
424         Performance under modified binary-tree is unchanged. Nursery utilization
425         improves by 0.5% and 3 more fragments are used per minor GC.
426
427         These numbers make sense since as more pinning happens, more fragments are
428         created and so are the chances of having a bunch of small ones.
429
430 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
431         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
432         the current fragment when allocating a TLAB.
433
434         Reduces number of pystone 500k minor collections by 7%.
435
436 2010-05-25  Martin Baulig  <martin@ximian.com>
437
438         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
439
440         * debug-mono-symfile.c: Release memory from symfiles that were
441         loaded from memory.
442
443 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
444
445         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
446         during shutdown.
447
448 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
449
450         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
451         target class and remove some dead code.
452
453 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
454
455         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
456         the MonoTypes inside method headers can be freed when the header is freed.
457
458 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
459
460         * threadpool.c: Fix the DISABLE_SOCKETS build.
461
462 2010-05-19 Martin Baulig  <martin@novell.com>
463
464         Fix #604911.
465
466         * threads.c (wait_for_tids_or_state_change): Use an
467         alertable WaitForMultipleObjectsEx().
468         (wait_for_tids): Likewise.
469
470 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
473         icall.
474
475         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
476         gc tracked memory.
477
478         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
479         argument from a gchandle.
480
481         * marshal.c: Get rid of the delegate_target_locations hash table.
482
483         Fixes #605295.
484
485 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * sgen-gc.c: Use _fast variants for string and array length.
488
489 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
490
491         * sgen-gc.c: Fix counters to be 64 bits.
492
493         * sgen-gc.c (dump_heap): Fix formating strings.
494
495 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
496
497         * sgen-gc.c (global_remset_location_was_not_added): New
498         function that implements a 2 element LRU cache for just
499         added remsets. It is used to avoid adding duplicate ones.
500
501         * sgen-gc.c (add_to_global_remset): Check cache before
502         adding new entry.
503
504         * sgen-gc.c (scan_from_remsets): Don't process global remsets
505         that fail the cache test.
506
507         * sgen-gc.c (scan_from_remsets): Simplify the global remset
508         loop removing one condtion that is not possible.
509
510         A 2 element LRU cache was chosen by profiling IronPython 2.6
511         pytones with 1M passes and corlib compilation.
512
513         For the ipy test duplication was originally 940.92, measured
514         by "Store remsets" divided by "Unique store remsets".
515
516         With a 2-element LRU, duplication went to 1.007. Without the
517         check in scan_from_remsets 1.438.
518
519         With a 16-elements LRU, duplication reduction was negligibe.
520         A single element cache was basically of no use.
521
522         With corlib compilation duplication went from  1.4 to 1.02.
523
524         Performance results is a 20% time decrease for ipy and 2%
525         with corlib.
526 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
527
528         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
529
530 2010-05-15  Geoff Norton  <gnorton@novell.com>
531
532         * mono-debug.c: Fix a leak of the global table on shutdown.
533
534 2010-05-15  Geoff Norton  <gnorton@novell.com>
535
536         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
537         to clean up MonoDebugSourceLocation's.
538
539 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
540
541         * class.c (mono_class_create_from_typedef): Fail a class
542         if there is a loop with its parent.
543
544         Fixes #598239.
545
546 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * loader.c (mono_loader_set_error_type_load): Convert
549         a g_warninig to mono_trace_warning.
550
551 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * class.c (mono_class_get_full): Release strings on failure
554         to avoid leaking them.
555
556 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
557
558         * class.c (mono_class_create_from_typedef): Only return
559         the class if no exceptions were detected.
560
561         * class.c (mono_class_create_from_typedef): Don't remove
562         broken classes from class_cache. Just set failure and
563         bail out.
564
565         This fixes a memory a memory leak where resolving the same
566         broken class multiple times resulted in a memory leak.
567
568         The right behavior would be to actually return the class
569         a let the caller figure it out.
570
571 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
572
573         * mono-ptr-array.h: Add mono_ptr_array_sort.
574
575         * reflection.c (mono_image_build_metadata): Replace that ugly
576         qsort call with mono_ptr_array_sort.
577
578 2010-05-13  Mark Probst  <mark.probst@gmail.com>
579
580         * sgen-gc.c: Switch to the copying major collector, because
581         Mark&Sweep is still buggy.
582
583 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
584
585         * reflection.c (mono_image_build_metadata): Don't put managed
586         references on non-tracked memory.
587
588 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
589
590         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
591
592 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * icall.c: Switch to mono-ptr-array.h.
595
596 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * Makefile.am: Add mono-ptr-array.h.
599
600         * mono-ptr-array.h: New header that implements
601         a GC tracked equivalent of g_ptr_array. 
602
603 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
604
605         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
606         method to avoid initializing the class.
607
608         Fixes #605115.
609
610 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
611
612         * icall.c (ves_icall_System_MonoType_getFullName): It
613         doesn't require to init the class.
614
615 2010-05-11  Miguel de Icaza  <miguel@novell.com>
616
617         * console-unix.c: Signal handlers now save and restore errno.   We
618         have never had a bug report about this, ioctl does change errno. 
619
620         Hide the unused method.   
621
622         Remove internal declarations from public headers.
623
624         Document what the signal handler is doing
625
626 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
627
628         * sgen-gc.c (clear_unreachable_ephemerons): Clear
629         unreachable keys with a tombstone.
630
631         * sgen-gc.c (mark_ephemerons_in_range): Ignore
632         tombstone keys.
633
634 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
635
636         * icall-def.h:
637         * gc-internals.h:
638         * gc.c: New GC:get_ephemeron_tombstone.
639
640 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
641
642         * appdomain.c (create_exceptions): Rename to
643         create_domain_objects. Create the ephemeron tombstone object.
644
645         * domains-internals.h (MonoDomain): Add new field for the
646         ephemeron tombstone.
647
648         * domain.c (mono_domain_free): Set ephemeron_tombstone to
649         NULL.
650
651 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
652
653         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
654         and dislinks must be processed before LOS since they
655         could end up with pointers to memory returned to the
656         OS.
657
658 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
659
660         * class.c (mono_class_alloc): New helper function to centralize memory allocation
661         for classes, allocates either from the image mempool or from the heap.
662
663         * class.c: Use mono_class_alloc to allocate memory owned by classes.
664
665         * metadata.c (free_generic_class_dependents): Free more items belonging to
666         generic classes.
667
668 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
669
670         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
671         as well. Fixes #604054.
672
673 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
674
675         * metadata-verify.c: MS doesn't mind duplicates in the
676         typeref table. Move it to full verification.
677
678         Fixes #600508.
679
680 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * image.c (do_mono_image_load): Report verification
683         errors when loading an image fails.
684
685 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         * reflection.c (mono_type_get_object): Remove chunk of code
688         no longer in use.
689
690 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * icall-def.h
693         * icall.c: Delete some unused icalls.
694
695 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
696
697         * appdomain.c (mono_domain_has_type_resolve): Check for
698         NULL domain objects to make pedump happy.
699
700         * object.c (mono_field_get_value): Assert on NULL object.
701         It's the caller resposibility to check for this.
702
703         * object.c (mono_field_get_value_object): Ditto.
704
705         Fixes #601384.
706
707 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
708
709         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
710         checks can avoid doing a mono_class_init.
711
712         * icall.c: Remove mono_class_init from a bunch of icalls that
713         don't need it.
714
715         Hopefully we're now lazy enough to fix most victims of #601431.
716
717 2010-05-07  Mark Probst  <mark.probst@gmail.com>
718
719         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
720
721 2010-05-07  Mark Probst  <mark.probst@gmail.com>
722
723         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
724
725 2010-05-07  Marek Habersack  <mhabersack@novell.com>
726
727         * culture-info-tables.h: updated to include en-TT culture. Fixes
728         bug #594035
729
730 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
731
732         Move mono_class_init from mono_type_get_object to icalls.
733         This causes massive memory savings for Assembly::GetTypes () and
734         make it fail a lot less due to missing dependencies.
735
736         This is a conservative, naive change as it doesn't remove some
737         mono_class_init from places that might not need them. Carefull
738         review of those should follow.
739
740         * reflection.c (mono_type_get_object): Don't mono_class_init the
741         returning type.
742
743         * reflection.c:
744         * cominterop.c:
745         * icall.c:
746         * marshal.c: Call mono_class_init in functions receiving a MonoType
747         object.
748
749         First step into fixing #601431.
750
751 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * gc-internal.h: Add new functions required for ephemeron support.
754
755         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
756
757         * icall-def.h: Add GC::register_ephemeron_array.
758
759         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
760         under sgen. Its fields must not be marked.
761
762         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
763
764         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
765         handling finalizable objects. Clean dead ones after all finalizable
766         handling.
767
768         * sgen-gc.c (dump_heap): Add new kind of internal memory.
769
770         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
771         arrays from the dead domain.
772
773         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
774
775         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
776         whose keys are reachable.
777
778         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
779         list of live ephemeron arrays.
780
781 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
782
783         * class.c (mono_class_layout_fields): Don't perform alignment
784         if align is zero.
785
786         * class.c (mono_class_layout_fields): Init field related information
787         to sane defaults.
788
789 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
790
791         * verify.c (mono_verifier_verify_class): Verify the constraint
792         of generic type definitions.
793
794 2010-05-04  Mark Probst  <mark.probst@gmail.com>
795
796         * sgen-marksweep.c: Simplify free list maintenance in sweep.
797
798 2010-05-02  Mark Probst  <mark.probst@gmail.com>
799
800         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
801         major_do_collection() across the two major collectors.
802
803 2010-05-02  Mark Probst  <mark.probst@gmail.com>
804
805         * sgen-gc.c: Add heavy statistics counter for re-added global
806         remsets.
807
808 2010-05-02  Mark Probst  <mark.probst@gmail.com>
809
810         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
811         get rid of a division in critical code.
812
813 2010-04-29  Mark Probst  <mark.probst@gmail.com>
814
815         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
816         blocks for objects without references in mark&sweep, to improve
817         performance.
818
819 2010-04-28  Mark Probst  <mark.probst@gmail.com>
820
821         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
822         statistics up-to-date.
823
824 2010-04-27  Mark Probst  <mark.probst@gmail.com>
825
826         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
827         heap-dump for mark&sweep.
828
829 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
830
831         * loader.c (mono_method_get_header): Move the is_inflated case before the
832         wrapper case, as a method can be both.
833
834 2010-04-27  Mark Probst  <mark.probst@gmail.com>
835
836         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
837         separate pass to scan pinned and large object but use the gray
838         queue like for regular objects.
839
840 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
841
842         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
843         string.h for memmove.
844
845         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
846         ipaddress_to_struct_in6_addr() is only needed when
847         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
848
849 2010-04-25  Mark Probst  <mark.probst@gmail.com>
850
851         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
852         separate copy_object functions for major vs nursery.  Allows us to
853         get rid of a few checks and the start and end parameters for many
854         functions.
855
856 2010-04-25  Mark Probst  <mark.probst@gmail.com>
857
858         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
859         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
860         collector.
861
862 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
863
864         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
865         calling setup_mono_type () since the nested parent could recursively reference
866         the nested class using generic constraints. Fixes #599469.
867
868 2010-04-24  Mark Probst  <mark.probst@gmail.com>
869
870         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
871         abstraction.
872
873 2010-04-24  Mark Probst  <mark.probst@gmail.com>
874
875         * sgen-gc.c: Remove more unneeded code.
876
877 2010-04-24  Mark Probst  <mark.probst@gmail.com>
878
879         * sgen-gc.c: Disable managed allocator and wbarrier when the
880         binary protocol is enabled.
881
882 2010-04-24  Mark Probst  <mark.probst@gmail.com>
883
884         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
885
886 2010-04-24  Mark Probst  <mark.probst@gmail.com>
887
888         * sgen-gc.c: Remove a few commented out and unneeded bits.
889
890 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
891
892         * threadpool.c: patch from Robert Nagy that fixes a nullref and
893         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
894
895 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
896
897         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
898         types.
899
900         Fixes #331126
901
902 2010-04-21  Mark Probst  <mark.probst@gmail.com>
903
904         * sgen-gc.c: Turn off semi-precise stack mark.
905
906 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
907
908         * reflection.c (mono_custom_attrs_from_index): Use right function
909         to free 'list' (i.e. g_list_free) if the verifier fails.
910
911 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
912
913                 * verify.c: Handle the case where mono_type_get_underlying_type_any
914                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
915                 and MONO_TYPE_VALUETYPE in those case.
916
917                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
918
919                 Hopefully Fixes #564253.
920
921 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
922
923         * domain-internals.h: made threadpool_jobs volatile.
924         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
925         all local jobs.
926         * threadpool.c:
927                 -When two threads try to initialize the socket IO pool,
928                 the second one waits until the intialization is finished
929                 instead of continuing right away.
930                 -Add checks for domain unload: no items added in this case.
931                 -Only measure the time every 10 elements added to the queue.
932                 This is an experiment since linux x86 gettimeofday() sucks.
933                 -Create new thread if there are none waiting for work items.
934                 -There was a missing decrement of the busy threads.
935                 -Make sure the local queue is cleaned up before exiting the
936                 thread when the program ends.
937
938 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
939
940         * reflection.c (mono_type_get_object): Normalize generics types
941         as to how managed code expect them to be. A generic instance over
942         the GTD arguments must have the same mirror as the GTD itself.
943
944         Fixes #473289.
945
946 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
947
948         * locales.c: Implement support for DISABLE_NORMALIZATION.
949
950 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
951
952         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
953         since it is not a MonoMethod.
954
955 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
956
957         * icall-def.h: Add get_RequiresElevatedPermissions icall to
958         System.Security.SecurityManager - used only by Moonlight
959         * security-core-clr.c|h: Add Elevated Trust/Permission support
960         for CoreCLR / Moonlight
961
962 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
963
964         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
965         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
966
967 2010-04-16  Marek Habersack  <mhabersack@novell.com>
968
969         * mono-perfcounters.c: added code for the "Mono
970         Memory/Total Physical Memory" performance counter.
971
972         * mono-perfcounters-def.h: added definition of the "Mono
973         Memory/Total Physical Memory" performance counter.
974
975 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
976
977         * class.c (mono_class_get_method_by_index): Return NULL
978         on type load failures.
979
980 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
981
982         * class.c (mono_class_from_typeref): Check if the supplied
983         image has an assembly bound to it.
984
985         Fixes #567884.
986
987 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
988
989         * loader.c (mono_method_get_signature_full): Use new function
990         inflate_generic_signature_checked to check for errors.
991
992         Fixes #560839.
993
994 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
995
996         * loader.c (inflate_generic_signature): Add _checked variant
997         and move this function to use it.
998
999 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1000
1001         * class.c (mono_class_setup_vtable_general): Use error checking
1002         version of mono_class_inflate_generic_method_full.
1003
1004         Fixes #596975.
1005
1006 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1007
1008         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1009         error handling passing MonoError around.
1010
1011         Fixes #560336.
1012
1013 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1014
1015         * socket-io.c: make GetHostByName ("") work on windows.
1016         Fixes bug #456723.
1017
1018 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1019
1020         * object-internals.h:
1021         * threads.c: use a spin lock when accesing the per-thread appdomain
1022         list.
1023
1024 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1025
1026         * threads.c: no need to take the threads lock in push/pop appdomain.
1027
1028 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1029
1030         * reflection.c (_mono_reflection_parse_type): MS supports
1031         non-assembly-qualified types in a generic type parameter list
1032         when enclosed in '[]' (which signals that they should be a fqn).
1033
1034         This breaks ECMA specs for how type names are encoded in cattr
1035         blobs but F# does it.
1036
1037         Fixes #576342.
1038
1039 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1040
1041         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1042         for instance methods/ctors.
1043
1044         Fixes #422113.
1045
1046 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1047
1048         * reflection.c: Use the new verifier support for checking
1049         custom attributes.
1050
1051         Fixes #595306.
1052
1053 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1054
1055         * metadata-verify.c: Implement structural verification
1056         of custom attributes. This check requires access to the
1057         loader since to resolve the size of an enum we have to
1058         look it up.
1059         We don't check if named argumenments are encoded in a
1060         compatible fashion to their underlying field/prop.
1061         Maybe we should?
1062
1063         * verify-internals.h: Add two new cattr verification API.
1064
1065 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1066
1067         * metadata-verify.c (decode_signature_header): Fix signature.
1068
1069 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * verify.c (mono_verifier_is_enabled_for_method): Handle
1072         assembly less images.
1073
1074         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1075
1076 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1077
1078         * loader.c (mono_method_signature_checked): Properly
1079         init MonoError.
1080
1081         * loader.c (mono_method_signature): It's the calee
1082         resposibility to init the error object.
1083
1084 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1085
1086         * metadata-verify.c (decode_signature_header): Do proper
1087         overflow checking.
1088
1089 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1090
1091         * reflection.c: maintain the invariants required by
1092         mono_class_layout_fields() also in typebuilder_setup_fields ().
1093
1094 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1095
1096         * security-core-clr.c: Call mono_class_setup_methods in 
1097         get_default_ctor before checking klass->methods. Fix typo in
1098         comment
1099
1100 2010-04-10  Jb Evain  <jbevain@novell.com>
1101
1102         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1103         add .net 4.0 RTM version.
1104
1105 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1106
1107         * reflection.c (resolve_object): Properly inflate generic
1108         methods when a context is supplied.
1109
1110         Fixes #591226.
1111
1112 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1113
1114         * verify.c (mono_method_verify): A switch op don't empty
1115         the stack for the next one. Fixes a bug when running fsi
1116         under --verify-all.
1117
1118 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1119
1120         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1121         fields as valid standalone sig too. F# does generate them.
1122
1123         * metadata-verify.c (verify_typedef_table_full): Ignore
1124         what <module> extends.
1125
1126 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * verify.c (do_invoke_method): It's ok to do use call with
1129         virtual, non-final methods if their class is sealed.
1130
1131 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1132
1133         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1134         is a near identical copy of mono_field_get_value_object. So simply
1135         call it.
1136
1137         * object.c (mono_field_get_value_object): Handle literal fields
1138         on open generic classes.
1139
1140         Fixes #594942.
1141
1142 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * reflection.c (mono_reflection_create_runtime_class): Setup
1145         parent/supertype information again since it can be changed
1146         without notice.
1147
1148 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1149
1150         * verify.c (verify_type_compatibility_full): Properly handle
1151         stores between arrays of primitives.
1152
1153         Fixes the verifier side of #555950.
1154
1155 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         class.c (mono_bounded_array_class_get): Properly init
1158         cast_class to take the fact that uint[] and int[] can be
1159         casted between each other.
1160
1161         Fixes #555950.
1162
1163 2010-04-07  Geoff Norton  <gnorton@novell.com>
1164
1165         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1166
1167 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1170         builders. Fixes #594464.
1171
1172 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1175         waiting for all threads to suspend, as those threads can't be suspended.
1176
1177 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1180         to avoid crashes on newly created threads.
1181
1182 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1183
1184         * file-io.c: reset the MonoIOStat structure in case of error.
1185         Fixes bug #582667.
1186
1187 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1188
1189         * class.c (print_implemented_interfaces): Print proper type name.
1190
1191         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1192         the override map for generic instances since it later ignored.
1193
1194         * class.c (mono_class_implement_interface_slow): Don't break for
1195         dynamic generic instances.
1196
1197         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1198
1199         * reflection.c (mono_reflection_method_get_handle): New method that
1200         resolves a method handle.
1201
1202         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1203         case when we override methods from a dynamic generic instance interface.
1204
1205         Fixes #575941.
1206
1207 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1208
1209         * threadpool.c: don't attempt to close the pipe when it has not been
1210         created.
1211
1212 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1213
1214         * threadpool.c: if there are no waiting threads, try to start a new
1215         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1216         No need to use InterlockedCompareExchange to read volatile variables.
1217
1218 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1221         and reference types that point to the same class.
1222
1223         Fixes #565598.
1224
1225 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1226
1227         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1228         when verifying compatibility between a generic instance and a generic
1229         parameter.
1230
1231         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1232
1233         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1234         name.
1235
1236         Fixes #587849.
1237
1238 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1239
1240         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1241
1242 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1243
1244         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1245
1246 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1247
1248         * process.c: when cross-compiling with MinGW, force GetProcessId
1249         lookup using GetProcAddress.
1250
1251 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1252
1253         * sgen-gc.c: parse_environment_string_extract_number() must be
1254         static.
1255
1256 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1257
1258         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1259         gray_object_dequeue(), to make sure they're inlined.
1260
1261 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1262
1263         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1264         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1265
1266 2010-04-02  Jb Evain  <jbevain@novell.com>
1267
1268         * exception.c: remove dead code.
1269
1270 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1273         with mono-gc.h.
1274
1275 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1276
1277         * sgen-gc.c: Make the nursery size adjustable by the
1278         MONO_GC_PARAMS environment variable.
1279
1280         Code is contributed under MIT/X11 license.
1281
1282 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1283
1284         * threadpool.c: threadpool threads wait is alertable.
1285         Fixes bug #592964.
1286         Reduced the stack size of the *poll_wait thread.
1287
1288 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1289
1290         * exception.c|metadata-internals.h: Add new mono_get_exception_
1291         field_access_msg and mono_get_exception_method_access_msg 
1292         functions that accept a const char* parameter to provide more 
1293         details when the exception is thrown.
1294         * security-core-clr.c|h: Rework code to allow logging exceptions
1295         (export MONO_LOG_MASK="security") and to supply more details in
1296         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1297         mono_security_core_clr_is_field_access_allowed and 
1298         mono_security_core_clr_is_call_allowed to return an exception,
1299         with messages and logging, that can be emitted by method-to-ir.c
1300
1301 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1302
1303         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1304         pinned object.
1305
1306 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1309         the assembly name is not well formed utf8. Fixes #567882.
1310
1311 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1314         the generic parameters from the builder. Fixes #473298.
1315
1316 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1317
1318         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1319
1320         * marshal.c (emit_marshal_boolean): Eliminate possible
1321         uninitialized local warning. 
1322
1323 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1324
1325         * class.c (mono_class_init): Postpone coreclr inheritance check
1326         until the end of the initialization (so we can check up the 
1327         default ctor manually for the core-clr inheritance rules).
1328         * security-core-clr.c: Add the missing (undocumented) checks on
1329         default constructors when verifying inheritance rules.
1330
1331 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1332
1333         * domain-internals.h (MonoJitExceptionInfo): Add new field
1334         handler_end to the data union. To be used to point the end
1335         of a finally block.
1336
1337 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1338
1339         * reflection.c: Add support for new v4 type
1340         System.Reflection.MonoModule that is the concrete version
1341         of Module which is abstract unver v4.
1342
1343 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         * class.c (mono_class_init): Don't set class failure after
1346         inited = 1 is set. It must be done before.
1347
1348 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1349
1350         * mono-config.c: Add support for OS "haiku"
1351         * ChangeLog: Fix UTF-8 encoding
1352
1353         Code is contributed under MIT/X11 license.
1354
1355 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1356
1357         * console-unix.c: fixed include logic for sys/ioctl.h.
1358
1359 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1360
1361         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1362         systems.
1363
1364 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1367         unfinished/broken typebuilders.
1368
1369 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1370
1371         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1372         for the minor section allowance.
1373
1374 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1375
1376         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1377         "NoOptimization".
1378
1379 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1380
1381         * sgen-gc.c: Count bytes allocated with heavy statistics.
1382
1383 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1384
1385         * sgen-gc.c: More detailed time statistics.
1386
1387 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1388
1389         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1390         fix the user defined mark interface to pass a pointer
1391         to the object location and not the object itself.
1392
1393 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1394
1395         * reflection.c (mono_method_body_get_object): Release
1396         the method header before the call to CACHE_OBJECT since
1397         this is a macro that returns.
1398
1399 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1400
1401         * class.c (inflate_generic_type): mono_metadata_type_dup
1402         already dupes array information, the g_memdup was just
1403         leaking memory.
1404
1405 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * verify.c: Add stack_peek function. Fix CEE_DUP
1408         to not read from invalid memory if push did expand
1409         the stack.
1410
1411 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * verify.c: Remove old table verification code that has
1414         been superseeded by the new metadata verifier.
1415
1416         * verify.h: Remove mono_image_verify_tables from the public
1417         API.
1418
1419         * pedump.c: Fix for removed bits.
1420
1421 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * verify.c: Allocate stack slows lazily to reduce stack usage
1424         in case of methods with huge stacks. Reduces memory consumption
1425         for mcs yyparse from 459Mb to 1.8Mb.
1426
1427 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1428
1429         * threadpool.c: don't try executing items from domains being
1430         unloaded. Fixes appdomain-async-invoke test.
1431
1432 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1433
1434         * threadpool.c: spin while the threadpool initializes.
1435         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1436         down, don't do anything.
1437
1438 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * threads.c (mono_thread_create_internal): Set the GC type of the
1441         threads_starting_up hash table.
1442
1443 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1444
1445         * threadpool.c: reset 'state' to avoid returning non-null when the
1446         event type is not found.
1447
1448 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1449
1450         * sgen-gc.c: make copy_object () take the address of the
1451         slot holding the reference. This allows saving memory stores
1452         when not needed and it allows keeping track of oldspace->nursery
1453         references for the card table code.
1454
1455 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1456
1457         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1458
1459         Code is contributed under MIT/X11 license.
1460
1461 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1462
1463         * object.c, threads.c, threads-types.h, threads.h: make the
1464         managed thread local storage references precisely tracked.
1465
1466 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1467
1468         * threadpool.[ch]: reworked the threadpool:
1469                 -Threadpool threads use a work-stealing queue. Adding a work
1470                 item from a threadpool thread will queue it in the thread
1471                 local queue without locking (in most cases).
1472                 -epoll events are coalesced before being added to the IO
1473                 queue.
1474                 -Dynamically change the number of active threads
1475                 -Changed the global queue to be more GC friendly
1476
1477         * class-internals.h: add 2 new performance counters for the number of
1478         threads in the threadpool and the IO threadpool.
1479
1480         * object-internals.h: new field in MonoAsyncResult.
1481         * icall-def.h: new internal call for queueing work items.
1482
1483         * Makefile.am: add 2 new files.
1484
1485         * appdomain.c: bump up corlib version.
1486
1487         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1488
1489         * mono-perfcounters-def.h:
1490         * mono-perfcounters.c: added 2 new performance counters.
1491
1492 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1493
1494         * sgen-gc.c: More FIXME/TODO updates.
1495
1496 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1497
1498         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1499         function mono_gc_invoke_with_gc_lock() which invokes a function
1500         with the guarantee that no collection will occur during its execution.
1501
1502 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1503
1504         * sgen-gc.c: Update a few comments.
1505
1506 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1507
1508         * reflection.c: Add support for new v4 type
1509         System.Reflection.MonoAssembly that is the concrete version
1510         of Assembly which is abstract unver v4.
1511
1512 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1513
1514         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1515         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1516
1517         Expose a few macros that are needed for SR but not SRE to the
1518         world (previous inside the SRE ifdef)
1519
1520 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1521
1522         * sgen-gc.c (gc_register_current_thread): We need
1523         stack_start_limit as well in the non-attribute pthread case.
1524
1525 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1526
1527         * threads.c: Fix windows build.
1528
1529 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * thread-types.h: Add mono_thread_resume_interruption.
1532
1533         * threads.c: Add mono_thread_resume_interruption, this
1534         function should be called after the last protected handler
1535         found at interruption time has finished.
1536
1537 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1538
1539         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1540         Check MonoInternalThread's ::state instead of ::abort_exc
1541         since the later can be lazily created.
1542
1543         This is specially problematic when running a finally block
1544         under AbortRequested state. ResetAbort must work, but the
1545         abort_exc object has not been created because interruption
1546         has not began.
1547
1548 2010-03-22  Geoff Norton  <gnorton@novell.com>
1549
1550         * locales.c: Its possible for CFStringGetCStringPtr
1551         to return null and not convert encodings.  Use
1552         CFStringGetCString instead.
1553
1554 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1555
1556         * class-internals.h, class.c, object.c: introduce compressed
1557         interface bitmaps (for now only under small config): this saves
1558         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1559         startups.
1560
1561 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1562
1563         * mono-debug.c: don't try to get the method header, it causes a
1564         deadlock and it is not used for anything anymore.
1565
1566 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1569         broken by the last change.
1570
1571 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1572
1573         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1574         SOCK_RDM.
1575         
1576         Code is contributed under MIT/X11 license.
1577
1578 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1579
1580         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1581         nursery.
1582
1583         Code is contributed under MIT/X11 license.
1584
1585 2010-03-19  Martin Baulig  <martin@ximian.com>
1586
1587         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1588         dummy field, containing an empty string.
1589         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1590
1591
1592 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1593
1594         * class.c: setup_interface_offsets() refactor to not call
1595         mono_class_get_implemented_interfaces () more times than needed and
1596         to reduce the runtime memory requirements to be O(num_interfaces)
1597         instead of O(max_interface_id).
1598
1599 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1600
1601         * mono-mlist.[ch]: add mono_mlist_set_next ().
1602
1603 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1606         associated changes to support holes in the protected range of a
1607         try block.
1608
1609         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1610         retrieves the holes table from a given MonoJitInfo.
1611
1612 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1613
1614         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1615         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1616         hide the contents of the MonoString and MonoArray structs from the
1617         public API. Change the accessor macros to accessors functions where
1618         needed. Adjusted the array API to allow for pointer-sized lengths and
1619         starting positions, so 64 bit arrays can be optionally provided in an
1620         API compatible way if needed on 64 bit systems.
1621
1622 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1623
1624         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1625         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1626
1627 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1628
1629         * class-internals.h: remove the method header from MonoMethod since
1630         from now on it will be transient. We have a header pointer for method
1631         wrappers, since in that case we need to keep track of it. For this
1632         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1633         structs now. The same happens with MonoMethodInflated.
1634         * class.c: reset the sre_method flag for inflated method structures:
1635         this makes the code that cares look at the header in the MonoMethodInflated
1636         structure.
1637         * loader.c: lookup the method header in the appropriate field now that
1638         it is removed from MonoMethod.
1639         * metadata-internals.h: add a flag to the method header to know if it
1640         can be freed inside mono_metadata_free_mh ().
1641         * method-builder.c: updates after moving the header field from
1642         MonoMethod to MonoMethodWrapper.
1643         * reflection.c: MonoMethods generated from Reflection.Emit use
1644         MonoMethodWrapper structs if they need a method header now (later take
1645         advantage of this and remove all the current unsafe uses of method_aux_hash).
1646         * metadata.c: make method header parsing not leak when verification
1647         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1648         These changes save a few hundred KB of runtime memory in a mcs
1649         bootstrap or a monodevelop startup.
1650
1651 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1652
1653         * verify.c: Improve error message.
1654
1655 2010-03-12  Jb Evain  <jbevain@novell.com>
1656
1657         * reflection.c (add_exported_type): populate the exported
1658         table with the type's nested type.
1659
1660 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1661
1662         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1663         can't read parentheses.
1664
1665 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1666
1667         * threads.c (thread_cleanup): Add a guard to dereferencing
1668         "thread" to avoid an unlikely race condition.
1669
1670 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1671
1672         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1673         instead of an empty string.
1674
1675 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1678         convert to a boolean, recent gcc versions compile this differently.
1679
1680 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1681
1682        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1683        inlined.
1684
1685 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1686
1687         * sgen-gc.c (STRING_SIZE): Off by one.
1688
1689 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1690
1691         * sgen-archdep.h: Fix the signal context register access for
1692         AMD64.
1693
1694 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1697
1698 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         * verify.c: Store the initial basic block returned by mono_basic_block_split
1701         so we can release the whole list and not just the first one.
1702
1703 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1704
1705         * verify.c, debug-helpers.c, profiler.c, loader.c,
1706         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1707         MonoMethodHeader a transient entity.
1708
1709 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1712         uncontrolled growth of the gray stack.
1713
1714         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1715         added items are removed first, improving cache locality. Avoid freeing queue
1716         segments in the fast path, use the list of segments as the free list, truncate
1717         it to its max size at the start of collection.
1718
1719 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1720
1721         * metadata-internals.h: more memory savings, both with small config and without.
1722
1723
1724 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1725
1726         * appdomain.c, domain-internals.h, domain.c, object.c:
1727         make class_vtable_hash into an array to reduce memory usage.
1728
1729 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1730
1731         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1732         object-internals.h, object.c, reflection.c, threadpool.c:
1733         reduce resource usage when the small config is selected.
1734         In particular, up to 64K of methods/fields/properties/events
1735         are allowed and "other" methods in events are ignored.
1736
1737 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1738
1739         * threads.c: reduce resource usage when compiled for a small config.
1740
1741 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1742
1743         * sgen-gc.c: Also collect number of degraded-alloced objects with
1744         heavy statistics.
1745
1746 2010-03-04  Geoff Norton  <gnorton@novell.com>
1747
1748         * assembly.c: Only support OSX bundling if the bundle is 
1749         actually detectable.
1750
1751 2010-03-04  Geoff Norton  <gnorton@novell.com>
1752
1753         * loader.c: The marshal specs are freed at the end of the call
1754         but it explicitly frees the strings as well as the container,
1755         so we need to dup them too to avoid referencing free'd memory.
1756
1757 2010-03-04  Geoff Norton  <gnorton@novell.com>
1758
1759         * icall-def.h:
1760         * icall.c: Add a new private internal icall to construct
1761         an object from its type without running the ctor.
1762
1763 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1764
1765         * profiler.c: allow multiple profiler engines to be loaded
1766         at the same time.
1767
1768 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1769
1770         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1771         profiler event to track object moves.
1772
1773 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1774
1775         * object.c, profiler.c, profiler.h, string-icalls.c:
1776         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1777
1778 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1779
1780         * decimal.c (mono_double2decimal): Add support for reducing the
1781         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1782         expected.
1783
1784 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1785
1786         * icall-def.h:
1787         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1788
1789 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1790
1791         * mono-config.c (mono_config_parse_assembly_bindings): added -
1792         parses assembly binding redirections from appdomain's config
1793         file.
1794
1795         * metadata-internals.h: added definition of a new function -
1796         mono_config_parse_assembly_bindings - to support parsing assembly
1797         binding redirections defined in appdomain's config file.
1798
1799         * domain-internals.h: added two new fields to _MonoDomain - a list
1800         of assembly bindings and a flag to parse the config file only
1801         once.
1802
1803         * assembly.c (assembly_binding_maps_name): empty culture name and
1804         NULL culture name are considered equal.
1805         (mono_assembly_apply_binding): added support for domain specific
1806         assembly binding redirections, read from the appdomain's
1807         configuration file. Fixes bug #580185
1808
1809 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1810
1811         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1812         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1813         support.
1814
1815 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1816
1817         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1818         from this function. The new function receive the parent token instead of a type.
1819
1820         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1821         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1822         typebuilders. This make it possible to properly encode generic type builders since
1823         their unmanaged type don't have generics data while unfinished.
1824
1825         Fixes #583655.
1826
1827 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1828
1829         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1830         writing binary log files (can be enabled by #define'ing
1831         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1832         bugs in longer running programs.
1833
1834 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1835
1836         * metadata.c: added some API documentation.
1837
1838 2010-03-01  Robert Jordan  <robertj@gmx.net>
1839
1840         * filewatcher.h: Include glib.h to fix the MSVC build.
1841
1842 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1843
1844         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1845         a GC handle instead. This is a bit slower to access, but avoids burdening the
1846         GC with 100s of individual roots.
1847
1848         * reflection.c (mono_class_get_ref_info):
1849         (mono_class_set_ref_info):
1850         (mono_class_free_ref_info): New internal helper fuctions.
1851
1852         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1853         of accessing klass->reflection_info directly.
1854
1855         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1856         words.
1857
1858         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1859         the previous array.
1860
1861 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1864         needs an indirection.
1865
1866 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1869         so all generic sharing code is in one place.
1870
1871         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1872         we don't call setup_interface_offsets () for unfinished types.
1873
1874 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * class.c (mono_class_generic_sharing_enabled): Move this to
1877         generic-sharing.c.
1878
1879         * image.c: Add an unload hook which is called before an image is unloaded.
1880
1881         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1882         metadata.c having to depend on generic sharing.
1883
1884 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1885
1886         * class.c: reduce size of ridiculously large cache.
1887
1888 2010-02-26  Martin Baulig  <martin@ximian.com>
1889
1890         * mono-debug.h
1891         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1892
1893         * threads.c (mono_thread_internal_reset_abort): New method; resets
1894         the abort, but doesn't throw any exception if no abort was requested.
1895
1896 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * class.c (get_implicit_generic_array_interfaces): Call
1899         mono_class_setup_interface_offsets () before accessing
1900         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1901         some reason.
1902
1903 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1904
1905         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1906         icall internal.
1907
1908 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1909
1910         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1911         direct access to the MonoType fields.
1912
1913 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * threads.h: Move some internal functions which were added to this header by
1916         mistake to threads-types.h.
1917
1918         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
1919
1920 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
1921
1922         * class-internals.h, class.h, object.h: make MonoRemoteClass
1923         and mono_remote_class() internal.
1924
1925 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1926
1927         * metadata-internals.h, class-internals.h, metadata.h: make the
1928         MonoType guts internal as well.
1929
1930 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
1931
1932         * reflection.h: the MonoTypeNameParse guts are internal now.
1933         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
1934         are internal now, provide accessors as needed.
1935         * metadata.h, metadata-internals.h: the MonoMethodSignature
1936         guts are internal now.
1937         * Makefile.am: mempool.h is an internal header now.
1938         * *.h, *.c: remove glib.h usage from the public headers.
1939
1940 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
1941
1942         * culture-info-table.h : regenerated.
1943
1944 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1945
1946         * metadata.c: Add mono_method_get_header_summary which returns minimal
1947         information about the header of a method. This is the information used
1948         by the inline oracle to reject methods.
1949
1950         This method doesn't decode local variables and doesn't cache it's result,
1951         so it should cause a minimal reduction in memory usage.
1952
1953         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
1954         mono_method_get_header_summary.
1955
1956 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
1957
1958         * threads.c (mono_thread_exit): Make sure that the main thread is
1959         non-null before dereferencing it.
1960
1961 2010-02-21  Geoff Norton  <gnorton@novell.com>
1962
1963         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
1964         locale.
1965         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
1966         before falling back to the posix lookup.
1967
1968 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
1971         the DONT_MANAGE flag set.
1972
1973 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1974
1975         * domain.c: Remove old v1 version strings. Let the runtime
1976         default to 2.0 instead of failing because it can't find a
1977         working 1.0 instalation.
1978
1979 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * domain.c: Add v4 RC version string.
1982
1983 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1984
1985         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
1986         of overflow checking function.
1987
1988 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1989
1990         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
1991         generic methods.
1992
1993         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
1994         cases for ParameterInfo.
1995
1996         Fixes #579493.
1997
1998 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2001         have has_cctor set. Fixes #575946.
2002
2003 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2004
2005         * appdomain.c: display a warning if the parsing the config file
2006         produces any error.
2007         Skip the BOM in UTF-8 files.
2008         Copy the AppDomainSetup before setting the privateBinPath so that the
2009         correct configuration file is read.
2010
2011 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2012
2013         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2014         vtable trampoline per vtable slot index. Not used yet.
2015
2016 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2017
2018         * icall-def.h:
2019         * icall.c: add internal call that returns the system page size.
2020
2021 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2024         'int' for system classes.
2025
2026 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2027
2028         * icall.c, icall-def.h: new icall to check for sufficient
2029         stack space.
2030
2031 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2032
2033         * reflection.c (ensure_complete_type): Check that reflection_info
2034         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2035
2036 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2037
2038         * attrdefs.h:
2039         * tabledefs.h: Add NoOptimization flag.
2040
2041 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2042
2043         * sgen-gc.c: Don't consider it a missing remset if the target
2044         object is pinned - we might have done the store but not added the
2045         remset yet.
2046
2047 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2048
2049         * sgen-gc.c: When checking for missing remsets, don't assert on
2050         the first one, but print them all and then assert.
2051
2052 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2053
2054         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2055
2056 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2057
2058         * console-unix.c: On OSX Control-Y is assigned to
2059         VDSUSP (non-Posix), the
2060         suspend-program-next-time-it-tries-to-read-input command (this is
2061         different than C-z, which suspends immediately).
2062
2063         Do the same thing that bash does and ignore this setting,
2064         making our repl/getline support pasting.
2065
2066 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2067
2068         * sgen-gc.c: Simple plausibility check for scan_starts.
2069
2070 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2071
2072         * sgen-gc.c: Round up when calculating the number of scan starts.
2073
2074 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2075
2076         * reflection.c: Export mono_get_object_from_blob.
2077
2078         * object-internals.h: Ditto.
2079
2080         * icall.c: New icall property_info_get_default_value to get the default
2081         value of a property. Since using this is not common, no caching is done.
2082
2083         * icall-def.h: Add new icall.
2084
2085 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2086
2087         * class.c: Add mono_class_get_property_default_value.
2088
2089         * class-internal.h: Export mono_class_get_property_default_value.
2090
2091 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2092
2093         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2094
2095 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2096
2097         * sgen-gc.c: introduced critical regions to allow some lockless
2098         operations and increase scalability.
2099
2100 2010-02-10  Geoff Norton  <gnorton@novell.com>
2101
2102         * reflection.c: Support building with DISABLE_REFLECTION
2103
2104 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2105
2106         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2107         Closes bug #566057.
2108
2109         * exception.c: fix typo in comment.
2110
2111 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2112
2113         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2114         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2115
2116         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2117
2118         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2119         the internal API.
2120
2121         Fixes #574434.
2122
2123 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2124
2125         * threads.c: Removed two assertions that were too strict.  Added a
2126         clarifying comment.  Fixes #577090.
2127
2128 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2131         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2132
2133         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2134
2135         * verify.c (mono_type_get_stack_name): Fix a warning.
2136
2137 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2140         mono_marshal_wrapper_info_from_wrapper.
2141
2142         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2143         mono_marshal_method_set_wrapper_data, and export.
2144
2145         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2146         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2147         by calling mono_marshal_get_wrapper_info ().
2148
2149         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2150         small objects which does no size checks.
2151
2152 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2155
2156 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2157
2158         * verify.c (mono_method_verify): Use the new basic block formation pass
2159         to avoid verifying dead basic blocks. This is the same behavior as the
2160         runtime MS verifier.
2161
2162 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2163
2164         * mono-basic-block.c:
2165         * mono-basic-block.h: New implementation of a basic block formation pass.
2166         The formation pass does static liveness analysis as well to detect dead
2167         basic blocks.
2168
2169 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2172         'this' argument in icalls.
2173
2174 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2177
2178 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2179
2180         * object.c, domain.c: When using SGen, we must register
2181         vtable->type as a root if it's not a MonoType, because then it
2182         wasn't pin-alloced.
2183
2184 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2185
2186         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2187         at the start of nursery collections, because we might have had
2188         degraded allocations which changed next_data.
2189
2190 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2193         custom attr so this function works in cross-compiling mode.
2194
2195 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2196
2197         * class.c (make_generic_param_class): Initialize interface offsets since we
2198         set klass->inited. Fixes #574819.
2199
2200 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2203         calling the JIT domain cleanup hook.
2204
2205 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2206
2207         * pedump.c (main): Properly set the verifier mode when running the metadata
2208         verifier.
2209
2210 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2211
2212         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2213         overlapping fields now that we're called before has_references is set.
2214
2215         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2216         method. Otherwise all sort of weird stuff happens.
2217
2218 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2221         Fixes #572874.
2222
2223 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2226         Fixes #573322.
2227
2228 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2229
2230         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2231         pin_staging_area_index is greater than 0.
2232
2233 2010-01-22 Miguel de Icaza (miguel@novell.com)
2234
2235         * loader.c: Since we do nothing with the error returned, pass NULL
2236         to ignore the error.
2237
2238 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2239
2240         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2241         happened before starting to encode the actual fields. This avoid ciclic
2242         dependencies and eventual crashes.
2243
2244         Fixes #572660.
2245
2246 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2247
2248         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2249         atomic and remove the half-constructed hack in SGen.
2250
2251 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2254         has a recursive reference to itself.
2255
2256         Fixes #571863.
2257
2258 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2259
2260         * loader.c (mono_method_signature): Fix error message.
2261
2262 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2263
2264         * sgen-gc.c: Reuse to-space sections between nursery collections.
2265
2266 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2267
2268         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2269         from the current assembly or mscorlib. Fixes bug #322957.
2270
2271 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2274         get_wrapper_target_class.
2275
2276 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2277
2278         * sgen-gc.c: Fix warnings.
2279
2280 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2281
2282         * verify.c (store_local): Better error message.
2283
2284 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2285
2286         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2287         arguments.
2288
2289 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2290
2291         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2292         function is generics variance aware.
2293
2294 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2295
2296         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2297         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2298
2299 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2300
2301         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2302           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2303
2304         Code is contributed under MIT/X11 license.
2305
2306 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2307
2308         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2309         on a GTD.
2310
2311 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2314         return a point to a wrapper specific info structure describing the wrapper.
2315         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2316  
2317 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2318  
2319         * sgen-gc.c: Make minor collection section allowance adaptive,
2320         depending on the amount of memory reclaimed in the last major
2321         collection.  If more memory was reclaimed (i.e. more garbage
2322         produced), do the next collection earlier.
2323
2324 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2325
2326         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2327         to itself.
2328
2329         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2330         the token as parameter.
2331
2332         * verify-internals.h: Ditto.
2333
2334         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2335
2336         Fixes #571460.
2337
2338 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2339
2340         * sgen-gc.c: Make store_remset_buffer_index long.
2341
2342 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2343
2344         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2345
2346         Fixes #569579.
2347
2348 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2351         off precise marking if it is available.
2352         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2353
2354 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2357
2358         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2359         pinned objects.
2360
2361         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2362         to the array allocator.
2363
2364 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2367         result of mono_compile_method (), it already includes an ftnptr.
2368
2369 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2372
2373 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2376         hash value which doesn't depend on glib/eglib versions.
2377         (mono_metadata_type_hash): Use it.
2378
2379         * object.c (mono_method_get_imt_slot): Ditto.
2380
2381 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2382
2383         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2384         independently of the GTD.
2385
2386         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2387
2388         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2389         to the upper limit since instance_size includes this amount.
2390
2391         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2392
2393         Fixes #569544.
2394
2395 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2398         with static methods.
2399
2400         * object.c (build_imt_slots): Avoid asserting when static methods are
2401         encountered in an interface.
2402
2403 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2404
2405         * sgen-gc.c (to_space_expand): Fix assertion.
2406
2407 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2408
2409         * string-icalls.c: missing declaration fixes.
2410         * sgen-gc.c: portability fixes.
2411
2412 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2413
2414         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2415
2416         * class.c:
2417         * cominterop.c:
2418         * icall.c:
2419         * object.c: 
2420         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2421
2422 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2423
2424         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2425         it can fail loading the type.
2426
2427         * class.c: Add mono_class_inflate_generic_class_checked.
2428
2429         * class.c:
2430         * verify.c:
2431         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2432
2433 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * loader.c (mono_method_signature_checked): New internal function taking an
2436         MonoError argument.
2437
2438         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2439         Fixes build on rh 7.3.
2440
2441 2010-01-10  Aaron Bockover  <abockover@novell.com>
2442
2443         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2444         at runtime in the same way as on Windows, which yields a relocatable
2445         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2446         of the running mono process.
2447
2448         On TARGET_ARM, fallback () will always be executed.
2449
2450 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2453
2454 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2455
2456         * class.c (mono_class_is_assignable_from_slow): Support variant
2457         generic delegates.
2458
2459         * class.c (mono_class_implement_interface_slow): Support types with
2460         variant generic arguments.
2461
2462 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2463
2464         * verify.c: Remove some code duplication.
2465
2466 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * object.c: Update docs.
2469
2470 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2471
2472         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2473
2474         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2475         fallback trampoline as well.
2476
2477         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2478         out argument that is set to TRUE if the match was direct. 
2479
2480         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2481
2482         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2483
2484 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         * class.c: Add mono_class_interface_offset_with_variance function that does same
2487         as mono_class_interface_offset but takes variance into account.
2488
2489         * class-internal.h: Export mono_class_interface_offset_with_variance.
2490
2491         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2492
2493 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2494
2495         * object.c:
2496         * icall.c:
2497         * class.c: Add some FIXME for due to variant generic arguments.
2498
2499         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2500         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2501         the bitfield check fails.
2502
2503 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2504
2505         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2506         to be easier to read and fix bugs in the case a non generic type implements a variant
2507         interface.
2508
2509         * class.c (mono_class_has_variant_generic_params): Make non static.
2510
2511         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2512         the private API.
2513
2514 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2515
2516         * assembly.c: fix MONO_PATH debug output.
2517
2518 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2519
2520         * culture-info-table.h : regenerated.
2521
2522 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2523
2524         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2525         types that are meant to not have a parent.
2526
2527 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2530         from the image mempool, so it is not leaked.
2531
2532 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2535
2536 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2537
2538         * verify.c (verify_valuetype_layout_with_target): Fix case
2539         that can lead to infinite recursion. Fix bug #567861
2540
2541 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2542
2543         * pedump.c: Run code verifier even if image verification fails
2544         due to a failed type we. This allows more errors to be shown.
2545
2546 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * class.c (count_virtual_methods): Remove the assert and now
2549         fail properly.
2550         
2551         * class.c (setup_interface_offsets): This can fail now.
2552
2553         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2554         errors. Check setup_interface_offsets errors.
2555
2556         * class.c (setup_interface_offsets): Simplify the return error logic
2557         and remove class_init_ok.
2558
2559         Fixes #560327.
2560
2561 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2562
2563         * class.c (mono_class_init): Do class verification at the beginning. Add
2564         some asserts to avoid tripping into invalid memory.
2565
2566         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2567         g_error and a decent message.
2568
2569         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2570
2571         Fixes #567548.
2572
2573 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2576         as inline functions instead of defining them in mempool.c.
2577
2578         * metadata-internals.h (MonoImageSet): New structure representing a set of
2579         MonoImages, which own a collection of generic instances.
2580
2581         * metadata.c: Get rid of the global generic caches, instead assign each generic
2582         instance to the image set which consists of all the images referenced by the
2583         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2584         the memory used by generic instances to be allocated from a per image-set mempool
2585         later.
2586
2587 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2590
2591 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * appdomain.c (zero_static_data): Fix a warning.
2594
2595         * locales.c (construct_culture_from_specific_name): Applied patch from
2596         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2597         not found. Fixes #567900.
2598
2599 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2600
2601         * loader.c (mono_method_get_signature_full): Remove two asserts.
2602         Return NULL instead so that the verifier can handle both cases 
2603         gracefully.
2604
2605 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2606
2607         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2608         so we can properly fail types instead of crashing.
2609
2610         Fixes #567676.
2611
2612 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2613
2614         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2615         generic method.
2616
2617 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2618
2619         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2620
2621 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2624         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2625         we can't remove it from it since we don't hold the lock.
2626         (mon_new): Free the orphaned events here when a mon structure is added to the
2627         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2628         this down.
2629
2630 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2633         as max stack might be zero.
2634
2635         Fixes #562320.
2636
2637 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2638
2639         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2640
2641         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2642         instances if the GTD did.
2643
2644         * class.c (mono_class_setup_properties): Ditto.
2645
2646         * class.c (mono_class_setup_events): Ditto.
2647
2648         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2649
2650         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2651         error setting.
2652
2653         * class.c (mono_class_init): Fail if GTD did.
2654
2655         * cominterop.c:
2656         * generic-sharing.c:
2657         * icall.c:
2658         * loader.c:
2659         * object.c:
2660         * verify.c: Properly handle failure of mono_class_setup_methods.
2661
2662 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2665         mono_class_inflate_generic_method_full internal.
2666
2667         * class.c (inflate_generic_context): Now takes a MonoError argument.
2668
2669         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2670         errors.
2671
2672 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2675         they cannot be patched. Partly fixes #564408.
2676
2677 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2678
2679         * metadata-internals.h, reflection.c: Use the
2680         MonoDynamicImage.handleref hash table only with unmanaged keys,
2681         and add a managed hash table handleref_managed for managed keys.
2682
2683 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2684
2685         * sgen-gc.c: Unset to-space bumper between collections.  It might
2686         become invalid due to degraded allocations.
2687
2688 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2689
2690         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2691         with the one from the original method.
2692
2693         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2694         compatibility.
2695
2696         * verify-internals.h: Add new function to the internal API.
2697
2698 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2699
2700         * culture-info-tables.h: regenerated it to include the Georgian culture.
2701
2702 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * sgen-gc.c: Include mono/utils/memcheck.h.
2705
2706         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2707         instead of the current domain, since the two might not match if this is called
2708         from the debugger.
2709
2710         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2711         domain which created this assembly.
2712
2713 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2716
2717 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2718
2719         * sgen-gc.c: Managed implementation of the specialized generic
2720         store write barrier.
2721
2722 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2723
2724         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2725         A private virtual newslot method is used to implement an interface method without exposing
2726         it to users. When querying for public instance methods, such method would hide a public one
2727         on a parent type.
2728
2729         Fixes #564379.
2730
2731 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2734         conventions.
2735
2736 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2737
2738         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2739
2740 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2741
2742         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2743         as they are no longer used.
2744         
2745          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2746
2747         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2748
2749 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2752         if the owner class has not been finished before returning reflection_info.      
2753
2754         Fixes #565127.
2755
2756 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2759         param doesn't have custom attributes. Fixes #565117.
2760
2761         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2762         #565120.
2763
2764 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2767
2768 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2769
2770         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2771         same amount done by a core-clr enabled runtime.
2772
2773 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2774
2775         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2776         the target files is reset to writable by owner and readable by
2777         everyone else to prevent problems when updating shadow copies of
2778         files whose source is read-only. Fixes bug #556884
2779
2780 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2781
2782         * class.c (mono_generic_class_get_class): Allocate the generic
2783         class via malloc again, so that it can be freed when any one of
2784         the images of its constituent types is closed.
2785
2786         * metadata.c: When closing an image, don't free generic insts and
2787         generic classes right away, but put them into a list for later
2788         freeing.
2789
2790         * image.c, metadata-internals.h: Store the free list and in the
2791         second pass of closing an image, free it.
2792
2793 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2794
2795         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2796
2797         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2798         types in type_hash.
2799
2800         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2801
2802 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2803
2804         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2805         user type.
2806
2807         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2808         is used.
2809
2810 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2811
2812         * verify.c (mono_method_verify): The Unused opcodes produce an
2813         InvalidProgramException on .NET
2814
2815 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2816
2817         * loader.c (mono_method_get_header): Move assert after the verifier
2818         has been called on the method header.
2819
2820 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2821
2822         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2823
2824         * appdomain.c: Bump corlib version.
2825
2826 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2827
2828         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2829         types as well since otherwise generic instances would not return UT as arguments but
2830         their undelying system type.
2831
2832         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2833         to reflect the fact that they can have now multiple different types.
2834
2835         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2836
2837         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2838
2839         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2840
2841         * reflection.c (mono_reflection_register_with_runtime): Init super types
2842         if the image is not dynamic.
2843
2844         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2845         check if the generic type definition is a TypeBuilder.
2846
2847         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2848         doesn't belong to a dynamic image, skip initialization.
2849
2850         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2851         base definition is not a dynamic type.
2852
2853 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2854
2855         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2856         mono_profiler_string_allocation
2857
2858         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2859         if string profiling is enabled, call
2860         mono_profiler_string_allocation
2861
2862         * profiler.h: added two MonoProfileFlags -
2863         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2864         installation functions for the hooks below.
2865
2866         * profiler-private.h, profiler.c: added two hooks:
2867         mono_profiler_string_allocation called whenever a string is
2868         allocated by InternalAllocateStr and mono_profiler_iomap called
2869         whenever IOMAP code performs an adjustement on a file path.
2870
2871 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2872
2873         * boehm-gc.c: fixed race condition while getting the target of a
2874         disappearing link (bug #522233).
2875
2876 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2877
2878         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2879         the error.
2880
2881 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * reflection.c: Add mono_reflection_register_with_runtime icall to
2884         allow a MonoGenericClass to register itself as the managed mirror of
2885         a given generic instance.
2886         This is a temporary workaround until all MGC instantiation happens in
2887         managed code.
2888
2889         * object-internals.h: Ditto.
2890
2891         * icall-def.h: Ditto.
2892
2893 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2894
2895         * sgen-gc.c (find_in_remsets): Also search the generic store
2896         remsets.
2897
2898 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2899
2900         * sgen-gc.c: Don't access class names in debugging code when
2901         unloading a domain, because they might not be valid anymore.
2902
2903 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2904
2905         * domain.c, domain-internals.h: New function mono_domain_unset().
2906
2907         * appdomain.c (unload_thread_main): Detach the thread again at the
2908         end.
2909
2910         * threads.c: When a thread exists or is detached, unset its domain
2911         so that it's NULL when, for example, a pthread destructor runs.
2912
2913         * sgen-gc.c: Assert that there is no domain set after a thread is
2914         done.
2915
2916 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2917
2918         * class.c (mono_generic_class_get_class),
2919         metadata.c (free_generic_class): Allocate generic MonoClass's from
2920         the image mempool, not via malloc.  The problem with malloc is
2921         that when unloading a domain those classes are freed before
2922         clearing the heap and SGen needs the classes.  Rewriting the
2923         unloading code to do the free later would be more work and there's
2924         no point in using malloc anyway.
2925
2926 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
2927
2928         * loader.c (mono_method_signature): Always call mono_loader_unlock 
2929         before returning.
2930
2931 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2932
2933         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
2934         user string blobs.
2935
2936         * verify-internals.h: Add new function to the internal API.
2937
2938         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
2939         check if it's a valid string.
2940
2941         * object.c (mono_ldstr): Ditto.
2942
2943         Fixes #561943.
2944
2945 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2946
2947         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
2948         from a method before returning it. This is the expected behavior.
2949
2950 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * reflection.c (inflate_method): Handle the case of a regular system type.
2953
2954 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2955
2956         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
2957         gathering code.
2958
2959         * mempool.c, mempool-internals.h: New function
2960         mono_mempool_get_bytes_allocated().
2961
2962         * Makefile.am: sgen-pinning-stats.c added.
2963
2964 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2965
2966         * sgen-gc.c (create_allocator): Only use the fast path if the
2967         object size is within the small object size limit.
2968
2969 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2970
2971         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
2972         possibly adding padding to sizeof (GCMemSection).
2973
2974 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2975
2976         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
2977         reference is not in the nursery.
2978
2979 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
2980
2981         * class.c (mono_class_from_typeref): Bounds check idx against the 
2982         assemblyref table.
2983
2984 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2985
2986         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
2987         through the potential roots, then sort the results and find the
2988         pinned objects from there.
2989
2990         * Makefile.am: sgen-pinning.c added.
2991
2992 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2993
2994         * sgen-gc.c: Record generic stores in specialized remset buffers.
2995
2996 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2997
2998         * sgen-gc.c: Make pinned chunks the same size as major heap
2999         sections, and align them as well, so that we can check whether an
3000         object is in a pinned chunk or a major section in constant time.
3001
3002 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3003
3004         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3005
3006 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3007
3008         * sgen-gc.c: Make all major heap sections the same size (currently
3009         128k) and allocate them on aligned addresses.  Small heap sections
3010         give us better granularity with pinned objects - we can free up
3011         much more memory.
3012
3013 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3014
3015         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3016         output removed.
3017
3018 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3019
3020         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3021
3022         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3023         names in addition to the runtime generated one.
3024
3025         * mono/metadata/image.h: Add a function to take the real name of the assembly
3026         image.
3027
3028         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3029         use it instead of the runtime generated one.
3030
3031         Code is contributed under MIT/X11 license.
3032
3033 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3036         before the other checks to prevent problems if the DateTime class is blittable.
3037         Hopefully fixes #559600.
3038
3039 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3040
3041         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3042         returns the largest string length that will not be put into the
3043         LOS.
3044
3045         * sgen-gc.c, gc-internal.h: New function that returns the largest
3046         object size that will not be put into the LOS.
3047
3048         * appdomain.c: Bump corlib version.
3049
3050 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3053
3054         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3055
3056 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * reflection.c (inflate_method): Fix signature.
3059
3060         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3061         in managed code.
3062
3063 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3064
3065         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3066
3067 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3068
3069         * sgen-gc.c: Abstract to-space handling.
3070
3071 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3072
3073         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3074
3075         Fixes #559906.
3076
3077 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3078
3079         * sgen-gc.c: Only add references from outside the nursery to
3080         within the nursery to the global remset list.
3081
3082 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3083
3084         * appdomain.c (create_exceptions): Set the domain temporarily if
3085         necessary to avoid cross-domain references.
3086
3087 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3088
3089         * verify.c (get_stack_type): Return that the type is invalid instead of
3090         asserting.
3091
3092         * verify.c (mono_method_verify): Verify that all locals and arguments
3093         have valid stack types.
3094
3095         Fixes #559913.
3096
3097 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3098
3099         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3100         bounds checking overflow aware.
3101
3102         Fixes #559910.
3103
3104 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3105
3106         * verify.c (do_invoke_method): Check for invalid method signatures.
3107
3108         Fixes #553450.
3109
3110 2009-12-02  Jb Evain  <jbevain@novell.com>
3111
3112         * appdomain.c (MONO_CORLIB_VERSION): bump.
3113         * icall-def.h (get_base_definition): renamed to get_base_method
3114         and add a boolean argument indicating we want the original
3115         method definition, or the immediate base method.
3116         * icall.c: apply the get_base_definition to get_base_method change.
3117
3118 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3119
3120         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3121
3122         Fixes #558042.
3123
3124 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3125
3126         * class.c: remove asserts for invalid type token in
3127         mono_class_name_from_token(), mono_assembly_name_from_token() and
3128         mono_class_create_from_typedef () (fixes bug #553318).
3129
3130 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3131
3132         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3133         incorrect assemblies (bug #553322).
3134
3135 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3136
3137         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3138
3139         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3140
3141         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3142
3143         * class.c (inflate_generic_context): Ditto.
3144
3145         * loader.c (method_from_methodspec): Ditto.
3146
3147         Fixes #558230.
3148
3149 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3150
3151         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3152
3153         * class.c (mono_class_create_from_typespec): Ditto.
3154
3155         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3156
3157         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3158
3159         Fixes #558184.
3160
3161 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3164
3165         * verify.c (verify_delegate_compatibility): Ditto.
3166
3167         * verify.c (do_newobj): Ditto.
3168
3169         Fixes #558046.
3170
3171 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3172
3173         * sgen-gc.c: Use a gray queue instead of requiring that gray
3174         objects are in a contiguous region.
3175
3176         * sgen-gray.c: The gray queue implementation.
3177
3178         * Makefile.am: sgen-gray.c added.
3179
3180 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3181
3182         * appdomain.c: When unloading a domain, zero its static data and
3183         perform a minor collection when using SGen.  That will get rid of
3184         all the remsets pointing into that domain's static data.
3185
3186         * sgen-gc.c: Allow remsets into static data.  By doing this we
3187         need less checks so we're more efficient.
3188
3189 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3190
3191         * verify.c (mono_method_verify): Check for catch clauses with broken
3192         types.
3193
3194         Fixes #558465.
3195
3196 2009-12-01  Jb Evain  <jbevain@novell.com>
3197
3198         * class.c (make_generic_param_class): set the namespace of
3199         the generic parameter class from its owner, if available.
3200
3201 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * verify.c (code_bounds_check): Do proper overflow checking.
3204
3205         * verify.c (mono_method_verify): The number of switch entries is
3206         an unsigned int. Properly bounds check it.
3207
3208         Fixes #558594.
3209
3210 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3211
3212         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3213         mono_metadata_method_has_param_attrs which only checks if a given param
3214         list has a non zero flags entry.
3215
3216         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3217         to inform how many params should we expect to decode.
3218
3219         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3220         as it's faster than mono_metadata_get_param_attrs.
3221
3222         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3223         add mono_metadata_method_has_param_attrs.
3224
3225 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3228         failures.
3229
3230         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3231         is -1 but its class is broken.
3232
3233         Fixes #558522.
3234
3235 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3236
3237         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3238         for parameter overflow.
3239
3240         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3241         of mono_metadata_get_param_attrs.
3242
3243         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3244         API.
3245
3246         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3247
3248 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * class.c (mono_class_setup_fields): Check for fields with broken types.
3251
3252         Fixes #558741.
3253
3254 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3255
3256         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3257         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3258         its TypeBuilder::CreateType ().
3259
3260         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3261         if not needed.
3262
3263         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3264         to make setup_interface_offsets happy.
3265
3266         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3267         compilation now works.
3268
3269 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * appdomain.c (create_exceptions): New helper function extracted from
3272         mono_runtime_init () to precreate objects used during exception handling.
3273         (mono_runtime_init): Call it.
3274         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3275
3276 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3277
3278         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3279         compilation until the proper one is found.
3280
3281 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3282
3283         * class.c (mono_class_setup_vtable_general): Cache the result of
3284         get_virtual_methods () since it can be slow because of the metadata
3285         optimization.
3286
3287         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3288         from a MonoValueHashTable for now, since the later is based on an earlier
3289         version of hpj's internal probing code and seems to have serious collision
3290         issues.
3291
3292         * loader.c (mono_get_method_full): Update after the change above.
3293
3294 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3297
3298 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3299
3300         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3301         the GTD instead of the DGC instead of crashing.
3302
3303         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3304         required. Inflate fields if needed.
3305
3306         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3307         finished. Renamed.
3308
3309 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * class.c (check_interface_method_override): Check for NULL signatures and fail
3312         the type.
3313
3314         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3315
3316         Fixes #553428.
3317
3318 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3321         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3322
3323 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3324
3325         * loader.c (field_from_memberref): Resolve the class first then the field
3326         signature. Remove a lot of duplicated code and make sure we don't pass valid
3327         values to mono_loader_set_error_field_load.
3328
3329         Fixes #553306.
3330
3331 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3332
3333         * class.c (inflate_generic_type): Change code to use new signature of
3334         mono_error_set_bad_image.
3335
3336         Fixes #558124.
3337
3338 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3339
3340         * verify.c (mono_method_verify): Don't free ctx.params items if 
3341         we aborted while inflating the ctx.locals. Complete previous fix
3342
3343 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3344
3345         * verify.c (mono_method_verify): Use the uninflated type name, 
3346         when the inflated is null, to report errors. Also take care when
3347         freeing, not to free everything since, in case of an error, some
3348         stuff would be copies (i.e. not allocated by the function itself)
3349         Fix bug #558145
3350
3351 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3354         or overflow. The caller must have done this check explicitly. This guard us
3355         from accessing invalid memory.
3356
3357         * verify.c (do_push_static_field): Check for stack overflow.
3358
3359         Fixes #553333.
3360
3361 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * loader.c (find_method_in_class): Don't crash if the signature cannot
3364         be resolved.
3365
3366         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3367         of asserting for the case of invalid params.
3368
3369         Fixes #553304.
3370
3371 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3372
3373         * image.c (mono_image_load_module): Fix crash when a bad assembly
3374         has no module at all (fix bug #553412) and also replace the 
3375         g_assert with a return NULL (documented return value for failure)
3376
3377 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3380
3381 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3382
3383         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3384         file attribute to managed code and avoid doing the mask/attribute
3385         checks here. 
3386
3387 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3388
3389         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3390         the managed world.
3391
3392         * icall-def.h: New entry points.
3393         
3394 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3395
3396         * process.c: Don't put references to managed objects into a
3397         g_ptr_array.
3398
3399 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3400
3401         * class.c (can_access_internals): Allow CoreCLR to participate in
3402         allowing (or not) [InternalsVisibleTo] between assemblies.
3403         * security-core-clr.c|h: Make sure that only trusted code (a 
3404         superset of platform code) can access the internals of platform
3405         code.
3406
3407 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3408
3409         * reflection.c: use the correct base class to get the virtual method
3410         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3411
3412 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3413
3414         * security-core-clr.c (get_caller_no_reflection_related): 
3415         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3416         it's still reflection and must be filtered correctly.
3417
3418 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3419
3420         * object.c (compute_class_bitmap): Fix for large bitmaps.
3421
3422 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3423
3424         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3425
3426         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3427         koush@koushikdutta.com). Disable GC_no_dls on android.
3428
3429 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3430
3431         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3432         tlab_next points outside the TLAB because the allocator was
3433         interrupted.
3434
3435 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3436
3437         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3438
3439 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * object-internals.h: Change signature for mono_string_to_utf8_image.
3442
3443         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3444         argument.
3445
3446         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3447         exceptions due to mono_string_to_utf8.
3448
3449 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3452
3453         * object.c (mono_remote_class): Make sure all resources are released before
3454         raising an exception.
3455
3456         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3457
3458 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3459
3460         * mono-perfcounters.c (network_get_impl): Change variable initialization
3461         ordering to fix potential memory leak in case of exceptions.
3462
3463         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3464         encoded strings.
3465         
3466 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3467
3468         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3469         variable initialization ordering to fix potential memory leak in case
3470         of exceptions.
3471
3472 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3473
3474         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3475         needed.
3476
3477 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3478
3479         * appdomain.c: Fix shadow path code to better deal with exceptions.
3480
3481 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3482
3483         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3484         exception in the middle of the runtime code.
3485
3486 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3487
3488         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3489         leak memory with broken envvar value.
3490
3491 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3492
3493         * reflection.c (mono_reflection_setup_internal_class): Because
3494         nested classes are not added to the name cache, we must put them
3495         in the reflection_info_unregister_classes list.
3496
3497 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3498
3499         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3500         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3501         platform (trusted) code. Instead we return a TypeLoadException to
3502         be thrown later. This is the exception thrown by Silverlight 2 if
3503         a type, inside application (user) code is marked with [ComImport]
3504
3505 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3506
3507         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3508         mono_is_debugger_attached () too.
3509
3510         * mono-debug.c (mono_is_debugger_attached): New helper function.
3511         (mono_set_is_debugger_attached): Ditto.
3512
3513 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         * object-internals.h: Add mono_string_to_utf8_checked.
3516
3517         * object.c: Implement mono_string_to_utf8_checked.
3518
3519 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3520
3521         * class.c: Add missing check for load errors after every
3522         call to mono_class_setup_fields
3523
3524         Fixes #552282.
3525
3526 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3527
3528         metadata-verify.c (verify_tables_schema): Fix the error message.
3529
3530 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3531
3532         * metadata.c: Change event table schema to use TDOR for event type
3533         as this is what it's meant to be.
3534
3535         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3536         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3537         entry.
3538
3539         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3540         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3541         rows in MONO_TABLE_GENERICPARAM.
3542
3543         Fixes #552289.
3544
3545 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3546
3547         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3548         insertion.
3549
3550         * reflection.c (mono_reflection_setup_internal_class): Avoid
3551         registering a gc root the same MonoClass multiple times.
3552         Don't register nested types on the global scope as they should
3553         not be available there.
3554
3555 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3556
3557         * culture-info-tables.h: regenerated.
3558
3559 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3560
3561         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3562
3563 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3564
3565         * string-icalls.c|h: Remove string internal calls that are not 
3566         used anymore by the class libraries.
3567         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3568         which is not used in the class librairies.
3569         * icall-def.h: Update tables.
3570
3571 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * class.h: Move mono_class_inflate_generic_type_checked...
3574
3575         * class-internals.h: to here and make it internal. We don't want to
3576         further expose MonoGenericContext. 
3577
3578 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3579
3580         * verify.c (mono_method_verify): Improve error message.
3581
3582 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3583
3584         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3585         the token is already properly encoded. Fixs 4.0 build.
3586
3587 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3588
3589         * locales.c (construct_number_format): Check if the number index is
3590         valid before trying to use it, if not, just return.
3591         
3592 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3593
3594         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3595         since that loses the abort state. Fixes #539394.
3596
3597 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3600         explicit this argument to the call signature.
3601         (mono_marshal_get_icall_wrapper): Ditto.
3602
3603 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3604
3605         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3606         to indicate which assembly to use when resolving a custom-mod.
3607
3608         Fixes handling of volatile fields used across assemblies as reported in #551513.
3609
3610 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3611
3612         * loader.c: Improve error messages.
3613
3614 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3615
3616         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3617         of interfaces. Fixes IKVM.
3618
3619         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3620
3621 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         * verify.c (verifier_inflate_type): Return the inflated type on success.
3624
3625 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3628
3629         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3630
3631         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3632
3633         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3634         flag set.
3635
3636         * profiler.c: Add new profiler callbacks for runtime invoke.
3637
3638         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3639
3640 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3641
3642         * sgen-gc.c: Keep track of the reason for a major collection and
3643         write it to the heap-dump file.
3644
3645 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3646
3647         * threads.c: refactor the code that initializes the
3648         thread_start_args into a reusable function and use this in the two
3649         methods that start up threads.
3650
3651 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3652
3653         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3654         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3655
3656 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3657
3658         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3659         Until now, we only had the per-cpu(core) counters.
3660
3661 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3662
3663         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3664         mono_gc_get_suspend_signal(), which returns the suspend signal
3665         number used by the GC.
3666
3667 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3670
3671         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3672         signalling start_notify.
3673
3674 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3675
3676         * appdomain.c: do not test the st_mode field for shadow-copies.
3677         Fixes bug #545276.
3678
3679 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3680
3681         * threadpool.[ch]: added hooks for thread start/finish and item
3682         processing begin/end. For monotouch use only.
3683
3684 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3685
3686         * threads.c (mono_thread_get_name): New helper function.
3687
3688         * reflection.c (resolve_object): Set handle_class for strings too.
3689         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3690         a cattr blob into a set of arrays and structures without creating the custom
3691         attributes themselves.
3692         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3693
3694         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3695
3696         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3697         function.
3698
3699 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3700
3701         * verify.c: Replace calls to mono_class_inflate_generic_type with
3702         mono_class_inflate_generic_type_checked. Fixes #480005.
3703
3704 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3705
3706         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3707         object since not all paths lead to callees initing it.
3708
3709 2009-10-23  Alp Toker  <alp@nuanti.com>
3710
3711         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3712         header and should not be shipped:
3713
3714         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3715         which is specific to the mono build. Not going to work.
3716
3717 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3718
3719         * security-manager.c: Report if core-clr is active from
3720         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3721         to allow Moonlight BCL to behave appropriately (both in browser
3722         and outside, e.g. smcs)
3723
3724 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3725
3726         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3727         Fixes bug #549108.
3728
3729 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3730
3731         * class.c: fix typo.
3732
3733 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3734
3735         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3736         a MonoError parameter.
3737
3738         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3739         version that can does proper error handling.
3740
3741         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3742
3743         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3744
3745         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3746
3747 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3750         NO_UNALIGNED_ACCESS is defined.
3751
3752 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3755         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3756         Fixes #549173.
3757
3758 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3759
3760         * sgen-gc.c: Shorten sections whenever possible.
3761
3762 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3763
3764         * sgen-gc.c: Use our portable semaphore #defines.
3765
3766 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3767
3768         * sgen-gc.c: A debug option for dumping the heap layout to a file
3769         after each collection.
3770
3771 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3772
3773         * sgen-gc.c: Make managed write barriers atomic via
3774         thread-restarts.
3775
3776 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3777
3778         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3779         methods. Fixes #543021.
3780
3781 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3782
3783         * socket-io.[ch]: fix VS build.
3784
3785 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3786
3787         * icall-def.h:
3788         * socket-io.[ch]: implemented SendFile.
3789
3790 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3793         before the interfaces to avoid crashes later if class initialization fails.
3794         Fixes #548417.
3795
3796         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3797         Fixes #548276.
3798
3799 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3800
3801         * domain.c: Bump 4.0 version.
3802
3803 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3804
3805         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3806         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3807         check since 'pubkey' can't be NULL at this stage
3808         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3809         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3810         initialization of 'iter'
3811
3812 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3813
3814         * cominterop.c : Search the interface parts of vtable to find 
3815           method matches.  Fixes 547030.
3816
3817         Code is contributed under MIT/X11 license.
3818
3819 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3820
3821         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3822         multiple targets. Fixes bug #574426.
3823
3824 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3825
3826         * profiler.h: Put here the definition of
3827         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3828         (and fix the build...).
3829
3830 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3831
3832         * profiler.c, profiler.h, profiler-private.h:
3833         Added support for different ways of getting call chains in stat mode.
3834
3835 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3836
3837         * object.c, object-internals.h: New function for computing the
3838         size of an array, factored out of mono_array_new_full().  Use
3839         SGen's functions for allocating arrays and vectors.
3840
3841         * sgen-gc.c, gc-internal.h: Special functions for allocating
3842         arrays and vectors without race conditions.  A managed array
3843         allocator method.
3844
3845         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3846
3847 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3848
3849         * object.c, object.h, icall.c: Write barriers do the copying now,
3850         as well, so no need for an additional memcpy.
3851
3852         * sgen-gc.c: Lock when storing remsets.  Do the memory
3853         copying/moving in the write barriers.
3854
3855         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3856
3857         * reflection.c: Added an assert.
3858
3859 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3860
3861         * threads.c, process.c: A few missing write barriers.
3862
3863 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3864
3865         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3866         network performance counters for bytes sent per second, bytes
3867         received per second, and bytes total per second.
3868
3869         Code is contributed under MIT/X11 license.
3870
3871 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3872
3873         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3874         Fix warning.
3875
3876 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3877
3878         * threads.c, object-internals.h, object.c: Move code for
3879         transferring an object to a different domain (via
3880         serialization/remoting) to object.c.
3881
3882         * object.c (call_unhandled_exception_delegate): If the exception
3883         is in a different domain than the delegate, transfer the exception
3884         to that domain.
3885
3886 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3889         Fixes #322934.
3890
3891 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3894
3895 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3896
3897         * object.c (mono_method_return_message_restore): Handle the case
3898         where the argument is an instance of a generic type.  Fixes
3899         #544446.
3900
3901 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3902
3903         * object.c (set_value): Write barrier fix - we must pass the
3904         count, not the size.
3905
3906 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * domain.c (mono_init_internal): Print a useful error message when encountering
3909         an old mscorlib, instead of crashing. Fixes #544307.
3910
3911 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3912
3913         * appdomain.c (copy_app_domain_setup): Fix a warning.
3914
3915         * debug-helpers.c (dis_one): Ditto.
3916
3917 2009-10-04  Mark Probst  <mark.probst@gmail.com>
3918
3919         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
3920         into the new domain, instead of referencing the original one.
3921
3922         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
3923         non-static.
3924
3925         * appdomain.c: Corlib version bump.
3926
3927 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3928
3929         * threadpool.c: one more...
3930
3931 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3932
3933         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
3934         threads to die because we're shutting down. delgate5.exe works again.
3935
3936 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
3937
3938         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
3939           ccw_interface_hash table when a ccw is finalized.
3940
3941         Code is contributed under MIT/X11 license.
3942
3943 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3944
3945         * assembly.c, domain.c, image.c, metadata-internals.h: Split
3946         domain and image unloading into two steps.  We must do this
3947         because clearing the domain in SGen requires the class metadata to
3948         be intact, but we need to free the mono_g_hash_tables in case a
3949         collection occurs during domain unloading and the roots would trip
3950         up the GC.
3951
3952 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3953
3954         * object-internals.h: Remove serialized culture fields from
3955         MonoInternalThread.
3956
3957         * icall-def.h, thread-types.h, threads.c: Remove serialized
3958         culture icalls.
3959
3960         * appdomain.c: Corlib version bump.
3961
3962 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
3965         Fixes #543133.
3966
3967 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3968
3969         * sgen-gc.c: Try to shorten the new section after a major
3970         allocation to avoid ever-growing sections.
3971
3972 2009-10-13  Martin Baulig  <martin@ximian.com>
3973
3974         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
3975         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
3976         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
3977         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3978
3979         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
3980
3981 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
3982
3983         * threadpool.c: fixed the order in which 'completed' and the wait
3984         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
3985         No need to use the wait_handle field of ASyncCall. Make sure the
3986         threadpool is active when adding a job or queueing an idle thread.
3987
3988 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
3991
3992         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
3993         when using --compile-all.
3994
3995 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3996
3997         * metadata.c (free_generic_class): Unregister the field_objects
3998         roots if we're using SGen.
3999
4000 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4001
4002         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4003         for GenericParamTableEntry.gparam.
4004
4005 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4006
4007         * marshal.c: don't create the handle when calling. It is created later
4008         if needed.
4009
4010 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4011
4012         * sgen-gc.c: Warning fixes.
4013
4014 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4015
4016         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4017         whole heap for cross-domain references before each collection.
4018
4019         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4020         object.
4021
4022         * threadpool-internals.h, threadpool.c: New function
4023         mono_thread_pool_is_queue_array() for checking whether a given
4024         array is used as a (cross-domain) queue by the thread pool code.
4025
4026 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4027
4028         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4029         searches the whole heap for objects containing a specific
4030         reference.  Only for debugging.
4031
4032 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4033
4034         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4035
4036         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4037         byte arrays between domains.
4038
4039 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4040
4041         * threadpool.c:
4042         * class-internals.h:
4043         * mono-perfcounters-def.h:
4044         * mono-perfcounters.c:
4045         -There is a list of idle threads
4046         -Each of those idle threads wait on their own WaitHandle instead
4047         of all of them using the same semaphore. When a new work item is
4048         added, the job is assigned directly to an idle thread or a newly
4049         created one if possible and then the handle for that thread is
4050         signaled. Compare that to the current approach where all the
4051         threads in the pool compete to dequeue a job from the same
4052         queue.
4053         -New struct ThreadPool that brings together the bunch of static
4054         variable for each threadpool (IO and regular).
4055         -New performance counters: # of items added and its rate per
4056         threadpool. The rate will be used later, perhaps together with
4057         other perf. counters, to decide when idle threads should exit.
4058
4059 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4060
4061         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4062         Fix typo on Windows build.      
4063         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4064         
4065         Code is contributed under MIT/X11 license.
4066
4067 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4068
4069         * object-internals.h: The Thread class is split up into Thread and
4070         InternalThread now.  We have exactly one InternalThread per
4071         thread, and at most one Thread per appdomain per thread.  Most
4072         data is stored in InternalThread.  All InternalThread objects live
4073         in the root domain.
4074
4075         * class-internals.h: Add internal_thread_class to MonoDefaults.
4076
4077         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4078         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4079         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4080         resulting from the split of the Thread class.
4081
4082         * gc-internal.h: Prototype for new function for checking whether a
4083         thread is the finalizer thread.
4084
4085         * appdomain.c: Corlib version bump.
4086
4087 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4088
4089         * appdomain.c|h: Add a mono_domain_try_unload method which is
4090         equivalent to mono_domain_unload, except that it returns an exception
4091         instead of throwing it. Make mono_domain_unload use the
4092         mono_domain_try_unload method to avoid code-duplication.
4093
4094 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4097         a problem.
4098
4099 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4102         aborting when a conversion is not implemented.
4103
4104 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4105
4106         * verify.c: when comparing culture strings, use g_ascii_strcmp
4107
4108         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4109         when comparing public key tokens to use memcmp on 16 bytes.   I do
4110         not believe this ever worked as advertised in the past.
4111
4112         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4113         which would have always failed earlier.
4114
4115 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4116
4117         * gc.c: Raise a NullArgumentException if the object passed is
4118         null.
4119
4120 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * image.c (mono_image_close): Atomically decrement the reference count and
4123         remove the image from the hash tables, to prevent another thread from seeing a
4124         dying MonoImage. Fixes #541194.
4125
4126 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4127
4128         * threadpool.c: actually use the minimum number of 'completion ports'
4129         (for us is just a potential worker thread).
4130
4131 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4132
4133         * threadpool.c: remove ares_htable. It does not make sense any more
4134         since the same objects are now stored in GC-tracked arrays while they are
4135         in the queue.
4136
4137 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4138
4139         * threadpool.c: increase the minimum length of the queues to 128.
4140         Remove warning.
4141
4142 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4145         return the modified signature used by string ctors.
4146
4147 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4150         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4151         method, to be used by full-aot.
4152
4153 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4154
4155         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4156         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4157         be known to be good.
4158
4159         * class.c (mono_class_init): Fail array types if their element type fails initialization
4160         as well.
4161
4162         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4163         initialization, additionally we request the element_type vtable to be initialized as well.
4164
4165         This is fine and should not increase the working set in any meaningful way since it's reasonable
4166         to assume       that most code will create an array and eventually populate it, which will require the
4167         type's vtable to be initialized.
4168
4169         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4170
4171 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4172
4173         * normalization-tables.h : regenerated.
4174
4175 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4178         a leb128 encoding can take up to 5 bytes.
4179
4180 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4181
4182         * class.c (verify_class_overrides): Remove useless argument.
4183
4184         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4185         before interface enumeration as this is no longer required.
4186
4187 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4188
4189         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4190         used under mono_class_init context. This functions avoid any code path that
4191         calls mono_class_init, which leads it to be slow as some things like the interface
4192         bitmap are not available.
4193
4194         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4195         of it's own broken version. Fixes the verifier part of #538588.
4196
4197         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4198         API.
4199
4200 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4201
4202         * class.c (mono_class_init): Always set an exception in a class if
4203         vtable setup fails.  Fixes #538577.
4204
4205         * generic-sharing.c: Raise an exception if mono_class_vtable()
4206         returns NULL.
4207
4208 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4211         methods of vtypes, as they could be incorrectly shared with static methods
4212         taking an IntPtr argument.
4213
4214 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4215
4216         * domain.c:
4217         * object.c:
4218         * class-internals.h: renamed waithandle_class to
4219         manualresetevent_class.
4220         * marshal.c: propagate the exception if a remoting BeginInvoke call
4221         fails.
4222
4223 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4224
4225         * object.c: Properly handle vtable failures.
4226
4227 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4228
4229         * socket-io.c: Assert on vtable failure.
4230
4231         * mono-mlist.c: Assert on vtable failure.
4232
4233 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4234
4235         * marshal.c: Assert on vtable failure.
4236
4237 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4238
4239         * icall.c: Properly handle vtable failures.
4240
4241 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4242
4243         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4244
4245 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4246
4247         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4248
4249         * console-unix.c (do_console_cancel_event): Same.
4250
4251 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4252
4253         * class-internals.h: Add mono_class_vtable_full function that allows control
4254         if an exception should be raised or not.
4255
4256         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4257         to do what its documentation say, that is to return NULL and set exception_type on
4258         failure.
4259
4260         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4261         and change the code to honor it.
4262
4263 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * verify.c: Fix typo in error message.
4266
4267 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4268
4269         * security-core-clr.c: Fix default_platform_check so it can run
4270         the runtime coreclr tests (without an infinite recursion when
4271         throwing an exception).
4272
4273 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4274
4275         object.c (mono_delegate_ctor_with_method): Guard against null method.
4276
4277 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4278
4279         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4280         that should be replaced with error handling later.
4281
4282 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * marshal.c (mono_delegate_end_invoke): Fix warning.
4285
4286 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4287
4288         * loader.c (mono_field_from_token): Properly handle invalid
4289         dynamic tokens.
4290
4291 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4292
4293         * pedump.c (verify_image_file): Skip types that can't be
4294         decoded.
4295
4296 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4297
4298         * verify.c: Look for recursive valuetypes only against the
4299         type been initialized as this is a lot simpler and works.
4300
4301 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4302
4303         * verify.c: Ensure that fields are properly loaded before
4304         checking them.
4305
4306 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4307
4308         * object.c (mono_object_get_virtual_method) : Call 
4309           mono_cominterop_get_invoke if the object is a COM object.
4310
4311         Code is contributed under MIT/X11 license.
4312
4313 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4314
4315         * verify.c: Check for recursive valuetype definitions.
4316
4317 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4318
4319         Use inheritance-aware interface offsets. Inherited types use the same offsets
4320         of their parents. This reduce offset duplication in case more than one type in
4321         the inheritance tree explicitly implements the same interface.
4322
4323         This also removes a source of vtable bubbles found in #532409. An abstract type
4324         isn't required to provide abstract methods to all interfaces it implements, which
4325         resulted in a bubble with the previous scheme as the child would get a non-full
4326         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4327         should be fixed.
4328
4329         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4330         it's expected to not cause any significant increase beyond that.
4331
4332         * class.c (setup_interface_offsets): Compute super class iface offsets
4333         first to force sharing.
4334
4335         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4336         dumping only the relevant ones.
4337
4338         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4339         methods a new slot regardless if they belong to an interface or not. This allows
4340         an inherited type to override the iface method separately from the class one.
4341
4342 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4343
4344         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4345         applications that take less than 2s to execute.
4346         Bug #524984 fixed.
4347
4348 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4351
4352         * object.c (mono_get_runtime_callbacks): New helper function to return
4353         the runtime callbacks.
4354
4355         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4356         mono_get_runtime_build_info () as the display name.
4357         
4358 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4361         argument, since NEWARR expects a native int. Fixes #481559.
4362
4363 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4364
4365         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4366         against broken SRE methods.
4367
4368 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4369
4370         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4371         a NULL variable. Abort early on failure.
4372
4373 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4374
4375         * class.c (can_access_type): Fail visibility test for non nested
4376         types with nested visibility.
4377
4378 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4379
4380         * assembly.c (parse_public_key): Avoid allocating (and not 
4381         freeing) the public key array when it's not requested by the 
4382         caller.
4383         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4384         ves_icall_System_Threading_Thread_Thread_internal): Free 
4385         allocated memory on error.
4386
4387 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4390
4391 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4392
4393         * class.c (mono_class_setup_fields): Remove duplicated local variable
4394         named gklass.
4395         Rename gklass to gtd to reflect the fact that it points to the generic
4396         type definition.
4397         Remove the duplicated call to mono_class_setup_fields on gtd and move
4398         the error check to the beginning.
4399
4400 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4401
4402         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4403         Remove cruft of the previous patch.
4404
4405 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         * metadata-verify.c (verify_method_table): Check for abstract + final.
4408         Fixes #534175.
4409
4410 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4411
4412         * verify.c (verify_class_fields): Check for duplicate fields.
4413
4414 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4415
4416         * metadata-verify.c: Verify the typeref table for duplicates.
4417
4418 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4419
4420         This reverts r140936 and properly handles interfaces with static methods. The
4421         right fix is to ensure vtables without bubles which is an easier to verify
4422         constraint. We should avoid such special cases as of the reverted patch as those
4423         only make the runtime more brittle.
4424
4425         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4426         static methods on interfaces.
4427
4428         * class.c (setup_interface_offsets): Use the number of virtual methods when
4429         calculating interface offsets instead of the number of methods. This way we
4430         avoid bubles on the layout.
4431
4432 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         * metadata-verify.c (verify_metadata_header): Some very smart
4435         obfuscators like to add extra stream headers. Ignore them.
4436
4437 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4440         methods correctly.
4441
4442 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4443
4444         * metadata-verify.c: Verify for duplicated types.
4445
4446 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * metadata-verify.c (verify_typedef_table): Verify for nested types
4449         without an entry on the nested class table.
4450
4451 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4454         <tom_hindle@sil.org>. Add locking around hash table accesses.
4455
4456 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4457
4458         * verify.c (mono_verifier_verify_class): Verify all interface if
4459         really are interfaces. Fixes #534184.
4460
4461 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * pedump.c: Initialize all types during metadata validation so we report
4464         errors only detected as part of class initialization.
4465
4466 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4467
4468         * metadata-verify.c (verify_method_table): PInvoke requires method to
4469         be static. Fixes #534189
4470
4471 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4474         being NULL.
4475
4476 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4477
4478         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4479         for holes or bad methods. Fixes #525314.
4480
4481 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4482
4483         * class.c (setup_interface_offsets): Don't allocate slot
4484         for the same interface multiple times. This creates bubbles
4485         that waster space and make vtable verification harder.
4486
4487         The same interface get a slot multiple times since we need
4488         to get the closure of all implemented interfaces, which means
4489         the same interface is reported multiple times.
4490
4491 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4492
4493         * verify.c (mono_verifier_verify_class): Don't check the fields
4494         of generic instances since the context on which they got expanded
4495         might lead to false positives.
4496
4497         Such thing happens when a generic type is inflated in the context
4498         of a generic method and the inflated type of a field turns into a
4499         generic method argument, which causes the checking code to think
4500         it's an invalid class when it's not.
4501
4502 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * verify.c (mono_type_is_valid_in_context): Verify if type
4505         is NULL and remove duplicate test.
4506
4507 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4508
4509         * verify.c (mono_verifier_verify_class): Check fields for
4510         invalid generic arguments.
4511
4512 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4513
4514         * class.c (verify_class_overrides): Verify if for static
4515         and non virtual methods.
4516
4517 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4518
4519         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4520         Check for errors after retrieving the vtable.
4521
4522 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4523
4524         * class.c (mono_class_setup_vtable_general): Verify
4525         if method overrides are valid before processing them.
4526
4527 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4528
4529         * marshal.c (mono_array_to_lparray): Fix minimal build with
4530         cominterop disabled.
4531
4532         * marshal.c (mono_free_lparray): Same.
4533
4534 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4535
4536         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4537         the hash function for the ares_htable.
4538
4539 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4540
4541         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4542         bit for assembly flags. MS is ok with it but there is no spec anywhere
4543         on its mean
4544
4545 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4546
4547         * class.c (mono_class_create_from_typedef): Emit profiler events
4548         in all cases.
4549
4550 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4553         Release memory on failure.
4554
4555 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4558         to the internal API.
4559
4560         * metadata.c (get_constraints): Use a single-linked table as we don't
4561         traverse it backward. Fail and return FALSE if only of the contraint types
4562         is not found.
4563
4564         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4565         to mono_metadata_load_generic_param_constraints except for having a return value.
4566         This has to be done since the later is part of the public API.
4567
4568         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4569         and fail the type.
4570
4571         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4572         and fail the method.
4573
4574 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4575
4576         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4577         with MS broken behavior of emmitting EH section sizes without the
4578         header size added.
4579
4580 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4583         memory until we're sure that we'll need it. This avoids leaking for
4584         broken types or duplicated instantiation.
4585
4586 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4589         mistake.
4590
4591 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4592
4593         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4594         and expected size calculation.
4595
4596 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * class.c (mono_class_get_field_idx): Add fixme for broken
4599         behavior for types with multiple fields with the same name.
4600         I would rather fix it, but have no idea on how to generate
4601         such artifact for testing.
4602
4603 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4604
4605         * verify.c (verifier_load_field): We should allow references to
4606         fields to be made using the generic type definition. It's up to
4607         the loader system to fail invalid ops.
4608
4609         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4610         are invalid.
4611
4612 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4613
4614         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4615
4616         * metadata-internals.h: Fix declaration of 
4617         mono_metadata_interfaces_from_typedef_full.
4618
4619         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4620         heap_alloc_result parameter that controls if the result should be
4621         g_malloc'd.
4622
4623         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4624         array be g_malloc'd and properly document this public API function.
4625
4626 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4629         remove METHOD_HEADER_TINY_FORMAT1.
4630
4631         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4632
4633         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4634
4635         Both spec and MS uses only 2 bits to enumerate the kind of header.
4636         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4637         is superfluous, only used for tiny headers with odd code lengths.
4638
4639         This change also make sure that mono doesn't wronly interpret bit 2
4640         of fat header flags, which is currently reserved.
4641
4642 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         * metadata.c (do_mono_metadata_parse_type): Do error
4645         checking for element types. Don't abort if presented
4646         with a broken type kind.
4647
4648 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4649
4650         * metadata.c (mono_metadata_parse_method_signature_full):
4651         Gracefully fail bad vararg signatures.
4652
4653 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4654
4655         * profiler.c:
4656         * class.c: Fix warnings for uninitialized variables.
4657
4658 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4659
4660         * icall.c: Fix _NSGetEnviron method declaration warning.
4661
4662 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4663
4664         * icall.c:
4665         * reflection.c: Make bitwise checks explicit.
4666
4667 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4668
4669         * debug-helpers.c:
4670         * marshal.c: Fix printf warnings.
4671
4672 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4673
4674         * reflection.c (encode_cattr_value): Fix a warning.
4675
4676 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4679         of array bounds.
4680
4681 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4682
4683         * loader.c (mono_method_signature): Don't assert on broken
4684         signature. Print a more useful error message.
4685
4686 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * loader.c (mono_method_get_marshal_info): Assert if
4689         signature is invalid. Bounds check stores to the
4690         mspecs array;
4691
4692 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4693
4694         * loader.c (field_from_memberref): Fix warning.
4695
4696 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * loader.c (mono_method_get_param_names): Check if signature
4699         is null. Don't store beyond the size of the name array.
4700
4701 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * loader.c (mono_get_method_constrained): Check if signature
4704         is null.
4705
4706 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4707
4708         * loader.c (mono_loader_set_error_bad_image): Improve
4709         error messages.
4710
4711 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4712
4713         * loader.c (mono_get_method_full): Convert an assertion
4714         into a loader error.
4715
4716 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4717
4718         * class-internals.h, class.c: Better naming and documentation.
4719
4720 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4723         obj is NULL.
4724
4725 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4728         parsing fails.
4729
4730 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4731
4732         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4733         errors with no class set.
4734
4735         * loader.c (field_from_memberref): If the field signature is of the wrong
4736         type fail with a MissingFieldException instead of a BadImageException as
4737         this is the behavior observed on MS. 
4738
4739 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4740
4741         * loader.c (field_from_memberref): Don't crash if either the field
4742         signature or the typespec class are invalid.
4743
4744 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * verify.c (verifier_load_field): Don't allow field related
4747         ops to reference fields on generic type definition.
4748
4749 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4750
4751         * metadata-verify.c: Add new warning level for errors specified
4752         by ECMA 335 but that MS ignores.
4753
4754         * metadata-verify.c (verify_method_table): Make compiler controled
4755         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4756         this check is safe because the end result will only be some visibility
4757         exceptions been thrown.
4758
4759 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         * verify.c (get_boxable_mono_type): Don't allow the
4762         use of the generic type definition on boxed type positions.
4763
4764         Fixes #531237.
4765
4766 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4767
4768         * threadpool.c: Make sure no cross-domain references remain in
4769         ares_htable or the arrays that are thrown away when resizing.
4770
4771 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4772
4773         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4774         list of classes for which we have to unregister reflection_info
4775         with the GC and which are not in the namespace cache.
4776
4777         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4778         the class to the list.
4779
4780 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4781
4782         * domain.c (mono_domain_free): Unregister the GC roots in
4783         MonoDomain.
4784
4785 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4786
4787         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4788
4789 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4790
4791         * class.c: Add mono_class_get_field_from_name_full which does
4792         the same as mono_class_get_field_from_name but does check field
4793         signature as well.
4794
4795         * class-internals.h: Export mono_class_get_field_from_name_full as
4796         part of the internal API.
4797
4798         * loader.c (field_from_memberref): Search fields by name and signature
4799         as it's valid to have two fields with same name but different types.
4800
4801         Fixes #528055.
4802
4803 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4806
4807         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4808
4809         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4810         System.Type.
4811
4812 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4813
4814         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4815
4816         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4817
4818 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4819
4820         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4821         to sgen-scan-object.h, which can be included and parameterized via
4822         macros.
4823
4824         * Makefile.am: sgen-scan-object.h added.
4825
4826 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4827
4828         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4829
4830 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4831
4832         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4833         before clearing a domain in the GC.
4834
4835 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4836
4837         * exception.c (mono_exception_from_name_domain): Actually create
4838         the exception in the specified domain.
4839
4840         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4841         OutOfMemoryException a bit later so that the domain is inialized
4842         "enough" that it works.
4843
4844 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4845
4846         * threads.c (thread_cleanup): Clean up the cached_culture_info
4847         array to prevent cross-domain references.
4848
4849 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4850
4851         * metadata.c: more documentation for MonoType accessors.
4852
4853 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4854
4855         Fix incorrect size definitions where the tail array isn't a list
4856         of pointers
4857         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4858         define size.
4859         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4860         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4861         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4862
4863 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4864
4865         * reflection.h:
4866         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4867
4868 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4869
4870         * metadata.c:
4871         * loader.c:
4872         * metadata-internals.h:
4873         * method-builder.c:
4874         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4875
4876 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4877
4878         * cominterop.c:
4879         * metadata.c:
4880         * metadata.h:
4881         * loader.c:
4882         * marshal.c:
4883         * reflection.c: #define for sizeof in MonoType and
4884         MonoMethodSignature.
4885
4886 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4887
4888         * domain.c:
4889         * domain-internals.h: add and use #define's instead of sizeof()
4890         for MonoJitInfo and MonoJitInfoTable.
4891
4892 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4893
4894         * object.c:
4895         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4896
4897 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4898
4899         * metadata.c:
4900         * metadata.h:
4901         * object.c:
4902         * class-internals.h:
4903         * generic-sharing.c:
4904         * marshal.c: use a #define instead of sizeof() for a few
4905         structures that use a zero-length array.
4906
4907 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4908
4909         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4910         to handle inflated generic methods.
4911
4912         * appdomain.c: Bump corlib version.
4913
4914         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
4915         instances.
4916
4917         * reflection.c (fixup_method): Same
4918
4919         * reflection.c (resolve_object): Same.
4920
4921         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
4922         g_error and a decent message.
4923
4924 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
4925
4926         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
4927         from the object because it could not yet be available globally
4928         (it happens if the profiler tries to create a gchandle on the
4929         MonoThread object of a thread that is still registering itself
4930         with the runtime).
4931
4932 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * reflection.c (mono_generic_class_get_object): Initialized the
4935         managed type arguments array.
4936
4937         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
4938
4939         * appdomain.c: Bump corlib version.
4940
4941 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
4944         #527902.
4945
4946 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4949         Avoid a crash if synch_cs is not set.
4950         
4951         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4952         Handle the case when the handle is 0.
4953
4954         * appdomain.c: Bump corlib version.
4955
4956 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * reflection.c (mono_type_get_object): Fix a warning.
4959
4960 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4961
4962         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
4963         descriptor here.  We assume it's already been computed.
4964
4965         * generic-sharing.c (instantiate_other_info): Compute the GC
4966         descriptor for info type MONO_RGCTX_INFO_KLASS.
4967
4968 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4969
4970         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
4971         type, so don't use MONO_OBJECT_SETREF to set a field.
4972
4973 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4974
4975         * gc.c: We were missing one case where invoking a finalizer would
4976         not reset the domain.  Also, in the finalizer thread loop, assert
4977         that we're in the root domain.
4978
4979 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
4982         if the type is not an array.
4983
4984 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4985
4986         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
4987         method bound to the declaring type of the method. Raise an exception
4988         if the type is not a generic param.
4989
4990 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         * class.c (print_unimplemented_interface_method_info): Print the
4993         full type name.
4994
4995         * class.c (mono_class_setup_vtable_general): When dealing with a
4996         generic instance first check if the generic type definition is
4997         not broken.
4998
4999 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5000
5001         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5002
5003         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5004
5005         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5006
5007         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5008
5009         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5010
5011         Code is contributed under MIT/X11 license
5012
5013 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5014
5015         * verify.c: Fix naming of stelem and ldelem.
5016
5017 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5018
5019         * generic-sharing.c: Replace the templates lock with the loader
5020         lock because of very hard to resolve deadlock issues.
5021
5022 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5025         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5026         directly. Fixes #525338.
5027
5028         * class.c (mono_class_get_vtable_size): New helper function.
5029
5030         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5031         the field belongs to the type. Fixes #525733.
5032
5033 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5034
5035         * sgen-gc.c: When we stop a thread and its stack top is not within
5036         its allocated stack (because it's in an altstack signal handler),
5037         restart it and stop it again, until it is.
5038
5039 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5040
5041         * sgen-gc.c: Take a thread's stack top and registers from the
5042         sigcontext in the suspend signal handler.
5043
5044         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5045         stuff to sgen-archdep.h.
5046
5047         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5048         caller, because have code in sgen-archdep.h to acquire that data.
5049
5050 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5051
5052         * profiler.c, profiler.h, profiler-private.h:
5053         Added support for keeping track of code chunks and buffers.
5054
5055 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * metadata-verify.c: Fix endianness problems on decoding functions.
5058         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5059
5060 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5061
5062         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5063         schema for vectors and one dimension SZARRAY.
5064
5065 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5066
5067         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5068         schema for vectors and one dimension SZARRAY.
5069
5070 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5071
5072         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5073         Interlocked.(Compare)Exchange with object arguments, which invoke
5074         write barriers.
5075
5076 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5077
5078         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5079         passed invalid arguments.   Fixes another crasher in the
5080         Silverlight test suite.
5081
5082         * class.c (mono_class_array_element_size): Return 0 for the size
5083         of the class;  This fixes the crasher exposed by :
5084
5085         typeof (void).MakeArrayType ();
5086
5087         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5088         if there is no method to dereference.    Put all the code that
5089         depends on this inside the if (method) block.
5090
5091         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5092         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5093
5094         With this change, we pass the test.
5095         
5096         * reflection.c (mono_reflection_sighelper_get_signature_local):
5097         Only dereference the assembly if it has been set.    Fixes a
5098         crasher exposed by #525328
5099
5100 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5101
5102         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5103         don't perform the store in mono_gc_wbarrier_generic_nostore().
5104         Remove the second argument (value), which is not needed.
5105
5106 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5109         the build.
5110
5111         * boehm-gc.c: Ditto.
5112         
5113 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5114
5115         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5116         not perform the store itself.  Introduce
5117         mono_gc_wbarrier_generic_nostore(), which is the same as
5118         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5119         store.
5120
5121 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5122
5123         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5124         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5125         we still need the memcpy().
5126
5127 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5128
5129         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5130         so that big arrays are handled correctly.  Always use
5131         safe_object_get_size() to calculate array object sizes, which
5132         takes bounds into account.
5133
5134 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5135
5136         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5137         GC descriptor is computed before we use it.
5138
5139 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5140
5141         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5142         write barrier if necessary.
5143
5144 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5145
5146         * icall-def.h, icall.c, thread-types.h: New separate icall for
5147         VolatileWrite(object&,object) that uses a write barrier.
5148
5149         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5150         barriers in icalls which write to "ref" or "out" arguments.
5151
5152 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5155         handler in a separate icall, to reduce the size of the wrappers.
5156
5157 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5158
5159         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5160
5161 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * metadata-verify.c (parse_field): Allow byref field.
5164
5165         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5166
5167         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5168
5169 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5170
5171         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5172         Fixes #522784.
5173
5174 2009-07-20  Robert Jordan  <robertj@gmx.net>
5175
5176         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5177         Fix invalid IL in valuetype handling (STOBJ must push the
5178         corresponding class). Fixes bug #523149.
5179
5180         Code is contributed under MIT/X11 license.
5181
5182 2009-07-20  Geoff Norton  <gnorton@novell.com>
5183
5184         * gc.c: Use proper semaphores where available on posix and darwin.
5185
5186 2009-07-19  Geoff Norton  <gnorton@novell.com>
5187
5188         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5189
5190 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5191
5192         * refletion.c (is_sre_usertype): Change name to is_usertype and
5193         invert it's result so it returns true if the type is an user type
5194         and not the opposite.
5195
5196         * reflection.c (is_*_type): Change all of those to use new macro
5197         check_corlib_type_cached that cached the type lookup so we don't
5198         need to do string comparisons all the type. Changed the signature
5199         to take a MonoClass instead.
5200
5201         * reflection.c: Change mono_image_create_token and resolve_object
5202         to use is_sre_* functions.
5203
5204 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5205
5206         * sgen-gc.c: Check for writes to the stack in the managed
5207         wbarrier as well.
5208
5209 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5210
5211         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5212         but put them on a list which is processed with the other thread's
5213         remsets.
5214
5215 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5216
5217         * sgen-gc.c: Fix and enable the internal allocator instead of
5218         using malloc/free (which causes deadlocks).
5219
5220 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5221
5222         * refletion.c: Fix builds with SRE disabled by adding a minimal
5223         implementation of mono_reflection_type_get_handle.
5224
5225 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5226
5227         * refletion.c: Make mono_reflection_type_get_handle non static.
5228
5229         * object-internals.h: Export mono_reflection_type_get_handle.
5230
5231         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5232         unmanaged handle using mono_reflection_type_get_handle.
5233
5234 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5235
5236         * refletion.c: Replace all reads of MonoReflectionType::type with
5237         calls to mono_reflection_type_get_handle. Only the functions that
5238         deal with constructing TypeBuilder::type have not been changed
5239         because they have to deal with NULL values.
5240
5241         This is a first step into supporting reflection types that don't
5242         map directly into their unmanaged counterpart.
5243
5244 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5245
5246         * metadata-verify.c (parse_locals_signature): Don't complain
5247         on signature with zero locals since MS generates it and doesn't
5248         bother with.
5249
5250 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5251
5252         * reflection.c (mono_image_get_array_token): Resolve return
5253         type using mono_reflection_type_get_handle.
5254
5255         * reflection.c (mono_image_get_array_token): Resolve array method
5256         parent type using mono_reflection_type_get_handle.
5257
5258 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * reflection.c (mono_image_basic_init): Applied patch from
5261         <Dax@daxxfiles.net>. Set the public key token from the assembly
5262         builder. Fixes #518909.
5263
5264         * appdomain.c: Bump corlib version.
5265
5266 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * class.c (mono_class_needs_cctor_run): Make this return false if
5269         the class has no cctor.
5270
5271 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5272
5273         * sgen-gc.c: When the minor GC needs to allocate a new section,
5274         invoke the major GC afterwards.
5275
5276 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5277
5278         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5279           Applying the window_style field to the SHELLEXECUTEINFO struct.
5280
5281         Code is contributed under MIT/X11 license.
5282
5283 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5284
5285         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5286         locking earlier.  Fix it in the managed allocator by making sure
5287         that no thread is stopped there before the GC runs.  If we do stop
5288         a thread there, we restart it and let it run a but, until it stops
5289         somewhere else.
5290
5291         * gc-internal.h, gc.c: Function for getting the IP from a signal
5292         context via a function registered by mini.
5293
5294 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5295
5296         * object-internals.h (MonoIntPtr): New structure describing a boxed
5297         IntPtr.
5298
5299         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5300         returns. Fixes #519953.
5301
5302         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5303
5304 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5305
5306         * class-internals.h, generic-sharing.c: New RGCTX info type for
5307         getting a remoting invoke with check wrapper.
5308
5309 2009-07-07  Geoff Norton  <gnorton@novell.com>
5310
5311         * icall-def.h: Fix the enable-minimal build.
5312
5313 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * object-internals.h: Add MonoReflectionDerivedType.
5316
5317         * reflection.c: Implement support for PointerType.
5318         Fixed tons of warnings.
5319
5320 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5321
5322         * object-internals.h: Add MonoReflectionByRefType.
5323
5324         * reflection.c: Implement support for ByRefType.
5325
5326 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5327
5328         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5329
5330         * object-internals.h: Add MonoReflectionArrayType and
5331         mono_reflection_create_unmanaged_type.
5332
5333         * reflection.c: Implement support for ArrayType.
5334
5335 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * metadata-verify.c (is_valid_method_header): Parse EH block
5338         flags correctly.
5339
5340 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5341
5342         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5343         processing the disappearing links, and process disappearing links
5344         in a loop until no new objects are copied.
5345
5346 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5347
5348         * object.c (handle_enum): Invoke the write barrier when copying
5349         value type instances.
5350
5351         * sgen-gc.c: Register remsets for unmanaged write barriers only
5352         when the address written to is actually on the heap.  This makes
5353         set_value() in object.c work without requiring that the result be
5354         on the heap.
5355
5356 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5357
5358         The runtime wrappers are all bound to a given type that must
5359         exist in the same image. For regular images we use the <Module>
5360         type, which is required to exist for all images.
5361
5362         The <Module> type can't be used for dynamic images because it
5363         might not exist at the time the wrapper is required, so we create
5364         a synthetic type to use instead.
5365
5366         The current code works because of the 2 stage setup of MonoClass,
5367         but once this is gone it will no longer work.
5368
5369         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5370
5371         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5372
5373         * object-internals.h: Export mono_image_set_wrappers_type icall
5374         as part of the internal API.
5375
5376         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5377         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5378
5379         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5380         image wrappers_type to the provided value.
5381
5382 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5383
5384         * appdomain.c (deregister_reflection_info_roots): No need
5385         to use the image lock here.
5386
5387 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5388
5389         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5390
5391 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5392
5393         * threads.c: Store the thread start argument in a hash table instead of
5394         registering it as a root, as libgc doesn't support unregistering roots
5395         under windows, leading to 'too many root sets' errors when many threads
5396         are created.
5397
5398         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5399         shutdown, they can still be referenced by the other dying objects.
5400         Fixes #514506.
5401
5402 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5403
5404         * socket-io.c: DontLinger does not allow LingerOptions.
5405
5406 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5407
5408         * metadata-verify.c: The spec doesn't mention that it's possible to add
5409         custom attribute to a generic parameter. Fixed.
5410
5411 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5412
5413         * class.c (inflate_generic_type): Don't crash while trying to output a message
5414         on why we're aborting.
5415
5416 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5417
5418         * socket-io.c: DontLinger can take an int or a boolean too.
5419
5420 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5421
5422         * gc.c: check for a null argument to SuppressFinalize () and
5423         ReRegisterForFinalize ().
5424
5425 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5426
5427         * loader.c (method_from_methodspec): Call into the verifier to check
5428         the signature.
5429
5430         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5431
5432         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5433         part of the internal API.
5434
5435 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5436
5437         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5438         the signature.
5439
5440         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5441
5442         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5443         part of the internal API.
5444
5445 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5446
5447         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5448         the signature.
5449
5450         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5451         blob verification.
5452
5453         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5454         part of the internal API.
5455
5456 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5457
5458         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5459         when doing basic verification. 
5460
5461         This check must be done since the runtime peeks into signatures in much
5462         more places than it does decoding so it makes sense to ensure that all
5463         pointers to blob objects are well formed.
5464
5465 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5466
5467         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5468         Use proper overflow dectection. Fix usage of it.
5469
5470 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * loader.c (field_from_memberref): Call into the verifier to check
5473         the signature.
5474
5475         * loader.c (mono_method_get_signature_full): Same.
5476
5477         * loader.c (method_from_memberref): Same.
5478
5479         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5480
5481         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5482         part of the internal API.
5483
5484 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5485
5486         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5487         or unloaded, still return an AsyncResult, but don't add it to the
5488         threadpool.
5489
5490 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5491
5492         * threads.c: fix missing colon when DEBUG is defined.
5493
5494 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5495
5496         * threadpool.c: Don't add new calls to a threadpool if the domain
5497         of the call is unloading or unloaded.  When dequeuing a job, null
5498         the reference in the queue.
5499
5500 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5501
5502         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5503         generation if an object was moved.
5504
5505 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5506
5507         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5508           parameters of type SAFEARRAY[VARIANT].
5509
5510         * reflection.c (encode_marshal_blob): Properly generate element type
5511           (SafeArraySubType marshal attribute option).
5512
5513         Code is contributed under MIT/X11 license.
5514
5515 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5516
5517         * reflection.c: in mono_method_clear_object () really ensure all the
5518         objects are removed.
5519
5520 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5521
5522         * loader.c (mono_method_signature): Call into the verifier to check
5523         the method signature.
5524
5525         * metadata-verify.c (verify_method_table): Move signature verification
5526         to verify_method_table_full.
5527
5528         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5529
5530         * verify-internals.h: Export mono_verifier_verify_method_signature as
5531         part of the internal API.
5532
5533 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5534
5535         * loader.c (mono_method_get_header): Call into the verifier to
5536         check the method header.
5537
5538         * metadata-verify.c: Add mono_verifier_verify_method_header.
5539
5540         * verify-internals.h: Export mono_verifier_verify_method_header as
5541         part of the internal API.
5542
5543 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5546         check the field signature. Replace an assert with an explicit check.
5547
5548         * class.c (mono_class_setup_fields): Call into the verifier to check
5549         the field signature.
5550
5551         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5552
5553         * verify-internals.h: Export mono_verifier_verify_field_signature as
5554         part of the internal API.
5555
5556 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5557
5558         * class.c (mono_class_find_enum_basetype): Simplify this function
5559         by moving code outside of the loop and not decoding static fields.
5560
5561 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5562
5563         * metadata-verify.c (verify_typedef_table): Check the extends
5564         token here. Move to here a flags check from verify_typedef_table_full.
5565
5566 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5567
5568         * metadata-verify.c (is_valid_method_header): Fix a warning.
5569
5570         * metadata-internals.h (MonoImage): Remove the unused 
5571         static_rgctx_invoke_wrapper_cache.
5572
5573         * image.c marshal.c: Ditto.
5574
5575 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5576
5577         * image.c (do_mono_image_load): Enable table data verification.
5578
5579 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5580
5581         * metadata-verify.c (is_valid_constant): Fix nullref check.
5582
5583 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5586
5587 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5588
5589         * sgen-gc.c: Managed allocation with pthreads TLS.
5590
5591         * threads.c, threads-types.h: Functions for the JIT to tell the
5592         runtime whether it supports the MONO_TLS opcode.
5593
5594 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5597         without methods.
5598
5599 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5600
5601         * metadata-verify.c (is_valid_constant): Fix the string length check.
5602         Use safe overflow checking. Add decent error messages.
5603
5604 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5605
5606         * metadata-verify.c: Move remaininh blob checks to the offline
5607         verification path.
5608
5609 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         * metadata-verify.c: Move more blob checks to the offline verification
5612         path.
5613
5614 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5615
5616         * object-internals.h : Adding interrupt_on_stop field.
5617
5618         * threads.c (mono_thread_request_interruption) : On Windows exit the
5619           thread if interrupt_on_stop is set.
5620
5621         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5622          Removing old interrupt logic and setting the interrupt_on_stop for the
5623          thread when calling accept.
5624
5625         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5626          setting the interrupt_on_stop for the thread when calling accept.
5627
5628         Contributed under MIT/X11 license.
5629
5630 2009-06-20  Martin Baulig  <martin@ximian.com>
5631
5632         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5633
5634 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5637         running in no-exec mode.
5638
5639 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5640
5641         * metadata-verify.c (verify_method_table): Move header
5642         checking to verify_method_table_full.
5643
5644         * metata-verify.c (mono_verifier_verify_full_table_data):
5645         Call verify_method_table_full.
5646
5647 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5648
5649         * metadata-verify.c (verify_field_table): Move signature
5650         checking to verify_field_table_full.
5651
5652         * metata-verify.c (mono_verifier_verify_full_table_data):
5653         Call verify_field_table_full.
5654
5655 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5656
5657         * metadata-verify.c (verify_typedef_table): Move remaining
5658         stuff to verify_typedef_table_full.
5659
5660 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5661
5662         * metadata-verify.c: Kill is_corlib from VerifyContext.
5663         It is only used by the offline mode.
5664         So we better remove it from the runtime path.
5665
5666 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5667
5668         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5669         function that perform the offline metadata verification steps.
5670
5671         * metadata-verify.c (verify_typedef_table): Move some checks to
5672         verify_typedef_table_full and make it been called by new function
5673         mono_verifier_verify_full_table_data.
5674
5675         * pedump.c: Call mono_verifier_verify_full_table_data.
5676
5677         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5678         part of the internal API.
5679
5680 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5683         check.
5684
5685         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5686         flags bits. SupportLastError was confused as bit 7 instead of 6.
5687
5688         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5689         to check against the module ref table instead of module.
5690
5691         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5692
5693         * pedump.c: Call mono_image_load_names.
5694
5695 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         * image.c: Extract mono_image_load_names from do_mono_image_load.
5698
5699         * metadata-internals.h: Export mono_image_load_names as part of
5700         the internal API.
5701         
5702 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5705         first, as it could reference data in the other caches.
5706
5707 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5708
5709         * metadata-verify.c: Finished with method header verification.
5710
5711 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5712
5713         * metadata-verify.c: Added more header verification code.
5714         Now only EH clauses are missing.
5715
5716 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5717
5718         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5719         for return values.
5720
5721 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5722
5723         * metadata-verify.c: Initial method header verification.
5724
5725 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5726
5727         * metadata-verify.c (verify_import_table): The IAT contents
5728         might end been patched by the windows DL when running with
5729         coree enabled.
5730
5731 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * class.c (mono_class_from_typeref): If the enclosing type is not
5734         found return null instead of crashing. Fixes #508487.
5735
5736 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5737
5738         * normalization-tables.h : updated to the latest unicode charcter
5739           data.
5740         * appdomain.c : bump corlib version.
5741
5742 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5743
5744         * class.c (mono_class_from_name): Fix support for assembly references
5745         in the EXPORTEDTYPE table. Fixes #511704.
5746
5747 2009-06-13  Geoff Norton  <gnorton@novell.com>
5748
5749         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5750         assembly in the target domain.
5751
5752 2009-06-12  Robert Jordan  <robertj@gmx.net>
5753
5754         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5755         because "this" of the managed signature has become an
5756         ordinary parameter in the unmanaged signature.
5757
5758 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5761         field for owner-less generic containers.
5762
5763         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5764         image field of the owner-less generic containers created here.
5765
5766         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5767         contain is ownerless until the caller sets its owner.
5768
5769         * metadata.c (type_in_image): Handle owner-less generic containers
5770         correctly.
5771         
5772 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5773
5774         * image.c (mono_image_close): Support debug_assembly_unload for
5775         dynamic images too.
5776
5777 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5778
5779         * class.c: Fix some typos in comments.
5780
5781 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5782
5783         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5784
5785         * threads.c (mono_thread_execute_interruption): Avoid creating the
5786         abort exception object while holding the synch_cs lock.
5787
5788 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5789
5790         * metadata-verify.c: Verify basic cattr content.
5791
5792 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5793
5794         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5795         nested types.
5796         
5797         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5798         support for nested types. Fixes #511704.
5799
5800 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5801
5802         * metadata-verify.c: Verify methodspec signatures.
5803
5804 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5805
5806         * metadata-verify.c: Verify typespec signatures.
5807
5808 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * metadata.c (free_inflated_method): Call 
5811         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5812
5813 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5814
5815         * mono-config.c: Small change to report the PPC64/ILP32 model.
5816
5817 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * metadata-verify.c (parse_type): Check szarray.
5820
5821 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5822
5823         * metadata-verify.c (parse_type): Check fnptr.
5824
5825 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5826
5827         * metadata-verify.c (parse_type): Check generic instances.
5828
5829 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5830
5831         * metadata-verify.c (parse_type): Check array shape.
5832
5833 2009-06-05  Robert Jordan  <robertj@gmx.net>
5834
5835         * class.c (mono_class_create_from_typedef): Check only for
5836         mscorlib's System.Array.
5837
5838 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5839
5840         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5841         and generic params. 
5842
5843         * metadata-verify.c (parse_field): Check the signature.
5844
5845 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5846
5847         * metadata-verify.c: Implement locals signature check.
5848
5849 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5850
5851         * domain.c: Add .NET 4.0 Beta 1 version.
5852
5853 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5854
5855         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5856           For QueryInterface on CCWs consider the base class
5857           interfaces as well.
5858
5859         Code is contributed under MIT/X11 license.
5860
5861 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5862
5863         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5864
5865         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5866         used.
5867
5868         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5869         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5870
5871         * generic-sharing.c (inflate_other_data): Ditto.
5872         
5873 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5874
5875         * metadata-verify.c: Implement property signature check.
5876
5877 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5878
5879         * sgen-gc.h: Register saving support for PPC.
5880
5881 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5882
5883         * sgen-gc.c: Fixed a pthread TLS screwup.
5884
5885 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5886
5887         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5888         supported.
5889
5890 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5891
5892         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5893         keyword is not supported.
5894
5895 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5896
5897         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5898         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5899         the inflated method is freed. Fixes #508389.
5900
5901         The code is contributed under the MIT/X11 license.
5902         
5903 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * marshal.c (get_wrapper_target_class): New helper function.
5906         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5907         the <Module> class of the image. Fixes #509049.
5908
5909 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
5912         Check if the thread was interrupted and proccess it straight away.
5913         Makes abortion much more responsive.
5914
5915 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5916
5917         * threads.c (mono_thread_execute_interruption): Use atomic cas with
5918         MonoThread::interruption_requested to match it's counterpart.
5919
5920         Fixes a hang in abort-stress-1 on a 2 core x86.
5921
5922         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
5923         Fix warning.
5924
5925 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5926
5927         Change MonoImage::name_cache to be protected by the image lock
5928         instead of the loader lock.
5929
5930         * appdomain.c (deregister_reflection_info_roots): Protect access
5931         to name_cache.
5932
5933         * class.c (mono_image_init_name_cache): Change from the loader lock
5934         to the image lock. Check if the cache wasn't already created.
5935
5936         * class.c: Change from the loader to the image lock.
5937
5938         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
5939         the code to hold the image lock while iterating over name_cache and
5940         not go into mono_array_new holding it.
5941
5942         * metadata-internals.h: Add a comment about this change.
5943
5944 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5945
5946         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5947         Under the 2.0 profile raise the loader error.
5948
5949         Fixes #508532.
5950
5951 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5952
5953         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
5954         of ldind opcode for generic instances so we don't fail for direct wrappers.
5955         This only affect direct calls.
5956
5957 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5958
5959         * reflection.c (create_dynamic_mono_image): Fix warnings.
5960
5961         * generic-sharing.c (other_info_equal): Ditto.
5962         
5963 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5964
5965         * metadata-verify.c: Implement field signature check.
5966
5967 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5968
5969         * metadata-verify.c: Implement standalone signature check.
5970
5971 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5972
5973         * metadata-verify.c: Implement methodref signature check.
5974
5975 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5976
5977         * object-internals.h (MonoRuntimeCallbacks): New structure containing
5978         callbacks supplied by the runtime.
5979
5980         * object.c (mono_install_callbacks): New internal function to install
5981         the callbacks.
5982
5983         * object.c (mono_create_ftnptr): Move the implementation of this to
5984         mini/.
5985
5986         * object.c (mono_get_addr_from_ftnptr): Ditto.  
5987
5988 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5989
5990         * metadata-verify.c (parse_return_type): Proper byref check.
5991         * metadata-verify.c (is_valid_method_signature): Check for zero arity
5992         generic signatures and method params.
5993
5994 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5995
5996         * metadata-verify.c (decode_signature_header): Fix bounds check.
5997
5998         * metadata-verify.c (parse_custom_mods): Check custom mods.
5999
6000         * metadata-verify.c (parse_type): Do initial basic verification
6001         of valid values.
6002         
6003         * metadata-verify.c (is_valid_method_signature): Parse the generic
6004         param count.
6005
6006 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6007
6008         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6009         discarded based on their most specific definition so we set the method_slots
6010         array before checking if the method is acceptable or not.
6011
6012         Fixes #506757.
6013
6014 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6015
6016         * icall.c: Free the old array when resizing a mono_ptr_array.
6017
6018 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6019
6020         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6021         for the hashes whose keys are managed objects.
6022
6023 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6024
6025         * object-internals.h, threads.c: Set the execution context on
6026         thread start here, not in corlib.
6027
6028         * appdomain.c: Bump corlib version.
6029
6030 2009-05-27  Martin Baulig  <martin@ximian.com>
6031
6032         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6033         if `_mono_debug_using_mono_debugger' is set to make things work
6034         properly when embedding Mono.
6035
6036 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6037
6038         * class.c (mono_class_setup_fields): Don't mark simd types as having
6039         16 bytes alignment as the whole runtime doesn't support.
6040
6041 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6042
6043         * metadata-verify.c (safe_read): Use endian safe read macros.
6044
6045 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6046
6047         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6048         it is read-only when using full aot.
6049
6050 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6051
6052         * metadata-verify.c (is_valid_method_signature): Verify parts
6053         of the return type. Provide an error message in case of failure.
6054
6055 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6058
6059 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6060
6061         * metadata-verify.c: Include the size prefix in the bounds check.
6062
6063 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6064
6065         * icall.c: Remove warnings.
6066
6067         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6068         prevent auto-detection based on GCC defines.
6069
6070         Add PS3
6071
6072         * metadata-verify.c: Do not include signal.h
6073
6074         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6075         messages.  Not sure why the g_assert_not_reached is not enough to
6076         quiet the compiler.
6077         
6078
6079         * appdomain.c: Remove code that is not used when
6080         DISABLE_SHADOW_COPY is set.
6081
6082         * image.c: use g_getenv
6083
6084 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6085
6086         * reflection.c: Remove code that it not used with
6087         DISABLE_REFLECTION_EMIT is defined.
6088
6089 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6090
6091         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6092         invoke wrappers.
6093
6094 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6095
6096         * socket-io.c
6097         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6098         the ifdef here and instead put that on io-layer
6099
6100 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6101
6102         * metadata-verify.c: Verify the generic param constraint table.
6103
6104 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6105
6106         * metadata-verify.c (verify_generic_param_table): Fix
6107         thinko on the valid flags bits for generic params.
6108
6109 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6110
6111         * metadata-verify.c: Verify the methodspec table.
6112
6113 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6114
6115         * metadata-verify.c: Verify the generic param table.
6116
6117 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6118
6119         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6120
6121 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6122
6123         * sgen-gc.c: Use generation enum more consistently and use the
6124         correct generation in mono_gc_register_for_finalization().
6125
6126 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6127
6128         * metadata-verify.c: Verify the nested class table.
6129
6130 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6131
6132         * metadata-verify.c: Verify the manifest resource table.
6133
6134 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6135
6136         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6137
6138 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6141         wrappers, this is now done in the JIT.
6142         
6143         * class.c (mono_set_generic_sharing_supported): New internal function.
6144         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6145
6146 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * metadata-verify.c: Verify the exported type table.
6149
6150 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6151
6152         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6153
6154 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6155
6156         * metadata-verify.c: Verify the file table.
6157
6158 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6159
6160         * metadata-verify.c (verify_assembly_table): Fix an error message.
6161
6162         * metadata-verify.c: Verify the assemblyref table.
6163
6164 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6165
6166         * metadata-verify.c (verify_assembly_table): Fix the valid
6167         bits mask for flags.
6168
6169 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6170
6171         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6172         generic methods as well.
6173
6174 2009-05-15  Geoff Norton  <gnorton@novell.com>
6175
6176         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6177         use-case and is significantly more performant than the wapi layer.
6178
6179 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * metadata-verify.c: Verify the assembly table.
6182
6183 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6184
6185         * metadata-verify.c: Fix rows limit check.
6186
6187 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * metadata-verify.c: Verify the fieldrva table.
6190
6191 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6192
6193         * sgen.c: Speed up weak links and finalizers by grouping them by
6194         generation.
6195
6196 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6197
6198         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6199         free the old GCHandle (only applies to SGen).
6200
6201 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6204         mono_metadata_load_generic_params () for non-generic methods.
6205
6206 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6207
6208         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6209         New function for returning a monitor's weak link if it has one.
6210
6211         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6212         one) when clearing a domain.  These can still be around because
6213         the object might not have been collected.
6214
6215 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * gc.c: Fix a warning.
6218
6219 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6220
6221         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6222         prevous wait that resulted in a deadlock on Windows when initializing
6223         the runtime form DllMain. Also results in improved startup time.
6224         (finalizer_thread): Get rid of thread_started_event.
6225         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6226         resulting MonoThread.
6227
6228         Contributed under MIT/X11 license.
6229
6230 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6231
6232         * metadata-verify.c: Verify the implmap table.
6233         Don't require that #US and #Strings be present.
6234
6235 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6236
6237         * security-core-clr.c: Delegate checks are done at creation time,
6238         not a invocation time. Fix exception for Telerik Silverlight demo
6239
6240 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6241
6242         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6243         case for the Thread class.
6244
6245         * threads.c: Do clean-up of abort exception/state in
6246         thread_cleanup() instead of Thread.free_internal().  Also clean up
6247         current_appcontext.  The reason we have to do that is because
6248         those references might point into another domain and if that
6249         domain is unloaded before the thread is finalized, they point to
6250         invalid data.
6251
6252 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6253
6254         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6255         stub signatures.
6256         
6257         Contributed unter MIT/X11 license.
6258
6259 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6260
6261         * verify.c, metadata-verifier.c: Add support for disabling the
6262         verifier in some builds.
6263
6264         [ Sorry, my previous commit accidentally commited some work in
6265         progress ]
6266
6267 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * class.c (mono_class_setup_fields): Set class->field.first for
6270         generic instances.
6271
6272 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6273
6274         * metadata-verify.c: Verify the typespec table.
6275
6276 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6277
6278         * metadata-verify.c: Verify the module table.
6279
6280 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6281
6282         * metadata-verify.c: Verify the methodimpl table.
6283
6284 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6285
6286         * metadata-verify.c: Verify the property table.
6287
6288 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * debug-helpers.c (mono_method_desc_match): Add support for generic
6291         glob patterns.
6292
6293 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6294
6295         * metadata-verify.c: Verify the propertymap table.
6296
6297 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6298
6299         * metadata-verify.c: Verify the event table.
6300
6301         * metadata-verify.c (search_sorted_table): Fix offset
6302         calculation.
6303
6304 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6305
6306         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6307
6308 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6309
6310         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6311         because mono_delegate_free_ftnptr() needs it.
6312
6313 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6314
6315         * metadata-verify.c: Verify the eventmap table.
6316
6317 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * metadata-verify.c: Verify the standalonesig table.
6320
6321 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6322
6323         * metadata-verify.c: Verify the field layout table.
6324
6325 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6326
6327         * class.c (mono_type_get_name_recurse): Don't crash
6328         for ownerless generic params.
6329
6330         * debug-helpers.c (mono_type_get_desc): Correct the format
6331         for ownerless generic params.
6332
6333 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * metadata-verify.c: Verify the class layout table.
6336
6337 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6338
6339         * metadata-verify.c: Verify the decl security table.
6340
6341 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6342
6343         * domain.c (mono_domain_set_internal_with_options): Don't do
6344         anything if the old domain is the same as the old one.  Fixes
6345         #499326.
6346
6347 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6348
6349         * appdomain.c: Deregister the reflection_info roots when unloading
6350         a domain.
6351
6352         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6353         memory allocated by a domain and frees its disappearing links.
6354
6355         * boehm-gc.c, null-gc.c: Empty implementation of
6356         mono_gc_clear_domain().
6357
6358 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6359
6360         * appdomain.c (clear_cached_vtable): Free the static fields memory
6361         block.
6362
6363 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6364
6365         * gc.c: Set the correct domain when invoking finalizers.
6366
6367         * appdomain.c: Set the correct domain when creating threads.
6368
6369 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6370
6371         * sgen-gc.c: Fix skip size for vectors.
6372
6373 2009-05-03  Martin Baulig  <martin@ximian.com>
6374
6375         * mono-debug-debugger.c
6376         (mono_debugger_check_breakpoints): Check class init handlers even
6377         if we don't have any method load handers.
6378
6379 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6380
6381         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6382         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6383
6384 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * metadata-verify.c: Verify the field marshal table.
6387
6388 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6389
6390         * metadata-verify.c: Verify the custom attribute table.
6391
6392 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * metadata-verify.c: Verify the constant table.
6395
6396 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6397
6398         * metadata-verify.c: Verify the memberef table.
6399
6400 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         * metadata-verify.c (get_coded_index_token): Remove
6403         dead argument.
6404
6405 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * metadata-verify.c: Verify the interfaceimpl table.
6408
6409 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6410
6411         * verify.c: Improve error message.
6412
6413         * debug-helpers.c (mono_type_get_desc): Harden the code that
6414         deals with VAR and MVAR.
6415
6416 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6417
6418         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6419         part of #498692.
6420
6421 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6422
6423         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6424         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6425
6426 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6427
6428         * security-core-clr.c: Avoid redundant checks for platform code, 
6429         e.g. check for method and for class (very common) and check
6430         for class and outer class (less common)...
6431
6432 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * reflection.c: Avoid returning random cattrs for synthetic methods.
6435         Fixes #498545.
6436
6437 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6438
6439         * assembly.c: assemblies in the GAC should never be shadow-copied.
6440
6441 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6442
6443         * domain.c, domain-internals.h: Disable
6444         track_resurrection_{objects,handles}_hash in MonoDomain if using
6445         SGen.
6446
6447 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6448
6449         * metadata-verify.c: Verify the param table.
6450
6451 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6452
6453         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6454         MethodList.
6455
6456         * metadata-verify.c (verify_method_table): Proper check the ParamList
6457         field.
6458
6459 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6460
6461         * metadata-verify.c (verify_method_table): Check for runtime
6462         implemented functions such as delegate .ctors. Remove spurious
6463         printf.
6464         
6465 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6468
6469 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6470
6471         Don't allocate MonoGenericInfo for ownerless generic params.
6472         * class-internals.h (MonoGenericParam::info): Move field to ...
6473         (MonoGenericParamFull): ... this.  New struct.
6474         (MonoGenericContainer::type_params): Change type to
6475         MonoGenericParamFull.
6476         (MonoGenericParam, MonoGenericContainer): Update accessors.
6477         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6478         'info' field for ownerless generic param.
6479         (mono_metadata_load_generic_params): Update to changes.
6480         * reflection.c (mono_reflection_create_generic_class): Likewise.
6481         (reflection_methodbuilder_to_mono_method): Likewise.
6482         (mono_reflection_initialize_generic_parameter): Likewise.
6483
6484 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6485
6486         Don't use MonoGenericParamInfo for ownerless generic params.
6487         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6488         use ParamInfo class at all.
6489         (mono_class_from_generic_parameter): Use them.
6490         (make_generic_param_class): Fix a couple of instances where 'pinfo
6491         == NULL' wasn't handle.
6492
6493 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6494
6495         * class.c (make_generic_param_class): Carve out of ...
6496         (mono_class_from_generic_parameter): ... here.
6497
6498 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6499
6500         Simplify mono_class_from_generic_parameter
6501         * class-internals.h (MonoGenericParamInfo::token): New field.
6502         * metadata.c (mono_metadata_load_generic_params): Initialize it
6503         from metadata.
6504         * class.c (mono_class_from_generic_parameter): Use it instead of
6505         searching through metadata.
6506
6507 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6508
6509         * metadata-verify.c: Add verification of the method table.
6510
6511 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6514         Delegate::Invoke optimization.
6515
6516 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6517
6518         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6519         string returned by get_shadow_assembly_location_base.
6520
6521         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6522         about caller's ownership.
6523
6524 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6527         reflection memory on domain unload.
6528
6529         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6530         reflection cleanup code do it.
6531
6532         * domain-internals.h: Add mono_reflection_cleanup_domain.
6533
6534         This fixes a memory leak for managed mirrors of reflection objects
6535         on domain unload. 
6536
6537 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6538
6539         * metadata-verify.c: Implement more verification of the field table.
6540
6541 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6542
6543         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6544         doesn't try to parse the input assembly, which can be broken.
6545
6546 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6547
6548         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6549         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6550         by using the lowest bit in the link to store whether the link is
6551         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6552
6553 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6554
6555         * Makefile.am: Split the console support in platform specific code
6556         and put together a framework for making this easy in the future so
6557         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6558
6559 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6560
6561         * pedump.c: Fix a warning.
6562
6563 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6564
6565         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6566         mono_class_from_mono_type to avoid bad interactions with the dual representation
6567         of the generic type definition.
6568
6569 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6570
6571         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6572         get the MonoClass for the call context type as it might be a generic
6573         instance.
6574
6575         Fixes #491483.
6576
6577 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6578
6579         * object-internals.h: The Thread object has no execution_context
6580         member anymore.
6581
6582         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6583         the execution context.
6584
6585         * appdomain.c: Bump corlib version.
6586
6587 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6588
6589         * verify.c (do_newobj): Improve error message.
6590
6591 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6594         is nested in the filter block.
6595
6596         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6597         block is not fully nested.
6598
6599         Fixes #495656.
6600
6601 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6604         not MonoType to check for equality of valuetypes as the generic type
6605         definition allows for two different encodings: the generic type definition
6606         class or a generic instance over the GTD arguments.
6607
6608         Fixes #496175.
6609
6610 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6611
6612         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6613
6614         * verify.c (do_initobj): Improve error message.
6615
6616 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6617
6618         * metadata-verify.c: Enable pe verification as the issue with #496453
6619         is that the authenticode data directory have a different unspecified
6620         format. Ignore it for now.
6621
6622         * pedump.c: Run the metadata verifier together with the IL verifier.
6623
6624         Fixes ##496453.
6625
6626 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6627
6628         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6629
6630 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6631
6632         * class.c (can_access_type): Check visibility against
6633         the element type for pointers and arrays.
6634
6635         Fixes #496150.
6636
6637 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6638
6639         * metadata-verify.c: Fix cli and table verification to use information
6640         from the MonoImage. A lot of duplicated code got killed.
6641
6642 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6643
6644
6645         This patch starts to integrate the metadata verifier with the runtime code.
6646
6647         This patch causes major regression in functionality for the metadata verifier
6648         as cli and table verification are disabled since they require to be ported to
6649         use MonoImage information.
6650
6651         * image.c (do_mono_image_load): Split the code in this function
6652         into mono_image_load_pe_data and mono_image_load_cli_data.
6653         Add     care_about_pecoff parameter to not load pecoff data.
6654         Call into the metadata verifier for pecoff and cli verification.
6655
6656         * image.c (mono_image_open_raw): New function that doesn't perform
6657         any parsing of the image contents.
6658         
6659         The reason for the 3 new functions is to give pedump better control
6660         into the interaction with the verifier.
6661
6662         * metadata-internals.h: Add new functions from image.c as part of the
6663         internal mono API.
6664
6665         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6666         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6667         to make those functions work together with the runtime.
6668
6669         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6670         true if the image needs to be verified.
6671
6672         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6673
6674         * pedump.c: Use new metadata verifier API.
6675
6676 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6677
6678         * object.c (mono_install_vtable_trampoline): Make this receive a
6679         trampoline creation function instead of trampoline, allowing the JIT
6680         to use a different trampoline for each vtable.
6681
6682 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6683
6684         * object.c (mono_raise_exception): Don't reset the thread abort
6685         exception state here.
6686
6687 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6688
6689         * icall-def.h: New icall for getting the thread abort exception
6690         state for a thread.
6691
6692         * object.c, thread.c, object-internals.h: A thread's abort
6693         exception state is now a GC handle.  To get the object it stands
6694         for, we must move it into the current app domain, if it's
6695         different than the one where it originated from.
6696
6697         * appdomain.c: Bump corlib version.
6698
6699         * domain.c, domain-internals.h: New function for setting the
6700         domain and migrate the thread abort exception or not.
6701
6702 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6703
6704         * metadata-verify.c: Add initial verification of the
6705         field table.
6706
6707 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * metadata-verify.c: Add a macro to conditionally enable
6710         dumping of verification information. Add  make_coded_token
6711         and search_sorted_table to enable search sorted tables
6712         by a given coded token.
6713
6714 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6715
6716         * metadata-verify.c: Add array mapping from table index
6717         to description offset. Add get_col_offset and get_col_size
6718         functions.
6719
6720 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6721
6722         * metadata-verify.c: Add remaining table descriptions offsets.
6723         Add remaining coded index descriptions.
6724
6725 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * metadata-verify.c: Fixed constant table description.
6728         Fixed calculation of HasCustomAttribute coded index size.
6729         Fixed calculation of size for many table indexes. 
6730
6731 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * pedump.c (dump_metadata): Dump table offset instead
6734         of useless pointer in memory.
6735
6736 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6737
6738         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6739
6740 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6743         a missing of for interface types.
6744
6745 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6748         the code is commented.
6749
6750         * metadata-verify.c (verify_resources_table): Remove spurious printf
6751         and don't fail if there are unmanaged resources. Gmcs generates a useless
6752         one     for all assemblies - I bet it's some MS compatibility junk.
6753
6754 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6757
6758         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6759
6760         * verify-internals.h: Same.
6761
6762         * pedump.c: Fix for mono_image_verify new signature.
6763
6764 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6765
6766         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6767         flags combinations.
6768
6769 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6770
6771         * metadata-verify.c (verify_module_table): Ignore the generation field.
6772
6773 2009-04-15  Martin Baulig  <martin@ximian.com>
6774
6775         * debug-mono-symfile.c
6776         (mono_debug_symfile_lookup_location): Don't print a warning for
6777         unknown extended opcodes if they're within 0x40 and 0x7f.
6778
6779 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6782         invoke signatures returning an enum. Fixes #494847.
6783
6784 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6785
6786         * metadata-verify.c: Initial code to verify the typedef table.
6787
6788 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6789
6790         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6791         with non empty stack happens before the beginning of a try block.
6792
6793         Fixes #494812.
6794
6795 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * metadata-verify.c: Verify typename and typenamespace fields of
6798         the typeref table.
6799
6800 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6801
6802         * metadata-verify.c: Initial code to verify the typeref table.
6803
6804 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         * verify.c (verify_delegate_compatibility): Fix error message.
6807
6808 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6809
6810         * security-core-clr.c: Fix typo
6811
6812 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6815         a MonoGHashTable to keep its values alive.
6816         (emit_marshal_boolean): Fix a warning.
6817
6818 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6819
6820         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6821         not have any interface configured for IPv4/IPv6.
6822
6823 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6824
6825         * assembly.c: fix typo in error message.
6826
6827 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6830         allocating the location holding the this argument to prevent
6831         'too many root sets' errors.
6832
6833         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6834         to mark fields as special static.
6835         (mono_field_static_get_value): Handle special static fields.
6836         (mono_field_static_set_value): Ditto.
6837
6838         * class-internals.h (struct _MonoClassField): Document this.
6839
6840 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6841
6842         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6843           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6844           case.  This will handle when managed code returns null to native code.
6845
6846         Code is contributed under MIT/X11 license.
6847
6848 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6849
6850         * object.c (build_imt_slots): Changing a free to a g_free to match
6851           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6852
6853         Code is contributed under MIT/X11 license.
6854
6855 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6856
6857         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6858           the correct TRUE value is passed through the marshaling layer.
6859
6860         Code is contributed under MIT/X11 license.
6861
6862 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6863
6864         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6865         correctly. Fixes #492330.
6866         
6867         * marshal.c: Fix the embedding of object pointers into JITted code in
6868         the native-to-managed wrappers by allocating some GC tracked memory, and
6869         embedding the address of that.
6870
6871 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6874         pointers into the vtable.
6875
6876 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6879
6880         * verify.c (verify_ldftn_delegate): Improve error message.
6881
6882 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6883
6884         * reflection.c (my_mono_class_from_mono_type): Remove.
6885
6886 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6887
6888         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6889         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6890         and constraints fields into ...
6891         (MonoGenericParamInfo): ... this.
6892         (mono_generic_param_info, mono_generic_container_get_param_info):
6893         New accessors.
6894         * class.c, debug-helpers.c, icall.c: Update to changes.
6895         * metadata.c, reflection.c, verify.c: Likewise.
6896
6897 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6900
6901         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6902         
6903         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6904         booleans with sbytes.
6905
6906 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6907
6908         * class.c (can_access_instantiation): Verify accesibility of element types
6909         for arrays and pointers.
6910
6911         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
6912
6913         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
6914
6915         Fixes #493068.
6916
6917 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6918
6919         * verify.c (do_invoke_method): Improve error messages.
6920
6921 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
6922
6923         * verify.c:  Fixing the MSVC build.
6924
6925         Code is contributed under MIT/X11 license.
6926
6927 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
6928
6929         * security-core-clr.c: Simplify get_reflection_caller not to call
6930         mono_method_get_last_managed (another stack walk) and adjust the
6931         callers to handle a (should not happen) NULL return value.
6932
6933 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6934
6935         Add accessors to some MonoGenericParam fields
6936         * class-internals.h (mono_generic_param_owner): New accessor.
6937         (mono_generic_param_num): Likewise.
6938         (mono_type_get_generic_param_owner): New helper.
6939         (mono_type_get_generic_param_num): New helper.
6940         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
6941
6942 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6943
6944         * class-internals.h (mono_generic_container_get_param): New wrapper.
6945         * class.c, icall.c, metadata.c, verify.c: Use it.
6946
6947 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6948
6949         Fix gtest-252.cs
6950         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
6951         the standard case/loop.  In particular, don't complain about
6952         references to generic type definitions.
6953
6954 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * debug-helpers.c (dis_one): Decode string arguments.
6957
6958 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * pedump.c (dump_verify_info): Dump type name correctly.
6961
6962 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6963
6964         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
6965         are larger than code size.
6966
6967         This can happen in valid code if the try/catch block is not followed by any instruction
6968         and do a backward branch on the leave instruction.
6969
6970         Fixes #492494.
6971
6972 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
6973
6974         * security-core-clr.c: Fix typo while comparing second method names
6975         in can_avoid_corlib_reflection_delegate_optimization
6976
6977 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6978
6979         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
6980
6981         Fixes #487738.
6982
6983 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6984
6985         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
6986         a MVAR using a class context.
6987
6988         Fixes #490335.
6989
6990 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6991
6992         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
6993
6994         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
6995
6996         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
6997         functions supplied by the JIT for the SGEN GC.
6998
6999         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7000         
7001 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7002
7003         monitor.c (mono_monitor_try_enter_internal):
7004         Added calls to profile monitor contentions.
7005         Also duplicated a small piece of code (the "get the monitor" logic)
7006         from the fast path to the slow path, and changed the relevant goto
7007         statements, so that monitor acquisition events can be emitted from the
7008         slow path (this is by Paolo Molaro).
7009
7010 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7011
7012         * profiler.c, profiler.h, profiler-private.h:
7013         Added support for profiling monitor contentions.
7014
7015 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7016
7017         * metadata-verify.c: Verify the modules table.
7018
7019 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7020
7021         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7022         using the context of the method been verifier and not of the method been called.
7023
7024         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7025         safely inflate generic types. 
7026
7027 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7028
7029         * security-core-clr.c: Change the strategy for checking the 
7030         "reflection using delegates optimization" to avoid unneeded 
7031         attributes in multiple class libraries.
7032
7033 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7034
7035         * sgen-gc.c: Remove object element in the disappearing link struct
7036         by storing the object pointer in the link.
7037
7038 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7039
7040         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7041
7042 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7043
7044         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7045
7046         * verify.c (mono_method_verify): Do proper bounds checking of exception
7047         clause ranges.
7048
7049 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7050
7051         * loader.c (mono_field_from_token): Don't crash if the field parent could
7052         not be decoded.
7053
7054 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7055
7056         * sgen-gc.c: Execute critical finalizers after ordinary
7057         finalizers.
7058
7059         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7060         mono_defaults.
7061
7062 2009-03-31 Jb Evain <jbevain@novell.com>
7063
7064         * verify.c (do_ldstr): don't check if a string is in the user strings
7065         heap if the current image is dynamic.
7066
7067 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7068
7069         * sgen-gc.c: Wait until the last finalizer has executed when
7070         returning from WaitForPendingFinalizers.
7071
7072 2009-03-31  Martin Baulig  <martin@ximian.com>
7073
7074         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7075         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7076         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7077         (mono_debugger_event_create_appdomain): New function.
7078         (mono_debugger_event_unload_appdomain): New function.
7079
7080         * appdomain.c (mono_domain_create_appdomain_internal): Call
7081         mono_debugger_event_create_appdomain().
7082
7083 2009-03-31  Martin Baulig  <martin@ximian.com>
7084
7085         * mono-debug-debugger.c
7086         (mono_debugger_register_class_init_callback): Also register the
7087         class init callback if the class is already initialized to make
7088         things work with shadow copied assemblies.
7089
7090 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7091
7092         * security-core-clr.c
7093         (mono_security_core_clr_ensure_reflection_access_field): Let 
7094         critical code access the field (just like we do for methods). Use
7095         check_field_access helper.
7096         (mono_security_core_clr_ensure_reflection_access_method): Use 
7097         check_field_access helper.
7098
7099 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7100
7101         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7102         call the run-finalize function directly.
7103
7104         * gc.c, gc-internal.h: Make run_finalize() non-static.
7105
7106 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7107
7108         * sgen-gc.c: Use a separate struct for disappearing links.
7109
7110 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7111
7112         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7113         * MaxIOVectorLength enabled, just ignore them.
7114         Fixes bug #349688.
7115
7116 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * metadata-verify.c: Fix eglib build.
7119
7120 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * threads-types.h: Fix the win32 build.
7123
7124 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7125
7126         * class.c: move coreclr inheritance/override checks to 
7127         security-core.clr.c
7128         * security-core.clr.c|h: add code from class.c with additional
7129         documentation. Fix override check when the method is not critical.
7130
7131 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7134         (match_class): Ditto.
7135
7136 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7139
7140         * metadata-verify.c: Implement table layout row size calculation. Verify
7141         the total size of the tables.
7142
7143 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7144
7145         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7146
7147 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7148
7149         * appdomain.c:
7150         * console-io.[ch]: added new mono_console_init() to make sure that
7151         file descriptors 0, 1 and 2 are opened.
7152         Bug #489019 fixed.
7153
7154 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7155
7156         * appdomain.h: Export a new callback type and a new function to
7157         set this callback. This allow a mono host to provide it's own
7158         definition for "platform code".
7159         * metadata-internals.h: Add a core_clr_platform_code flag on 
7160         _MonoImage to (cache and) know if it is representing platform 
7161         code.
7162         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7163         on platform code images.
7164         * security-core-clr.c|h 
7165         (mono_security_set_core_clr_platform_callback): Allow the host
7166         to provide it's own platform check definition.
7167         (mono_security_core_clr_determine_platform_image): Detect if an 
7168         image is platform code (using the specified callback).
7169         (mono_security_core_clr_is_platform_image): Return cached value 
7170         for platform code.
7171
7172 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7175         which has different parameter types for the 'tid' argument in windows and
7176         the io-layer.
7177
7178         * appdomain.c attach.c threads.c: Use the new helper.
7179
7180 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7181
7182         * metadata-verify.c: Verify valid table bits.
7183
7184 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7185
7186         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7187
7188         * metadata-verify.c: Add initial table schema verification.
7189
7190 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7193         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7194         #488383.
7195
7196         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7197
7198         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7199
7200 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7201
7202         * security-core-clr.c: Add/update documentation
7203
7204 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * marshal.c (emit_marshal_object): Generate code to throw an exception
7207         instead of throwing it. Fixes #488670.
7208
7209 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7210
7211         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7212         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7213         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7214         and add a call to mono_security_core_clr_ensure_delegate_creation
7215         to do the extra checks required by CoreCLR.
7216         * security-core-clr.c|h: Add function to check delegate creation,
7217         both in the binding and accessibility, under CoreCLR.
7218
7219 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7220
7221         * reflection.c (mono_reflection_create_dynamic_method): when 
7222         coreclr is enabled make sure that every resolved object are
7223         checked (e.g. field and method access).
7224         * security-core-clr.c|h: Add function to check objects resolved
7225         when a dynamic method is created.
7226
7227 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7228
7229         * metadata-verify.c: Cache directory rva translations.
7230
7231         * metadata-verify.c: Add cli-header and streams verification.
7232
7233 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7234
7235         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7236         the wrong offset (8 instead of 6).
7237
7238 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7239
7240         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7241         methods, return the native function address itself. Fixes
7242         #487758.
7243
7244 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7245
7246         * console-io.c: some of the values for control characters might not be
7247         present.
7248
7249 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7250
7251         * exception.c|h: Add helpers to create [Field|Method]AccessException
7252         * icall.c: Add required coreclr check calls for field reflection.
7253         Move the existing (method) check logic into security-core-clr.c
7254         * security-core-clr.c: Add functions to check if the access of a
7255         field or method is allowed when reflecting under coreclr. This is
7256         mostly done using a stack walk to find the "real" caller: i.e. the
7257         code that is calling the reflection
7258
7259 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * gc-internal.h: Change location of gc_wrapper.h
7262
7263 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7264
7265         * class.c: Simplification to coreclr checks for overrides that
7266         makes it easier to set breakpoints.
7267
7268 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7269
7270         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7271         mono_security_core_clr_method_level): Avoid potential 
7272         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7273         user/application code) and make it easier to set breakpoints
7274
7275 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7276
7277         * metadata-verify.c: Reject cli header tables that mono don't handle.
7278
7279 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7280
7281         * pedump.c: Fix CLI header dumping.
7282
7283 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7284
7285         * metadata-verify.c: More CLI header verification.
7286
7287 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7290
7291 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7292
7293         * metadata-verify.c: Initial verification of the CLI header.
7294
7295 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7296
7297         * metadata-verify.c (verify_resources_table): Fix verification of zero
7298         sized resource section and id entries count.
7299
7300 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7303
7304 2009-03-17  Jb Evain  <jbevain@novell.com>
7305
7306         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7307
7308 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7309
7310         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7311         (mono_gc_make_descr_for_array): Ditto.
7312
7313 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7314
7315         * verify.c (mono_verifier_is_class_full_trust): Add support for
7316         CoreCLR security mode where trusted assemblies are defined as
7317         "platform code".
7318
7319 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7320
7321         * metadata-verify.c: Add minimal PECOFF resource verification.
7322
7323 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7324
7325         * metadata-verify.c: Be less restrictive with some coff fields.
7326
7327 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7328
7329         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7330         params as boxed values on stack. Fixes #485706.
7331
7332 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7333
7334         * console-io.c: the termios values may vary in different flavors of unix.
7335
7336 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7337
7338         * console-io.[ch]: return the entire set of control characters when
7339         initializing the terminal.
7340         * appdomain.c: bump corlib version.
7341
7342 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7343
7344         * mono-perfcounters.c: added support for in-process custom
7345         performance counters.
7346
7347 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7348
7349         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7350
7351 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * metadata-verify.c: Verify the data pointed by the import table. 
7354
7355 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7356
7357         * metadata-verify.c (load_data_directories): Store data
7358         directory contents.
7359
7360         * metadata-verify.c: Verify the import table. 
7361
7362 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7363
7364         * metadata-verify.c: Verify data directories.
7365
7366 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7367
7368         * metadata-verify.c: Check section header flags.
7369
7370 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7371
7372         * appdomain.c: if the assembly name is a shadow-copied file, return
7373         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7374         in mono_make_shadow_copy.
7375         * icall.c: if the assembly name is a shadow-copied file, replace it
7376         with the original assembly path.
7377
7378         Bug #484244 fixed. NUnit tests for corlib can be run without
7379         --noshadow now.
7380
7381 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7384         entries when the table is reallocated.
7385
7386         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7387         mono_gc_alloc_fixed () since it contains GC refs.
7388
7389 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * reflection.c (ensure_complete_type): New helper function to call
7392         type resolve handlers for unfinished dynamic types.
7393         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7394
7395 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7396
7397         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7398         #483247.
7399
7400 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7403
7404 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7405
7406         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7407         between GCHandles of type WeakTrackResurrection and the objects they
7408         point to.
7409
7410         * gc.c: Partly implement the sematics of GCHandles of type 
7411         WeakTrackResurrection: these handles should only be cleared after the
7412         finalizer of the object they are pointing to has ran.
7413
7414 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7415
7416         * icall.c: Partially revert r126631 because using the jump
7417         trampolines for generic shared methods makes it superfluous.
7418
7419 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7420
7421         * threads.c (handle_store): Create the 'threads' hash table with the proper
7422         MONO_HASH_VALUE_GC type.
7423
7424 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7427         FIRST_GC_TRACKED.
7428
7429         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7430         and LAST_GC_TRACKED as a GC root.
7431
7432         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7433
7434         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7435         the static data even if it consists of 1 reference.
7436
7437         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7438         if there is a GC descriptor.
7439
7440         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7441         instead of through the GC since they contain no object references.
7442
7443 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7444
7445         * generic-sharing.c (instantiate_other_info): Always return a jump
7446         trampoline for method code.
7447
7448 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7449
7450         * culture-info-tables.h: generated to include the en-tt culture.
7451
7452 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7453
7454         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7455         capture the thread context.
7456
7457         * object.c (mono_async_result_new): Cache the invoke wrappers to
7458         ExecutionContext::Capture.
7459
7460 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7461
7462         * marshal.h: Add a prototype for what mono_compile_method returns
7463         for invoke wrappers.
7464
7465         * gc.c: Use the new prototype declaration.
7466
7467 2009-03-04  Geoff Norton  <gnorton@novell.com>
7468
7469         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7470         * gc-internal.h:
7471         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7472
7473 2009-03-04  Martin Baulig  <martin@ximian.com>
7474
7475         * mono-debug.h
7476         (mono_debugger_runtime_invoke): Removed.
7477
7478         * mono-debug-debugger.c
7479         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7480
7481 2009-03-02  Martin Baulig  <martin@ximian.com>
7482
7483         * mono-debug.h
7484         (mono_debugger_unhandled_exception): Removed.
7485         (mono_debugger_handle_exception): Removed.
7486         (mono_debugger_throw_exception): Removed.
7487
7488         * mono-debug.c
7489         (mono_debug_debugger_version): Bump to 5.
7490
7491         * mono-debug-debugger.c: Moved the exception handling code to
7492         ../mini/debug-mini.c
7493
7494 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7495
7496         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7497         finalize_objects_hash.
7498
7499         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7500         
7501         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7502         field.
7503
7504         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7505         cache.
7506
7507         * image.c (mono_image_close): Free it.
7508         
7509         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7510         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7511         on the this argument.
7512
7513         * gc.c (run_finalize): Optimize the calling of the finalizers.
7514
7515 2009-03-03  Martin Baulig  <martin@ximian.com>
7516
7517         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7518         of the `MonoGenericInst' changes.
7519
7520 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7521
7522         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7523         mono_array_class_get_cached to reduce locking contention. Extract
7524         a domain var.
7525
7526         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7527         intermediary managed arrays. Use caching version of mono_array_new
7528         to allocate the result array.
7529
7530         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7531
7532         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7533
7534         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7535         to reduce locking contention.
7536
7537 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7538                 
7539         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7540         thunk builder code for the non-interface case.
7541
7542 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * object.c (get_generic_virtual_entries): New helper function to collect
7545         the virtual generic method instances which need to be added to an IMT
7546         thunk.
7547         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7548         Instead of creating a new IMT thunk, reset the vtable slot to the
7549         trampoline, the thunk will be created the next time the trampoline is called.
7550         (build_imt_slots): Add support for virtual generic methods in interfaces by
7551         adding to the IMT thunk all the methods registered using 
7552         mono_method_add_generic_virtual_invocation ().
7553
7554         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7555         (struct _MonoIMTCheckItem): Ditto.
7556
7557         * object.c (mono_method_add_generic_virtual_invocation): Take a
7558         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7559         the IMT thunk to include all items.
7560         
7561         * object.c (mono_class_create_runtime_vtable): Add a missing
7562         mono_loader_unlock ().
7563
7564 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7565
7566         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7567
7568         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7569
7570 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7571
7572         * object-internals.h: Rename _MonoReflectionEvent to
7573         MonoReflectionMonoEvent so it reflects the right managed type.
7574         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7575
7576         * icall.c:
7577         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7578         type.
7579
7580 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7581
7582         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7583         intermediary managed arrays. Use caching version of mono_array_new
7584         to allocate the result array.
7585
7586 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7587
7588         * reflection.c: Use cached version of mono_array_new alongside
7589         the mono_reflection_get_custom_attrs_by_type call path.
7590
7591 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7592
7593         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7594         intermediary managed arrays. Use caching version of mono_array_new
7595         to allocate the result array.
7596
7597         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7598
7599 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * icall.c: Add small implementation of a growable stack bound array.
7602
7603         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7604
7605         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7606         intermediary managed arrays. Use caching version of mono_array_new
7607         to allocate the result array.
7608
7609 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7610
7611         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7612         helps Enum::CompareTo to be implemented without reboxing all enums
7613         to their underlying type.
7614 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7615
7616         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7617         since it acquires a global lock leading to scalability problems.
7618
7619         * profiler.c: Make the stat profiler work with multiple appdomains, this
7620         currently only works when no appdomains are unloaded.
7621
7622 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7623
7624         * appdomain.c: make the check to avoid copying when the assembly is
7625         already shadow copied actually work.
7626
7627 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7630
7631         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7632         changes to the managed side.
7633
7634 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7637         classes + a separate lock for it, as it is used frequently at runtime, not
7638         just during metadata loading/JIT compilation.
7639
7640         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7641         for szarrays.
7642         
7643         * object-internals.h (mono_class_from_name_cached): New macro to cache
7644         the results of the lookup locally without having to declare a static
7645         variable to hold it.
7646         (mono_class_get_field_from_name_cached): Ditto.
7647         (mono_array_class_get_cached): Ditto.
7648
7649         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7650         the new macros.
7651         
7652         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7653         slower search in metadata.
7654
7655         * pedump.c: Fix a warning.
7656
7657 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * reflection.c (encode_locals): Add checks for user types.
7660         (method_encode_clauses): Ditto.
7661         (method_encode_code): Ditto.
7662         (mono_image_create_token): Ditto.
7663
7664         * object-internals.h: Change the type of more fields from MonoReflectionType*
7665         to MonoObject*.
7666
7667 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7668
7669         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7670         the a thread does not suspend within 100ms.
7671
7672         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7673         in addition to StopRequested as well.
7674
7675         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7676
7677         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7678         search the method_hash before inserting a new entry, to avoid crashes when
7679         the same method is inserted multiple times, causing the old 
7680         MonoDebugMethodInfo structure to be freed by the value dtor function.
7681
7682 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7683
7684         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7685         SO_EXLUSIVEADDRUSE where available.
7686
7687 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7688
7689         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7690         runtime invoke wrappers, this time it is string ctor wrappers, which
7691         pass a dummy string as 'this' instead of their obj argument. Fixes
7692         #478473.
7693
7694 2009-02-21  Jb Evain  <jbevain@novell.com>
7695
7696         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7697         only get create_culture once.
7698
7699 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7702         check before the locking.
7703         
7704         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7705         (mono_reflection_create_runtime_class): Ditto.
7706         (mono_reflection_sighelper_get_signature_local): Ditto.
7707         (mono_reflection_sighelper_get_signature_field): Ditto.
7708
7709         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7710         is a System.MonoType object or similar.
7711         (monotype_cast): New helper function to cast a MonoObject to a 
7712         MonoReflectionType object.
7713
7714         * object-internals.h: Change MonoReflectionType* members in structures to
7715         MonoObject* members to force the usage of the monotype_cast () function.
7716
7717         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7718         structures/arrays. This causes us to assert instead of crashing when 
7719         instances of user defined subclasses of System.Type are encountered.
7720
7721 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7722
7723         * cil-coff.h:
7724         * icall-def.h:
7725         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7726         win32 resource loaded from a PE file.
7727
7728         * image.c: fix mono_image_lookup_resource.
7729
7730 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7731
7732         * icall-def.h:
7733         * threads-types.h:
7734         * threads.c: added internal call for WaitHandle.SignalAndWait.
7735
7736 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7737
7738         * cominterop.c : Adding cominterop_type_from_handle and 
7739           registering it as an icall.  Replacing all references
7740           to type_from_handle.
7741
7742         Code is contributed under MIT/X11 license.
7743
7744 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7745
7746         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7747
7748         * appdomain.c: Call the tracer init function.
7749
7750         * domain-internals.h: Enable the tracer for the domain locks.
7751
7752         * image.c: Enable the tracer for image locks.
7753
7754         * loader.c: Enable the trace for the loader lock.
7755
7756         * lock-tracer.h:
7757         * lock-tracer.c: Initial implementation of the lock trace utility.
7758         The tracer requires a compile time define to be enabled and a env var
7759         to be enabled at runtime.
7760
7761 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7762
7763         * domain.c (mono_domain_code_foreach): Improve documentation.
7764
7765 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7766
7767         * appdomain.c:
7768         * generic-sharing.c:
7769         * object.c:
7770         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7771         comes first.
7772
7773 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7774
7775         * domain.c: Add mono_domain_code_* functions that perform locking
7776         around the domain codeman.
7777
7778         * domain-internals.h: Export those functions.
7779
7780         * object.c: Use new functions instead of acquiring the domain lock.
7781
7782 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7783
7784         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7785         delegate. Fixes #477396.
7786
7787 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * reflection.c (create_custom_attr): Get rid of alloca.
7790
7791 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7792
7793         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7794           Adding exception handling for all CCW calls.
7795
7796         Code is contributed under MIT/X11 license.
7797
7798 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7801
7802         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7803         native->managed marshalling code. Fixes #476247.
7804
7805 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * class.c (mono_class_get_vtable_entry): Move the addition of
7808         static rgctx invoke wrappers for vtable methods here, this simplifies
7809         a lot of code and causes fewer rgctx wrappers to be created.
7810
7811         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7812         name of the statistics to begin with an uppercase.
7813
7814 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7815
7816         * reflection.c: Revert previous change as it breaks the build.
7817         
7818 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * verify.c: Properly handle SZARRAY element type.
7821
7822         Fixes #474271.
7823
7824 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7825
7826         * reflection.c (mono_image_create_method_token): Correctly encode
7827         MethodDef MemberRefParent token.
7828
7829         Fixes #472845.
7830
7831 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * image.c (mono_image_close): Delete the critical section before
7834         freeing the memory holding it.
7835
7836 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7837
7838         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7839         Fixes #476257.
7840
7841 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7842
7843         * pedump.c (main): Call mono_marshal_init so pedump
7844         doesn't crash.
7845
7846 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7847
7848         * loader.c (method_from_memberref): Properly fix #474271 and
7849         don't break the runtime bad.
7850
7851 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7854         (mono_domain_alloc0): Ditto.
7855
7856 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7857
7858         * loader.c (method_from_memberref): Don't abort if the array
7859         method is not found. A regular loader failure is more informative
7860         and correct.
7861
7862         Fixes #474271.
7863
7864 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7865
7866         *loader.c: Guard MonoImage::method_cache/methodref_cache
7867         using the image lock instead of the loader lock.
7868
7869         * metadata.h: Add comments about which fields are protected by
7870         the image lock.
7871
7872 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7875
7876         * generic-sharing.c (mono_method_construct_object_context): Remove the
7877         wrapper_type == NONE assert, it is not needed.
7878
7879 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * reflection.c (clear_cached_object): New helper function.
7882         (mono_method_clear_object): New function to clear the cached reflection
7883         objects for a dynamic method.
7884
7885         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7886         Partly fixes # 463323.
7887         
7888 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7889
7890         * class.c:
7891         * loader.c:
7892         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7893
7894 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7895
7896         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7897         take the image lock instead of the loader lock.
7898
7899         * metadata-internals.h: Export new functions.
7900
7901 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7902
7903         * domain.c (app_config_parse): Remove another use of stat that is
7904         not necessary as g_file_get_contents already does the presence
7905         check. 
7906
7907 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7910
7911         * marshal.c: Move the bstr handling code to cominterop.c.
7912
7913         * marshal.c: Remove some COM interop code missed previously.
7914
7915 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7916
7917         More Paolo patches from the Wii port:
7918         
7919         * security.c: Remove ves_icall_System_Environment_get_UserName
7920         from here.
7921
7922         * icall.c: And put ves_icall_System_Environment_get_UserName
7923         here. 
7924
7925         * appdomain.c (mono_set_private_bin_path_from_config): Remove
7926         redundant call to stat that was only used to test for the file
7927         existence.   Patch from Paolo.
7928
7929         * gc.c (run_finalize): If COM is disabled, do not link in
7930         mono_marshal_free_ccw.
7931
7932         * generic-sharing.c: Use alloca.h here as well.
7933
7934 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
7935
7936         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
7937
7938 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7939
7940         * cominterop.c cominterop.h: New files.
7941
7942         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
7943         function/typedefs which are needed by cominterop.c global.
7944
7945 2009-02-12  Mark Probst  <mark.probst@gmail.com>
7946
7947         * generic-sharing.c: Don't take the loader lock to guard image
7948         mempool allocs.
7949
7950 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7951
7952         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
7953         called without the loader lock which is required to guard MonoImage:tokens.
7954
7955 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7956
7957         * class.c:
7958         * metadata.c:
7959         * method-builder.c:
7960         * marshal.c:
7961         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
7962
7963 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7966         Rework the code to use regular mono_image_alloc/0.
7967
7968         * loader.c: Rework the code to use regular mono_image_alloc/0.
7969
7970         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7971
7972 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
7973
7974         * object-internals.h : Fixing a typo in the 
7975           MonoReflectionComVisibleAttribute struct.
7976
7977         * marshal.c (cominterop_com_visible): Check the implemented 
7978           interfaces for ComImport.
7979
7980         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
7981           assume that bools should be treated as VARIANTBOOLs.
7982
7983         * marshal.c (emit_marshal_boolean): Adding cases for 
7984           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
7985
7986         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
7987           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
7988
7989         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
7990           should be treated as VARIANTBOOLs.    
7991
7992         Code is contributed under MIT/X11 license.
7993
7994 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7995
7996         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
7997         allocation with the image lock.
7998
7999 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8000
8001         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8002         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8003
8004         * object.c: Add mono_string_to_utf8_image.
8005
8006         * object-internals.h: Export mono_string_to_utf8_image.
8007
8008         * reflection.c: Rework all explicit references to the the image mempool to go thought
8009         the mono_image_alloc set of functions.
8010
8011 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8014         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8015         and generics-sharing.c.
8016
8017         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8018         as first argument. Note that this function remains broken as it doesn't perform locking around the
8019         mempool allocation.
8020
8021         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8022
8023         * image.c: Add g_slist_append_image.
8024
8025         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8026         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8027
8028         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8029         Fix all related code to do the same.
8030
8031         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8032
8033         * metadata-internals.h: Fix the signatures.
8034
8035 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8036
8037         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8038         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8039         and similar to work using MonoImage.
8040
8041         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8042         MonoMemPool.
8043
8044         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8045
8046         * class.c (mono_metadata_signature_deep_dup): Same.
8047
8048         * class.c (inflate_generic_type): Same.
8049
8050         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8051
8052         * metadata.c (mono_metadata_signature_dup_full): Same.
8053
8054         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8055         mono_metadata_signature_dup_full.
8056
8057         * metadata.c (mono_metadata_type_dup): Same.
8058
8059         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8060
8061         * reflection.c: Same.
8062
8063         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8064
8065         * metadata-internals.h: Fix the signatures.
8066
8067         * class-internals.h: Same.
8068
8069 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8070
8071         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8072         and use mono_image_alloc set of functions instead. 
8073
8074         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8075         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8076         of a MonoMemPool.
8077
8078         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8079
8080         * class.c (g_list_prepend_mempool): Removed.
8081
8082         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8083
8084         * image.c: Add g_list_prepend_image.
8085
8086         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8087
8088         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8089
8090
8091 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8092
8093         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8094         mono_image_unlock.
8095
8096         * image.c (mono_image_init): Init the lock field.
8097  
8098         * image.c (mono_image_init): Cleanup the lock field.
8099
8100         * image.c: Add mono_image_(un)lock functions.
8101
8102 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8103
8104         * class.c, class-internals.h: mono_method_get_context_general()
8105         combines the functionality of mono_method_get_context() and
8106         mini_method_get_context().
8107
8108         * generic-sharing.c, domain-internals.h:
8109         mono_method_construct_object_context() and
8110         mono_domain_lookup_shared_generic() moved from mini.
8111
8112         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8113         method doesn't have the correct instantiation because it's shared
8114         generic code.  Fixes #473999.
8115
8116 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8117
8118         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8119
8120         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8121         
8122 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8123
8124         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8125
8126         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8127
8128         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8129         and recheck the cache for dups after it.
8130
8131         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8132
8133         Fixes one of the deadlocks found in #473150.
8134
8135 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8136
8137         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8138           For Win32, add additional break conditions for accept.
8139
8140         Code is contributed under MIT/X11 license.
8141
8142 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8145         lazily initialize the native wrapper cache.
8146         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8147         cache, since they are different from the normal wrappers.
8148
8149         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8150
8151         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8152         AOT compiled native wrappers.
8153
8154 2009-02-09  Geoff Norton  <gnorton@novell.com>
8155
8156         * appdomain.h:
8157         * security-core-clr.c: Allow enabling core-clr from the embedding
8158         API.
8159
8160 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8161
8162         * socket-io.c: when requesting all the local ips, if there are no
8163         interfaces up and running, MS returns 127.0.0.1.
8164
8165 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8166
8167         * mono-perfcounters-def.h: processor time is an inverse time.
8168         Fixes bug #468625.
8169
8170 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8171
8172         * socket-io.c: an empty host name returns the list of local IPs.
8173         Fixes bug #386637 part 1/2.
8174
8175 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8176
8177         * verify.c (mono_class_interface_implements_interface): Call
8178         mono_class_setup_interfaces ().
8179         (merge_stacks): Ditto.
8180
8181 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8184         klass->interfaces.
8185         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8186         (mono_generic_class_get_class): Ditto.
8187
8188 2009-02-06  U-QUACK\miguel  <miguel@quack>
8189
8190         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8191         they live in security.c
8192
8193         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8194         another bit from Paolo's code.
8195
8196 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8199         methods which will be discarded by add_imt_builder_entry ().
8200
8201         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8202         need to be boxed.
8203
8204         * loader.c: Add a statistics for the size of the memberref signature cache.
8205         
8206         * loader.c (find_cached_memberref_sig): New helper function.
8207         (cache_memberref_sig): Ditto.
8208
8209         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8210         they will be parsed again for every generic instantiation, leading to unbounded
8211         memory growth.
8212
8213 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8216         parameters of generic methods.
8217
8218         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8219         after the original method is copied to the inflated method.
8220         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8221
8222         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8223         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8224
8225         * class.c metadata.c: Update after the changes above.
8226
8227 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8228
8229         * metadata-verify.c: Simplified error handling and added
8230         section table validation.
8231
8232 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8233
8234         * class-internals.h (MonoClassExt): New structure containing rarely used
8235         fields of MonoClass.
8236         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8237         through a new 'ext' field.
8238
8239         * class.c (mono_class_alloc_ext): New helper function to allocate 
8240         class->ext.
8241
8242         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8243
8244 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8245
8246         * object.c (mono_object_get_virtual_method): Properly inflate
8247         generic methods.  Fixes #472692.
8248
8249 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8250
8251         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8252         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8253         for the parent type, the created type must be ready to be used on a generic
8254         instantiation.
8255         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8256         we won't have duplicated entries in generic_inst_cache.
8257
8258         Fixes #469553.
8259
8260 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8261
8262         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8263         replace with plain BSD per the comments on the bug MONO77637.
8264
8265 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8266
8267         * class.c (mono_class_get_generic_class): New accessor function.
8268         (mono_class_get_generic_container): Ditto.
8269
8270         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8271         fields, similar to the ones in MonoMethod.
8272
8273         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8274         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8275
8276         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8277         
8278         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8279         the same information as element_class->byval_arg.
8280
8281         * class.c reflection.c: Remove references to class->byval_arg.
8282
8283         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8284         klass->enum_basetype directly.
8285
8286         * verify.c metadata.c object.c icall.c reflection.c: Use 
8287         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8288         directly.
8289
8290 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8291
8292         * icall-def.h: Remove internal calls for sockets when
8293         DISABLE_SOCKET is defined, file system writing features when the
8294         OS only support reading and not writing data and Policy support if
8295         the Policy is disabled.
8296         
8297         * image.c (do_mono_image_open): Apply Paolo's patches for using
8298         mono_file_map_ APIs here.
8299
8300         * assembly.c: Add support for platforms to avoid prefix
8301         auto-detection. 
8302
8303 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8306         warning.
8307
8308         * class.c (mono_class_inflate_generic_class): New helper function.
8309
8310         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8311         statistics for inflated methods/classes.
8312
8313         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8314
8315         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8316         the call is made from Delegate.CreateDelegate () for the invoke method of
8317         a delegate.
8318
8319         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8320
8321         * metadata.c (mono_metadata_signature_size): New helper function.
8322
8323         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8324         generic instances.
8325
8326         * metadata.c (inflated_method_in_image): Avoid calling 
8327         mono_method_signature () if the method does not already have a signature.
8328
8329 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8330
8331         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8332         valuetype is compatible with target type, check by inheritance as a
8333         VT is not really compatible with System.ValueType, for example.
8334
8335         * verify.c (do_invoke_method): Improve error message.
8336
8337         * verify.c (do_box_value): If boxing a nullable, use the type argument
8338         on stack instead.
8339
8340         * verify.c (do_newobj): Improve error message.  
8341
8342         Fixes #469549.
8343
8344 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8345
8346         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8347
8348 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8349
8350         * generic-sharing.c: Don't hold domain lock when calling
8351         instantiate_other_info().  Fixes #471958.
8352
8353         * domain-internals.h, loader.c: Describe locking policy of domain
8354         lock vs loader lock.
8355
8356 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8357
8358         * verify.c (mono_delegate_signature_equal): Make it possible to check
8359         first-arg-bound delegates to static method.
8360
8361         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8362         static methods with the first arg bound.
8363
8364         Fixes #469529.
8365
8366 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8367
8368         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8369         errors.
8370
8371         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8372         under strict mode. Any type, when boxed can be seen as a reference type.
8373
8374         Fixes #469528.
8375
8376 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8377
8378         * object.h: The lower bound of an array is a signed integer value.
8379         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8380         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8381
8382         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8383         calculate the upper bound.
8384         
8385         Fixes #471252.
8386
8387 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8388
8389         From Paolo's work, refactored, cleared up:
8390         
8391         * threadpool.c, icall.c: ifdef code that requires a working socket
8392         stack.
8393
8394         * metadata.c (mono_metadata_field_info): Do not attempt to return
8395         a value from a function declared as void.
8396
8397         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8398         from the console stack.
8399
8400         * assembly.c: use strrchr instead of rindex.
8401
8402         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8403         alloca.h on systems that have it.
8404
8405         * environment.c: Avoid code that uses stuff from
8406         HAVE_SYS_UTSNAME_H
8407         
8408         * appdomain.c: Include sys/time.h.
8409
8410         * console-io.c: include sys/ioctl.h if it is available.
8411
8412 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8413
8414         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8415
8416         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8417         the method builder.
8418
8419         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8420         after it was created and cached, as the later is not thread safe.
8421         
8422 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8425         called while the debugging module is not initialized. Fixes #471669.
8426
8427 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8428
8429         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8430
8431         Fixes #471255.
8432
8433 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8434
8435         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8436         loader lock is not taken while the templates lock is held.  Fixes
8437         #471089.
8438
8439 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8440
8441         * metadata.c (type_in_image): Added a check to fix a monodis
8442         crash.
8443
8444 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8445
8446         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8447         nullable arguments.
8448
8449         * object.c (mono_runtime_invoke_array): Ditto.
8450         
8451         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8452         freeing wrappers of dynamic methods.
8453
8454         * loader.c (mono_free_method): Call it. Fixes #463323.
8455         
8456         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8457         methods taking vtype/byref arguments, to fix yet another bug caused by
8458         the sharing of runtime invoke wrappers. Partly fixes #471259.
8459
8460 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8463         <first file in file table>:1 when the IL offset does not have an associated
8464         line number.
8465
8466 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8469         variable info for a method.
8470
8471         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8472         
8473 2009-01-30  Jb Evain  <jbevain@novell.com>
8474
8475         * pedump.c: reuse code from monodis to make sure pedump honors
8476         MONO_PATH, which is needed to verify net_2_1 assemblies.
8477
8478 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8481         there is no line number info.
8482
8483 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8484
8485         Avoid some MonoType allocations
8486         * reflection.c (mono_reflection_initialize_generic_parameter):
8487         Reuse MonoType from param->pklass rather than allocating one.
8488         (mono_dynamic_image_free): Update to changes.
8489
8490 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8491
8492         Rearrange some code to improve consistency
8493         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8494         (mono_reflection_initialize_generic_parameter): ... here.
8495
8496 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8499         with type constraints as an experiment.
8500
8501         * boehm-gc.c (on_gc_notification): Update mono_stats.
8502
8503 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8504
8505         Avoid some allocations
8506         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8507         pointer to tail array to avoid extra allocation.
8508         * metadata.c (free_generic_inst): Update to changes.
8509         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8510         on-stack struct.
8511
8512 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8515         return TRUE if the two type objects are the same.
8516
8517 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8518
8519         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8520         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8521         klass->min_align, since klass->min_align contains the managed alignment,
8522         while the native alignment can be different, like for longs on x86.
8523         Fixes #469135.
8524
8525         * class-internals.h (MonoMarshalType): Add a min_align field.
8526
8527 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8528
8529         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8530         the 1.0 format.
8531
8532 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8533
8534         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8535         some comments about the usage of the used_regs field.
8536
8537         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8538         Fixes #469217.
8539
8540 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8541
8542         * appdomain.c: return NULL instead of throwing FileNotFoundException
8543         when LoadAssembly() fails.
8544
8545 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8546
8547         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8548         image if the owner is NULL.  Fixes the AOT failures.
8549
8550 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8553         MonoGenericParam structure using memset so the image field is initialized
8554         as well.
8555
8556 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8557
8558         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8559         a plain store.
8560
8561 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8562
8563         * class.c (mono_class_setup_vtable_general): In the generic instance
8564         optimization, set method->slot for abstract virtual methods. Fixes part of
8565         #467834.
8566
8567 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8568
8569         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8570         which signals that the unloading has started but all appdomain services must
8571         remain operational.
8572
8573         * appdomain.c (mono_domain_unload): The initial state for unloading now
8574         is unloading_start and we switch to unloading after the managed call to
8575         AppDomain::DomainUnload has finished.
8576
8577         The new unloading state has to be created because managed code in the
8578         DomainUnload event can depend on things like the threadpool still working.
8579         The domain must remain fully functional while the event executes.
8580
8581         This shown as an issue due to Process::WaitForExit, which waits for
8582         async reads of stdout and stderr to complete. Since those are processed
8583         in the threadpool the code deadlocks because the DomainUnload callback 
8584         waits for the async read finished event, which should have been set by a
8585         threadpool job but has been discarded due to the domain been in unload
8586         state.
8587
8588 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8589
8590         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8591         image must match.
8592
8593 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8594
8595         * reflection.c (resolve_object): For fields, inflate the class and
8596         then get the field in the inflated class.
8597
8598 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8599
8600         * object-internals.h (struct _MonoException): Added a comment
8601         explaining the new use of trace_ips.
8602
8603 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8604
8605         * generic-sharing.c (inflate_other_data): Inflate array methods
8606         correctly.
8607
8608         * loader.c, class-internals.h: Rename search_in_array_class() to
8609         mono_method_search_in_array_class() and make it non-static.
8610
8611 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8614         Hopefully fixes #458168.
8615
8616 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8617
8618         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8619         as it is performed elsewhere.
8620
8621         Code is contributed under MIT/X11 license
8622
8623 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8624
8625         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8626         requests queued.
8627         * object.c (mono_raise_exception): Increment the exceptions total
8628         counter when an exception is thrown.
8629         * class-internals.h: Add a location for storing the total number of
8630         asp.net requests served.
8631         * mono-perfcounters.c: Implement update support for asp.net counters
8632         from the class libraries. Implement read support for asp.net counters
8633         and exceptions total counter.
8634
8635 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8638         accessing klass->methods. Fixes #467385.
8639
8640 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8643         for byval arguments without an [Out] attribute. Fixes #467212.
8644
8645         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8646         Fix compilation under android.
8647         
8648         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8649         processed, scan them directly after they are copied, to achieve better locality
8650         and cache usage.
8651
8652         * socket-io.c: Applied patch from Koushik Dutta
8653         (koush@koushikdutta.com). Disable IPV6 when running under android.
8654
8655 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * icall.c (ves_icall_InternalExecute): Add write barriers.
8658
8659         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8660         the GC code.
8661
8662         * sgen-gc.c: Implement write barriers in IL code.
8663
8664 2009-01-17  Geoff Norton  <gnorton@novell.com>
8665
8666         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8667
8668 2009-01-17  Geoff Norton  <gnorton@novell.com>
8669
8670         * image.c: When unloading the image->references table, there can be gaps
8671         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8672         when unloading an appdomain.
8673
8674 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8677         speed up ptr-in-nursery checks.
8678
8679         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8680         threads_lock () to prevent deadlocks.
8681
8682         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8683         does not need to be scanned during minor collections, since writes to it
8684         must use write barriers.
8685
8686 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8687
8688         * metadata-verify.c: Add pe nt header verification.
8689         
8690 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8691
8692         * gc.c: Fix a few warnings when using SGEN.
8693
8694 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8695
8696         * metadata-verify.c: Add pe optional header verification.
8697
8698 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * sgen-gc.c: Add support for user defined marker functions, used by
8701         MonoGHashTable to avoid registering a GC root for every hash node.
8702
8703 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8704
8705         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8706         non-pinned roots into separate hashes to avoid having to traverse them
8707         in functions which are only interested in one kind.
8708
8709 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * metadata-verify.c: Add pe header machine field verification.
8712         
8713 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8714
8715         * metadata-verify.c: Add pe header size verification.
8716
8717 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8718
8719         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8720         using the GC, they don't contain references.
8721
8722         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8723
8724 2009-01-13  Geoff Norton  <gnorton@novell.com>
8725
8726         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8727         AppDomains created on the native side can be cleaned up on the native side.
8728
8729 2009-01-13  Geoff Norton  <gnorton@novell.com>
8730
8731         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8732         as well as the managed api.
8733
8734 2009-01-13  Geoff Norton  <gnorton@novell.com>
8735
8736         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8737         with a MonoAppDomain initialized against it.
8738
8739 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8742         
8743         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8744
8745         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8746         into the wrapper caches. Fixes #465700.
8747
8748         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8749         method builder.
8750         (mono_mb_create_method): Set the clauses from the method builder.
8751
8752 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8753
8754         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8755         Patch from Makoto Kishimoto.
8756
8757 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8760         encoding them as ROOT_DESC_COMPLEX.
8761         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8762
8763 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8766         no longer point to the nursery.
8767
8768         * sgen-gc.c: Add a few comments/FIXMEs.
8769         
8770         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8771
8772         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8773         initialization of the various _method variables thread safe. Fixes
8774         #465377.
8775
8776 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8777
8778         * domain.c, domain-internals.h: Remove the shared_generics_hash
8779         and its lookup functions.
8780
8781 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8782
8783         * socket-io.c:  Fixing the MSVC build. 
8784
8785         Code is contributed under MIT/X11 license.
8786
8787 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8788
8789         * metadata-verify.c: Add pe header watermark verification.
8790
8791 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8792
8793         * metadata-verify.c: Add lfanew verification.
8794
8795 2009-01-12  Jb Evain  <jbevain@novell.com>
8796
8797         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8798         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8799
8800 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * socket-io.c: Fix the build.
8803
8804         * environment.c: Fix an #ifdef.
8805
8806 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * threadpool.c (async_invoke_thread): Handle the wait function returning
8809         WAIT_IO_COMPLETION as well.
8810         (async_invoke_io_thread): Ditto.
8811
8812 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8813
8814         * threads.c: Fixing the Windows build.
8815
8816         Code is contributed under MIT/X11 license.
8817
8818 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8819  
8820         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8821         interrupt a wait.
8822         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8823         the thread to wait again.
8824
8825 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8826
8827         * metadata-verify.c: Initial skeleton of the metadata verifier.
8828
8829         * pedump.c: Add support for the metadata verifier.
8830
8831         * verify-internal.h: Export the whole assembly metadata verifier function.
8832
8833 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8836
8837 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * Makefile.am: Upgrade dtrace-prelink.sh location.
8840
8841 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8842
8843         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8844         well. Otherwise the shutdown deadlock that happens on unix will can happen
8845         as well.
8846         If the main thread code finishes too fast it's possible that the finalizer
8847         thread won't have executed yet, won't record itself as the finalizer thread
8848         and the shutdown sequence will wait on it forever.
8849
8850 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8851
8852         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8853         with MSVC.
8854
8855 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8856
8857         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8858         Robert Jordan for pointing this out.
8859
8860 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8861
8862         * icall.c
8863         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8864         ves_icall_System_IO_DriveInfo_GetDriveType.
8865
8866 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8867
8868         * icall.c: Wrap calls to mono_strtod in CriticalSection
8869         invocations when using eglib, to work around #464316.
8870
8871 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8872
8873         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8874         return value of GetCurrentDirectory to never access unitialized memory.
8875
8876 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8877
8878         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8879         return value of GetCurrentDirectory and expand the buffer if needed.
8880
8881         Fixes #459094.
8882
8883 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8884
8885         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8886           Adding a call to mono_init_com_types.
8887
8888         Code is contributed under MIT/X11 license.
8889
8890 2009-01-07  Geoff Norton  <gnorton@novell.com>
8891
8892         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8893         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8894         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8895         be the value of the ip buffer.
8896
8897 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8898
8899         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8900         interfaces_packed here.
8901
8902         Fixes part of #463294.
8903
8904 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8905
8906         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8907
8908         Fixes part of #463294.
8909
8910 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8911
8912         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
8913         is a boxed complex as well.
8914
8915         Fixes part of #463294.
8916
8917 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8918
8919         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
8920         control if a methodspec should be created for the generic method definition from external assemblies.
8921         Caching of methodspec is done using the handleref hash table.
8922
8923         Fixes #462592.
8924
8925 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
8926
8927         * loader.c (find_method): When searching the interfaces of a class
8928         check the transitive closure of implemented interfaces.
8929
8930         Fixes #463303.
8931
8932 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8933
8934         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
8935         
8936 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8937
8938         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
8939         interfaces calculation to fill_valuetype_array_derived_types.
8940
8941         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
8942         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
8943         for example.
8944
8945         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
8946         interfaces for valuetypes if needed.    
8947
8948         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
8949         for their basetype as well. Types are array expanded if rank is > 0.
8950
8951         Fixes #400716.
8952
8953 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
8954
8955         * socket-io.h : Changing the signature of
8956           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
8957           the blocking state.
8958
8959         * icall-def.h :  Changing the signature of
8960           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
8961
8962         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
8963           For Windows only.  Avoid blocking when calling accept by
8964           querying for a connection via select.  The loop also queries
8965           the thread state every 1000 micro seconds for the thread
8966           stop state.  This will avoid the process hanging on shutdown
8967           when using a TcpChannel that is never connected to.
8968
8969         Code is contributed under MIT/X11 license.
8970
8971 2008-12-30  Marek Safar  <marek.safar@gmail.com>
8972
8973         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
8974
8975 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8976
8977         * class.c (get_implicit_generic_array_interfaces): Extract common
8978         code to a helper function making it a lot easier on the eyes.
8979
8980 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8981
8982         * class.c (get_implicit_generic_array_interfaces): If the internal
8983         enumerator is an interface inflate System.Object instead of itself.
8984
8985         Fixes #461261.
8986
8987 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
8988
8989         * object.c (mono_runtime_invoke_array): Don't assert with
8990         byref nullable types.
8991
8992         * marshal.c (mono_marshal_get_runtime_invoke): To handle
8993         byref nullables we unbox the object and store it on the
8994         stack. 
8995         We can't use the boxed object since it is the T of Nullable<T>
8996         and the boxed representation of a nullable it's underlying type
8997         or null.
8998         We could cheat and create a boxed nullable and use the same
8999         machinery of other byref VTs but this feels like a hack and
9000         using the stack has the bonus of reducing heap pressure.
9001
9002         Fixes #461941.
9003
9004 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9005
9006         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9007         return value.
9008
9009         Fixes #461867.
9010
9011 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9012
9013         * icall-def.h : Adding an internal call definition for 
9014           System.Environment.internalBroadcastSettingChange.
9015
9016         * icall.c : Adding a Windows only implementation to broadcast a 
9017           WM_SETTINGCHANGE when an environment variable has changed.
9018
9019         Code is contributed under MIT/X11 license.
9020
9021 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9022
9023         * class.c, class-internals.h: Made
9024         mono_class_has_parent_and_ignore_generics() non-static.
9025
9026 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9027
9028         * image.c: deal with the mmap failing when loading an image.
9029
9030 2008-12-17  Geoff Norton  <gnorton@novell.com>
9031
9032         * threadpool.c: Ensure that the io_queue_lock is initialized
9033         in all circumstances, as we always attempt to cleanup against it.
9034
9035 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9036
9037         * icall.c (ves_icall_System_Environment_get_Platform): For
9038         compatibility reasons for existing client code we will keep
9039         returning 4 for a while.   
9040
9041         For how long will depend on the documentation being updated, and
9042         for us to give client code a chance to be updated.
9043
9044         This reverts the original decison on #433108 since we did not
9045         catch roughly 33 instances of the broken code in our own source
9046         code base, we did not catch failures on the buildbots, and QA did
9047         not bring this as a problem.
9048
9049         Only today I found some customer's code breaking due to our own
9050         class libraries not being fully updated and tracked it down to
9051         this change.  I am reverting it because if we could not even get
9052         our story straight in our own code base, how can we hope that our
9053         end user code be fixed?
9054
9055         As of this morning, our Wiki page that documents how to detect
9056         Unix had not been fixed.    
9057
9058 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9059
9060         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9061
9062         * class.c (mono_class_get_fields): Handle loading errors.
9063
9064 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9065
9066         * 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.
9067         
9068 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9069
9070         * mono-perfcounters.c: avoid warning.
9071
9072 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9073
9074         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9075         make sure all interfaces have MonoClass::interface_id set.
9076
9077         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9078         method table is property set.
9079
9080 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9081
9082         * class.c: New function mono_class_setup_interface_id that setup
9083         MonoClass::interface_id if needed.
9084
9085         * class-internals.h: Export new function.
9086
9087 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9088
9089         * class.c: Add code to sanity check the vtable after setup_vtable_general
9090         has done it's work.
9091
9092 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9093
9094         * icall.c: make Assembly.GetExecutingAssembly work properly when
9095         reflection is used to invoke the method.
9096         Bug #321781 fixed.
9097
9098 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9099
9100         * metadata/generic-sharing.c: Look for constraints in all type
9101         arguments, not just the first one.
9102
9103 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9104
9105         * appdomain.c: return the correct CodeBase for an Assembly instance
9106         that was loaded from the shadow-copy directories.
9107         Bug #458190 fixed.
9108
9109 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9112
9113         * sgen-gc.c (check_object): New debugging helper function.
9114
9115         * object.c: Fix calls to mono_value_copy_array ().
9116
9117 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9118
9119         * class.c (mono_class_setup_fields): If working on an inflated class
9120         first check if the generic definition did init with success.
9121
9122         Fixes #445361.
9123
9124 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9125
9126         pedump.c (main): Fix a warning.
9127
9128 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9129
9130         * object-internals.h : Adding a definition for 
9131           MonoReflectionComVisibleAttribute.
9132
9133         * marshal.c (cominterop_com_visible) :  Method added to check the 
9134           ComVisible attribute of a class.
9135
9136         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9137           cominterop_raise_hr_exception added to consolidate common code 
9138           to raise hr exceptions.
9139
9140         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9141           if a managed class should support IDispatch.
9142
9143         * marshal.c 
9144           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9145           Added additional checks for managed object when getting 
9146           an IDispatch interface.
9147
9148         Code is contributed under MIT/X11 license.
9149
9150 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9151
9152         pedump.c (main): Handle mono_get_method () returning NULL. 
9153
9154 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9155
9156         * marshal.h: Fix a warning.
9157
9158 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9159
9160         * marshal.c : Adding cominterop_release_all_rcws to release all
9161           runtime callable wrappers held by the runtime.
9162
9163         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9164           
9165         Code is contributed under MIT/X11 license.
9166
9167 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * metadata.c (mono_image_alloc_lock): New helper function.
9170         (mono_image_alloc0_lock): Ditto.
9171
9172         * metadata.c: Use the alloc_lock () helper functions for allocating
9173         memory from the image mempool.
9174
9175 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * class.c (mono_class_from_generic_parameter): Document it's
9178         locking behavior. Fix double checked locking here, we stored in
9179         param->pklass a partially initialized MonoClass and no membar was used.
9180
9181 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9182
9183         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9184         (3) functions are present in the C library use them to do the
9185         job. If they are absent, make sure that the sum of int_part and
9186         dec_part is rounded before returning. This is necessary due to the
9187         division of dec_part by the power of 10 before the final addition
9188         is performed - if the result is not rounded in some cases it will
9189         yield invalid results.
9190
9191 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9192
9193         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9194         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9195         instruction instead of a pointer constant.
9196
9197 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * loader.c (mono_method_get_header): Do most of the work outside the
9200         loader lock, to avoid assembly load hook deadlocks.
9201
9202         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9203         (mono_metadata_parse_type_full): Ditto.
9204
9205 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9206
9207         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9208         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9209         funtions. Finally, use a lock to produce well ordered output.
9210
9211         The lock looks silly, as all calls to the corlib mempool should be guarded
9212         with the loader lock, but for some reason this fact doesn't help. 
9213
9214         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9215
9216 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9217
9218         * socket-io.c: 64 bit big-endian fixes.
9219
9220 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9221
9222         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9223         targets that require strict compatibility between the types.
9224
9225         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9226         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9227         Kill the strict argument and create a new one valuetype_must_be_boxed.
9228
9229         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9230         state that all valuetypes must be boxed.
9231
9232         Fixes #448560.
9233
9234 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9235
9236         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9237         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9238
9239         Contributed under MIT/X11 license.
9240
9241 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9244         the inflate_generic_type machinery should handle it.
9245
9246         This avoids a crash when the field's flags is zero and it's type is
9247         a primitive.
9248         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9249         is zero and will return one of the cached built-in primitive types. Since
9250         those types live in read-only memory, the code that copies it crashes.  
9251
9252 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9253
9254         * object.c: Don't put function descriptors into generalized IMT
9255         thunks.
9256
9257 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9258
9259         * class.c: Enable generic code sharing on PPC64.
9260
9261 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9262
9263         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9264         from mini/mini.c.
9265
9266         * generic-sharing.c: Allocate the method template slists from the
9267         image mempool so it doesn't leak.
9268
9269 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9270
9271         * class.c (generic_array_methods): Release the linked list.
9272
9273 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9274
9275         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9276         invocation to g_utf16_to_utf8().
9277
9278 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9279
9280         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9281         arguments on big endian archs.
9282
9283 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9284
9285         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9286         the type name (test added in corlib).
9287
9288 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9289
9290         * pedump.c: initialize perf. counters. Fixes a segv.
9291
9292 2008-11-25  Martin Baulig  <martin@ximian.com>
9293
9294         * mono-debug-debugger.c
9295         (mono_debugger_runtime_invoke): Return the exception object if an
9296         exception was thrown.  Visual Studio displays the exception object
9297         in the locals window.
9298
9299 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9300
9301         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9302         ftnptr.
9303
9304 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9305
9306         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9307         MONO_TYPE_U are sizeof (gpointer), too.
9308
9309 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9310
9311         * marshal.c (mono_type_native_stack_size): Fixed size and
9312         alignment for reference types.
9313
9314 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9315
9316         * class.c (mono_class_generic_sharing_enabled): Disable generic
9317         code sharing for PPC64.
9318
9319 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9320
9321         * icall.c (mono_method_get_equivalent_method): Make sure
9322         method->klass->methods is inited before looping over it.
9323
9324 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9325
9326         * object.c: when calling ExecuteAssembly in a newly created domain,
9327         the configuration file and application base are already set up.
9328         Bug #446353 take 2 fixed.
9329
9330 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9331
9332         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9333         Fixes #444715. Fix a warning.
9334
9335 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9336
9337         * appdomain.c: write the full path of the assembly to the .ini file
9338         created when "shadow-copying"
9339         Bug #446353 fixed.
9340
9341 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9342
9343         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9344         if signature==FALSE.
9345
9346 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9347
9348         * marshal.h : Fix the cygwin build.
9349            marshal.c:12442: undefined reference to `_IID_IMarshal'
9350           
9351         Code is contributed under MIT/X11 license.
9352
9353 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9354
9355         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9356           free threaded marshaler when QueryInterface is called on a COM callable
9357           wrapper requesting the IMarshal interface.
9358           
9359         Code is contributed under MIT/X11 license.
9360
9361 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9362
9363         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9364
9365         * reflection.c (mono_type_get_object): Special case the very common
9366         void type.
9367
9368         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9369         hold typeof(void).
9370
9371 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9372
9373         * process.h : Adding method declaration for
9374           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9375           
9376         * process.c : Adding implementation for
9377           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9378           
9379         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9380           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9381
9382         Code is contributed under MIT/X11 license.
9383
9384 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9385
9386         * appdomain.c (unload_thread_main): Clean up threadpool by
9387         calling mono_thread_pool_remove_domain_jobs.
9388
9389         * domain-internals.h (struct _MonoDomain): Add new fields to
9390         help coordinate the cleanup of the threadpool.
9391
9392         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9393         that cleans up the threadpool of all jobs associated with an appdomain.
9394         It does that by cleaning up the queues and making sure all active
9395         threads are accounted.
9396
9397         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9398         unloaded or in the process of. Take this is such way that there is
9399         no race condition between another thread starting the unload and the
9400         current thread acknowledging it.
9401
9402         * threadpool.c (async_invoke_thread): Same.
9403
9404         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9405         firing the new thread.
9406
9407         * threadpool.c (start_tpthread): Same.
9408
9409         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9410
9411         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9412
9413 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9414
9415         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9416         Add support for DuplicateHandle.
9417         
9418         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9419         Add support for DuplicateHandle.
9420         
9421         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9422         Add support for DuplicateHandle.
9423
9424         Code is contributed under MIT/X11 license.
9425
9426 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9427
9428         * class-internals.h: Make min_align into a whole byte.
9429
9430         * class.c: Set min_align for SIMD types to 16.
9431
9432 2008-11-05  Geoff Norton  <gnorton@novell.com>
9433
9434         * attach.c: Default the attacher to enabled for all cases including
9435         embedded.
9436
9437 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9438
9439         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9440         change r117650.
9441
9442 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9443
9444         * monitor.c, monitor.h: New function for querying offsets of
9445         members of MonoThreadsSync.
9446
9447 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9450         to speed up this function and to avoid the boundless memory growth caused by
9451         the signature_dup () calls.
9452
9453 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9454
9455         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9456         wrapper.
9457
9458         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9459         by 1 bit.
9460
9461         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9462
9463 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9464
9465         * appdomain.c:
9466         * domain-internals.h: made mono_set_private_bin_path_from_config()
9467         "internal".
9468         * object.c: call the above function after setting the configuration
9469         file path for the root domain.
9470         Fixes bug #314478.
9471
9472 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9473
9474         * assembly.c: when the assembly is loaded from an absolute path, end
9475         basedir with a directory separator.
9476         Bug #440781 fixed.
9477
9478 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9479
9480         * monitor.c (mono_monitor_get_fast_enter_method): If
9481         CompareExchange is not available, don't create the fastpath
9482         instead of asserting.  (The method is missing in the 1.1 profile.)
9483
9484 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9485
9486         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9487
9488         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9489         Monitor.Exit IL fastpaths.
9490
9491 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9492
9493         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9494
9495 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * class.c (mono_class_create_from_typedef): Added Vector2l.
9498
9499 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9500
9501         * class.c (mono_class_create_from_typedef): Added Vector2d.
9502
9503 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9504
9505         * appdomain.c: translate \ into / for cache_path.
9506         * domain-internals.h: new mono_is_shadow_copy_enabled().
9507         * icall.c: (fill_reflection_assembly_name) do the same path
9508         manipulations that get_code_base does.
9509         (get_code_base) use mono_is_shadow_copy_enabled.
9510
9511 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9512
9513         * appdomain.c: shadow-copied assemblies go to CachePath +
9514         ApplicationName when both are set. DynamicBase has nothing to do with
9515         shadow copies.
9516         Bug #406877 fixed.
9517
9518 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9521         STANDALONESIG table.
9522
9523         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9524         standalone signatures.
9525
9526         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9527         comparison code: instead of comparing the signatures using a custom
9528         equals function, transform them to a common signature and compare that. This
9529         works better with AOT.
9530
9531 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9532
9533         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9534
9535         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9536         call for generic instances.
9537         (mono_class_setup_properties): Call setup_properties () before accessing
9538         gklass->properties.
9539
9540         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9541         over the virtual methods of a class using metadata if possible, avoiding the
9542         creation of MonoMethod's for non-virtual methods.
9543         
9544         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9545         get_virtual_methods () to iterate over the virtual methods of classes.
9546
9547 2008-10-25  Martin Baulig  <martin@ximian.com>
9548
9549         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9550
9551 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9552
9553         * class.c (mono_class_create_from_typedef): Added Vector4i.
9554
9555 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9556
9557         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9558         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9559         special-casing applies to eliminate the call completely.
9560
9561 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9562
9563         * class.c (mono_class_create_from_typedef): Added Vector8s.
9564
9565 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9568
9569 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9570
9571         * icall.c: get rid of annoying warning.
9572
9573 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9574
9575         * threadpool.c: in 1.x, if you change the background status of the
9576         threadpool thread, it's not reset.
9577         Remove unnecessary calls to SetState.
9578
9579 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9580
9581         * threadpool.c: asynchronously create a set of idle threads upon first
9582         use of the threadpool. SetMinThreads will now start the appropriate
9583         number of idle threads if they are not already running. The default is
9584         1 threadpool thread per CPU. Increased the maximum number of threads
9585         per CPU to 10.
9586
9587 2008-10-22  Martin Baulig  <martin@ximian.com>
9588
9589         Revert r116521 from Zoltan, it breaks the debugger:
9590
9591         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9592         over the virtual methods of a class using metadata if possible, avoiding the
9593         creation of MonoMethod's for non-virtual methods.
9594         
9595         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9596         get_virtual_methods () to iterate over the virtual methods of classes.
9597
9598 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9599
9600         * threads.c: when creating a threadpool thread, set its state to
9601         'background'.
9602         * threadpool.c: reset the background state of a threadpool thread
9603         after finishing each work item
9604         Bug #437888 fixed.
9605
9606 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9609         
9610         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9611         generic instances which works by inflating the methods in the container
9612         class's vtable.
9613
9614         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9615         variant which doesn't make a copy if no inflation was done.
9616         (mono_class_setup_fields): Use it.
9617
9618         * metadata.c (mono_metadata_get_shared_type): New helper function to
9619         return a shared instance of a given MonoType.
9620
9621         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9622         a copy of most non-generic types.
9623
9624 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9625
9626         * threadpool.c: remove one more GetSystemInfo () call.
9627
9628 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9629
9630         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9631         use the code in mono-proclib.h to get processor information.
9632
9633 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9634
9635         * appdomain.c: fixed the logic that determines whether assemblies in a
9636         directory are "shadow-copied" or not. Bug #433483 fixed.
9637
9638 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9641         warning.
9642
9643 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9646         returning a vtype.
9647
9648         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9649         reflection.c: Use mono_field_get_name () for accessing a field's name.
9650
9651         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9652         class.c
9653
9654         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9655         field.
9656
9657         * loader.c (find_method_in_class): Reenable the metadata optimization by
9658         not using it for generic instances.
9659
9660         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9661         data/def_type fields from MonoClassField into a separate structure.
9662         (struct MonoClassField): Remove data/def_type fields.
9663         (struct _MonoClass): Add a 'field_def_values' array to store the default
9664         values/RVA for fields.
9665
9666         * class.c reflection.c: Update after the changes.
9667         
9668         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9669         for accessing field->data.
9670
9671         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9672
9673         * loader.c (find_method_in_class): Revert the last change for now as
9674         it breaks Mono.C5 unit tests.
9675
9676         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9677         'field_generic_types' and 'field_objects' which contain the information
9678         previously stored in MonoInflatedField.
9679         (MonoInflatedField): Delete.
9680         (struct _MonoClassField): Delete 'generic_info' field.
9681
9682         * reflection.c: Store the information which was previously in 
9683         field->generic_info in MonoDynamicGenericClass instead.
9684
9685         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9686         MonoClassField changes.
9687
9688 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9689
9690         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9691         store the value inside the data array of the MonoMethodWrapper.
9692         This saves memory, is faster and fixes the lifetime issues (methods
9693         were never removed from the hash previously). May also fix bug#436996.
9694
9695 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9696
9697         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9698         generic instances, compute the type from the generic definition instead of
9699         looking in field->generic_info.
9700
9701         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9702         for inflated fields, the only user was get_fieldref_token () which no
9703         longer needs it.
9704
9705         * class.c (mono_class_init): Revert the last change as it seems to cause
9706         crashes.
9707
9708         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9709         bytes on 64 bit platforms.
9710
9711         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9712         
9713         * object.c (mono_class_create_runtime_vtable): Don't initalize
9714         field->data/field->def_type here, it is done lazily by 
9715         mono_class_get_field_default_value ().
9716
9717         * icall.c (ves_icall_get_enum_info): Call 
9718         mono_class_get_field_default_value () instead of directly accessing
9719         field->data and field->def_type.
9720
9721         * object.c (get_default_field_value): Ditto.
9722
9723         * class.c (mono_field_get_data): Ditto.
9724         
9725         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9726         call for generic instances.
9727
9728         * loader.c (find_method_in_class): If klass != from_class, then inflate
9729         the method with the context of from_class, since the caller assumes this.
9730
9731 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9734         for accessing method->slot.
9735
9736 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9737
9738         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9739
9740 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9741
9742         * class.c (mono_method_get_vtable_index): Use
9743         mono_method_get_vtable_slot () for accessing method->slot.
9744
9745         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9746         accessing klass->methods.
9747
9748         * class.c (mono_method_get_vtable_slot): New helper function.
9749         (mono_class_get_vtable_entry): Ditto.
9750         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9751         accessing method->slot.
9752
9753         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9754         method to get_inflated_method ().
9755
9756         * class.c (mono_class_get_inflated_method): New helper method to obtain
9757         a method of an inflated class without calling setup_methods ().
9758         (mono_class_get_cctor): Use get_inflated_method.
9759
9760         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9761         
9762         * marshal.c image.c: Lazily create all the marshal caches.
9763
9764         * image.c (mono_image_init): Move initialization of runtime_invoke
9765         caches to marshal.c.
9766
9767         * marshal.c (get_cache): New helper function to lazily initialize a 
9768         wrapper cache.
9769         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9770
9771         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9772
9773 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9774
9775         * loader.c: fixed check for interface type.
9776
9777 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9778
9779         * appdomain.c: check for NULL setup before it's referenced.
9780
9781 p
9782 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9783
9784         * class.c: remove the unused old vtable setup code.
9785
9786 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9787
9788         * class.c: don't depend on interface order in
9789         setup_interface_offsets (bug #435777).
9790         * reflection.c: sort the InterfaceImpl table (patch from
9791         Jb Evain  <jbevain@novell.com>).
9792
9793 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9794
9795         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9796         the low level assemblies lock.
9797
9798 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9799
9800         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9801         object.c, reflection.c, socket-io.c, threads.c: introduced
9802         mono_framework_version () to return the major framewrok version,
9803         changed the code that was using more complex patterns to use it.
9804         Return the correct value for PlatformID for OSX.
9805
9806 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9807
9808         * icall-def.h, process.h, process.c: added an icall to get info about
9809         processes using mono-proclib.
9810
9811 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9812
9813         * mono-perfcounters.c: use the mono-proclib functions to
9814         access process information.
9815
9816 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9817
9818         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9819         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9820         reflection.c: remove rawbuffer usage: mmap support is more sanely
9821         provided by utils/mono-mmap.
9822
9823 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9824
9825         * gc.c: use posix semaphores when possible so that
9826         mono_gc_finalize_notify() is signal safe.
9827
9828 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9831         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9832         be #ifdef-ed out, the linker will remove the rest.
9833
9834         * marshal.c: Implement DISABLE_COM.
9835
9836         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9837
9838 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9839
9840         * locales.c (string_invariant_compare_char): Optimization: do not
9841         call g_unichar_type unless we actually need the information.
9842
9843 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9844
9845         * object.c, class-internals.h: Also create remoting trampolines
9846         for generic methods.  Pass the domain to the remoting trampoline
9847         creation function, too.
9848
9849 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9852
9853 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9854
9855         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9856         Vector4ui.
9857
9858 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9859
9860         * assembly.c:
9861         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9862
9863 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9864
9865         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9866         for the least possible amount of time (extending the fix in r113458).
9867
9868 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9869
9870         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9871
9872 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9873
9874         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9875         as possible simd intrinsic types.
9876         Optimized the test to check for the common prefix first.
9877
9878 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9879
9880         * class.c: back out part of a broken optimization committed on
9881         May 23th (bug #433908).
9882
9883 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9884
9885         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9886         Win32.  Should fix #432388 for most cases until we have the new
9887         profiler on Win32.
9888
9889 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9890
9891         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9892         instead of using inst->id so the hash is stable for AOT.
9893
9894 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9895
9896         * appdomain.c:
9897         * icall.c: create a .ini file for shadow-copied assemblies that
9898         contains the location of the original assembly. Use this to return the
9899         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9900         Also fix the number of '/' for windows when returning the CodeBase.
9901         Fixes bug #430920.
9902
9903 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9904
9905         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9906
9907         Code is contributed under MIT/X11 license.
9908
9909 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9910
9911         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
9912           if if the class vtable needs initialized.
9913
9914         Code is contributed under MIT/X11 license.
9915
9916 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9917
9918         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
9919           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
9920           STRING->BSTR, and CLASS->INTERFACE.
9921
9922         Code is contributed under MIT/X11 license.
9923
9924 2008-10-07  Marek Habersack  <mhabersack@novell.com>
9925
9926         * sysmath.h: changed the declaration of the
9927         ves_icall_System_Math_Round2 icall by adding an extra
9928         away_from_zero parameter.
9929
9930         * sysmath.c (ves_icall_System_Math_Round2): added support for
9931         away from zero rounding. The icall now takes an extra boolean
9932         parameter to signal that away from zero operation is requested.
9933
9934 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
9937         the delegate klass so it can work with full-aot.
9938         (mono_marshal_get_delegate_end_invoke): Ditto.
9939         (mono_marshal_get_delegate_invoke): Ditto.
9940
9941 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
9942
9943         * gc.c, attach.h, attach.c: remove a bad pattern:
9944         add_finalizer_callback () is not implemented correctly, it can't
9945         without adding more overhead to the finalizer loop and it's not
9946         even needed, since we know exactly what we need to call, so there is
9947         no need to do so through an expensive function pointer.
9948
9949 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
9952         for the no-gc case.
9953         * attach.c (mono_attach_init): Remove the #ifdef.
9954
9955 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
9956
9957         * attach.c (mono_attach_init): Don't use
9958         mono_gc_add_finalizer_thread_callback when compiling without GC.
9959         Fixes #432306.
9960         
9961         Code is contributed under MIT/X11 license.
9962
9963 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * class.c (mono_class_create_from_typedef): Remove the 
9966         #ifndef DISABLE_SIMD stuff.
9967
9968 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9969
9970         * class-internals.h (MonoClass): Added simd_type bit field.
9971
9972         * class.c (mono_class_create_from_typedef): Check if type is a simd
9973         intrinsic.
9974
9975 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9976
9977         * object.c (mono_method_add_generic_virtual_invocation): Only add
9978         instantiations to the thunk whose count is at least as large as
9979         the threshold.
9980
9981 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
9982
9983         * icall.c: changed the Type of the exception thrown when trying to
9984         invoke a constructor on an abstract class. Part of the fix for bug
9985         #324185.
9986
9987 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9988
9989         * class.c, class-internals.h (mono_method_get_vtable_index): New
9990         function which returns the index into the vtable and properly
9991         handles inflated virtual generic methods.
9992
9993 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9994
9995         * object.c, domain.c, object-internals.h, domain-internals.h:
9996         Generalize IMT thunk machinery to also handle thunks for virtual
9997         generic method invokes.  When a virtual generic method is invoked
9998         more than a number of times we insert it into the thunk so that it
9999         can be called without lookup in unmanaged code.
10000
10001         * generic-sharing.c, class-internals.h: Fetching a
10002         MonoGenericInst* for a method from an (M)RGCTX.
10003
10004 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10007         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10008         marshalling. Fixes #431304.
10009
10010 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10011
10012         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10013           handle when ref is specified without In or Out.
10014
10015         Code is contributed under MIT/X11 license.
10016
10017 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10018
10019         * loader.c (mono_get_method_constrained): Don't expand method with
10020         the class's context, because it's already a method of that class.
10021
10022 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10023
10024         * attach.c : should be correct build fix.
10025
10026 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10027
10028         * attach.c: Fix the previous change.
10029
10030 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10031
10032         * attach.c : quick w32 build fix.
10033
10034 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10035
10036         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10037         crashes MonoDevelop: #430455.
10038
10039 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10040
10041         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10042         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10043
10044         * domain.c: Remove initialization/cleanup of the removed fields.
10045
10046 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10047
10048         * class.c (mono_class_generic_sharing_enabled): Enable generic
10049         code sharing for PPC.
10050
10051 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10052
10053         * attach.c : Fixing the Windows builds.
10054
10055         Code is contributed under MIT/X11 license.
10056
10057 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10058
10059         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10060         the default generic sharing mode to 'all'.
10061
10062 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10063
10064         * generic-sharing.c, class-internals.h: New function for checking
10065         whether a method needs a static RGCTX invoke wrapper.  A few
10066         funtions moved from mini/generic-sharing.c.
10067
10068         * icall.c: New function used.
10069
10070 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10071
10072         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10073         Static RGCTX invoke wrapping applies to value type methods, too.
10074
10075         * class.c (mono_class_setup_vtable_general): In generic-shared
10076         value types, wrap methods with a static RGCTX invoke wrapper.
10077
10078 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10081         osx build.
10082
10083 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10084
10085         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10086         register a callback which is called when the finalizer thread is woken
10087         up.
10088         (finalizer_thread): Call the callback if it exists.
10089
10090         * attach.h attach.c: New files, implementing the attach mechanism.
10091
10092         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10093         
10094         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10095         by the previous change.
10096
10097 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10098
10099         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10100         loader.c, marshal.c, metadata-internals.h, metadata.c,
10101         method-builder.c, object.c, reflection.c: introduced specific functions
10102         to allocate from the domain and image mempools and cleaned up most of
10103         the code to use them (still missing a few in reflection.c).
10104         Keep the loader bytes counter updated.
10105
10106 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10107
10108         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10109         loader-related counters.
10110
10111 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10112
10113         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10114         added more MS-compatible counters.
10115
10116 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10117
10118         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10119         class->blittable. Fixes #428217.
10120
10121 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * reflection.c (mono_image_get_field_on_inst_token): Call 
10124         field_encode_signature () since that handles custom modifiers too.
10125         Fixes #424663.
10126
10127 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10128
10129         * reflection.c (add_custom_modifiers): New helper function to merge custom
10130         modifiers stored in objects to a MonoType.
10131         (fieldref_encode_signature): Encode custom modifiers.
10132         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10133         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10134
10135 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10136
10137         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10138         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10139         64-bit IL only images because imports are not resolved for IL only images.
10140         Special thanks to Bill Holmes for finding this bug and testing the patch.
10141         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10142
10143         Contributed under MIT/X11 license.
10144
10145 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10146
10147         * mono-config.c (dllmap_start): Add support for the bits keyword
10148         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10149
10150 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10151
10152         * reflection.c (inflate_mono_method): When the class the method is
10153         to be inflated for is itself not inflated, just return the method.
10154
10155 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10156
10157         * mono-perfcounters.c: use more user friendly process instance names.
10158
10159 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10160
10161         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10162           handle "[in] ref" and "[in][out] ref" cases.
10163
10164         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10165           to mono_mb_create_method.  This was causing problems calling native to
10166           managed passing Variants by value.
10167
10168         Code is contributed under MIT/X11 license.
10169
10170 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10171
10172         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10173         before accessing the friend_assembly_names field.
10174
10175         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10176         times.
10177         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10178         called lazily when it is needed.
10179
10180         * metadata-internals.h (struct _MonoAssembly): Add 
10181         'friend_assembly_names_inited' flag.
10182
10183 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10184
10185         * mono-perfcounters-def.h: fix the types of a few counters.
10186         * mono-perfcounters.c: implemented the instance names getter
10187         and a few bugfixes.
10188
10189 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10190
10191         * culture-info-table.h : regenerated.
10192
10193 2008-09-17  Robert Jordan  <robertj@gmx.net>
10194
10195         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10196         context bound objects. Fixes #415577.
10197
10198         Code is contributed under MIT/X11 license.
10199
10200 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10201
10202         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10203         implementation (bug #423582).
10204
10205 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10208         is not set. Fixes #426309.
10209
10210 2008-09-16  Jb Evain  <jbevain@novell.com>
10211
10212         * class.c (mono_class_from_name): fix the exported type look up
10213         when the type is defined in a referenced assembly.
10214
10215 2008-09-16  Jb Evain  <jbevain@novell.com>
10216
10217         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10218         increment the next index counter on each iteration to make that work
10219         for more than one type forwarder. Unmanaged part to fix #422929.
10220
10221 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10222
10223         * object-internals.h: enum ComInterfaceType in
10224         MonoInterfaceTypeAttribute is guint32, not guint16.
10225
10226 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10227
10228         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10229         writing code.
10230
10231 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10232
10233         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10234         not gboolean.
10235
10236 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10237
10238         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10239         Endianness fixes for MonoSymbolFileOffsetTable.
10240
10241 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10242
10243         * process.c (complete_path) : Removing quotes from the 
10244           input path.  The glib file routines do not handle file paths
10245           that have quotes around them.
10246
10247         Code is contributed under MIT/X11 license.
10248
10249 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10250
10251         * socket-io.h : Adding a comment to provide locations where 
10252           changes to MonoSocketAsyncResult need to be synced.
10253
10254         Code is contributed under MIT/X11 license.
10255
10256 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10257
10258         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10259         parameters as well. Fixes #425001.
10260
10261 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10262
10263         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10264         windows build.
10265
10266 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10267
10268         * console-io.c: Add support for tracking the window size if it
10269         changes.
10270
10271         The setup is very simple: the TtySetup function will now return a
10272         pointer to a location in memory that tracks the current console
10273         size.  The managed code checks its current value every time its
10274         queried against the last value set, and updates accordingly.
10275
10276         With this setup we can work with multiple consoles, and we do not
10277         require to poke into managed code from a signal handler.
10278
10279         Additionally, the environment for COLUMNS and LINES is now handled
10280         in unmanaged code.
10281
10282         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10283
10284 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10285
10286         * marshal.c (mono_type_native_stack_size): Treat
10287         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10288
10289 2008-09-04  Jb Evain  <jbevain@novell.com>
10290
10291         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10292         to nullables.
10293
10294 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10295
10296         * verify.c (verify_type_compatibility_full): Revert change
10297         to allow converting a native int to unmanaged pointer be verifiable
10298         under non-strict mode.
10299         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10300
10301         * verify.c: Added some TODOs.
10302
10303 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10304
10305         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10306           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10307           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10308
10309         Code is contributed under MIT/X11 license.
10310
10311 2008-09-02  Jb Evain  <jbevain@novell.com>
10312
10313         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10314
10315 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10316
10317         reflection.c (typebuilder_setup_fields): Handle classes with
10318         explicit size.
10319
10320 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10321
10322         class.c (mono_class_setup_events): Add memory barrier due to
10323         double checked locking.
10324         
10325         class.c (mono_class_setup_properties): Same.
10326
10327 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * class.c (mono_class_is_assignable_from): Fix the build.
10330         
10331         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10332         before accessing klass->interface_bitmap. Fixes #421744.
10333
10334 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10335
10336         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10337         the runtime into no-exec mode, useful when running the AOT compiler.
10338
10339         * appdomain.c gc.c object.c: Avoid executing managed code when running
10340         in no-exec mode.
10341         
10342         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10343
10344         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10345         special case when the mono_assembly_loaded () returns NULL because the 
10346         search hook is not installed.
10347
10348 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10349
10350         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10351         crashes in bstr marshalling on linux.
10352
10353 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10356         with more than one parameter.
10357
10358 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10359
10360         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10361         start/stop flow control as well when turning off ICANON (allows
10362         C-s and C-q to be read by Console.ReadKey).
10363
10364 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * class.c (mono_class_init): Move the initialization of nested classes
10367         into mono_class_get_nested_types (). Fixes #418433.
10368
10369         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10370         flag.
10371
10372         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10373         iterating tough the nested classes of a class.
10374
10375 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10376
10377         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10378         on arm.
10379
10380 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10381
10382         * console-io.c (sigcont_handler): Support signal chaining for
10383         SIGCONT.
10384
10385         (console_set_signal_handlers): Use best practices with sigaction,
10386         clear the structure before using it. 
10387
10388 2008-08-22  Robert Jordan  <robertj@gmx.net>
10389
10390         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10391         Fix the Windows build.
10392
10393 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * class.c (mono_class_generic_sharing_enabled): Make the default
10396         sharing mode 'corlib'.
10397
10398 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10399
10400         * console-io.c (console_set_signal_handlers): Fix a warning.
10401
10402         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10403         method normally, the JIT will take care of avoiding recursion.
10404
10405 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10406
10407         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10408
10409         Code is contributed under MIT/X11 license.
10410
10411 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10412
10413         * console-io.c (sigcont_handler): We need to restore the entire
10414         termios state, not only the original settings, as things like echo
10415         can be controlled after this (Booish exposes this issue with its
10416         own ReadLine implementation).
10417
10418         Additionally, we need to set the terminal back into keypad_xmit
10419         mode.
10420         
10421         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10422         string as a paramter as well.   Otherwise we get different
10423         keyboard sequences.
10424
10425 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10428         delegates with byref out parameter passing. Fixes #351520.
10429
10430         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10431         a generic context.
10432         (mono_type_get_desc): Add the type arguments for GENERICINST.
10433         (mono_method_full_name): Stringify the class name using mono_type_full_name
10434         so it picks up generic arguments.
10435
10436 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10437
10438         * console-io.c: Removed debug output.
10439
10440 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10441
10442         reflection.c (mono_reflection_create_runtime_class): Alloc
10443         the nested classes linked list using the dynamic image mempool.
10444         Fixes leak in corlib compilation.
10445
10446 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10447
10448         * console-io.c: Fix incredibly annoying behavior on the console
10449         after resuming execution after control-z.   This affected every
10450         console application.
10451
10452 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10453
10454         * mempool-internals.h: Header for mono private mempool functions. The first
10455         two function are for allocating glib linked lists using pools.
10456
10457         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10458
10459         * Makefile.am: Added mempool-internals.h.
10460
10461 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10464         (mono_domain_free): Ditto.
10465
10466         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10467         be used by the JIT to store its domain-specific information, instead of putting
10468         it directly into MonoDomain.
10469
10470         * domain.c (mono_install_create_domain_hook): New helper function to install
10471         a hook which initializes domain->runtime_info.
10472
10473         * domain.c (mono_install_free_domain_hook): Ditto.
10474         
10475 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10478         asserting if the ares parameter is null.
10479
10480         * mono-perfcounters.c: Fix warnings.
10481
10482         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10483         is not needed, don't check for interruptions either.
10484         (mono_marshal_get_delegate_end_invoke): Ditto.
10485
10486 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10487
10488         * mono-perfcounters.c (predef_readonly_counter): added support for
10489         reading the ASP.NET Requests Queued counter from another process.
10490
10491 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10494         MonoImage to simplify the AOT code.
10495
10496 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10499         marshalling. Fixes #416078.
10500
10501 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10502         
10503         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10504         it is set, looking up the icall address is deferred to the JIT, since 
10505         in embedded scenarios, the icall might not be registered in the runtime
10506         doing the AOT compilation. Backported from the 2.0 branch.
10507
10508 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10511         Fixes #415621.
10512
10513 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10514
10515         * Makefile.am: added support for cross-compilation.
10516
10517 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10520
10521 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10522
10523         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10524
10525 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10526
10527         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10528         mono-perfcounters.c: performance counters implementation.
10529
10530 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10531
10532         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10533         to gpointer, letting the AOT code decide what to store in it.
10534
10535 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10536
10537         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10538           mono_class_setup_methods if the methods are not initialized.
10539
10540         Code is contributed under MIT/X11 license.
10541
10542 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10543
10544         * verify.c: Remove some debug code I commited by accident.
10545
10546         * verify.c (mono_method_is_valid_in_context): Change the return value
10547         to make possible to distinguish between invalid and unverifiable.
10548
10549         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10550         methods.
10551
10552 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10553
10554         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10555         constraints. Fixes regression in gtest-253.
10556
10557 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10558
10559         * verify.c (mono_verifier_verify_class): Don't allow generic types
10560         with explicit layout.
10561
10562         * verify.c (mono_method_verify): Check locals and argument types.
10563
10564 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10567         wait if the thread is in StopRequested state.
10568
10569         * class.c (mono_class_from_name): Refactor the module searching code into
10570         a separate function so it can be reused in the AOT case too.
10571
10572 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10573
10574         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10575         Check both the type and it's generic type definition for loader errors.
10576         
10577         * verify.c (mono_method_is_valid_in_context): Don't generate another
10578         error when a type errors occur, this leads to the wrong exception been
10579         thrown.
10580
10581 2008-07-28  Dick Porter  <dick@ximian.com>
10582
10583         * icall-def.h
10584         * process.c
10585         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10586         New internal calls to duplicate and close a process handle.
10587
10588 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10589
10590         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10591
10592 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10593
10594         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10595
10596 2008-07-27  Robert Jordan  <robertj@gmx.net>
10597
10598         * class.c (mono_class_init): Don't compute class.has_finalize for
10599         valuetypes. Fixes #412477.
10600
10601 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10602
10603         * verify.c: Implement constraint equivalence checking.
10604         This is required when a generic parameter is used as
10605         argument to a constrained one.
10606
10607         Fixes #410637.
10608
10609 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10612
10613         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10614
10615         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10616         synch with managed object layout.
10617
10618 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10619
10620         * verify.c (do_branch_op): Handle valuetypes and generic
10621         arguments properly.
10622
10623         * verify.c (do_cmp_op): Same.
10624
10625         Fixes #410383.
10626
10627 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10628
10629         * generic-sharing.c: Fix memory leaks.
10630
10631         * class.c, class-internals.h: Make
10632         mono_class_inflate_generic_type_with_mempool() non-static.
10633
10634 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10635
10636         * pedump.c (dump_verify_info): Dump full class name.
10637
10638 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10639
10640         * generic-sharing.c: Removed some old code that didn't do anything.
10641
10642 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10643         * profiler.c: Added runtime_initialized_event,
10644         mono_profiler_install_runtime_initialized and
10645         mono_profiler_runtime_initialized. This new hook tells the profiler
10646         when the runtime is sufficiently initialized to be able to call
10647         mono_thread_attach on the root appdomain.
10648         * profiler.h, profiler-private.h: Likewise.
10649
10650 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10651
10652         * verify.c (do_cast): Do boxing for generic arguments as well.
10653
10654         * class.c (is_nesting_type): Drop generic instantiations before
10655         checking for nesting.
10656
10657         * class.c (can_access_instantiation): Allow access to generic
10658         arguments.
10659
10660 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10661
10662         * verify.c (verify_class_for_overlapping_reference_fields):
10663         On some cases, the field size might be zero, guard against that.
10664         Fix the explicit layout check to work as expected.
10665
10666 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10669         mono_thread_resume () during shutdown, since the thread we want to abort
10670         might be suspended.
10671
10672 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10675         warning.
10676
10677         * debug-mono-symfile.c: Fix a warning.
10678
10679         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10680
10681         * object.c (mono_class_vtable): Check if exception_type is set, and return
10682         NULL as defined by the function comments.
10683
10684 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10685
10686         * mempool.c: Use malloc for every single mempool allocation if the
10687         configure option is set.  This makes it easier to track mempool
10688         allocations with tools like Valgrind.
10689
10690 2008-07-22  Jb Evain  <jbevain@novell.com>
10691
10692         * reflection.c (create_dynamic_mono_image): emit the same
10693         metadata version that SL2 does when creating a SL2 image.
10694
10695 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10696
10697         * icall-def.h:
10698         * icall.c: New icall System.Enum:get_hashcode. This function
10699         avoids the overhead of boxing the enum to the underlying type.
10700
10701 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10702
10703         * reflection.c (mono_method_get_object): Don't let static RGCTX
10704         invoke wrappers get into MonoReflectionMethods.
10705
10706 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10707
10708         * object-internals.h:
10709         * object.c: New mono_runtime_class_init_full function
10710         that makes throwing the exception optinal.
10711
10712         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10713         for the case where the exception object is supplied.
10714
10715 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10716
10717         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10718         old ld versions.
10719
10720         Contributed under MIT/X11 license.
10721
10722 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10723
10724         * string-icalls.c (ves_icall_System_String_InternalSplit):
10725         Optimize array allocation by caching the MonoClass of the
10726         array type.
10727
10728         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10729
10730         * reflection.c (mono_param_get_objects): Same.
10731
10732 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10733
10734         * icall-def.h:
10735         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10736         It inflates the given type using the class context.
10737
10738 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10739
10740         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10741         the vtable if it already exists.
10742
10743         * object-internals.h: Add mono_class_try_get_vtable as part of the
10744         internal API.
10745
10746         * reflection.c (mono_type_get_object): Use the MonoObject from the
10747         vtable when possible. Reduces locking contention on reflection heavy
10748         code.
10749
10750 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10751
10752         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10753         g_bit_nth_msf () since that macro is not implemented in eglib.
10754
10755 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10758         on platforms which do not support it.
10759
10760 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10761
10762         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10763
10764 2008-07-11  Martin Baulig  <martin@ximian.com>
10765
10766         * mono-debug-debugger.h
10767         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10768
10769         * mono-debug-debugger.c
10770         (_mono_debugger_interruption_request): New global volatile variable.
10771         (mono_debugger_check_interruption): New public function.
10772
10773         * threads.c
10774         (mono_thread_current_check_pending_interrupt): Call
10775         mono_debugger_check_interruption().
10776         (mono_thread_interruption_checkpoint_request): Likewise.
10777
10778 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10779
10780         * verify.c: Add more type checks for loaded types. Verify the result
10781         handle from ldtoken.
10782
10783 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10784
10785         * loader.c (field_from_memberref): Don't crash if the field
10786         wasn't found.
10787
10788 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10789
10790         * verify.c: Verify if type and method instantiations
10791         don't have invalid VAR or MVAR arguments.
10792
10793 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10794
10795         * verify.c: Fix double free of function pointer list.
10796
10797 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10798
10799         * object.c (mono_string_to_utf8): Comment the new code as it
10800         breaks under eglib.
10801
10802 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10803
10804         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10805
10806 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10807
10808         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10809           is not throw too many times.
10810
10811         Code is contributed under MIT/X11 license.
10812
10813 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10814
10815         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10816         debugging is turned off.
10817
10818 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10819
10820         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10821
10822 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10823
10824         * class-internals.h, class.c: Added new generic sharing option:
10825         Share only stuff in System.Collections.Generic, which is now the
10826         default.
10827
10828 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10829
10830         * generic-sharing.c, class-internals.h: New function for getting a
10831         generic method in a generic class given the corresponding method
10832         for a different instantiation of the class.  Partly refactored
10833         from mini-trampolines.c.
10834
10835         * class.c: Make sure generic methods have a class_inst if they are
10836         part of a generic class.
10837
10838         * metadata.c (mono_type_stack_size_internal): Handle type
10839         variables.
10840
10841 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10842
10843         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10844         Signifies whether information on the this/vtable/mrgctx variable
10845         is available.
10846
10847 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10848
10849         * object.c, object-internals.h, icall.c: New function
10850         mono_delegate_ctor_with_method(), which does the same as
10851         mono_delegate_ctor(), but takes an explicit method argument
10852         instead of taking the method from the jit info.
10853
10854         * marshal.c: When creating a delegate with an inflated method take
10855         the "this" argument as the target class for the castclass.
10856
10857 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10858
10859         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10860         mono_jit_info_table_find() to perform very badly in some cases.
10861
10862 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * icall.c (type_from_typename): Handle 'string'.
10865
10866         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10867         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10868
10869 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10872
10873         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10874         number of available managed allocator types.
10875
10876         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10877         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10878
10879 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10882         which is a low level lock protecting just the 'jit_code_hash' hash table.
10883
10884         * domain.c: Initialize+cleanup jit_code_hash_lock.
10885         
10886 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10887
10888         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10889         after initialization.
10890
10891         * coree.h: Make MonoFixupExe internal.
10892
10893         Contributed under MIT/X11 license.
10894
10895 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10896
10897         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10898         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10899         as well.
10900         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10901         image being loaded is a CLI image and _CorValidateImage gets called.
10902
10903         * coree.h: Add MonoLoadImage.
10904
10905         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10906         instead of LoadLibrary.
10907
10908         Contributed under MIT/X11 license.
10909
10910 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10911
10912         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
10913         for any primitive type.
10914
10915 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * object.c (mono_array_new_specific): Optimize this and the other allocation
10918         functions a bit.
10919         
10920         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
10921         domains too if mono_dont_free_domains is set.
10922
10923         * domain-internals.h (mono_dont_free_domains): New internal option controlling
10924         whenever to free appdomain data after it has been unloaded.
10925
10926         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
10927         
10928 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
10931         (mono_method_get_equivalent_method): Fix a warning.
10932
10933         * object.c (mono_message_init): Avoid looking up array types for each call.
10934
10935 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
10938         call.
10939
10940         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
10941         even more.
10942
10943         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
10944         each iteration.
10945
10946         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
10947         fields of an enum.
10948
10949 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
10950
10951         * object.c (mono_value_box): Fix boxing of nullables.
10952
10953 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
10954
10955         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
10956         mono_module_handle that is defined by the linker; no initialization required.
10957         * coree.h: Remove mono_module_handle, add __ImageBase, update
10958         mono_image_open_from_module_handle.
10959         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
10960         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
10961         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
10962         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
10963         to 4 GB away from image base address. IA64 version is not tested but was very
10964         easy to implement and should work if we ever need it.
10965         * domain.c (mono_init_internal): Avoid system error message boxes.
10966         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
10967         with has_entry_point. Handle do_mono_image_load fauilre correctly.
10968         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
10969         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
10970         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
10971
10972         Contributed under MIT/X11 license.
10973
10974 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10975
10976         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
10977         as part of the private mono API.
10978         
10979         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
10980         Do proper argument checking for methods that belong to generic classes.
10981         Do proper type resolution for GMFH/2.
10982         Fixes #377324.
10983         
10984 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10985
10986         * verify.c (do_switch): Fix a memory corruption bug with
10987         the jump index is out of bound.
10988
10989 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10990
10991         * verify.c: Disable debug code.
10992
10993 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10994
10995         * reflection.c (mono_image_get_methodbuilder_token): Use
10996         mono_image_get_methodspec_token_for_generic_method_definition
10997         instead of mono_image_get_memberref_token. We cache more memberef
10998         entries now.
10999
11000 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11001
11002         * verify.c: Inflate exception clause types.
11003         Fixes #402606.
11004         
11005 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11006
11007         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11008         name.
11009
11010         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11011
11012         * reflection.c (mono_image_create_method_token): Same.
11013
11014 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11015
11016         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11017         It does the same as mono_image_get_methodref_token but works on
11018         MethodBuilder.
11019
11020         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11021         and always generate a methodspec. This follows the old behavior and fixes
11022         the regressions in System.Core. 
11023
11024 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11025
11026         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11027         don't event mono_class_get () succeeds. Fixes #402182.
11028
11029 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11030
11031         * metadata-internals.h: Added MonoDynamicImage::methodspec
11032         hashtable to store methodspec tokens created for MethodBuilders.
11033
11034         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11035         MethodBuilders as open instantiations if a methodspec was requested.
11036
11037         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11038
11039         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11040
11041         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11042
11043         Fixes bug #349190.
11044
11045 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11046
11047         * loader.c (method_from_methodspec): Avoid crashing if the
11048         method lookup fails.
11049
11050 2008-06-20  Dick Porter  <dick@ximian.com>
11051
11052         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11053         classes being in a different assembly.  Fixes bug 399184.
11054
11055 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * loader.c (mono_loader_init): Make this callable multiple times.
11058         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11059         the runtime is initialized. Fixes #401755.
11060
11061 2008-06-19  Dick Porter  <dick@ximian.com>
11062
11063         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11064         Fixes bug 349688.
11065
11066 2008-06-19  Dick Porter  <dick@ximian.com>
11067
11068         * socket-io.c:
11069         * icall-def.h: Implement Socket generic Send() and Receive()
11070         methods.  Fixes bug 395168.
11071
11072 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11073
11074         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11075
11076         Contributed under MIT/X11 license.
11077
11078 2008-06-18  Martin Baulig  <martin@ximian.com>
11079
11080         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11081         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11082         set to 80.0.  The debugger <-> runtime interface is now frozen as
11083         well.   
11084
11085         * mono-debug.c
11086         (mono_debug_debugger_version): Bump to 4.
11087
11088 2008-06-18  Martin Baulig  <martin@ximian.com>
11089
11090         * debug-mono-symfile.c
11091         (load_symfile): Don't check the minor version.
11092
11093         * debug-mono-symfile.h: Bump the version number to 50.0.
11094
11095 2008-06-18  Martin Baulig  <martin@ximian.com>
11096
11097         * debug-mono-symfile.c
11098         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11099         minimum required version.
11100
11101 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11102
11103         * reflection.c (mono_custom_attrs_from_property): Fix support for
11104         retriveving cattrs of dynamic inflated generic types.
11105
11106         * reflection.c (mono_custom_attrs_from_event): Same.
11107
11108         * reflection.c (mono_custom_attrs_from_field): Same;
11109
11110         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11111
11112         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11113         Moved to metadata.c.
11114
11115         * metadata.c: New functions to retrive the equivalent field, event
11116         of property from the generic type definition.
11117
11118         * metadata-internals.h: Added new functions from metadata.c.
11119
11120 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11121
11122         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11123         to cached in a mempool is used.
11124
11125         * metadata.c (free_generic_class): In some situations field generic_info type
11126         is not properly dup'ed and leads to double free'ing.
11127
11128         Fixes #400643.
11129
11130 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11131
11132         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11133         this arguments (will be needed later for generic methods).
11134         Collect stats.
11135
11136 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11137
11138         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11139         Create a static RGCTX invoke wrapper for methods which require it.
11140
11141 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11142
11143         * object.c, class-internals.h: New function for checking whether
11144         an individual field is special static.
11145
11146 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11147
11148         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11149         linear search since the table is sorted.
11150
11151         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11152         Fixes #324180.
11153
11154 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11157         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11158
11159         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11160
11161         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11162         
11163         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11164         InterlockedCompareExchange to query and modify 
11165         thread->interruption_requested.
11166
11167         * object-internals.h (struct _MonoThread): Change interruption_requested
11168         to a gint32 so it can be modified by atomic operations. Add 
11169         'critical_region_level' from the managed side, change small_id to a guint32,
11170         add new set of 'unused' fields.
11171
11172         * appdomain.c: Bump corlib version.
11173
11174 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * class.c (mono_class_from_name): Search modules as well. Fixes
11177         #322332.
11178
11179 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11180
11181         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11182         templates.  Templates are generalized with an additional type_argc
11183         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11184         have type_argc>0.
11185
11186         * domain-internals.h, domain.c: New hash table for looking up
11187         MRGCTXs.
11188
11189         * metadata.c, metadata-internals.h: Rename hash and equal
11190         functions for MonoGenericInst's and make them public.
11191
11192         * class-internals.h: New data structures for the MRGCTX.  Macros
11193         for distinguishing slots in the RGCTX and the MRGCTX.
11194
11195 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11196
11197         * object.c (mono_method_get_imt_slot): Put the same methods of
11198         different instantiations of the same generic interface in the same
11199         IMT slots, to make generic sharing simpler.
11200
11201 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11202
11203         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11204
11205         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11206         This function works just like mono_metadata_field_info, but
11207         accept a mempool as argument to be used allocating memory.
11208
11209         * marshal.c (mono_marshal_load_type_info): Use new function
11210         to load marshal data into image mempool.
11211
11212 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11213
11214         * class.c (mono_class_inflate_generic_type_with_mempool):
11215         This function allows to inflate a generic type using
11216         a mempool.
11217
11218         * class.c (inflate_generic_type): Take a mempool as argument
11219         and use it to do type dup'ing.
11220
11221         * class.c (mono_class_setup_fields): Field type for generic
11222         generic classes are allocated from the image mempool.
11223
11224         * metadata.c (free_generic_class): Inflated field type is
11225         now allocated in the image mempool.
11226
11227 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11228
11229         * threads.c (thread_cleanup): Free MonoThread::name.
11230
11231 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11232
11233         * appdomain.c (ensure_directory_exists): avoid unnecessary
11234         mkdir(2) calls when the shadow directory already exists.
11235         (mono_make_shadow_copy): copy also satellite assemblies from the
11236         private bin directories.
11237
11238 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11241         
11242         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11243         a page boundary. Fixes #396219.
11244
11245 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11246
11247         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11248         due to double-checked locking.
11249
11250 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11251
11252         * assembly.c (build_assembly_name): Release memory on failure.
11253
11254         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11255
11256 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11257
11258         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11259         memory on failure.
11260
11261 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11262
11263         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11264         memory on failure.
11265
11266 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11267
11268         * loader.c (field_from_memberref): Check if field signature type is equal
11269         to the non-inflated type of the field. Fixes #398980.
11270
11271 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11272
11273         * assembly.c (mono_assembly_load_from_full): Call 
11274         mono_assembly_load_friends () outside the assemblies lock, since it can
11275         acquire the loader lock. Fixes #323696.
11276
11277         * reflection.c (resolve_object): Inflate the inst with the context for
11278         FieldOnTypeBuilderInst. Fixes #399010.
11279
11280 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11281
11282         * reflection.c (mono_image_get_field_on_inst_token): Don't
11283         inflate the field to encode it's signature. If it's a
11284         VAR or MVAR it should stay that way in the signature.
11285         Fixes #399047.
11286
11287 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11288
11289         * reflection.c (resolve_object): Release memory of inflated types.
11290
11291 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11292
11293         * loader.c (mono_method_get_signature_full): Remove assert about
11294         loading a methodspec to a generic method. We have such methods, such as
11295         System.Threading.Interlocked::CompareExchange<T>.
11296         This assert was removed since it crashes the verifier when it checks
11297         methods calling CompareExchange<T>.
11298
11299 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11300
11301         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11302         of Type array and not MonoType.
11303
11304 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11305
11306         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11307         <lupus@ximian.com>
11308
11309 2008-06-10  Martin Baulig  <martin@ximian.com>
11310
11311         * debug-mono-symfile.h
11312         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11313         changes to the file format, but we were generating incorrect
11314         source file indices in the line number table due to a bug, which
11315         made backtraces report an incorrect source file.
11316
11317 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11318
11319         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11320         mini/debug-mini.c to here.
11321
11322         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11323
11324         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11325         use it to release structs returned by mono_debug_find_method.
11326
11327 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11330         since it needs to set method->slot for all interface methods.
11331
11332 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11333
11334         * class-internals.h: Forgot to add.
11335
11336 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11337
11338         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11339
11340         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11341         Lookup the custom attributes from property_hash.
11342
11343         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11344         in property_hash. Allocate all data using the image mempool.
11345
11346         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11347         for dynamic_custom_attrs to checks if the image is dynamic.
11348
11349 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11350
11351         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11352         assemblies array.
11353         
11354         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11355         runtime functions while holding the domain assemblies lock.
11356
11357 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11358
11359         * verify.c: Reapplied the last bit of the reverted changes.
11360
11361 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11362
11363         * verify.c: Reapplied more of the reverted changes.
11364
11365 2008-06-09  Martin Baulig  <martin@ximian.com>
11366
11367         * debug-mono-symfile.c (load_symfile): Check the major version
11368         first; if it's wrong, don't print the minor version in the error message.
11369
11370 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11371
11372         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11373         lock instead of the domain lock to avoid deadlocks, since the thread might
11374         already hold the loader lock.
11375
11376         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11377         (mono_thread_attach): Ditto.
11378
11379         * monitor.c: Use a TLS variable for holding the current thread id instead
11380         of calling pthread_self ().
11381         (mono_monitor_init_tls): New internal function to initialize the TLS
11382         variable.
11383         (mono_monitor_try_enter_internal): Put the owner == id check after the
11384         owner == 0 check.
11385
11386         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11387         missed optimizations when using gcc-4.3.
11388
11389 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11390
11391         * reflection.c (mono_dynamic_image_free): Free the memory
11392         used by MonoGenericParam in MonoDynamicImage::gen_param.
11393
11394         * reflection.c (mono_reflection_setup_generic_class): Allocate
11395         container from mempool.
11396
11397         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11398         container from mempool.
11399
11400 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * threads.c (mono_set_pending_exception): New internal function to set the
11403         pending exception of the current thread.
11404         (mono_thread_get_and_clear_pending_exception): Check for 
11405         thread->pending_exception as well.
11406
11407         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11408
11409         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11410         it can trigger a collection.
11411
11412 2008-06-06  Martin Baulig  <martin@ximian.com>
11413
11414         Merged the `debugger-kahalo' branch.
11415
11416         * mono-debug.h
11417         (MONO_DEBUGGER_VERSION): Bumped to 72.
11418
11419         * debug-mono-symfile.h
11420         (MonoSymbolFileMethodIndexEntry): Removed.
11421         (MonoSymbolFileMethodEntry): New public typedef.
11422         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11423         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11424         `data_offset'.
11425         (MonoSymbolFileMethodEntry): Removed.
11426         (MonoSymbolFileLexicalBlockEntry): Removed.
11427         (MonoSymbolFileLineNumberEntry): Removed.
11428         (MonoDebugLexicalBlockEntry): Removed.
11429         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11430         removed `num_il_offsets' and `il_offsets'.
11431         (MonoSymbolFile): Replace `version' with `major_version' and
11432         `minor_version'.
11433         (MONO_SYMBOL_FILE_VERSION): Replace with
11434         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11435         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11436
11437         * debug-mono-symfile.c
11438         (mono_debug_symfile_lookup_location): Add support for the new line
11439         number table format.
11440
11441 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11442
11443         * metadata.c (free_generic_class): Release the inflated
11444         MonoClass of dynamic generic classes if it's not a generic
11445         type definition.
11446
11447 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11448
11449         * verify.c: Reapplied more of the reverted changes.
11450
11451 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11452
11453         * reflection.c (lookup_custom_attr): Clean the cached flag or
11454         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11455         for SRE types.
11456
11457 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11458
11459         * verify.c: Reapplied a small part of the reverted changes.
11460
11461 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11462
11463         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11464
11465         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11466         previously in managed code.
11467         (mono_monitor_exit): Ditto.
11468         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11469
11470         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11471         the managed definition.
11472
11473 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11474
11475         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11476
11477 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11480         
11481         * monitor.c: Add some micro optimizations.
11482
11483         * icall.c (type_from_typename): Handle 'bool'.
11484
11485 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11486
11487         * verify.c: Implement constructor verification per P III 1.8.1.4.
11488         Fixes #396716.
11489
11490 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11491
11492         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11493         holding the assemblies lock here too.
11494
11495 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11496
11497         * verify.c: Kill stack_top function.
11498
11499 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11500
11501         * verify.c: Kill stack_get function.
11502
11503 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11504
11505         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11506
11507 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11508
11509         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11510         more reliable.
11511
11512         * verify.c (mono_method_verify): Inflate params and locals to avoid
11513         mismatch when checking for compatibility.
11514
11515 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11516
11517         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11518         Length prefix should be size in bytes. Fix bug #339530.
11519         
11520         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11521         Length prefix should be size in bytes. Fix bug #339530.
11522
11523         Code is contributed under MIT/X11 license.
11524
11525 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11526
11527         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11528
11529         Contributed under MIT/X11 license.
11530
11531 2008-06-05  Martin Baulig  <martin@ximian.com>
11532
11533         * mono-debug-debugger.c
11534         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11535
11536 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11539         while holding the assemblies lock to prevent deadlocks. Handle the case
11540         where the search hook returns NULL but the assembly was still loaded.
11541         Fixes #323696.
11542
11543         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11544         modify domain state.
11545
11546 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11547
11548         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11549         * Makefile.am (pedump_LDADD): Post-process object files and
11550         add dtrace-generated object file, if necessary.
11551
11552         Code is contributed under MIT/X11 license.
11553
11554 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11555
11556         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11557
11558 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11559
11560         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11561
11562 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11563
11564         * threads.c: Try to free everything from the delayed free table
11565         when shutting down threads, and set the variable to NULL after the
11566         table is freed so that calling
11567         mono_thread_hazardous_try_free_all() when shutting down the root
11568         domain doesn't crash.
11569
11570 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11571
11572         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11573         the caller if resulting type was inflated.
11574
11575         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11576         was inflated.
11577
11578         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11579
11580
11581 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11582
11583         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11584         class library tests.
11585
11586         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11587         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11588         #396989.
11589
11590 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11591
11592         * domain.c, domain-internals.h: The JIT infos are now freed by the
11593         JIT info table code.  They are freed immediately if there only a
11594         single JIT info table in circulation.  If there is more, the free
11595         is delayed via a queue.
11596
11597         * threads.c, threads-types.h: New hazard pointer function for
11598         freeing all freeable delayed items in one sitting.
11599
11600 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11601
11602         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11603
11604         * reflection.c (typebuilder_setup_properties): Same.
11605
11606         * reflection.c (typebuilder_setup_events): Same.
11607
11608 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11609
11610         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11611         and use it for allocating memory.
11612
11613         * reflection.c (mono_marshal_spec_from_builder): Same.
11614
11615         * reflection.c: Change code to use new signatures.
11616
11617         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11618
11619 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11620
11621         * decimal.c (rescale128): Put back one line which was accidently commented
11622         out.
11623         
11624         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11625         to cause crashes.
11626
11627 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11628
11629         * reflection.c (mono_reflection_generic_class_initialize): Name must
11630         be always malloc'ed so we can free it later on. Do this for field, property
11631         and event.
11632
11633         * metadata.c (free_generic_class): Free field, property and event names.
11634
11635 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11636
11637         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11638         instead of g_memdup.
11639
11640         * reflection.c (typebuilder_setup_fields): Same.
11641
11642 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11643
11644         * decimal.c (rescale128): Optimize this function a bit more.
11645
11646 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11647
11648         * metadata.c (free_generic_class): Release some memory from
11649         SRE generic classes.
11650
11651 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11652
11653         * reflection.c (mono_image_get_generic_field_token): No reference
11654         to name is kept, free it.
11655
11656         * reflection.c (mono_reflection_generic_class_initialize): Free
11657         more memory of the inflated field.
11658
11659 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11662         code.
11663
11664 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11665
11666         * reflection.c (mono_dynamic_image_free): Release memory used by
11667         MonoDynamicImage::array_methods elements.
11668
11669         * reflection.c (assembly_add_win32_resources): Release memory after
11670         encoding.
11671
11672 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * decimal.c (log2_32): Use an optimized version for this function too.
11675         
11676         * decimal.c (log2_64): Fix this on 32 bit machines.
11677
11678 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11679
11680         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11681
11682         * class.c (mono_metadata_signature_deep_dup): Same.
11683
11684         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11685         a mempool.
11686
11687         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11688
11689         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11690
11691         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11692
11693         * class-internals.h: Update signatures to take a MonoMemPool.
11694
11695 2008-06-02  Dick Porter  <dick@ximian.com>
11696
11697         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11698         * icall-def.h: Add
11699         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11700         FormatMessage API to get the error text.  Fixes bug 321827.
11701
11702 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * decimal.c: Add some micro optimizations to make decimal operations faster.
11705
11706 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11707
11708         * reflection.c (method_encode_clauses): Take a mempool
11709         as parameter and use it to allocate the clause array.
11710
11711         * reflection.c (mono_image_get_field_on_inst_token): Free
11712         the inflated type after encoding it.
11713
11714         * reflection.c (mono_dynamic_image_free): Free each element
11715         of MonoDynamicImage::gen_params.
11716
11717         * reflection.c (reflection_methodbuilder_to_mono_method):
11718         Allocate the generic param array from the mempool.
11719         Allocate signature params from the mempool.
11720
11721         * reflection.c (mono_reflection_generic_class_initialize):
11722         Free inflated fields after been used.
11723
11724 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11725
11726         * icall.c: Reapply the memory leak fixes as they no
11727         longer make mono crash.
11728
11729 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11730
11731         * reflection.c (mono_type_get_object): Don't store the suplied
11732         MonoType with type_hash. A caller which pass a type that
11733         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11734         might end with a pointer to freed memory.
11735         The solution is to use byval_arg or this_arg from the associated
11736         MonoClass of the supplied type.
11737
11738 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11739
11740         * icall.c: Revert the rest of the last change as it breaks the build too.
11741
11742 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11743
11744         * icall.c: Revert a leak fix as it's breaking the build.
11745
11746 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11747
11748         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11749
11750 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11751
11752         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11753
11754 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11755
11756         * icall.c: Fix some memory leaks.
11757
11758 2008-05-29  Dick Porter  <dick@ximian.com>
11759
11760         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11761         async socket operations from the pending list when a socket
11762         closes.  Leaving it until the threadpool services the event
11763         exposes a race condition when a socket descriptor is reused.
11764         Fixes bug 377589.
11765
11766 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11767
11768         * object.c: Fix negative index check for array alocation.
11769
11770 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11771
11772         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11773         This check is performed by the verifier for IL created delegates
11774         and by Delegate::CreateDelegate for programatically created ones.
11775         Fixes #372406.
11776
11777 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11778
11779         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11780         Fix code to use mono_array_size_t instead of int.
11781
11782         Based on patch by Luis F. Ortiz.
11783         Contributed under X11 license.
11784         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11785
11786 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11787
11788         * icall.c: Added ves_icall_System_Array_GetLongLength and
11789         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11790         arrays.
11791
11792         * icall.h: Export both new functions.
11793
11794         Based on patch by Luis F. Ortiz.
11795         Contributed under X11 license.
11796         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11797
11798 2008-05-28  Martin Baulig  <martin@ximian.com>
11799
11800         The debugger now requires exactly r103463.
11801
11802         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11803         This version is not supported by the debugger, wait for 72.
11804
11805 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11806
11807         * object.h: Changed array related functions to use
11808         mono_array_size_t instead of guint32. Forgot to commit this file.
11809
11810         Patch by Luis F. Ortiz.
11811         Contributed under X11 license.
11812         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11813
11814
11815 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11816
11817         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11818         don't define it. Use the number literal instead.
11819
11820 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11821
11822         * icall.c: Changed array related functions to use
11823         mono_array_size_t instead of guint32.
11824
11825         * icall.c (ves_icall_System_Array_GetLength): Check for length
11826         overflow under MONO_BIG_ARRAYS.
11827
11828         Based on patch by Luis F. Ortiz.
11829         Contributed under X11 license.
11830         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11831
11832 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11833
11834         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11835
11836         Based on patch by Luis F. Ortiz.
11837         Contributed under X11 license.
11838         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11839
11840 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11841
11842         * object.c, object.h: Changed array related functions to use
11843         mono_array_size_t instead of guint32.
11844
11845         Patch by Luis F. Ortiz.
11846         Contributed under X11 license.
11847         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11848
11849 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11850
11851         * object.h: Introduced mono_array_size_t typedef. This must be used
11852         in all places an array length is expected. This is 64bits wide if
11853         MONO_BIG_ARRAYS is enabled.
11854
11855         Patch by Luis F. Ortiz.
11856         Contributed under X11 license.
11857         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11858
11859 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11860
11861         * security-manager.c class.c: Set the class exception info by calling
11862         mono_class_set_failure ().
11863
11864         * class.c (mono_class_get_exception_data): New accessor function.
11865         (mono_class_set_failure): Store exception_data in the property hash.
11866
11867         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11868         the struct as a property.
11869
11870         * loader.c (mono_get_method_full): Store the lookup result for method
11871         tokens in method_cache, the others in methodref_cache to decrease the memory
11872         usage of hash tables.
11873
11874         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11875         (mono_image_init): method_cache is lazy inited now.
11876
11877         * metadata-internals.h (struct _MonoImage): Change method_cache to
11878         a MonoValueHashTable, add a separate methodref_cache.
11879
11880 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11881
11882         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11883           Double.ToString as exposed by Bug #383531.
11884
11885 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * number-formatter.h: Make some tables static.
11888
11889         * class.c (mono_method_set_generic_container): New accessor function.
11890         (mono_method_get_generic_container): Ditto.
11891
11892         * class-internals.h (struct _MonoMethod): Remove rarely used 
11893         'generic_container' field, store it in the property hash instead. Add 
11894         'is_generic' boolean field instead.
11895
11896         * image.c (mono_image_init): Initialize property_hash.
11897         (mono_image_close): Destroy property_hash.
11898
11899         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11900         hold rarely used fields of runtime structures belonging to this image.
11901
11902         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11903         to get/set method->generic_container.
11904
11905         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11906         generic methods.
11907
11908 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11909
11910         * class.c (mono_class_inflate_generic_method_full): Don't increase
11911         mono_stats.inflated_method_count for methods found in the cache.
11912
11913         * threads.c (mono_thread_request_interruption): Add a comment about 
11914         QueueUserAPC ().
11915
11916 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11917
11918         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
11919         interface_offsets_packed table.
11920         
11921         * class.c (mono_class_init): Remove some dead code.
11922
11923         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
11924         mono_class_setup_vtable () when CAS is active to detect security problems.
11925
11926 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
11927
11928         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
11929
11930         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
11931         parameters as it's irrelevant for delegate checking.
11932
11933 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
11936
11937         * class.c (mono_class_init): Control the creation of a generic vtable using
11938         a global which is true by default, but set to false by the runtime startup code.
11939         
11940         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
11941         Disabled for now since it breaks the embedding API.
11942         Move the setup of class->methods for arrays to mono_class_setup_methods ().
11943         (mono_class_setup_methods): Add a memory barrier.
11944
11945         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
11946         when mono_class_init () doesn't compute the generic vtable.
11947         
11948 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11949         * profiler.c: Added mono_profiler_install_statistical_call_chain,
11950         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
11951         to support call chains (backtrace) in the stat profiler.
11952         * profiler.c, profiler-private.h: Likewise.
11953
11954 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11955
11956         * generic-sharing.c: Init generic class when a method of it is
11957         requested via a runtime generic context.
11958
11959 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
11962
11963         * reflection.c (mono_type_get_object): Add a FIXME.
11964
11965         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
11966
11967         * class.c (mono_class_get_method_by_index): New helper function, returning an
11968         entry in the class->methods array.
11969
11970 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11971
11972         * class.c (mono_class_init): Only do the array optimization for szarrays. 
11973         Avoid creating a generic vtable for generic instances as well.
11974         (mono_class_get_method_from_name_flags): Don't search in the metadata for
11975         generic instances.
11976
11977 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
11978
11979         * loader.c (mono_get_method_constrained): Inflate the signature
11980         with class context. Fix #325283.
11981
11982 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * object.c (mono_class_create_runtime_vtable): Add a comment.
11985
11986         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
11987         where needed.
11988         (setup_interface_offsets): Handle the case when this is called twice for arrays.
11989         (mono_class_setup_vtable_general): Add an assert.
11990         (mono_class_init): Avoid creating a generic vtable for arrays.
11991
11992         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
11993         here, let mono_class_init () do that.
11994
11995         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
11996         interfaces in mscorlib.
11997
11998         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
11999         interfaces. Add some comments.
12000         (mono_class_init): Call mono_class_setup_methods () here since it is no
12001         longer called by mono_class_setup_vtable ().
12002
12003         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12004         not set in class->vtable.
12005         (mono_class_create_runtime_vtable): Reenable the disabled code.
12006
12007         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12008         now as it causes some test failures.
12009
12010         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12011         if using the vtable trampoline. Also remove some strange code which put the
12012         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12013         stuff as it is no longer needed.
12014
12015 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12016
12017         * pedump.c: Give make --verify all option check code as well.
12018         Using --verify code won't check for metadata now.
12019
12020 2008-05-19  Martin Baulig  <martin@ximian.com>
12021
12022         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12023
12024         * mono-debug.c
12025         (_mono_debug_using_mono_debugger): New global variable; it's set
12026         directly by the debugger, so mono_debug_using_mono_debugger() also
12027         works after attaching.
12028
12029 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12030
12031         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12032         as we do double checked locking on MonoClass::runtime_info and
12033         MonoClassRuntimeInfo::domain_vtables.
12034
12035 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12036
12037         * debug-helpers.c (print_field_value): Fix a warning.
12038
12039 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12040
12041         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12042         set in the AOT case.
12043
12044 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12045
12046         * class.c (mono_class_setup_vtable_general): Use memory barriers
12047         as we do double checked locking on MonoClass::vtable.
12048
12049 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12050
12051         * reflection.c (resolve_object): Inflate only if the generic context
12052         is not null. Fixes #389886.
12053
12054 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12055
12056         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12057         instead of g_free.
12058
12059         Code is contributed under MIT/X11 license.
12060
12061 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12062
12063         * class.c: Revert unrelated change.
12064
12065 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12066
12067         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12068         a generic instantiation, use mono_class_from_mono_type instead of playing
12069         with MonoType directly.
12070
12071 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12072
12073         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12074         checks must ignore generic instantiations, so mono_class_has_parent is not
12075         suitable. Fixes #390128.
12076
12077 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12078
12079         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12080         it to avoid registering tokens during metadata generation. Fixes #390023.
12081
12082 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12083
12084         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12085         consistent.
12086
12087         Contributed under MIT/X11 license.
12088
12089 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12090
12091         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12092         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12093         to fixup the EXE image.
12094         (mono_cleanup): Use mono_close_exe_image.
12095         (mono_close_exe_image): New function.
12096         * image.c: Include "marshal.h".
12097         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12098         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12099         counting when the image is loaded outside of mono_image_open_full. Set status
12100         based on GetLastError.
12101         * coree.c: Include required headers. Add init_from_coree.
12102         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12103         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12104         (_CorExeMain): Set init_from_coree.
12105         (CorExitProcess): Only call ExitProcess for now.
12106         (CorBindToRuntimeEx): New stub implementation.
12107         (CorBindToRuntime): New function.
12108         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12109         (MonoFixupExe): ILONLY executables require no fixups.
12110         (mono_set_act_ctx): New function to set activation context.
12111         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12112         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12113         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12114         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12115         as MONO_INTERNAL.
12116         * domain-internals.h: Add mono_close_exe_image.
12117
12118         Contributed under MIT/X11 license.
12119
12120 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12121
12122         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12123         size for generic param and event tables. Fixes #388977.
12124
12125 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * loader.c (mono_method_signature): Use memory barriers because of the double
12128         checked locking pattern.
12129
12130         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12131         aborting or aborted as well. Fixes #376391.
12132         
12133         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12134         existing runtime state in the Suspend handler during shutdown.
12135
12136 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12137
12138         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12139
12140         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12141         which are starting up or shutting down.
12142
12143         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12144         this function never returns if the runtime is already shutting down.
12145
12146         * icall.c (ves_icall_System_Environment_Exit): Update after 
12147         mono_threads_set_shutting_down () signature change.
12148         
12149 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12150
12151         * class.c: Added can_access_instantiation to verify if the instantiation
12152         is visible. Fix access check for nested types as they returned TRUE
12153         before doing type and generic instantiation visibility checks.
12154
12155 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12156
12157         * reflection.c (mono_reflection_create_generic_class): The created type
12158         must have a different container from its TypeBuilder. Otherwise they
12159         will end sharing generic arguments, which is wrong.
12160
12161         Due to the sharing, making a generic instance of the created type using
12162         the TypeBuider generic arguments resulted in the generic type definition
12163         been returned, which is wrong as well.
12164
12165         As a bonus the code was leaking the type_params array. This memory should
12166         be allocated from the image mempool.
12167
12168         This fixes bug #354047.
12169
12170 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12171
12172         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12173         to here         as they are now used in assembly.c new code.
12174         Added a skipverification flag to MonoAssembly.
12175         New internal function mono_assembly_has_skip_verification.
12176
12177         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12178         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12179         part of #387274.
12180
12181 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12184         needed. Fixes #387034.
12185
12186         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12187
12188 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12189
12190         * assembly.c (mono_assembly_load_reference): Prevent crash while
12191         disassembling Silverlight 2.0 executables while we still do not
12192         have GACed libraries.
12193
12194 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12197
12198 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12201         of the dynamic case. Fixes #387404.
12202
12203 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12204
12205         *verify.c (mono_verifier_is_class_full_trust): If under
12206         verify_all and the verifier mode was not set, only
12207         gac and corlib types are fulltrust. This makes --verify-all
12208         usable to detect unverifiable code, which is the expected
12209         use case.
12210
12211 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12212
12213         * verify.h: Ops, commited the header with debug
12214         enabled.
12215
12216 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12217
12218         * verify.c (merge_stack): Use the new value on unverifiable
12219         stack merges.
12220
12221         * verify.c (verify_type_compatibility_full): Comparison
12222         of nullable types can't use mono_class_is_assignable_from.
12223
12224         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12225         that makes all verification errors be reported.
12226
12227         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12228         mono_method_verify.
12229
12230 2008-05-05  Robert Jordan  <robertj@gmx.net>
12231
12232         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12233         support for value types. See #386415.
12234
12235         * object.c: comments.
12236
12237         Code is contributed under MIT/X11 license.
12238
12239 2008-05-05  Martin Baulig  <martin@ximian.com>
12240
12241         * debug-mono-symfile.h
12242         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12243         for old pre-terrania symbol files.
12244
12245 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12246
12247         * mono-config.c: Add ppc64 architecture.
12248
12249         Code is contributed under MIT/X11 license.
12250
12251 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12252
12253         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12254           PPC64 uses function descriptors as well.
12255
12256         Code is contributed under MIT/X11 license.
12257
12258 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12259
12260         * object.c (compute_class_bitmap): Ignore literal static fields.
12261
12262         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12263         var has an invalid format.
12264         (describe_ptr): Add some sanity checks for the vtable.
12265         (add_nursery_frag): Clear unused nursery fragments.
12266         (major_collection): Clear all remaining nursery fragments.
12267
12268 2008-05-03  Robert Jordan  <robertj@gmx.net>
12269
12270         * image.c, metadata-internals.h: add thunk_invoke_cache.
12271
12272         * marshal.c, marshal.h: implement
12273         mono_marshal_get_thunk_invoke_wrapper ().
12274
12275         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12276
12277         Code is contributed under MIT/X11 license.
12278
12279 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12280
12281         * verify.c (do_leave): Empty the stack.
12282
12283 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12284
12285         * class.c (mono_class_is_assignable_from): Variance
12286         doesn't work between reference and value types. For example,
12287         given type C<T+>, C<int32> is not assignable to C<object>.
12288         Break the argument checking loop on first error. 
12289
12290 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12291
12292         * icall.c : base64_to_byte_array() needs some more strict
12293           check for sequence of '=' characters. Patch by Santa
12294           Marta (http://deee.g.hatena.ne.jp/santamarta).
12295
12296           Contributed under MIT/X11 license.
12297           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12298
12299 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12300
12301         * domain.c: Disable LoadLibrary support to fix Win32 build.
12302
12303         Code is contributed under MIT/X11 license.
12304
12305 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12306
12307         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12308         to help with cache behaviour.
12309
12310 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12311
12312         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12313         method. 
12314
12315 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12318
12319 2008-05-01  Dick Porter  <dick@ximian.com>
12320
12321         * process.c (process_get_fileversion): Only pass 16 bits of
12322         language ID to VerLanguageName.  Fixes bug 381204.
12323
12324 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12325
12326         * verify.c (mono_method_verify): Fix the comparison
12327         operator for code bounds check.
12328
12329 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12330
12331         * verify.c (mono_method_verify): Check the bounds of
12332         all access of the code array.
12333
12334 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12335
12336         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12337
12338 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12341         not valid.
12342
12343 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12344
12345         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12346         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12347         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12348         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12349         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12350         mono_runtime_load.
12351         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12352         runtime initialization from metadata.
12353         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12354         (mono_set_rootdir): Use mono_get_module_file_name.
12355         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12356         handles.
12357         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12358         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12359         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12360         MonoCLIImageInfo. Add support for module handles.
12361         (load_cli_header): Update mono_cli_rva_image_map signature.
12362         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12363         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12364         (mono_image_rva_map): Add support for module handles.
12365         (mono_image_ensure_section_idx): Add support for module handles.
12366         (mono_image_close): Add support for module handles.
12367         (do_load_header): Add support for module handles.
12368         (mono_image_open_from_module_handle): New function for internal use.
12369         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12370         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12371         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12372         handles.
12373         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12374         * image.h: Add mono_image_fixup_vtable.
12375         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12376         support.
12377         * coree.h: New file.
12378         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12379         unsupported native code.
12380         (mono_marshal_set_callconv_from_modopt): New function splitted from
12381         mono_marshal_get_managed_wrapper.
12382         (mono_marshal_get_managed_wrapper): Use
12383         mono_marshal_set_callconv_from_modopt.
12384         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12385         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12386         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12387         that results in a deadlock when the runtime is loaded in _CorDllMain.
12388         * Makefile.am: Add coree.c and coree.h.
12389
12390         Contributed under MIT/X11 license.
12391
12392 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12393
12394         * generic-sharing.c: Search for type arguments in array element
12395         types as well.
12396
12397 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12398
12399         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12400
12401         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12402
12403         * object.c: Don't setup the RGCTX when the vtable is created,
12404         because we're setting it up lazily now.
12405
12406 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12409         64 bit support.
12410
12411 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12412
12413         * verify.c (verify_class_for_overlapping_reference_fields): 
12414         If class is under fulltrust allow reference types to overllap
12415         if they have the same RVA.
12416
12417 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12418
12419         * pedump.c: Added new flag valid-only, that makes the verifier
12420         behaves just like --security=validil. It won't fail type load
12421         due to unverifiable restrictions.
12422
12423 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12424
12425         * class-internals.h (struct MonoMethod): Added a verification_success
12426         field to cache verifier executions. Reduced MonoMethod:slot size by
12427         one bit.
12428
12429 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12432         instead of a 'vt' argument to save an indirection and to allow these to be used
12433         for valuetypes.
12434         (scan_vtype): New helper function to scan an area using a gc descriptor.
12435         (mono_gc_wbarrier_value_copy): Implement this.
12436         (handle_remset): Add support for REMSET_VTYPE.
12437         (find_in_remset_loc): Ditto.
12438         (mono_gc_base_init): Allow some debugging options to be controlled through the
12439         use of the MONO_GC_DEBUG env variable.
12440         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12441         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12442
12443 2008-04-23  Martin Baulig  <martin@ximian.com>
12444
12445         * domain.c (mono_domain_create): Move the call to
12446         mono_debug_domain_create() down, after allocating the domain id.
12447
12448 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12449
12450         verify.c (verify_class_for_overlapping_reference_fields): Skip
12451         static fields while verifying for overlapping fields as they
12452         don't matter at all.
12453
12454 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12455
12456         * domain-internals.h: added a declaration of
12457         mono_make_shadow_copy.
12458
12459         * assembly.c (mono_assembly_open_full): shadow copying of
12460         assemblies moved to here, so that all the assemblies within the
12461         application domain's private binary directories can be
12462         processed. Fixes bug #380546
12463
12464         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12465         mono_make_shadow_copy and made non-static. The decision whether
12466         to shadow-copy an assembly is made based on its location - it's
12467         copied if it's in one of the private application domain binary
12468         directories and its different to the target file in the shadow
12469         directory. Fixes bug #380546
12470
12471 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12472
12473         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12474
12475         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12476         types.
12477
12478         * reflection.c (mono_image_create_token): Handle 
12479         Method/ConstructorOnTypeBuilderInst.
12480         (resolve_object): Ditto.
12481         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12482         so it can be called from resolve_object. Also handle the case when the inflated
12483         class already has its methods setup.
12484
12485 2008-04-21  Martin Baulig  <martin@ximian.com>
12486
12487         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12488
12489 2008-04-20  Geoff Norton  <gnorton@novell.com>
12490
12491         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12492         pointer dereference.
12493
12494 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12495
12496         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12497         portability API to look up the assembly file. Fixes behavior in
12498         situations when the application has a bin/ directory, but the
12499         assembly search patch refers to Bin/ (and thus the requested file
12500         name is Bin/SomeLibrary.dll). Fixes bug #379888
12501
12502 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12503
12504         verify.c (mono_type_is_generic_argument): Extracted this check
12505         from a dozen places to here.
12506
12507         verify.c: Fixed all issues related to boxing generic arguments
12508         and their constraints.
12509
12510 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12511
12512         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12513
12514 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12517         isn't finished yet. Fixes #363447.
12518
12519 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12522         Fixes #346419.
12523
12524 2008-04-13  Jb Evain  <jbevain@novell.com>
12525
12526         * domain.c: update the 2.1 profile versions.
12527         Merged from the Moonlight 2 branch.
12528
12529 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12532         mscorlibs for the non-refonly case as well.
12533
12534         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12535         in mono_assembly_load_from_full (). Fixes #378924.
12536
12537 2008-04-11  Geoff Norton  <gnorton@novell.com>
12538
12539         * icall.c: The global extern environ doesn't exist on Mac.  We
12540         need to call NSGetEnviron instead.
12541
12542 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12543
12544         verify.c: Add generic method constraint verification.
12545
12546 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12547
12548         class.c (mono_class_inflate_generic_method_full): Add a long
12549         explanation to the is_mb_open hack. Remove the FIXME.
12550
12551 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12552
12553         * verify.c (mono_method_verify): Mark all unknown opcodes
12554         as invalid. Mark jmp as unverifiable.
12555
12556 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12557
12558         * verify.c: Add code to do type constraint verification on class instances.
12559
12560         * verify.c (mono_verifier_verify_class): Use the type constraint 
12561         verification code.
12562
12563 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12564
12565         * class.c (mono_class_get_field_default_value): Don't pass cindex
12566         as hint to mono_metadata_get_constant_index. The local is not initialized
12567         and should contain garbage most of the time. This could only work
12568         with a lot of luck.
12569
12570 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12571
12572         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12573
12574 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12575
12576         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12577
12578         * class.c (mono_class_from_generic_parameter): Save the token of the
12579         generic param in MonoClass::sizes.generic_param_token.
12580
12581         * reflection.c (mono_custom_attrs_from_class): If the class type is
12582         VAR or MVAR retrieve the attributes of the generic param.
12583
12584 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12585
12586         * class.c (mono_class_init): Do class verification if the verifier
12587         is enabled.
12588
12589 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12590
12591         * verify-internal.h: Added mono_verifier_verify_class.
12592
12593         * verify.c: Added mono_verifier_verify_class. It checks for
12594         classes with explicit layout that have overlapping reference fields.
12595
12596         * pedump.c: Init the verifier state prior to verification. Fixed
12597         command line arguments.
12598
12599 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12600
12601         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12602
12603 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12604
12605         * verify-internals.h: Fix a warning.
12606
12607 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12608
12609         * verify-internals.h: New header with the verifier configuration
12610         extracted from mini.c.
12611
12612         * verify.c: Implemented the new functions exported by verify-internals.h.
12613
12614 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12615
12616         * verify.c: Add proper verification of ckfinite.
12617
12618 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12619
12620         * verify.c (do_conversion): Improved error message to something
12621         more meanfull.
12622
12623         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12624         with primitive types.
12625
12626 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12627
12628         * verify.c: Added tail prefix checking. Marked icall
12629         as unverifible.
12630
12631 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12632
12633         * verify.c: Fix the detection of branches to the middle
12634         of an instruction.
12635
12636 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12637
12638         * verify.c: Implemented verification of volatile. and
12639         unaligned. prefix. Check if a type is valid after retrieving it.
12640
12641 2008-04-01  Dick Porter  <dick@ximian.com>
12642
12643         * process.c (process_get_fileversion): If there's no string block,
12644         set the file language to en_US.  Fixes the other new part of bug
12645         374600.
12646
12647 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12648
12649         * class.c: New functions mono_method_can_access_field_full and
12650         mono_method_can_access_method_full. They perform type visibility
12651         and type site check.
12652
12653         * class-internal.h: Added exported functions.
12654
12655         * verify.c: Use new functions to implement proper visibility checks.
12656
12657 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12658
12659         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12660
12661 2008-03-28  Dick Porter  <dick@ximian.com>
12662
12663         * process.c (process_get_fileversion): Use the first language ID
12664         we see, rather than insisting on an invariant language.  Fixes bug
12665         374600.
12666
12667 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12670         the streams to fix reading of invalid memory later.
12671
12672         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12673         to ease debugging.
12674
12675 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12676
12677         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12678         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12679
12680 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12681         * threads.h: Added MonoThreadManageCallback type and
12682         mono_thread_set_manage_callback prototype
12683         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12684         (used to store the mono_thread_manage callback).
12685         * threads.c: Added mono_thread_set_manage_callback, and handle
12686         "MonoThread->manage_callback" in build_wait_tids.
12687
12688 2008-03-26  Dick Porter  <dick@ximian.com>
12689
12690         * process.c (process_get_fileversion): Set FileVersionInfo strings
12691         to Empty when the resource doesn't have the particular info.
12692         Fixes bug 355717.
12693
12694 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12695
12696         * verify.c (mono_method_verify): Proper prefix validation.
12697
12698 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12699
12700         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12701         itself in a separate argument instead of throwing them. Fixes #373448.
12702
12703         * appdomain.c: Bump corlib version.
12704
12705 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12706
12707         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12708
12709 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12710
12711         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12712         version macros.
12713
12714 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12715
12716         * generic-sharing.c, class-internals.h: Code for putting
12717         reflection types into the runtime generic context.
12718
12719 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12720
12721         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12722         Fixes #340662. 
12723
12724
12725 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12726
12727         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12728
12729         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12730
12731         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12732
12733         * verify.c (do_cast): Let the result value keep the boxed status.
12734
12735         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12736
12737 2008-03-17  Jb Evain  <jbevain@novell.com>
12738
12739         * reflection.c: when running on a 2.0 runtime, emit
12740         unconditionally the #~ header version as 2.0, and the
12741         CLI header version as 2.5, for symmetry's sake with csc.
12742
12743 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12744
12745         * class.c: Remove the unused cache_interface_offsets stuff.
12746
12747         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12748         profiler.c: Fix warnings.
12749
12750 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12751
12752         * generic-sharing.c, class-internals.h: Support for putting
12753         methods into the runtime generic context.
12754
12755 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12758         classes which are generic instances of not-yet finished typebuilders. Fixes
12759         #351172.
12760
12761         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12762
12763 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12766
12767         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12768         field, replace it with a hash table in MonoDynamicImage.
12769
12770         * reflection.c (inflate_mono_method): Access the generic definition object from
12771         image->generic_def_objects instead of imethod->reflection_info.
12772
12773         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12774
12775         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12776         
12777         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12778         function in reflection.c so it is easier to keep in sync with the dynamic image
12779         creation code.
12780
12781         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12782         mono_image_close ().
12783
12784 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12785
12786         * class.c (mono_class_generic_sharing_enabled): Disable generic
12787         sharing for all architectures except AMD64 and x86 to fix build.
12788
12789 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12790
12791         * verify.c: Use the generic definition MonoGenericContext when available.
12792         Remove code for checking generics instance compatibility in favor of
12793         mono_class_is_assignable_from.
12794
12795 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12796
12797         * marshal.c, marshal.h, metadata-internals.h, image.c,
12798         wrapper-types.h: New wrapper for invoking a shared static method
12799         without having to pass the runtime generic context argument.
12800
12801 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12802
12803         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12804
12805 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12806
12807         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12808         
12809         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12810         create a token from a FieldOnTypeBuilderInst.
12811         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12812         (resolve_object): Ditto.
12813
12814         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12815         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12816
12817 2008-03-14  Martin Baulig  <martin@ximian.com>
12818
12819         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12820
12821         * debug-mono-symfile.h
12822         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12823         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12824
12825 2008-03-10  Martin Baulig  <martin@ximian.com>
12826
12827         * debug-mono-symfile.h
12828         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12829         `lexical_block_table_offset'.
12830         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12831         `lexical_blocks'.
12832         (MonoSymbolFile): Added `version'.
12833
12834         * mono-debug.h
12835         (MonoDebugLexicalBlockEntry): Removed.
12836         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12837         `lexical_blocks'.
12838
12839         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12840         blocks here; the debugger now does this internally.
12841
12842 2008-02-27  Martin Baulig  <martin@ximian.com>
12843
12844         * object.c (mono_runtime_exec_main): Call
12845         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12846         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12847
12848 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12849
12850         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12851         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12852
12853 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12854
12855         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12856         ldftn with a virtual method.
12857
12858 2008-03-13  Geoff Norton  <gnorton@novell.com>
12859
12860         * decimal.c:  Only include memory.h if the platform has it.
12861
12862 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12863
12864         * assembly.c, class.c, metadata-internals.h: make sure public key
12865         tokesns are compared in a case-insensitive way. Also, all
12866         the lookups in the GAC use a lowercase public key token
12867         (gaacutil already does the lowercasing on install). Fixes
12868         bug #369541.
12869
12870 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12871
12872         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12873         and return value.
12874
12875 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12876
12877         * image.c: when someone loads a mscorlib from a file, return the
12878         currently loaded mscorlib (fixes bug #369253).
12879
12880 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12881
12882         * class.c: handle types with no parents by forcing them to have
12883         System.Object as a parent and marking them as broken (this currently
12884         allows the first part of bug #369173 to work as well, likely because
12885         we don't check for typeload exceptions everywhere yet).
12886
12887 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12888
12889         * class.c: more complete check that types belong to corlib
12890         (fixes second part of bug #369173).
12891
12892 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12893
12894         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12895           "inline" to "__inline" before including mono-membar.h.
12896           
12897         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12898           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12899           MSVC builds.
12900
12901         Contributed under MIT/X11 license.
12902
12903 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12904
12905         * verify.c (do_invoke_method): Remove return type validation.
12906
12907         * verify.c (do_ret): Do return type validation at return site instead of
12908         call site.
12909
12910 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12911
12912         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
12913
12914         * verify.c: Some todos cleaned and improved a few error messages.
12915
12916 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
12919
12920 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
12923         system types correctly.
12924
12925         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
12926         function.
12927
12928 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * assembly.c (build_assembly_name): Fix a warning.
12931
12932 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
12933
12934         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
12935         the called function takes an object type argument. Fixes storing or
12936         valuetypes across remoting as well as reducing memory usage.
12937         * image.c, metadata-internals.h: remove now unused ldfld_remote and
12938         stfld_remote wrapper caches.
12939
12940 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12941
12942         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
12943         is not found.
12944
12945         * reflection.c (mono_image_register_token): New helper function to save
12946         a token->object mapping.        
12947
12948         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
12949         managed code.
12950
12951         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
12952         one dimension arrays. Fixes #367670.
12953         (mono_reflection_get_type_internal): Ditto.
12954
12955 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12956
12957         * marshal.c: mono_load_remote_field_new() always returns object.
12958         so use the proper signature (fixes bug #366445).
12959
12960 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12961         
12962         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
12963         add an 'inline_failure' flag instead.
12964
12965 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12966
12967         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
12968         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
12969         contains the location of "this", used for exception handling.
12970
12971 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
12974         their size on all platforms for perf reasons.
12975
12976 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12977
12978         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
12979         object-internal.h
12980
12981         * object-internal.h: Same.
12982
12983 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12984
12985         * reflection.h: Fix the build I just broke.
12986
12987 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12988
12989         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
12990         Test if a token is valid, this remove explicit usage of 
12991         MonoDynamicImage::tokens from the verifier code.
12992
12993         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
12994
12995         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
12996         instead of direct access to MonoDynamicImage::tokens.
12997
12998 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12999
13000         * verify.c (token_bounds_check): Fix the build I just broke.
13001
13002 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13003
13004         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13005
13006         * verify.c (verifier_load_method): Fixed the errors message.
13007
13008         * verify.c (mono_method_verify): Fixed a debug message.
13009
13010 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13011
13012         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13013         mono-perfcounters.h, class-internals.h: support for predefined
13014         writable counters, query of categories and counters, bugfixes.
13015
13016 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13017
13018         * verify.c (do_refanytype): Verify the refanytype opcode.
13019
13020         * verify.c (mono_method_verify): Use do_refanytype.
13021
13022 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13023
13024         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13025
13026         * verify.c (mono_method_verify): Use do_mkrefany.
13027
13028 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13029
13030         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13031         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13032         implementation.
13033
13034 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13035
13036         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13037         the type load exception.
13038
13039 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13040
13041         * verify.c: Added a few FIXME for method signatures
13042
13043         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13044         of mono_method_get_signature and get vararg call working. Removed unused
13045         checks for return value.
13046
13047         * verify.c (do_refanyval): Verify the refanyval opcode.
13048
13049         * verify.c (mono_method_verify): Implemented verification of arglist and
13050         use do_refanyval.
13051
13052 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13055         vtypes to marshal.c.
13056
13057         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13058         it works for AOT as well.
13059
13060 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13061
13062         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13063         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13064         the system time is adjusted.
13065
13066 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13067
13068         * icall.c, icall-def.h: use the new time functions (fixes the
13069         non-monotonic behaviour of TickCount).
13070
13071 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13072
13073         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13074         it breaks the build.
13075         
13076         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13077         cattr is not finished yet.
13078
13079 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13080
13081         * verify.c: Proper token validation for field, method and type.
13082
13083 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13084
13085         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13086
13087         * loader.c (method_from_memberref): Generate type load error instead of method missing
13088         if the type is not found.
13089
13090 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13091
13092         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13093         some of the conversions caused the generation of a marshal directive exception.
13094
13095 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13096
13097         verify.c: Report which exception should be thrown by the JIT.
13098         Added a lot of FIXME notes.
13099
13100 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13101
13102         * generic-sharing.c: Runtime generic context slots are not
13103         instantiated on init anymore.  Instead, provide function to do the
13104         instantiating on demand.
13105
13106         * class-internals.h: Added vtable to runtime generic context.
13107         Macros for encoding direct and indirect slot offsets in one
13108         guint32.
13109
13110 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13111
13112         * object.c, generic-sharing.c: Moved some generic sharing code
13113         from object.c to generic-sharing.c.
13114
13115         * generic-sharing.c: Added support for extensible runtime generic
13116         context.
13117
13118         * metadata-internals.h: Two new hash tables in MonoImage for
13119         extensible runtime generic context support.
13120
13121         * domain.c: Unregister generic vtables upon domain unloading.
13122
13123         * image.c: Destroy new hash tables upon image unloading.
13124
13125         * metadata.c: Unregister generic subclasses upon image unloading.
13126
13127         * class-internals.h: New data structure for runtime generic
13128         context template.  New fields in the runtime generic context for
13129         extensible part.
13130
13131         * Makefile.am: Added generic-sharing.c.
13132
13133 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13134
13135         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13136         there is a pending loader exception, raise it.
13137
13138         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13139         same.
13140
13141         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13142         same.
13143
13144         Fixes #363450.
13145
13146 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13149
13150         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13151         
13152         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13153         ref-only requests for compatibility with MS.
13154
13155 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13156
13157         * reflection.c (mono_custom_attrs_from_method): Don't silently
13158         return an empty list for generic method instances.
13159         (mono_custom_attrs_from_param): Likewise.
13160
13161 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13162             Raja R Harinath  <harinath@hurrynot.org>
13163
13164         Fix #354757
13165         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13166         * class.c (mono_class_inflate_generic_method_full): Initialize it
13167         when a fully-open method is instantiated.
13168         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13169         to new field.
13170         * reflection.c (inflate_mono_method): Don't create a temporary context.
13171
13172 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13173
13174         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13175         Compute correct value, to prepare for imethod->reflection_info going away.
13176
13177 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13180
13181 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13182
13183         * verify.c: Implement skip visibility flag.
13184
13185 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13186
13187         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13188         which contains an extra field to tell the kind of exception that should be thrown.
13189
13190         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13191
13192 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13193
13194         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13195         'method' is updated.
13196
13197 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13198
13199         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13200         explicit layout as well. Fixes #360375.
13201
13202 2008-02-11  Geoff Norton  <gnorton@novell.com>
13203
13204         * loader.c: Guard and dereference against inflated generic methods
13205
13206 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13207
13208         * class.c: Include Retargetable spec in assembly name.
13209         * assembly.c: Always include PublicKeyToken spec in assembly name
13210         (with value "null" if assembly is not signed), and include
13211         Retargetable spec.
13212         * icall-def.h: Added icall for Assembly.get_fullname.
13213         * icall.c: Added icall returning the fullname of an assembly.
13214
13215 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * class.c (mono_class_setup_vtable_general): Add a missing call to
13218         mono_class_setup_methods () which is needed in the AOT case.
13219
13220 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13221
13222         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13223         stack type of the given MonoType.
13224
13225         * verify.c (verify_type_compatibility_full): Handle the void type.
13226
13227         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13228         way stack merging works.
13229
13230         * verify.c (store_local): Improved verification message.
13231
13232         * verify.c (do_branch_op): If the merging is invalid, the method
13233         is unverifiable and not invalid. Improved error message.
13234
13235         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13236         a reference type diferent than System.Object. Improved error
13237         message.
13238
13239 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13240
13241         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13242
13243         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13244         type of an enum even if the argument is byref.
13245
13246         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13247         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13248
13249         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13250
13251         *verify.c (verify_type_compatibility_full): Make enum types
13252         compatible with their base types.
13253
13254         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13255         types are compatible for the special case of a boxed valuetype and
13256         System.Object.
13257
13258         * verify.c (verify_stack_type_compatibility): The function
13259         is_compatible_boxed_valuetype was extracted from here.
13260
13261         * verify.c (push_arg): Only set ctx->has_this_store if the method
13262         is not static.
13263
13264         * verify.c (do_ldelem): Fixed a typo in an error message and added
13265         strict check for mixing int32 and native int as the array type
13266         and ldelem type.
13267
13268         * verify.c (merge_stacks): Consider boxed valuetypes in the
13269         compatibility checks.
13270
13271 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13272         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13273
13274 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13275         *class.c: use_new_interface_vtable_code: renamed the env var to have
13276         a "MONO_" prefix, and fix the logic to enable it by default.
13277
13278 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13279         *class.c:
13280         mono_class_setup_vtable_general: rewrote the way in which interface
13281         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13282         makes the code more maintainable.
13283         For now the old code is still there, and can be activated setting
13284         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13285
13286 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13287
13288         * verify.c: guarded some debug functions around and #ifdef.
13289
13290         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13291
13292 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13295         changes for now since they seem to break too many things.
13296
13297 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13298
13299         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13300         mono_marshal_find_nonzero_bit_offset): Added macro and function
13301         for finding the byte- and bit-offset of a bitfield within a
13302         struct.
13303
13304 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13305
13306         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13307         (mono_marshal_get_struct_to_ptr): Ditto.
13308
13309         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13310         cctor_signature.
13311
13312 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13313
13314         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13315         between methods for non-corlib types.
13316
13317 2008-02-02  Geoff Norton  <gnorton@novell.com>
13318
13319         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13320         generic parameters as well. (Fixes #342536)
13321
13322 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13323
13324         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13325
13326         * verify.c (do_invoke_method): Fix for calling with byref structs.
13327
13328         * verify.c (do_cast): push a boxed value type based on the type token and not
13329         the type of stack.
13330
13331 2008-01-31  William Holmes  <billholmes54@gmail.com>
13332
13333         * process.c (process_module_string_read): Check the size returned form 
13334           VerQueryValue to avoid out of memory exception. 
13335
13336 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13339         Handle properly modules which are not in the moduleref table. Fixes
13340         #356938.
13341
13342 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13343
13344         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13345         the dynamic case which is now in managed code.
13346         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13347
13348         * marshal.c (mono_string_to_bstr): Fix a warning.
13349         (init_com_provider_ms): Ditto.
13350
13351         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13352
13353         * exception.c (mono_get_exception_out_of_memory): New helper function.
13354
13355 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13356
13357         * marshal.c: Add support for BSTR marshalling
13358         using other COM systems.
13359
13360         Code is contributed under MIT/X11 license.
13361
13362 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13363
13364         * object.c (mono_runtime_invoke_array): reverted previous
13365         commit as it breaks the build.
13366
13367 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13368
13369         * object.c (mono_runtime_invoke_array): Verify arguments for
13370         invalid types. Fixes #348522.
13371
13372 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13373
13374         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13375         non-final virtual calls using call. 
13376
13377         * verify.c (do_invoke): fixed some TODOs.
13378
13379         * verify.c (push_arg): set has_this_store for "ldarga 0".
13380
13381 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13382
13383         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13384         which belong to an inflated class. Fixes #356531.
13385
13386 2008-01-26  Robert Jordan  <robertj@gmx.net>
13387
13388         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13389         which resort to FindFirstFile when a certain error condition
13390         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13391         Code is contributed under MIT/X11 license.
13392
13393 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13394
13395         * marshal.c (emit_marshal_string): Fix out string marshalling
13396         to use specified encoding. Fixes #323900.
13397
13398         Code is contributed under MIT/X11 license.
13399
13400 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13401
13402         * class.c (mono_class_inflate_generic_method_full): Don't modify
13403         iresult->context after cache check.
13404
13405 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * class.c (mono_class_inflate_generic_method_full): Change the
13408         struct assignments to memcpy for better visibility and add some comments.
13409
13410 2008-01-23  Dick Porter  <dick@ximian.com>
13411
13412         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13413         procedure, and make it work on windows.
13414
13415 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13418         a MonoReflectionTypeBuilder since it is always of that type.
13419
13420         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13421
13422         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13423
13424         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13425         
13426         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13427
13428         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13429
13430         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13431         instantiations from the type cache.
13432
13433 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13434
13435         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13436
13437         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13438
13439 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13440
13441         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13442
13443         * verify.c (mono_method_verify): removed old TODO
13444
13445 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13446
13447         * verify.c (do_newobj): add visibility check.
13448
13449 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13450
13451         * verify.c (do_load_function_ptr): add visibility check.
13452
13453 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13454         *class.c:
13455         mono_generic_class_get_class: hook profiler events.
13456         mono_field_get_offset: added to support heap-shot in the new profiler.
13457         *class.h: exported mono_field_get_offset.
13458         * reflection.c:
13459         mono_reflection_setup_internal_class: hook profiler events.
13460
13461 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13462
13463         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13464         argument here too and use it to avoid checking for pending exceptions if 
13465         possible.
13466
13467 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13468
13469         * assembly.c (build_assembly_name): add arg for passing the assembly
13470         flags. Do not consider a PublicKey with value "null" valid.
13471         (mono_assembly_name_parse_full): added boolean argument that will be
13472         set if the assembly name contains a PublicKeyToken spec. Added support
13473         for the Retargetable spec for which only Yes or No are allowed as valid
13474         value. Consider assembly name invalid if Retargetable spec is set, but
13475         either version, culture or public key (token) are not specified.
13476         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13477         with implementation in assembly.c.
13478         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13479         from MonoAssemblyName.
13480         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13481         introduced argument for mono_assembly_name_parse_full to know if the
13482         assembly name has a PublicKeyToken spec, and if it has instruct
13483         fill_reflection_assembly_name to use default value for keyToken (if
13484         PublicKeyToken is null).
13485
13486 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13487
13488         * verify.c (mono_method_verify): fixed ovf ops with
13489         float values. They are unverifiable now.
13490
13491 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13492
13493         * class.c (set_failure_from_loader_error): add BadImageException to the
13494         list of exceptions that can cause a type to fail to load.
13495
13496         * class.c (mono_class_get_exception_for_failure): same.
13497
13498 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13499
13500         * verify.c (in_any_exception_block): added, check if offset
13501         is part of any exception handling clause.
13502
13503         * verify.c (get_stack_type): added VAR and MVAR types.
13504
13505         * verify.c (do_stobj): better error messages.
13506
13507         * verify.c (do_cpobj): added, check cpobj.
13508
13509         * verify.c (do_initobj): added, check initobj.
13510
13511         * verify.c (do_sizeof): added, check sizeof.
13512
13513         * verify.c (do_localloc): added, check localloc.
13514
13515         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13516
13517 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13518
13519         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13520         save_lmf/restore_lmf opcodes.
13521
13522         * threads.c (mono_threads_install_notify_pending_exc): New function to
13523         install a callback notifying the JIT there is a pending exception on a thread.
13524         (mono_thread_request_interruption): Call the new callback.
13525         (mono_thread_get_and_clear_pending_exception): New function to return the
13526         exception pending on a thread.
13527
13528         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13529         to turn off checking for pending exceptions.
13530         (mono_marshal_get_native_wrapper): Ditto.
13531
13532 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * threads-types.h: Get rid of the unnecessary extern declarations.
13535
13536 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13537
13538         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13539         return field from parent class if not private.
13540         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13541         returns fields from parent class if they are not private.
13542         (method_nonpublic): added function to determine if a given method
13543         should be considered non-public. Returns false for private methods
13544         on parent class, and internal methods from parent on the 1.0 profile.
13545         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13546         use method_nonpublic function to determine whether method should be
13547         returned.
13548         (property_accessor_public): use newly introduced method_nonpublic
13549         function to determine whether accessor is non-public. 
13550         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13551         event from parent class if not private. Only return static event if
13552         Static flag is set, and only return static event from parent class if
13553         FlattenHierarchy flag is set.
13554         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13555         include non-private events from parent class.
13556
13557 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13560         warning.
13561
13562 2008-01-16  Wade Berrier <wberrier@novell.com>
13563
13564         * security.c: Add assembly.h header to appease some warnings
13565
13566 2008-01-16  Dick Porter  <dick@ximian.com>
13567
13568         * process.c (process_module_string_read): Remove trailing null
13569         when saving string.
13570
13571 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13572
13573         * class-internals.h: A new data structure describing the layout of
13574         a runtime generic context (MonoRuntimeGenericContextTemplate).
13575
13576         * metadata-internals.h: Added a hash table to MonoDomain that maps
13577         from open generic classes to their runtime generic context
13578         templates.
13579
13580         * object.c: Building of the runtime generic context, including
13581         proper handling of generic type arguments of superclasses.
13582         Building of the runtime generic context according to the template.
13583
13584 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13587         Fixes #350856.
13588
13589         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13590         mono_portability_find_file (). Fixes #325466.
13591         (mono_image_get_public_key): Fix a warning.
13592
13593 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13594
13595         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13596         Fixes #353550.
13597         (mono_class_from_name_case): Ditto.
13598
13599 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13600
13601         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13602           common storage for the tables used in the System/NumberFormatter class.
13603
13604 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13607
13608 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13609
13610         * verify.c (get_boxable_mono_type): check if the token is valid.
13611
13612         * verify.c (set_stack_value): changed to add an error if an
13613         invalid type is set on stack. Changed all callers due to signature change.
13614
13615         * verify.c (do_stobj): implement stobj validation.
13616
13617 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13618
13619         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13620         set container->is_method, it was set earlier.
13621
13622         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13623         generic methods.
13624
13625         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13626         is_method of the generic container to TRUE for methods.
13627
13628 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * metadata.c (type_in_image): Handle type parameters properly.
13631
13632         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13633         memory ownership of this structure.
13634
13635 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13636
13637         * verify.c (get_boxable_mono_type): make typedref types been just
13638         unverifiable. check for void type.
13639
13640         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13641
13642         * verify.c (do_load_function_ptr): accept method spec tokens.
13643
13644 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * marshal.c (mono_class_native_size): Always set *align even if this is called
13647         recursively.
13648
13649 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13652         out-of-date.
13653
13654 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13655
13656         * verify.c: removed some old unused tables. A huge bunch of small fixes
13657         to things found while testing the verifier with mono basic.
13658
13659         * verify.c (dump_stack_value): dump null literal flag to.
13660
13661         * verify.c (verify_type_compatibility_full): fix comparison
13662         for types that have a generic super type.
13663
13664         * verify.c (verify_stack_type_compatibility): fix compatibility
13665         between null literals and reference types. fix compatibility between
13666         boxed valuetypes and object. fix corner case test for enums.
13667
13668         * verify.c (do_cmp_op): proper verification of cgt.un in case
13669         of reference types.
13670
13671         * verify.c (do_invoke_method): fix error message.
13672
13673         * verify.c (do_store_indirect
13674
13675         * verify.c (check_is_valid_type_for_field_ops): proper verification
13676         of managed pointers to valuetypes and boxed valuetypes. proper verification
13677         of null literals.
13678
13679         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13680         allow token to be a reference type.
13681
13682         * verify.c (do_cast): proper handling of boxes valuetypes.
13683
13684         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13685         in object[].
13686
13687         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13688         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13689         fixed the decoding of unbox_any
13690
13691 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13692
13693         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13694
13695 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13696
13697         * verify.c (do_newobj): do delegate verification.
13698
13699         * verify.c (verify_delegate_compatibility): perform delegate
13700         verification.
13701
13702         * verify.c (verify_ldftn_delegate): perform tests related to
13703         ldftn delegates.
13704
13705         * verify.c (mono_delegate_signature_equal): perform the
13706         slightly diferent signature comparison required by delegates.
13707
13708         * metadata.c (mono_metadata_type_equal_full): added and exported
13709         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13710         allows signature only comparison.
13711
13712         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13713         as MONO_INTERNAL.
13714
13715 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13716
13717         * verify.c: added a bunch of stack_slot_* functions to
13718         make access to stack slot type easier. This is required to
13719         allow optional flags, like null literal, boxed value and
13720         this pointer.
13721         All access paths to IlStackDesc::stype have been changed 
13722         to use these new funcions.
13723         Removed a bunch of unused functions and cleared all warnings.
13724         This patch introduces the usage of the this pointer and 
13725         boxed value flags.
13726
13727 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13728
13729         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13730
13731 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13732
13733         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13734         match managed version.
13735
13736         * appdomain.c: Bump corlib version.
13737         
13738         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13739         argument.
13740
13741 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13742
13743         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13744         Set public key token to zero-length byte array if assembly is not
13745         strongnamed.
13746
13747 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13750         writing a vtype array elem.
13751
13752 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13753
13754         * assembly.c (build_assembly_name): return FALSE if length of token is
13755         not 16 (if not "null").
13756         (mono_assembly_name_parse_full): return FALSE if value of version,
13757         culture, token or key is 0.
13758         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13759         specify whether public key and public key token must be set to default
13760         value (zero-length byte array) if not available. Set versioncompat to
13761         SameMachine. If public key is available or the default is set, then
13762         set PublicKey flag.
13763         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13764         is available, use empty byte array as default value. On the 2.0
13765         profile, use default value for public key token if not set.
13766         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13767         profile, use default value for public key if not set. On the 2.0
13768         profile, use default value for public key token if not set.
13769         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13770         default values for public key and public key token.
13771
13772 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13775         field to keep it in synch with the managed object.
13776
13777         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13778         delegates. Fixes #351520.
13779
13780         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13781         contains defined memory.
13782         
13783         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13784
13785         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13786         
13787         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13788         of the GC data structures.
13789
13790         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13791
13792         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13793         
13794         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13795         barrier.
13796         (mono_array_clone_in_domain): Ditto.
13797         (mono_array_clone_in_domain): Ditto.
13798
13799         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13800         (cache_culture): Use a write barrier.
13801
13802         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13803         (ves_icall_get_property_info): Ditto.
13804
13805         * object.h (MONO_STRUCT_SETREF): New macro.
13806
13807         * class-internals.h (MonoStats): Add some GC statistics.
13808
13809         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13810
13811 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13812
13813         * exception.c (mono_exception_from_name_two_strings):
13814         Break from loop after method is found.
13815
13816 2008-01-04  Dick Porter  <dick@ximian.com>
13817
13818         * process.c (process_module_string_read): Rename variable to
13819         reflect correct usage, after fixing bug 345972.
13820
13821 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13822
13823         * verify.c (mono_type_create_fnptr_from_mono_method): 
13824         created a MonoType function pointer instance to be used during
13825         verification. The verifier releases this memory at end.
13826
13827         * verify.c (mono_method_is_constructor): extracted repeated
13828         checks for constructor into a single class.
13829
13830         * verify.c (do_push_field): use new extracted method
13831         for constructor check.
13832
13833         * verify.c (do_newobj): same.
13834
13835         * verify.c (do_ldftn): renamed to do_load_function_ptr
13836         and make it verify ldvirtftn too.
13837
13838         * verify.c (mono_method_verify: proper verification
13839         of ldvirtftn. release created MonoMethod instances.
13840
13841 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13842
13843         * verify.c (token_bounds_check): added.
13844
13845         * verify.c (do_ldftn): added.
13846
13847         * verify.c (mono_method_verify): proper verificartion of ldftn.
13848
13849 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13850
13851         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13852         than the table row count. It's the resposibility of the caller to
13853         make the bounds check and raise the correct error.
13854
13855         * metadata.c (mono_metadata_decode_row_col): Same.
13856
13857         * loader.c (mono_get_method_from_token): perform bounds check
13858         on token for methoddef table.
13859
13860 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13861
13862         * icall.c
13863         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13864         assert into a negative result, the managed code already coped with
13865         that.
13866
13867         Some folks on Windows reported this error. 
13868
13869 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13870
13871         * appdomain.c: Bump corlib version.
13872         * icall.c:
13873         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13874         CultureInfo.CreateCulture to create CultureInfo for name.
13875         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13876         create CultureInfo for name. Fixes bug #347174.
13877
13878 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13879
13880         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13881         flags.
13882
13883         * verify.c (is_valid_branch_instruction): allow branching to the
13884         first instruction of the protected block.
13885
13886         * verify.c (is_valid_cmp_branch_instruction): same.
13887
13888         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13889         avoid double initialization.
13890
13891         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13892         detect which cases the eval stack should just be copied.
13893
13894         * verify.c (mono_method_verify): check if the eval stack
13895         is empty when entering a protected block.
13896
13897 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13898
13899         * verify.c: added is_clause_in_range, is_clause_inside_range,
13900         is_clause_nested and verify_clause_relationship. They perform
13901         the verifications stated in P1 12.4.2.7.
13902
13903         * verify.c (mono_method_verify): remove some unused variables,
13904         add the new exception clause checks, add instruction border
13905         checks for protected block start/end, improved some error 
13906         messages and fixed a bug in the way invalid instruction access
13907         is detected.
13908
13909 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13910
13911         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
13912         from GC 7.0 if available.
13913
13914         * object.c: Remove an unused define.
13915         
13916         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
13917
13918         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
13919
13920         * null-gc.c (mono_gc_make_descr_for_array): Implement.
13921
13922         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
13923
13924         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
13925         to take the same arguments as the other make_descr functions.
13926
13927         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
13928
13929         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
13930         directly.
13931
13932         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
13933         mini.c.
13934
13935         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
13936         call to boehm-gc.c.
13937
13938         * boehm-gc.c (mono_gc_register_root): Fix a warning.
13939
13940         * null-gc.c (mono_gc_register_root): Fix a warning.
13941
13942         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
13943
13944         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
13945         (mono_gc_base_init): Call GC_init ().
13946
13947         * null-gc.c: Define mono_gc_register_root () as a no-op.
13948
13949         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13950
13951 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
13952
13953         * verify.c: add prototype for merge_stacks at top
13954
13955         * verify.c (do_switch): added.
13956
13957         * verify.c (merge_stacks): on some cases the stack merging
13958         was not happening properly. Unequal stack sizes at merge
13959         points should be invalid.
13960
13961         * verify.c (mono_method_verify): added more debug info on stack state.
13962         verify switch properly.
13963
13964 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
13965
13966         * method-builder.h: New file, moved the mono_mb_ declarations here from 
13967         marshal.h.
13968
13969         * boehm-gc.c marshal.c: Include method-builder.h.
13970
13971         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
13972
13973         * marshal.c: Remove some code which is now in method-builder.c.
13974
13975 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13976
13977         * method-builder.c: New file, extraction of the method builder functionality 
13978         from marshal.c.
13979
13980         * marshal.c: Move the mb functions into method-builder.c.
13981
13982         * marshal.h marshal.c: Export some mono_mb_... functions.
13983
13984         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
13985
13986         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
13987         the caller.
13988
13989         * class.c (mono_class_get_full): Check the token type in the dynamic case.
13990
13991         * loader.c (mono_field_from_token): Ditto.      
13992
13993         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
13994         type as well.
13995         
13996         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
13997         Fixes #342565.
13998
13999         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14000         a helper function for setting it.
14001
14002         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14003
14004         
14005         * assembly.c: Significally simplify code now that referenced assemblies are 
14006         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14007
14008         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14009         #349952.
14010
14011 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14012
14013         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14014         instructions that were target of branches or are at protected block boundaries.
14015
14016         * verify.c (in_same_block): handle filter clauses.
14017
14018         * verify.c (is_valid_branch_instruction): added. checks the target of
14019         instructions br or brtrue/false.
14020
14021         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14022         binary branch instructions such as beq and bge.
14023
14024         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14025         and made it pin the instruction as been part of the exception block.
14026
14027         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14028         of in_same_block.
14029
14030         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14031         of in_same_block.
14032
14033         * verify.c (do_ret): ret from a protected block is unverifiable and
14034         not invalid.
14035
14036         * verify.c (do_static_branch): verify br and br.s instructions.
14037
14038         * verify.c (merge_stacks): add extra param to support detection
14039         of branches in the middle of instructions.
14040         
14041         * verify.c (mono_method_verify): verify branches and exception blocks
14042         that target the middle of instructions. Proper verification of br and br.s.
14043
14044 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14045
14046         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14047         skip_visibility field.
14048         (reflection_methodbuilder_from_dynamic_method): Ditto.
14049
14050         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14051         registrations. Fixes #348193.
14052
14053         * threads.h: Move the internal mono_thread_get_pending_exception () to
14054         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14055
14056 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14057
14058         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14059         icall registration. Fixes #348193.
14060
14061         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14062         for corlib classes into object. Fixes #349621.
14063
14064 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14065
14066         * icall.c (property_accessor_nonpublic): new function to determine
14067         whether an accessor allows a property to be considered non-public.
14068         Returns false for private accessor(s) from parent class, and internal
14069         accessor(s) from parent on 2.0 profile (and higher).
14070         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14071         to determine whether property should be included if NonPublic flag
14072         is set. Fixes bug #349078.
14073
14074 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14075
14076         * verify.c (init_stack_with_value): added.
14077
14078         * verify.c (mono_method_verify): extracted common
14079         code for exception initialization into init_stack_with_value.
14080
14081         * verify.c (mono_method_verify): initialize the exception
14082         for handler clauses as well.
14083
14084         * verify.c (mono_method_verify): fix the exception clause
14085         ordering rules, it should use handler end offset and not
14086         start offset.
14087
14088 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14089
14090         * rawbuffer.c: remove useless warning.
14091
14092 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14093
14094         * threads.h, threads-types.h: move functions to the correct header
14095         (fixes bug#349952).
14096
14097 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14098
14099         * verify.c (mono_method_verify): proper verification
14100         of exception handling clauses ranges and fallthru in
14101         and out of protected blocks.
14102
14103 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14104
14105         * verify.c (mono_method_verify): fixed compilation issue.
14106
14107 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14108
14109         * verify.c (mono_method_verify): a printf slipped in, changed
14110         to use verifier debug macro.
14111
14112 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14113
14114         * verify.c (is_correct_leave): check for filter clauses.
14115
14116         * verify.c (do_filter): added.
14117
14118         * verify.c (mono_method_verify): property verification of leave.
14119
14120
14121 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14122
14123         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14124         Win32 build, until we figure out how to do the proper thing on
14125         Win32.
14126
14127 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14130         by the previous patch.
14131         
14132         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14133         the assembly resolve handler for refonly assemblies.
14134
14135 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14136
14137         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14138         Make sure only one thread is allowed to commence shutdown, and
14139         don't allow new threads to be started once shutdown is in
14140         progress.
14141
14142 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14143
14144         * verify.c (is_correct_endfilter): added.
14145
14146         * verify.c (is_unverifiable_endfilter): added.
14147
14148         * verify.c (do_endfilter): added.
14149
14150         * verify.c (mono_method_verify): property verification of endfilter
14151         and fixed a corner case or endfinally.
14152
14153 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14154
14155         * verify.h: new flags to support fail fast of unverifiable code and
14156         do non-strict verification. Non-strict verification is required to
14157         have MS runtime compatibility. There are a huge amount of unverifiable
14158         code that it accepts as verifiable. The strict mode verifies the code
14159         as the specs says.
14160         Non-strict mode will be required in cases where code needs to be
14161         accepted as verifiable but fails under strict mode.
14162
14163         * pedump.c: added support to fail fast and non-strict verification.
14164
14165         * verify.c: added support for both fail fast and non-strict verification.
14166
14167 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14168
14169         * verify.c (is_correct_endfinally): added.
14170
14171         * verify.c (mono_method_verify): property verification of endfinally.
14172
14173 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14174
14175         * verify.c (in_any_block): check for filter clauses.
14176
14177         * verify.c (is_correct_rethrow): added.
14178
14179         * verify.c (mono_method_verify): property verification of rethrow.
14180
14181         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14182
14183 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14184
14185         * verify.c (do_throw): added.
14186
14187         * verify.c (mono_method_verify): property verification of throw
14188
14189 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14192         assemblies. Fixes #346425.
14193
14194 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14197         FieldBuilders.
14198
14199         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14200
14201         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14202         prevent asserts when this is called with a token which might not be valid.
14203
14204         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14205         lookup_dynamic_token_class with valid_token == FALSE.
14206
14207         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14208
14209         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14210
14211         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14212         
14213 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14214
14215         * gc.c: Don't delay threadpool thread finalization unless Mono is
14216         shutting down.
14217
14218 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14219
14220         * threads.c: turn an assert into a non-fatal warning.
14221
14222 2007-12-09  Robert Jordan  <robertj@gmx.net>
14223
14224         * icall.c (GetVirtualMethod): Add missing argument validation.
14225
14226 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14227
14228         * verify.c (do_cast): added.
14229
14230         * verify.c (mono_method_verify): property verification of castclass and isinst.
14231
14232
14233 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14234
14235         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14236
14237         * verify.c (do_stelem): added.
14238
14239         * verify.c (mono_method_verify): property verification of stelem.X.
14240
14241 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14242
14243         * class.c, class-internals.h: Introduce an environment variable
14244         (MONO_GENERIC_SHARING) through which the extent of generic code
14245         sharing can be controlled (share all classes, share only corlib
14246         classes, or share nothing).
14247
14248         * object.c: Only create runtime generic context for classes for
14249         which sharing is enabled.
14250
14251 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14252
14253         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14254
14255         * verify.c (mono_method_verify): property verification of ldelem.any.
14256
14257 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14258
14259         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14260         added ldelem.X opcodes.
14261
14262         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14263
14264         * verify.c: proper verification of ldelem.X 
14265
14266 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14269
14270 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14271
14272         * verify.c (mono_method_verify): null literal requires special handling,
14273         the value pushed on stack need to be flagged as so.
14274
14275         * verify.c (do_ldelema): Verify ldelema properly.
14276
14277 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14278
14279         * verify.c: Verify ldlen properly.
14280
14281 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14284         to the target object's type. Fixes #346160.
14285
14286 2007-12-05  Dick Porter  <dick@ximian.com>
14287
14288         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14289         Solaris needs the same workaround as BSD-derived systems.  Fixes
14290         bug 323524, patch by Burkhard Linke
14291         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14292
14293 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14294
14295         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14296         handle to use when error dialog is shown; otherwise, update mask
14297         to show no error dialog when an error occurs.
14298
14299 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14300
14301         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14302
14303         * class.c (mono_class_get_field_default_value): New helper function to initialize
14304         field->def_type and field->data.
14305
14306 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14309         the general one.
14310
14311         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14312
14313         * marshal.c: Avoid depending on delegate->method_info being set.
14314
14315         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14316         
14317         * object.c (mono_delegate_ctor): Set delegate->method.
14318
14319         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14320
14321         * appdomain.c: Bump corlib version.
14322
14323 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14324
14325         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14326         equality check if we're comparing canonicalized MonoGenericInsts.
14327
14328 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14331         accessing class->methods.
14332
14333 2007-11-22  Dick Porter  <dick@ximian.com>
14334
14335         * threads.c: Ensure that the synch_cs is set before trying to use
14336         it.
14337
14338 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14339
14340         * profiler.c: r89126 broke the statistial profiler, unbreak.
14341
14342 2007-11-22  Martin Baulig  <martin@ximian.com>
14343
14344         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14345
14346         * mono-debug.c
14347         (mono_debug_debugger_version): Bump to 3.
14348         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14349         -> mono_debugger_class_initialized().
14350
14351         * mono-debug-debugger.c
14352         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14353
14354         * class.c
14355         (mono_debugger_start_class_init_func): Removed.
14356         (mono_debugger_class_loaded_methods_func): Added.
14357         (mono_class_setup_methods): Call it here.
14358
14359 2007-11-22  Martin Baulig  <martin@ximian.com>
14360
14361         * mono-debug.c
14362         (mono_debug_add_delegate_trampoline): New public method.
14363         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14364
14365         * mono-debug.h
14366         (MonoSymbolTable): Added `global_data_table'.
14367         (MonoDebuggerTypeKind): Removed.
14368
14369 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14372         these methods.
14373
14374         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14375         
14376 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14377
14378         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14379
14380 2007-11-20  Martin Baulig  <martin@ximian.com>
14381
14382         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14383
14384         * mono-debug-debugger.c
14385         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14386         (mono_debugger_remove_breakpoint): Likewise.
14387         (mono_debugger_check_breakpoints): Likewise.
14388         (mono_debugger_register_class_init_callback): New public method.
14389         (mono_debugger_remove_class_init_callback): Likewise.
14390         (mono_debugger_add_type): Likewise.
14391
14392         * mono-debug-debugger.h
14393         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14394
14395 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14396
14397         * class.c: more interface implementations needed for the
14398         array enumerator (fixes bug #341112).
14399
14400 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14401
14402         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14403         fix ParamName of ArgumentNullExceptions.
14404
14405 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14406
14407         * reflection.c (mono_reflection_encode_sighelper): Generate the
14408         modopts and modreqs.   I have a useless test that crashes monodis,
14409         but that shows the code working.
14410
14411 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14412
14413         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14414         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14415
14416 2007-11-15  Dick Porter  <dick@ximian.com>
14417
14418         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14419         When joining a thread, it's the thread that's calling Join that
14420         gets WaitSleepJoin state not the target.  Fixes the standalone
14421         test case in bug 334740, and hopefully the whole bug too.
14422
14423 2007-11-15  Dick Porter  <dick@ximian.com>
14424
14425         * process.c: Read file version info from the files pointed at by
14426         process modules, not the current process.  Fixes bug 315969.
14427
14428         Use windows typedef names in some places to fix warnings on the
14429         windows build.
14430
14431 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14432
14433         * image.c, metadata-internals.h: Added a generic_class_cache hash
14434         to MonoImage for looking up generic classes when sharing generics.
14435
14436 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14437
14438         * sgen-gc.c: warning cleanups.
14439
14440 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14443         inherited properties.
14444
14445 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14446
14447         * object.c, class-internals.h: Added more information to the
14448         runtime generic context.
14449
14450 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14453         instead of just the target method. Generalize the abstract method handling to
14454         handle any non-static method.
14455
14456         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14457         mono_marshal_get_delegate_invoke () signature change.
14458
14459 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14460
14461         * class.c, class-internals.h: Made
14462         mono_type_get_basic_type_from_generic () public.  Fixed member
14463         access check for shared generics.
14464
14465         * loader.c: Don't insert field into field cache if it's part of a
14466         non-inflated generic class.
14467
14468         * domain.c, domain-internals.h: The generic sharing context is now
14469         part of the jit info data structure.  Added two accessor
14470         functions.
14471
14472 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14473
14474         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14475         the array Get/Set/Address methods, since the JIT inlines them.
14476
14477         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14478
14479         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14480         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14481
14482         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14483         mono_marshal_get_delegate_invoke signature change.
14484
14485         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14486         an additional argument. Add support for invoking abstract methods.
14487
14488         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14489
14490         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14491
14492 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14493
14494         * class.c: Do field layout for open generic classes as well.
14495
14496 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14497
14498         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14499         other objects, because the threadpool is still around.  Put them
14500         in a list instead and after finalizing all other objects in the
14501         root domain shut down the thread pool and then finalize the
14502         threads.  Fixes bug #337383.
14503
14504         * threads.c, thread-types.h: New mono_thread_create_internal()
14505         function for marking a thread with the threadpool flag before it
14506         started.  Set synch_cs to NULL after freeing it.
14507
14508         * threadpool.c: Mark threadpool threads before they start.
14509
14510 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14511
14512         * reflection.h, reflection.c: don't export random functions
14513         and lazy load dbnull and missing objects.
14514
14515 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14516
14517         * class.c: Initialize COM types if COM interfaces
14518         are present (not just COM classes).
14519         
14520         Code is contributed under MIT/X11 license.
14521
14522 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14523         * reflection.c:
14524         create_dynamic_mono_image: hook module profiler events (dynamic case).
14525         mono_image_basic_init: hook assembly profiler events (dynamic case).
14526
14527 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14528         * profiler.c:
14529         simple_appdomain_unload: completely terminate the profiler
14530         instead of only processing the statistical samples.
14531         simple_shutdown: make sure this is really called exactly once,
14532         even in multithreaded applications, and always listen to
14533         appdomain events.
14534         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14535         here, the "[un]load" functions will do it.
14536         Fixes bugs #333791 and #325261.
14537
14538 2007-11-07  Geoff Norton  <gnorton@novell.com>
14539
14540         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14541         rather than depend on __APPLE__.
14542
14543 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14544
14545         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14546
14547 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14548
14549         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14550         UTF16 MonoString. Fix the crash from bug #335488
14551
14552 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14553
14554         * marshal.c: Correct (for non-Win32 OS) length != size in 
14555         mono_string_from_bstr. Fix #339530.
14556
14557 2007-11-06  Geoff Norton  <gnorton@novell.com>
14558
14559         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14560         to succeed
14561
14562 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14563
14564         * process.c: Added run-time GetProcessId API detection for Windows.
14565
14566 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14567
14568         * reflection.c  (mono_param_get_objects): If a parameter has the
14569         attribute [System.Runtime.InteropServices.Optional] we should
14570         set the DefaultValue of the ParameterInfo to be
14571         System.Reflection.Missing instead of DBNull.
14572
14573         See bug #339013.
14574
14575         (mono_get_reflection_missing_object): New method,
14576         returns the System.Reflection.Missing.Value singleton instance.
14577
14578 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14579
14580         * culture-info-table.h : regenerated.
14581
14582 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14583
14584         * icall.c: Use GetEnvironmentStrings on windows
14585         so we are using the same environment block as 
14586         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14587         #333740.
14588         
14589         Code is contributed under MIT/X11 license.
14590
14591 2007-10-31  Martin Baulig  <martin@ximian.com>
14592
14593         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14594
14595         * mono-debug-debugger.h
14596         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14597
14598 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14599
14600         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14601         classes.
14602
14603 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14604
14605         * culture-info-table.h : regenerated.
14606
14607 2007-10-30  Robert Jordan  <robertj@gmx.net>
14608
14609         * icall-def.h, icall.c:
14610         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14611
14612         Code is contributed under MIT/X11 license.
14613
14614 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14615
14616         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14617         inflated class instead of inflating them again.
14618         
14619         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14620         dynamic case.
14621
14622         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14623         Call setup_supertypes () after klass->parent is set.
14624         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14625
14626         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14627         for inflated instances of not yet created dynamic generic classes.
14628         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14629         times from inflated_method.
14630         (methodbuilder_to_mono_method): Ditto.
14631
14632 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14633
14634         * gc.c: code cleanup and removed old untested option of not creating the
14635         finalizer thread.
14636
14637 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14638
14639         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14640         creating a jump trampoline for dynamic methods.
14641
14642 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14643
14644         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14645         generic TypeBuilders when called from another method of the same type (bug #335131).
14646
14647
14648 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14651         doesn't seem to work perfectly.
14652         
14653         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14654         called multiple times.
14655         (methodbuilder_to_mono_method): Ditto.
14656         (resolve_object): Inflate FieldBuilder's.
14657
14658 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14659
14660         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14661         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14662         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14663
14664 2007-10-26  Dick Porter  <dick@ximian.com>
14665
14666         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14667         Thread initialisation changes
14668
14669 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14670
14671         * verify.c: fix compatibility check between arrays and System.Array
14672
14673 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14676         too. Fixes #336999.
14677
14678 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * object.c (mono_value_box): Use typed allocation here.
14681
14682 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14683
14684         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14685         trampoline instead of compiling the method right away.
14686
14687         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14688
14689 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14690
14691         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14692         related fields for dynamic classes. Fixes #334493.
14693
14694 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14695
14696         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14697         
14698         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14699
14700         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14701         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14702
14703         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14704
14705         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14706         if needed.
14707         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14708
14709 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14710
14711         * marshal.c: Use correct key when removing item
14712         from ccw_hash.
14713         
14714         Code is contributed under MIT/X11 license.
14715
14716 2007-10-17  William Holmes  <billholmes54@gmail.com>
14717
14718         *marshal.c: Adding a case to marshal booleans to U1
14719
14720         Code is contributed under MIT/X11 license.
14721
14722 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * class.c (mono_class_from_name): Search the modules compromising dynamic
14725         assemblies. Fixes #331601.
14726
14727 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14728
14729         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14730         exception if the type name contains an assembly component. Fixes #334203.
14731
14732         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14733         modules inside dynamic assemblies. Fixes #334200.
14734         
14735         * reflection.c: Set image->public_key and image->public_key_length;
14736
14737         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14738         fields.
14739
14740         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14741         
14742 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14743
14744         * metadata.c: Implemented correct comparing of generic classes.
14745         An inflated generic class can be equal to a non-inflated one if it
14746         is inflated with generic type variables as type arguments.  Fixes
14747         bug #333798.
14748
14749 2007-10-15  Dick Porter  <dick@ximian.com>
14750
14751         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14752         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14753         81646.
14754
14755         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14756         instead of a monitor lock.  This means that monitor_try_enter and
14757         co can set the thread state safely.
14758         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14759         thread_interrupt_requested, so interrupt actually works.
14760
14761         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14762         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14763         state accessor function
14764
14765 2007-10-15  Martin Baulig  <martin@ximian.com>
14766
14767         * mono-debug.h
14768         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14769         the debugger with the current runtime.
14770
14771 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14772
14773         * object.c, object-internals.h: added the ability to set a single
14774         trampoline for all the slots in a vtable.
14775
14776 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14777
14778         * marshal.c: deal with a possible race condition during multicast
14779         delegate invocation.
14780
14781 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * class.c: ensure value type methods don't have the synchronized
14784         flag set.
14785
14786 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14789         breaks the build.
14790
14791 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14792
14793         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14794         to take an options parameter so that empty entries can be removed during
14795         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14796
14797 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14798
14799         * marshal.c: make sure we don't store the signature from a dynamic
14800         method into the runtime invoke cache (bug #327189).
14801
14802 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14803
14804         * marshal.c: make sure the wrapper methods are properly initialized.
14805
14806 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14807
14808         * metadata.c, metadata-internals.h: Generalized
14809         mono_type_stack_size() to mono_type_stack_size_internal() which
14810         takes an additional argument specifying whether it allows open
14811         types.
14812
14813 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14814
14815         * verify.c (do_invoke_method): handle typedbyref params
14816         correctly and check for unverifiable return values.
14817
14818         * verify.c (do_newobj): fix a warning.
14819
14820 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14821
14822         * verify.c: don't tread typedbyref as allways unverifable,
14823         so uses, like (ld/st)loc.0 are valid. verify for the cases
14824         that it matters, like boxing related operations.
14825
14826 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14827
14828         * verify.c: add verification of the newobj opcode. verification
14829         of delegate instantation still missing due ldftn and virldftn not
14830         pushing the function type on stack
14831
14832 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14833
14834         * class-internals.h: Runtime generic context data structure
14835         definition.
14836
14837         * object.c: Initialization of runtime generic context at runtime
14838         vtable creation time.
14839
14840 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14841         * class.c (mono_class_create_from_typedef,
14842         mono_class_from_generic_parameter, mono_ptr_class_get,
14843         mono_fnptr_class_get, mono_bounded_array_class_get)
14844         * domain.c (mono_domain_create, mono_domain_free)
14845         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14846         * image.c (do_mono_image_load, mono_image_close):
14847         Hooked up load-unload profiler events.
14848
14849 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14850
14851         * domain.c: track statistics about the actual amount of native code
14852         allocated.
14853
14854 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14855
14856         * class.c: the valuetype enumerators don't have the additional
14857         supertypes interfaces.
14858
14859 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14860
14861         * class.c: need more interfaces setup for the IEnumerator<T>
14862         object created for arrays (tests/ienumerator-interfaces.2.cs).
14863
14864 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14865
14866         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14867
14868 2007-10-05  Alp Toker  <alp@atoker.com>
14869
14870         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14871         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14872         #315863.
14873
14874 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14875
14876         * verify.c (verify_type_compatibility_full): verification of
14877         compatibility improved, validates correctly non-strict checks between
14878         native int and I4 types different than (unsigned)int32.
14879
14880         * verify.c (do_store_indirect): added, do all verification of
14881         ldind.X opcodes. 
14882
14883         * verify.c (get_load_indirect_mono_type): renamed to
14884         get_indirect_op_mono_type, as it now returns the MonoType for 
14885         ldind.X and stind.X opcodes.
14886
14887 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14888
14889         * reflection.c: Fix the encoding of generic type definition for
14890         TypeBuilders.
14891
14892         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14893         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14894         be made. Typespec check is done prior to typeref cache lookup.
14895
14896         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14897         mono_image_typedef_or_ref_full.
14898
14899         * reflection.c (encode_generic_class): encode the generic class
14900         directly instead of calling encode_type.
14901
14902         * reflection.c (encode_type): encode the generic type definition
14903         MonoClass as a generic instantiation.
14904
14905         * reflection.c (create_typespec): cache typespec tokens in
14906         the assembly->typespec cache. Don't create typespec for a generic
14907         instance MonoClass. Create typespec for the generic type defintion.
14908
14909         * reflection.c (create_generic_typespec): encode the generic
14910         class directly instead of calling encode_type.
14911
14912         * reflection.c (mono_image_create_token): encode the generic
14913         type definition not using a typespec for MonoType instances.
14914
14915
14916 2007-10-04  Raja R Harinath  <rharinath@novell.com>
14917
14918         Fix #328812
14919         * class.c (mono_image_init_name_cache): Don't return nested
14920         'protected internal' classes.
14921         (mono_class_from_name_case): Likewise.
14922
14923 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
14924
14925         * icall-def.h, icall.c : get_bundled_machine_config() is now the
14926           common function used by both DefaultConfig in System.dll and
14927           InternalConfigurationHost in System.Configuration.dll.
14928
14929 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14930
14931         * class.c: automatically add to vectors only a few essential explicit
14932         generic interfaces. The rest of the interfaces that arrays should
14933         provide are currently implicitly added (but still not lazily, see the
14934         design in the discussion of bug#325495 for the details of what is
14935         needed for that). Additionally, implicit interfaces are assigned the
14936         same vtable slot as the explicit interfaces (as they are compatible):
14937         this enables huge memory savings since we don't need to instantiate
14938         as many memthods and as large vtables anymore. Also, Since
14939         GetEnumerator<T> returns an instance of a type that is required to
14940         support a similarly large set of interfaces as arrays, we add
14941         implicit interfaces and interface offset sharing support to those
14942         types, too. This change adds all the required interfaces so that
14943         the anonarray.cs test case in the bug report works (we don't add
14944         all the interfaces to arrays of arrays 3-level deep and more because
14945         of the memory requirements explained in the bug and since they are much
14946         less common: the lazy-loading support will enabled them to work, too).
14947
14948 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14949
14950         * verify.c (merge_stacks): major clean up, all type compatibility
14951         checks are done by verify_type_compatibility. This fix my earlier lack
14952         of understanding of the CLR type system and merge_stacks no longer looks
14953         scary.
14954
14955         * verify.c: fixed some bad spelling.
14956
14957 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14958
14959         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
14960         a given stack slock.
14961         
14962         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
14963         verify_type_compatibility_full. This removed a near indentical function and fixed
14964         handling of Int32 and IntPtr across all opcodes.
14965
14966 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14967
14968         * class.c: only vectors have the additional generic interfaces.
14969
14970 2007-10-01  Jonathan Chambers <joncham@gmail.com>
14971
14972         * mono-config.c: Use g_strcasecmp instead of
14973         strcasecmp like everywhere else to fix
14974         compilation with MSVC.
14975         
14976         Code is contributed under MIT/X11 license.
14977
14978 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14979
14980         * object.c, object-internals.h: refactored the IMT code to enable
14981         building a single slot at a time and lazily creating the IMT trampolines
14982         and thunks.
14983
14984 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
14985
14986         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
14987
14988         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
14989         Fixes #328501.
14990         
14991 2007-09-29  Raja R Harinath  <harinath@gmail.com>
14992
14993         * loader.c (method_from_methodspec): Rearrange to avoid
14994         un-necessary exposition.  Don't assert out if the method's
14995         declaring type is a generic type definition.
14996
14997 2007-09-28  Martin Baulig  <martin@ximian.com>
14998
14999         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15000
15001 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15002
15003         * class-internals.h: optimize field layout of MonoClass to
15004         requires less cachelines at runtime and save a few bytes on 64 bit
15005         systems.
15006
15007 2007-09-28  Jb Evain  <jbevain@novell.com>
15008
15009         * reflection.c: when encoding type names in custom attributes,
15010         if the type is a closed generic type, its generic arguments
15011         have to be serialized as AssemblyQualifiedName, so that when
15012         they are deserialized, it's possible to re-create them properly.
15013         Fixes #329450.
15014
15015
15016 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15017
15018         * object.c, class-internals.h: added delegate-creation counter.
15019
15020 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15021
15022         * class.c: cleanup of the code that synthetizes interfaces for
15023         arrays in 2.0: saves quit a bit of corlib mempool memory.
15024         Code to fix bug #325495 ifdeffed out for now until the issues
15025         with memory usage and O(n^2) behaviour are fixed.
15026
15027 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15028
15029         * marshal.c: when possible, do not duplicate the name of the methods
15030         in the method builder and in the generated MonoMethod.
15031
15032 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15033         * verify.c: added support for type checking ldind_* opcodes.
15034
15035 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15036
15037         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15038         which is used to distinguish the fully open instantiation of a TypeBuilder
15039         with the rest. This temporary hack is required to restore the property that
15040         the fully open instantiation is the same type of the generic type definition.
15041
15042         * class-internals.h (mono_generic_class_is_generic_type_definition):
15043         new function as part of the internal API.
15044
15045         * class.c (inflate_generic_type): return NULL when the generic inst is
15046         fully open. The fully open generic type is now the same as the generic type
15047         definition for non TypeBuilder types.
15048
15049         * class.c (mono_generic_class_get_class): removed assert since it is
15050         no longer valid, gklass->cached_class can point to the generic type definition.
15051
15052         * class.c (mono_generic_class_is_generic_type_definition): new.
15053
15054         * metadata.c (mono_generic_class_hash): added is_tb_open field
15055         to the hash calculation.
15056
15057         * metadata.c (free_generic_class): if the generic class is associated
15058         with the generic type definition, its field will come from the mempool and
15059         must not be freed.
15060
15061         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15062         new, this function identifies the corner case of a TypeBuilder fully open
15063         instantiation.
15064
15065         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15066         for lookup. Set gclass->cached_class to be the container class in case of
15067         the fully open instantiation of non TypeBuilder types.
15068
15069         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15070         to compare generic classes.
15071
15072         * reflection.c (method_encode_methodspec): remove assert that
15073         no longer is valid.
15074
15075         * reflection.c (mono_reflection_generic_class_initialize): add
15076         an aditional assert to ensure the proper type is used.
15077
15078 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15079
15080         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15081         to enjoy it.
15082
15083 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15084
15085         * verify.c (push_arg): Fixed support for ldarga
15086         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15087         MonoType used as first arg in case of instance calls.
15088
15089 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15090
15091         * verify.c: Support for verifying VAR and MVAR types, 
15092
15093 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15096         accessors correctly.
15097
15098 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15099
15100         * threads.c: support OSX and other systems in
15101         mono_thread_get_stack_bounds (bug #328026).
15102
15103 2007-09-25  Martin Baulig  <martin@ximian.com>
15104
15105         * mono-debug.h
15106         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15107
15108 2007-09-24  Martin Baulig  <martin@ximian.com>
15109
15110         * mono-debug.h
15111         (MonoDebugClassEntry): Moved the definition of this struct into
15112         mono-debug.c to make it private.
15113
15114         * mono-debug.c
15115         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15116         type table per symbol file, we don't need to store the symfile id
15117         any longer.
15118
15119 2007-09-24  Martin Baulig  <martin@ximian.com>
15120
15121         Create one type table per symbol file, since a `MonoClass *' gets
15122         invalid when its image is unloaded.
15123
15124         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15125         (MonoDebugHandle): Added `type_table'.
15126
15127 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15128
15129         * mempool.c, mempool.h: added mono_mempool_new_size () API
15130         to be able to specify a smaller initial size for the pool.
15131         Adjusted the code to slowly increase pool size before using
15132         the previous default size.
15133         * image.c: use a small initial size for image mempools.
15134
15135 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15136
15137         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15138         Fixes ##320990.
15139
15140         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15141         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15142
15143 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15144
15145         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15146         free. Fixes #327438.
15147
15148 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15149
15150         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15151         generic instantiations, etc.
15152         <MONO_TYPE_ARRAY>: Likewise.
15153
15154 2007-09-21  Martin Baulig  <martin@ximian.com>
15155
15156         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15157         these structs were never defined.
15158         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15159
15160 2007-09-21  Martin Baulig  <martin@ximian.com>
15161
15162         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15163
15164 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15165
15166         * image.c: removed the guid hash tables: we can get the same info
15167         without the additional memory usage hit (partially fixes also bug #327052).
15168
15169 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15170
15171         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15172         event to handle unloading methods. After the event is called, the
15173         corresponding MonoMethod* must be considered invalid.
15174         * loader.c (mono_free_method): call the new mono_profiler_method_free
15175         event.
15176
15177 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15178
15179         * domain-internals.h: New flag in MonoJitInfo which marks shared
15180         generic methods.  New hash table (shared_generics_hash) in
15181         MonoDomain to keep track of shared generic methods.  Prototypes
15182         for functions to register and lookup shared generic methods.
15183
15184         * domain.c: Support for registering and looking up shared generic
15185         methods via a hash table (shared_generics_hash) in MonoDomain.
15186
15187         * class-internals.h: New exception to signal failure of shared
15188         compilation of a generic method.  New counters for generics
15189         sharing in MonoStats.
15190
15191 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15192
15193         * image.c, metadata-internals.h: don't keep a file descriptor open
15194         for loaded assemblies (bug#325988).
15195
15196 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15197
15198         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15199         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15200         use the corresponding datatypes.
15201         (type_in_image): Update to changes.
15202         (CleanForImageUserData): Simplify.
15203         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15204         Avoid quadratic behaviour in handling the "stolen" list by
15205         separating the filter predicate out, and by prepending the stolen
15206         items rather than appending them.
15207         (steal_ginst_in_image): Likewise.
15208         (mono_metadata_clean_for_image): Update to changes.
15209
15210 2007-09-19  Martin Baulig  <martin@ximian.com>
15211
15212         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15213
15214 2007-09-19  Martin Baulig  <martin@ximian.com>
15215
15216         * mono-debug.c (mono_debug_cleanup): Don't call
15217         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15218
15219 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15220
15221         Fix crash on 'make run-test' in mcs/errors
15222         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15223         Avoid more potential allocations in mono_class_from_mono_type.
15224         (ginst_in_image): Update to changes.
15225         (gclass_in_image): Rearrange slightly.
15226
15227 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15228
15229         * class.c (mono_class_init): Move the code that sets up class->methods to 
15230         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15231
15232         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15233         canonical instance of an inflated generic signature.
15234         (mono_type_create_from_typespec): Remove an invalid free.
15235
15236         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15237
15238 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15239
15240         * domain-internals.h: added a declaration of the
15241         mono_assembly_load_full_nosearch internal function.
15242
15243         * assembly.c (mono_assembly_load_with_partial_name): use
15244         mono_try_assembly_resolve return value properly.
15245         (mono_assembly_load_full_nosearch): copied the function body from
15246         mono_assembly_load_full, without the code to invoke assembly
15247         search hooks.
15248         (mono_assembly_load_full): calls the above new function and if the
15249         assembly is not resolved, invokes the search hooks.
15250
15251         * appdomain.c (mono_runtime_init): restore the global postload
15252         assembly search handlers.
15253
15254 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15255
15256         * class.c (mono_class_init): Make sure class->methods and class->properties
15257         are never NULL in the generics case.
15258
15259         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15260
15261 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15262
15263         * metadata.c (free_generic_class): Disable some code to fix the build.
15264
15265         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15266
15267         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15268         from the image mempool.
15269
15270         * metadata.c (free_generic_class): Free more data from the inflated class.
15271
15272         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15273
15274         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15275         mempool.
15276         (mono_type_create_from_typespec): Ditto.
15277
15278         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15279         MonoImage to the caller.
15280         (mono_init_internal): Save the opened image in a global variable.
15281         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15282
15283         * reflection.c (resolve_object): Fix a leak.
15284
15285         * metadata.c: Fix the freeing of data in the generics caches.
15286         
15287         * metadata.c (free_generic_inst): Comment this out to fix the build.
15288         (free_generic_class): Ditto.
15289
15290         * metadata.c: Free cached generic methods, instantinations and classes when
15291         they are removed from the caches.
15292         (mono_metadata_free_type): Free the type itself.
15293
15294         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15295         places.
15296
15297 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15298
15299         * boehm-gc.c: restrict managed allocs to __thread supporting
15300         architectures.
15301
15302 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15305         (mono_generic_class_get_class): Fix a leak.
15306
15307         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15308         mono_metadata_free_type ().
15309         (mono_metadata_inflate_generic_inst): Fix a leak.
15310
15311 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15312
15313         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15314
15315         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15316         mempool.
15317
15318         * mono-debug.c (mono_debug_close_image): Fix call to 
15319         g_hash_table_remove ().
15320
15321 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15322
15323         * icall-def.h: redirect all the string ctor to the managed
15324         CreateString () methods.
15325         * string-icalls.c, string-icalls.h: removed dead code for string
15326         ctors and icalls.
15327
15328 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15329
15330         * mono-debug.c: Fix memory leaks.
15331
15332 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15333
15334         * threads-types.h: Implement mono_hazard_pointer_set and 
15335         mono_hazard_pointer_clear macros using do/while(0) to fix
15336         compilation with MSVC.
15337         
15338         Code is contributed under MIT/X11 license.
15339
15340 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15341
15342         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15343         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15344
15345 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15346
15347         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15348         icalls.
15349
15350 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15351
15352         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15353         managed-code allocated as well.
15354
15355 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15356
15357         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15358
15359 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15360
15361         * boehm-gc.c: fixed the build after the AOT changes.
15362
15363 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * wrapper-types.h: Add an ALLOC wrapper type.
15366
15367         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15368         reference managed allocator methods.
15369
15370 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15371
15372         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15373         of Type array and not MonoType, a fix suggested by Hari.
15374         
15375 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15376
15377         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15378         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15379         
15380         Code is contributed under MIT/X11 license.
15381
15382 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15383
15384         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15385
15386 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15387
15388         * image.c (do_mono_image_open): if assembly file fails to open and
15389         MONO_IOMAP is in effect, try to find the path in a
15390         case-insensitive way.
15391
15392         * appdomain.c (mono_runtime_init): do not install postload hooks -
15393         tests show that MS.NET doesn't use anything of that sort to
15394         trigger the AppDomain.AssemblyResolve event.
15395         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15396         made non-static.
15397         (mono_runtime_init): init portability helpers here.
15398
15399         * assembly.c (mono_assembly_load_with_partial_name): if other   
15400         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15401         to resolve the assembly.
15402
15403         * domain-internals.h: added mono_try_assembly_resolve and marked
15404         it as internal.
15405
15406 2007-09-11  Jb Evain  <jbevain@novell.com>
15407
15408         * object-internals.h (MonoReflectionDynamicMethod): add
15409         a `MonoReflectionType *owner` field. The owner is used
15410         * reflection.c:
15411         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15412         method as the class declaring the dynamic method.
15413         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15414         dynamic method to the declaring type of the methodbuilder.
15415
15416 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15417
15418         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15419         rules for calling methods via reflection.
15420
15421 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15422
15423         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15424         Inflate MonoType's.
15425
15426 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15427
15428         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15429         provide a managed method that does fast allocations without needing
15430         a managed->unmanaged transition. Boehm GC implementation currently
15431         enabled for ptrfree objects on sane architectures.
15432
15433 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15434
15435         * marshal.c, marshal.h: exported a couple of useful functions and
15436         added mono_mb_get_label () to easily handle backward branches.
15437
15438 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15441
15442 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15443
15444         * loader.c (find_method): Fixed the regression introduced while
15445         fixing bug #81466.
15446
15447 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15448
15449         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15450         well.
15451         
15452         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15453         icall.c reflection.c: Pass a MonoGenericContext argument to 
15454         mono_lookup_dynamic_token ().
15455
15456         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15457         #82744.
15458         
15459 2007-09-09  Robert Jordan  <robertj@gmx.net>
15460
15461         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15462         for generic methods.
15463
15464         * object.c (mono_object_get_virtual_method): Handle generic methods.
15465         Fixes bug #78882.
15466
15467         Code is contributed under MIT/X11 license.
15468
15469 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15470
15471         * image.c: fix locking in mono_image_load_file_for_image ().
15472
15473 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15474
15475         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15476         used only as a cache: added an icall to fill it.
15477
15478 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15479
15480         * reflection.h: exposed mono_reflection_free_type_info
15481         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15482         since mono_reflection_bind_generic_parameters makes a copy of it.
15483         * reflection.c (free_type_info): subinfos should be freed.
15484         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15485         made non static.
15486         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15487         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15488         this fixes #82695 and #81726.
15489    
15490
15491 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15492
15493         * process.h, process.c:  added support for user profile/info in
15494           ProcessStartInfo. For now only Windows works.
15495
15496 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15497
15498         * metadata.c: consider the generic arguments when comparing
15499         signatures (bug #82614).
15500
15501 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15502
15503         * cil-coff.h, image.c: updated assembly loader to cope with the
15504         PE32+ 64 bit file format.
15505
15506 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15507
15508         * assembly.c, class.c, domain.c, loader.c: remove useless
15509         inclusion of cil-coff.h.
15510
15511 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15512
15513         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15514         if interface is marked with CoClassAttribute. 
15515    
15516         Code is contributed under MIT/X11 license.
15517
15518 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15519
15520         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15521         if it's seen twice in major collections.
15522
15523 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15524
15525         * sgen-gc.c: big objects are not copied to the gray area, but they
15526         need to be considered for scanning, too, if they are brought alive
15527         by an object ready for finalizations or a survived one.
15528
15529 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15530
15531         * sgen-gc.c: properly account the number of disappearing links when
15532         they are nullified.
15533
15534 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15535
15536         * sgen-gc.c: share the code to scan the registered roots between the
15537         different types of collections.
15538
15539 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15542
15543 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15544
15545         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15546         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15547
15548 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15549
15550         * security-manager.c (mono_security_manager_get_methods):
15551         LinkDemandSecurityException now has 2 arguments instead of 3.
15552
15553 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15556         platforms which need it.
15557
15558 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15559
15560         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15561         dtor.
15562
15563 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15564
15565         * threads.c: free the thread static data on thread exit.
15566
15567 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15568
15569         * class.c: walk the hierarchy to find the generic definition for
15570         a class (fixes runtime part of bug #82498).
15571
15572 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15575         ...
15576
15577         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15578
15579 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15580
15581         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15582
15583 2007-08-24  Robert Jordan  <robertj@gmx.net>
15584
15585         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15586
15587 2007-08-24  Jb Evain  <jbevain@novell.com>
15588
15589         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15590         for byref types.
15591
15592 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15593
15594         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15595         #82286.
15596
15597 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15598
15599         * assembly.c: Fix a warning.
15600         
15601 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15602
15603         * appdomain.c: parse the <runtime> section looking for the probing
15604         element with the 'privatePath' attribute, which sets additional
15605         directories in which the runtime should look for assemblies.
15606
15607 2007-08-23  Robert Jordan  <robertj@gmx.net>
15608
15609         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15610         Fixes #82499.
15611
15612 2007-08-23  Martin Baulig  <martin@ximian.com>
15613
15614         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15615         _mono_debug_init_corlib() and remove it from the header file.
15616
15617 2007-08-23  Martin Baulig  <martin@ximian.com>
15618
15619         * mono-debug-debugger.c
15620         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15621         don't notify the debugger about it.
15622
15623         * mono-debug-debugger.h
15624         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15625
15626 2007-08-23  Robert Jordan  <robertj@gmx.net>
15627
15628         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15629         Code is contributed under MIT/X11 license.
15630
15631 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15632
15633         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15634
15635 2007-08-22  Martin Baulig  <martin@ximian.com>
15636
15637         * mono-debug.c: Store debugging info on a per-domain basis and
15638         free it on domain unload.  Add support for unloading symbol files.
15639
15640         * mono-debug.h
15641         (MonoDebugList): New typedef.
15642         (MonoSymbolTable):
15643         - add `data_tables and `type_table'.
15644         - replace 'symbol_files' and `num_symbol_files' with a
15645           `MonoDebugList *'.
15646         (mono_debug_data_table): Removed.
15647         (mono_debug_list_add): New public function.
15648         (mono_debug_list_remove): New public function.
15649         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15650         (mono_debug_init_2_memory): Renamed into
15651         mono_debug_open_image_from_memory().
15652         (mono_debug_close_image): New public function.
15653         (mono_debug_domain_create): Likewise.
15654         (mono_debug_domain_unload): Likewise.
15655         (MONO_DEBUGGER_VERSION): Bump to 60.
15656
15657         * mono-debug-debugger.h
15658         (MonoDebuggerEvent):
15659         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15660         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15661         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15662         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15663           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15664         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15665           meaning.
15666         (mono_debugger_add_symbol_file): Removed.
15667         (mono_debugger_add_type): Removed.
15668         (mono_debugger_lookup_type): Removed.
15669         (mono_debugger_lookup_assembly): Removed.
15670
15671         * domain.c
15672         (mono_domain_create): Call mono_debug_domain_create().
15673         (mono_init_internal): Call mono_debug_init_corlib().
15674
15675         * assembly.c
15676         (mono_assembly_close): Call mono_debug_close_image().
15677
15678 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15679
15680         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15681         mmap call.
15682
15683 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15684
15685         * sgen-gc.c: ensure section->pin_queue_end is initialized
15686         correctly when non pinning objects in the section have been found.
15687
15688 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15689
15690         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15691         containing a list of directories separated by ':'. MSDN docs say
15692         the directories should be separated with ';'. Part of a bugfix for
15693         bug #81446
15694
15695 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15696
15697         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15698         it should MonoType and not MonoClass.
15699
15700 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15701
15702         * culture-info-table.h : regenerated.
15703
15704 2007-08-20  William Holmes  <billholmes54@gmail.com>
15705
15706         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15707          to call ReplaceFile Kernel32 on windows or in io-layer.
15708         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15709         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15710          as an internal call.
15711
15712         Code is contributed under MIT/X11 license.
15713
15714 2007-08-20  Jb Evain  <jbevain@novell.com>
15715
15716         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15717         and MONO_EXCEPTION_FIELD_ACCESS.
15718
15719         * debug-helpers.[c|h]: new mono_field_full_name function.
15720
15721 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15722
15723         * class.c: Removed class_security_level() and moved it to
15724         security-core-clr.c.
15725
15726         * security-core-clr.c, security-core-clr.h: class_security_level()
15727         is now public and renamed to mono_security_core_clr_class_level().
15728         It also looks for security attributes in the classes a class is
15729         nested in.
15730
15731 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15732
15733         * security-core-clr.c, security-core-clr.h: CoreCLR security
15734         utility functions.
15735
15736         * Makefile.am: Added security-core-clr.[ch].
15737
15738         * security-manager.c, security-manager.h: Functions and enum for
15739         setting and getting the security mode.
15740
15741         * class.c: CoreCLR security checks.
15742
15743 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15744
15745         * icall-def.h, process.c, process.h: implemented icall to get
15746         user/system processor times.
15747
15748 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15749
15750         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15751         reader-lock-free jit_info_table.
15752
15753 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15754
15755         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15756
15757         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15758
15759         * object-internals.h (MonoException): Add missing _data member.
15760
15761 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15762
15763         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15764         checking that only methods with matching qname or fqname are picked
15765         from implemented interfaces.
15766
15767 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15768
15769         * verify.c (do_newarr):added, do type verification of
15770         newarr ops, push the right value on the eval stack.
15771         * verify.c (mono_method_verify): use do_newarr
15772
15773
15774 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15775
15776         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15777         factored the common code into get_boxable_mono_type, which
15778         is now using mono_type_get_full, this fixed byref related tests.
15779
15780 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15781
15782         * class.c: added mono_type_get_full, this function has the same
15783         behavior of mono_class_get_full but the returned MonoType has
15784         all metadata of the associated token in case of a typespec token.
15785         * class.c: added mono_type_retrieve_from_typespec, used by 
15786         mono_type_get_full to retrieve the token type.
15787         * class.c (mono_class_create_from_typespec): changed to use
15788         mono_type_retrieve_from_typespec.
15789         * class.c (mono_ldtoken): changed to use mono_type_get_full
15790         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15791         * class-internals.h: exported mono_type_get_full for internal use.
15792
15793 2007-08-16  Jb Evain  <jbevain@novell.com>
15794
15795         * domain.c (supported_runtimes): add entry for
15796         the 'moonlight' runtime version.
15797
15798 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15799
15800         * verify.c (mono_method_verify): small typo sliped in.  
15801
15802 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15803
15804         * verify.c (do_unbox_value): added, do type verification of
15805         unboxing ops
15806         * verify.c (mono_method_verify): use do_unbox_value
15807
15808
15809 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15810
15811         * verify.c (dump_stack_value): fixed typo, was printing string
15812         instead of object on stack.
15813         * verify.c (do_box_value): moved the byref check up as it leads
15814         to invalid code and should be done earlier.
15815         * verify.c: improved error messages for and ldobj
15816
15817 2007-08-15  William Holmes  <billholmes54@gmail.com>
15818
15819         * marshal.c (emit_marshal_custom): Omit the call to 
15820           marshal_native_to_managed when calling native to managed 
15821           and the argument is specified as an out argument.
15822
15823         Code is contributed under MIT/X11 license.
15824
15825 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15826
15827         * verify.c: fixed the type checks for generics, function pointers and vectors.
15828         Added type verification for ldobj and ldtoken. The verifier
15829         would segfault if header or signature of a method contained references
15830         to non-existant types.
15831
15832 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15833
15834         * marshal.c (cominterop_get_ccw): Patch from
15835         Bill Holmes to no walk up interface hierarchy. 
15836         All parent methods should be present in the interface for COM.
15837    
15838         Code is contributed under MIT/X11 license.
15839
15840 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15841
15842         * marshal.c (emit_marshal_com_interface): Patch from
15843         Bill Holmes to handle COM Interfaces as return values
15844         for native->managed calls.
15845    
15846         Code is contributed under MIT/X11 license.
15847
15848 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15849
15850         * marshal.c (cominterop_get_idispatch_for_object): Implement
15851         for runtime callable wrappers.
15852    
15853         Code is contributed under MIT/X11 license.
15854
15855 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15856
15857         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15858         so 2.0 types are accessible
15859
15860
15861 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15862
15863         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15864         once we load mscorlib.   Due to the order in which we initialize,
15865         the mono_assembly_load_full routine that loads mscorlib did not
15866         load friends.   We now load it once we load the
15867         mono_defaults.internals_visible_class class. 
15868
15869         * assembly.c: Expose the mono_load_friend_assemblies method.
15870
15871 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15872
15873         * verify.c: improved the handling of boxing, better
15874         type checking for unary ops and conversion. Fix bug
15875         regarding managed pointer compatibility checking
15876
15877 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15880
15881         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15882
15883 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15884
15885         * reflection.c (dup_type): Remove.
15886         * class.c (dup_type): Remove.
15887         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15888         instead of the dodgy 'dup_type'.
15889         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15890         handle the case where 'dup_type' needed the second argument.
15891
15892 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * domain.c: Fix a warning.
15895
15896 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15897
15898         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15899         checking that methods with the same fqname are not overridden
15900         with a method from an ancestor.
15901
15902 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * threads.c (free_thread_static_data_helper): Avoid a crash if
15905         thread->static_data is not yet set.
15906
15907 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15908
15909         * marshal.c: Use correct image when emitting
15910         native wrapper for COM calls.
15911    
15912         Code is contributed under MIT/X11 license.
15913
15914 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
15915
15916         * icall-def.h, security.c, security.h :
15917           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
15918
15919 2007-08-07  Martin Baulig  <martin@ximian.com>
15920
15921         * mono-debug-debugger.h
15922         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
15923
15924         * domain.c (mono_domain_free): Call
15925         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
15926
15927 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
15928
15929         * verify.c (check_underflow, check_overflow): error message now returns IL offset
15930         * verify.c (in_same_block): code should test if either offset is inside the clauses
15931         * verify.c (mono_method_verify): push the exception into the eval stack of exception
15932         and filter blocks
15933
15934 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15935
15936         * image.c (mono_image_close): Fix a leak.
15937
15938         * object.c (mono_runtime_invoke_array): Avoid using alloca.
15939
15940         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
15941
15942 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15943
15944         * domain.c, threads.c, threads-types.h: fix memory retention issue
15945         with thread static variables not being cleared on domain unload.
15946         Reuse thread static slots after domain unload.
15947
15948 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15949
15950         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
15951         nullable type.
15952
15953         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
15954         now done in mono_runtime_invoke_array.
15955
15956         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
15957         receiver is a nullable type.
15958
15959         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
15960         generic parameter.
15961
15962 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
15963
15964         * marshal.c: Implement COM Objects as return type for 
15965         managed->unmanaged calls. Added Release calls for COM Object
15966         out/return values in managed->unmanaged calls.
15967
15968         Code is contributed under MIT/X11 license.
15969
15970 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
15971
15972         * threads.h, threads-type.h: move the hazard pointer declarations
15973         to the private header.
15974
15975 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15976
15977         * file-io.c, appdomain.c: memory leak fixes.
15978
15979 2007-08-02  Dick Porter  <dick@ximian.com>
15980
15981         * socket-io.c
15982         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
15983         SO_REUSEADDR setting into io-layer/sockets.c.
15984
15985 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15986
15987         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
15988         from Object when called on a generic parameter. Fixes #82211.
15989
15990 2007-08-01  Dick Porter  <dick@ximian.com>
15991
15992         * file-io.c (convert_share): Test FileShare values bit-by-bit.
15993         Fixes bug 79250 yet again.
15994
15995 2007-07-30  Martin Baulig  <martin@ximian.com>
15996
15997         Merged the `debugger-dublin' branch.
15998
15999         * mono-debug.h
16000         (MonoDebugDataTable): New typedef.
16001         (MonoDebugMethodAddressList): New typedef.
16002         (MonoDebugWrapperData): Removed.
16003         (MonoDebugSymbolTable): Removed `current_data_table',
16004         `current_data_table_size', `current_data_table_offset'.
16005         (MonoDebugDataItemType): Moved into mono-debug.c.
16006         (MonoDebugMethodJitInfo): Remove `address'.
16007         (mono_debug_data_table): New global variable.
16008         (mono_debug_lookup_method_addresses): New public function.
16009         (mono_debug_find_method): Take a `MonoMethod *', not a
16010         `MonoDebugMethodInfo *'.
16011
16012         * mono-debug.c: Drop support for the old symbol tables.
16013
16014 2007-06-28  Martin Baulig  <martin@ximian.com>
16015
16016         * mono-debug.c (mono_debug_debugger_version): New public variable.
16017
16018 2007-07-31  William Holmes  <billholmes54@gmail.com>
16019
16020         * metadata.c Changed mono_type_create_from_typespec to not insert
16021           the type into the hash map until after
16022           do_mono_metadata_parse_type has completed.
16023         Fixes Bug #82194
16024         Code is contributed under MIT/X11 license.
16025
16026 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16027
16028         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16029         generic parameter. Fixes #82211.
16030
16031 2007-07-27  Jb Evain  <jbevain@novell.com>
16032
16033         * pedump.c (dump_metadata, dump_metadata_header): dump
16034         versions contained in the metadata header.
16035
16036 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16037
16038         * threads.c: register small_id_table with the GC.
16039
16040 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16041
16042         * threads.c, threads.h, class-internals.h, object-internals.h:
16043         Hazard pointers, to be used by lock-free parallel algorithms.
16044
16045 2007-07-26  Dick Porter  <dick@ximian.com>
16046
16047         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16048         routine on non-windows platforms, as I've not managed to think of
16049         a non-kludgy way of doing this.  Finishes off bug 78739.
16050
16051 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16052
16053         * object.c: properly setup interface_bitmap in proxy vtables.
16054
16055 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16056
16057         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16058         to create unique shadow copy target directories, use the domain's
16059         serial number instead. Each domain gets a unique target directory
16060         that way.
16061
16062         * domain.c (mono_domain_create): added code to increment domain
16063         shadow copy serial number and cache the value in the current
16064         domain structure.
16065
16066         * domain-internals.h (struct _MonoDomain): added a new field -
16067         shadow_serial to hold the serial number used in generation of
16068         shadow-copy directories. This is to make sure that the directory
16069         name is unique for each and every domain created. We avoid a race
16070         condition with overriding assemblies already in use by other app
16071         domains.
16072
16073 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16074
16075         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16076         binding generic parameters.
16077
16078 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16079
16080         * metadata.c (do_mono_metadata_parse_generic_class): Use
16081         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16082         error.
16083
16084 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16085
16086         * loader.c, class-internals.h, reflection.c: removed the per-method
16087         generics hashtable: we use the global one through the call of
16088         mono_class_inflate_generic_method ().
16089
16090 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16091
16092         * class.c, metadata.c, class-internals.h: introduce yet another
16093         generics global cache for inflated methods (fixes 98% of the perf
16094         issue in bug #81806).
16095
16096 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16097
16098         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16099         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16100         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16101         return a MonoGenericInst containing (a copy) of those types.
16102         (mono_metadata_inflate_generic_inst): Update to changes.
16103         (mono_metadata_parse_generic_inst): Likewise.
16104         (mono_get_shared_generic_inst): Likewise.
16105         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16106         (mono_reflection_bind_generic_method_parameters): Likewise.
16107         * metadata-internals.h: Likewise.
16108         * icall.c (free_generic_context): Kill.
16109         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16110
16111         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16112         mono_metadata_type_dup.
16113         * marshal.c (mono_mb_create_method): Likewise.
16114
16115         * metadata.c (mono_metadata_type_dup): Rename from
16116         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16117         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16118         * marshal.c, metadata-internals.h: Update to changes.
16119
16120 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16121
16122         * class.c: fixed a small leak for array classes and removed warning.
16123
16124 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16125
16126         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16127         Return 0x8000000 for return parameters. Fixes #82161.
16128
16129 2007-07-21  Marek Habersack  <grendello@gmail.com>
16130
16131         * appdomain.c (get_shadow_assembly_location): append the current
16132         ticks value to the path. Avoids overwriting the same assemblies by
16133         several threads at the same time.
16134
16135 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16136         and Raja R Harinath  <rharinath@novell.com>
16137
16138         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16139         Simplify slightly.
16140         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16141         property for testing if a method is a generic method definition.
16142
16143 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16144
16145         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16146
16147 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16148
16149         * verify.c: used function from private branch, reverted to the one in class.h 
16150
16151 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16152
16153         * verify.c: a typo slipped in and the code wont compile
16154
16155 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16156
16157         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16158         disabled box instruction as it is doing the wrong thing
16159         improved stack dump messages, now it is easier to debug type related issues
16160
16161
16162 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16163
16164         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16165
16166 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16167
16168         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16169         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16170         grouped with class and valuetype. This change will simply 
16171         the code as it should be handled just like unmanaged pointers.
16172
16173 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16174
16175         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16176
16177 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16178
16179         * verify.c: several stack merge issues fixed, reference comparisons now
16180         check the type size. strict type check now works correctly.
16181         added more uses of IS_MANAGED_POINTER macro.
16182         fixed issues pointed by running the test suite against .net.
16183         
16184
16185 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16186
16187         * class.c, loader.c, class-internals.h: Removed the
16188         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16189         defines.
16190
16191         * icall.c: Better error checking in some internal reflection
16192         methods.
16193
16194 2007-07-18  William Holmes  <billholmes54@gmail.com>
16195
16196         * filewatcher.c : removed unused variable 'filename' in 
16197           ves_icall_System_IO_FSW_SupportsFSW
16198
16199 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16200
16201         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16202         obsolete, removed.
16203
16204 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16205
16206         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16207         
16208         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16209
16210 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16211
16212         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16213         Implement generics support.
16214         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16215
16216         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16217         type_args and method_args arguments.
16218         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16219         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16220         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16221
16222 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16223
16224         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16225           It adds a rootimage parameter to mono_reflection_get_type_internal,
16226           adds new function mono_reflection_get_type_with_rootimage and use
16227           the rootimage to resolve the types instead of the current image
16228
16229 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16230
16231         * culture-info-table.h: Forgot to update after r78304.
16232
16233 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16234
16235         * class.c (mono_class_is_open_constructed_type)
16236         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16237
16238 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16239
16240         * class.c (mono_bounded_array_class_get):  method fails if used with
16241         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16242         avoiding calculating the size for such array as it cannot be instantiated.
16243         Fix bug #82015
16244
16245 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16246
16247         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16248         field.
16249         * metadata.c, reflection.c: Update to changes.
16250
16251 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16252
16253         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16254         mono_class_is_valid_enum, they are used to valide a enum when loading.
16255         * reflection.c: used new functions to throw TypeLoadException when and
16256         invalid enum is build with TypeBuilder. Fixes #82018
16257   
16258 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16259
16260         * object.c: forgot commit of mono_class_setup_methods () to access
16261         iface->methods.
16262         * object-internals.h: added a few more handy fields to
16263         MonoIMTCheckItem.
16264
16265 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16266
16267         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16268         iface->methods.
16269
16270 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16271
16272         * class-internals.h, object-internals.h, object.c: IMT-based
16273         interface invocation core from Massimiliano Mantione
16274         (massi@ximian.com) with a reworked arch-specific interface,
16275         bsearch implementation and a few bugfixes and memory savings by me.
16276
16277 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16278
16279         * class.c (mono_class_create_from_typedef): mono would segfault if 
16280         an enum did not have a __value field. It now throws a TypeLoadException
16281         for such cases. Fix bug #82022
16282
16283 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16284
16285         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16286
16287 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16288
16289         * class.c (mono_class_init): If a class is already inited but has
16290         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16291
16292 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16293
16294         * class.c: Properly handle the case of an unimplemented interface
16295         method.  Fixes: 81673.
16296
16297 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16298
16299         * class-internals.h, object.c: cleanup patch from massi: use
16300         MonoVTable->interface_bitmap since the vtable interfaces offset array
16301         is going away.
16302
16303 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16306         GetMDStreamVersion icall instead.
16307
16308 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16309
16310         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16311         not use mono_dl_build_path() with a full library name: makes
16312         fallbacks to libgaim and libfam work.
16313
16314 2007-07-06  William Holmes  <billholmes54@gmail.com>
16315
16316         * assembly.c: Added a continue statement in probe_for_partial_name when
16317          parse_assembly_directory_name fails.  Fixes : 82002
16318
16319 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16320
16321         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16322         and added a verification  for TYPEDBYREF.
16323         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16324         make native int interchangeable with int32 and some small cleanup and formating.
16325         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16326         handle byref of byref.
16327         * verify.c (push_local): handle byref of byref.
16328         * verify.c (do_binop): invalid mix of values is unverifiable
16329         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16330         added visibility checks
16331         * verify.c (field related method): added visibility checks
16332         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16333
16334 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16335
16336         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16337         string.
16338
16339 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16340
16341         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16342
16343         * marshal.c (emit_marshal_string): When returning a string from managed code,
16344         allways make a copy even for unicode strings. Fixes #81990.
16345
16346 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16347
16348         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16349         of byref generic inst types (bug #81997).
16350
16351 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16352
16353         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16354         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16355
16356 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16357
16358         * marshal.c (emit_marshal_string): Add support for unicode strings in
16359         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16360
16361 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16362
16363         * verify.c: field load/store are now verified, missing only access checks now
16364
16365 2007-06-28  Martin Baulig  <martin@ximian.com>
16366
16367         * mono-debug.c (mono_debug_debugger_version): New public variable.
16368
16369 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16370
16371         * locales.c: When constructing DateTimeFormat or NumberFormat for
16372         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16373         MonoCultureInfo contructed from the current locale is always
16374         read-only and has UseUserOverride set to true. All MonoCultureInfo
16375         instances returned for GetCultures have both IsReadOnly and
16376         UseUserOverride set to true. Fixes part of bug #81930.
16377
16378 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16379
16380        * icall-def.h: Update System.__ComObject icalls
16381        * marshal.c: Avoid managed transition (and object creation)
16382        when looking up COM interface in RCW.
16383        * marshal.h: Ditto.
16384        
16385        Code is contributed under MIT/X11 license.
16386
16387 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16388
16389         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16390         to avoid crashes during assembly unloading.
16391
16392 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16393
16394         Fix MethodInfo.IsGenericMethodDefinition
16395         * reflection.c (mono_reflection_bind_generic_method_parameters):
16396         Rearrange code to ensure we always uses a generic method definition.
16397         * class.c (mono_class_inflate_generic_method_full): Set
16398         'generic_container' field only for generic method definitions.
16399         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16400         Use presense of 'generic_container' field as indication of being a
16401         generic method definition.
16402
16403 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16404
16405         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16406
16407         * object-internals.h: Reflect changes in the layout of the managed Delegate
16408         class.
16409         
16410         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16411         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16412         runtime memory used by the dynamic method. Fixes #77146.
16413
16414 2007-06-21  Dick Porter  <dick@ximian.com>
16415
16416         * file-io.h: 
16417         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16418         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16419         81767.
16420
16421 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16422
16423         * reflection.c (method_encode_methodspec): Add a tripwire.
16424         * class.c (inflate_generic_type): The fully open generic type is
16425         not the same as the generic type definition.
16426
16427 2007-06-21  Martin Baulig  <martin@ximian.com>
16428
16429         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16430
16431         * mono-debug-debugger.h
16432         (MonoDebuggerBreakpointInfo): Removed.
16433         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16434         (mono_debugger_remove_breakpoint): Likewise.
16435         (mono_debugger_breakpoint_callback): Likewise.
16436         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16437
16438 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16439
16440         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16441         generic type is not the same as the generic type definition.
16442         * class.c (mono_generic_class_get_class): Likewise.
16443
16444 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16445
16446         * icall.c: The second argument to 
16447         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16448         is a MonoType not a MonoClass.
16449
16450 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16451
16452         * verify.c: support for function pointers in the verifier
16453
16454 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16455
16456         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16457
16458 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16459
16460         * assembly.c: removed Mono.Data.SqliteClient from the list of
16461         forward-compatible assemblies as it breaks the ABI (bug #81899).
16462
16463 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16464
16465         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16466         lookup/update with the loader lock.
16467         * reflection.c (mono_class_bind_generic_parameters): No need to
16468         protect mono_metadata_lookup_* with the loader lock.
16469         * class.c (inflate_generic_type): Likewise.
16470         
16471         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16472         on a generic instantiated type.
16473
16474 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16475
16476         *verify.c: produce meanfull error messages on verification error
16477         *verify.c: fixed some cases of verification errors reported as validation errors
16478         *pedump.c: fixed the error name array, now it shows validation errors properly
16479         *verify.h: fixed the contant that should be used for verification errors
16480
16481 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16482
16483         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16484         for bug #77596, 81858 and 80743 (generics data structures on domain
16485         unload).
16486
16487 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16488
16489         Avoid allocating 'MonoGenericContext' on the heap.
16490         * class-internals (_MonoMethodInflated::context): Make field
16491         inline, not a pointer.
16492         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16493         stack.  Use the context embedded within the inflated method as the
16494         hash key, rather than 'new_context'.
16495         * class.c (inflate_generic_context): Simplify.  Return a struct
16496         rather than allocating on the heap.
16497         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16498         doesn't salt away a copy of the context -- simplifying the
16499         lifetime rules of a 'MonoGenericContext *'.
16500         (mono_method_get_context): Return pointer to embedded context.
16501         (setup_generic_array_ifaces): Allocate temporary context on stack.
16502         * reflection.c (inflate_mono_method): Likewise.
16503         (mono_reflection_bind_generic_method_parameters): Likewise.
16504         Use the context embedded within the inflated method as the hash key.
16505
16506         Avoid a source of allocation of 'MonoGenericContext'.
16507         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16508         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16509         * class.c: Update to changes.
16510         (mono_generic_class_get_context): Simplify drastically.  Now just
16511         returns a pointer to the field.
16512         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16513         argument as a const pointer.
16514         (mono_metadata_generic_context_equal): Likewise.
16515         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16516         Update to changes.
16517
16518 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16519
16520         * verify.c improved the handling of brtrue/brfalse, factored out common code
16521
16522 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16523
16524         Kill MonoGenericMethod.
16525         * class-internals.h (MonoGenericContext::method_inst): Rename from
16526         'gmethod' and convert to a MonoGenericInst.
16527         (MonoGenericMethod): Remove.
16528         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16529         * loader.c (method_from_methodspec): Update to changes.  Use a
16530         MonoGenericContext as the key to the hashtable.
16531         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16532         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16533         (mono_metadata_generic_context_hash): Likewise from
16534         'mono_metadata_generic_method_hash'.  Change hash function.
16535         (mono_metadata_load_generic_params): Update to changes.
16536         (mono_get_shared_generic_method): Remove.
16537         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16538         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16539         (inflate_generic_context): Likewise.
16540         (mono_class_inflate_generic_method_full): Likewise.
16541         (setup_generic_array_ifaces): Likewise.
16542         (mono_class_create_from_typespec): Likewise.
16543         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16544         (method_encode_methodspec): Update callsite.
16545         (reflection_methodbuilder_to_mono_method): Update to changes.
16546         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16547         MonoGenericContext as the key to the hashtable.
16548         (inflate_mono_method): Update to changes.
16549
16550         * class-internals.h (MonoGenericMethod::container): Remove.
16551         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16552
16553 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16554
16555         * profiler-private.h, profiler.c, profiler.h: added API to profile
16556         exception events.
16557
16558 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16559
16560         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16561
16562 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16563
16564         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16565         Fixed overflow and underflow not aborting the verification process.
16566
16567 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16568
16569         * class-internals.h (MonoStats): Added stats entries for dynamic
16570         code allocations.
16571
16572 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16573
16574         * loader.c (mono_free_method): Free header->locals and header->clauses.
16575
16576         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16577         dynamic case.
16578
16579         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16580
16581         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16582
16583 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16584
16585         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16586         the tables.
16587
16588 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16589
16590         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16591
16592 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16593
16594         MonoGenericMethod on a diet
16595         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16596         here ...
16597         (_MonoGenericMethod::reflection_info): ... from here.
16598         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16599         Update to changes.
16600         * reflection.c (inflate_mono_method): Likewise.
16601         (mono_reflection_bind_generic_method_parameters): Likewise.
16602
16603 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16604
16605         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16606         *verify.c: factored long ldarg forms to share code with short forms
16607
16608 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16609
16610         *verify.c: fixed code formating factored some duplicate code
16611         into a new function
16612
16613         *verify.h: fixed binary incompatibility introduced earlier
16614
16615         *pedump.c: fixed formating
16616
16617 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16618
16619         Fix assertion when disassembling Mono.C5.dll
16620         * loader.c (method_from_methodspec): Avoid inflating a method
16621         twice with the same context.  If the methodref is inflated, use
16622         the declaring method instead.
16623
16624         * class.c (mono_class_from_generic_parameter): Fix case similar to
16625         bug #81830 handled below, but for method containers.
16626
16627 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16628
16629         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16630         get_shared_generic_class.  Directly inflate the instance.
16631         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16632         (inflate_generic_class): Delete.
16633         (get_shared_generic_class): Delete.  Move setting of
16634         'cached_class' and 'cached_context' ...
16635         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16636
16637         * metadata.c (mono_metadata_lookup_generic_class): Change
16638         signature to take the components of a MonoGenericClass rather than
16639         an allocated MonoGenericClass.  Change semantics to be intern-like.
16640         * reflection.c (mono_class_bind_generic_parameters): Update to
16641         changes.  Make locking region tighter.
16642         * class.c (inflate_generic_class): Update to changes.
16643         (get_shared_generic_class): Likewise.
16644         * metadata-internals.h: Likewise.
16645
16646         * reflection.c (mono_class_bind_generic_parameters): Take and
16647         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16648         (mono_reflection_bind_generic_parameters): Use
16649         'mono_class_bind_generic_parameters' rather than duplicate the code.
16650         * class.c (mono_bounded_array_class_get): Update to changes.
16651         * object-internals.h: Likewise.
16652
16653         * reflection.c (mono_class_bind_generic_parameters): Only support
16654         parameterizing generic type definitions.  Remove support for other
16655         open types.
16656
16657 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16658
16659         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16660
16661         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16662         in the dynamic case.
16663
16664 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16665
16666         * threads.c: When cleaning up thread, reset the Background bit.
16667         Fixes bug #81720.
16668
16669 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16670
16671        * metadata.c: Move variable declarations to top of scope.
16672        * verify.c: Move variable declarations to top of scope.
16673
16674        Code is contributed under MIT/X11 license.
16675
16676 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16677
16678         * reflection.c (mono_class_bind_generic_parameters): Replace
16679         open-coded loop with mono_metadata_inflate_generic_inst.
16680
16681         * class.c (get_shared_generic_class): Don't call
16682         mono_get_shared_generic_inst.  Use the container's own
16683         'class_inst'.
16684
16685         * metadata.c (mono_metadata_load_generic_params): Move
16686         initialization of 'context' field here from ...
16687         * class.c (mono_class_create_from_typedef): ... here, and ...
16688         * loader.c (mono_get_method_from_token): ... here.
16689
16690         * class.c (get_shared_generic_class): Rename from
16691         mono_get_shared_generic_class and make static.
16692         (mono_get_shared_generic_inst): Move to metadata.c.
16693         * loader.c (mono_get_shared_generic_method): Likewise.
16694         * class-internals.h, metadata-internals.h: Update to changes.
16695
16696         Fix #81830
16697         * class.c (mono_class_from_generic_parameter): Don't assume a
16698         generic container owner exists.  Generic containers from monodis
16699         don't have any.
16700
16701 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16702
16703         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16704         * verify.h: new typedefs to returns the non-verifiable status
16705         * verify.c: initial implementation of generics, stack merging and object compatibility check
16706
16707 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16708
16709         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16710         a MonoInternalHashTable again (fixed bug in internal hash table
16711         code).
16712
16713 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16714
16715         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16716         MonoInternalHashTable again (fixed bug in internal hash table
16717         code).
16718
16719 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16720
16721         * class.c, image.c, class-internals.h, domain.c,
16722         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16723         changes.  Have to figure out what makes them break the SWF
16724         regression.
16725
16726 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16727
16728         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16729         a MonoInternalHashTable now.
16730
16731 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16732
16733         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16734         MonoInternalHashTable now.
16735
16736 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16737
16738         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16739         invoke_impl code.
16740
16741         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16742
16743         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16744         dependent trampoline.
16745
16746         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16747
16748         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16749
16750 2007-05-29  Robert Jordan  <robertj@gmx.net>
16751
16752         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16753
16754 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16755
16756         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16757
16758 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16759
16760        * marshal.c: Fix interface lookup loops for
16761        cominterop_get_com_slot_for_method and 
16762        cominterop_get_method_interface. Only need to lookup
16763        if type is a class, else use interface type method is on.
16764
16765        Code is contributed under MIT/X11 license.
16766
16767 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16768
16769         * reflection.c: HasSecurity can be present even if no specially 
16770         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16771         SecurityAttribute). Fix CAS regression tests on buildbot.
16772
16773 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16774
16775        * appdomain.c: Add configure checks for header files.
16776        * image.c: Add configure checks for header files.
16777        * file-io.c: Add configure checks for header files.
16778        * debug-mono-symfile.c: Add configure checks for header files.
16779        * threadpool.c: Add configure checks for header files.
16780        * console-io.c: Add configure checks for header files.
16781        * profiler.c: Add configure checks for header files.
16782        * rawbuffer.c: Add configure checks for header files.
16783        * icall.c: Add configure checks for header files.
16784        * rand.c: Add configure checks for header files.
16785        * socket-io.c: Add configure checks for header files.
16786
16787        Code is contributed under MIT/X11 license.
16788
16789 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16792         assertion as it breaks the build.
16793         
16794         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16795
16796         * reflection.c (lookup_custom_attr): Make a copy here too.
16797
16798         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16799         dynamic images.
16800
16801         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16802         images.
16803
16804         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16805         info.
16806
16807 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16808
16809         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16810         (load_cattr_value): Ditto.
16811
16812 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16813
16814         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16815
16816 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16817
16818         * threads.c: In "start_wrapper", set apartment_state to MTA if
16819         apartment_state is Unknown and we're running on 2.0 profile or
16820         higher.
16821         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16822         to main method, then set apartment_state to Unknown on 1.0 profile,
16823         and MTA on 2.0 profile.
16824
16825 2007-05-16  Jb Evain  <jb@nurv.fr>
16826
16827         * class-internals.h (MonoDefaults): Add an attribute_class and
16828           customattribute_data_class.
16829         * domain.c (mono_init_internal): Populate them.
16830         * reflection.c: Use them to remove duplicates. Make a vew
16831         MonoClass variables `static'.
16832
16833 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16834
16835         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16836         step in implementing IMT, so that all isinst checks now can go
16837         through the bitmap.
16838         This was needed because vtables for TransparentProxy need to look
16839         like the vtable of the "target" class, so they need to point to
16840         its interface bitmap directly.
16841
16842         * object.c: inside "mono_class_create_runtime_vtable" and
16843         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16844
16845 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16846
16847         * object-internals.h
16848           culture-info.h : added territory field in MonoCulture and
16849           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16850         * locales.c : fill territory field above too.
16851         * culture-info-table.h : regenerated.
16852
16853 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16856         Fixes #81599.
16857
16858 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16859
16860         * object.c: Always initialize apartment, even if 
16861         there is no custom attributes on entry point.
16862         
16863         Code is contributed under MIT/X11 license.
16864
16865 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16866
16867         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16868         * metadata.c: If no encoding is set, check for unicode
16869         on class.
16870         
16871         Code is contributed under MIT/X11 license.
16872
16873 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16874
16875         * threads.c: Handle if mono_thread_current returns NULL 
16876         
16877         Code is contributed under MIT/X11 license.
16878
16879 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16880
16881         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16882         in start_wrapper. Added mono_thread_init_apartment_state and
16883         mono_thread_cleanup_apartment_state.
16884         * object.c: Initialize thread apartment state on main thread
16885         by checking for STAThreadAttribute on entry point.
16886         * object-internals.h: Add apartment_state field to MonoThread.
16887         * threads-types.h: Add unmanaged definition of 
16888         System.Threading.ApartmentState, MonoThreadApartmentState.
16889         
16890         Code is contributed under MIT/X11 license.
16891         
16892 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16893
16894         * class.c: Fix windows build.
16895         * class-internals.h: Fix windows build.
16896         
16897         Code is contributed under MIT/X11 license.
16898
16899 2007-05-08  Robert Jordan  <robertj@gmx.net>
16900
16901         * process.c (CreateProcess_internal):
16902         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16903         .CreateNoWindow was specified. Fixes #81496.
16904
16905 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16906
16907         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16908         step in implementing IMT, replaced it with two compact arrays
16909         (interfaces_packed and interface_offsets_packed) and a bitmap that
16910         is used for isinst checks (interface_bitmap).
16911
16912         * class.c: (compare_interface_ids): compare function to pass to
16913         bsearch when looking for an interface with a given id.
16914         (mono_class_interface_offset): reimplemented using bsearch on
16915         interfaces_packed, getting the offset from interface_offsets_packed.
16916         (print_implemented_interfaces): utility debugging function.
16917         (setup_interface_offsets): reworked to initialize interfaces_packed,
16918         interface_offsets_packed and interface_bitmap.
16919
16920         * object.c: replaced all accesses to "MonoClass.interface_offsets"
16921         with uses of interfaces_packed and interface_offsets_packed.
16922
16923 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16924
16925         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
16926         mono_class_interface_offset prototype to wrap all accesses to
16927         "MonoClass.interface_offsets".
16928
16929         * class.c: Implemented mono_class_interface_offset, and wrapped all
16930         accesses to "MonoClass.interface_offsets".
16931
16932         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
16933         "MonoClass.interface_offsets".
16934
16935 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16936
16937         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
16938         GetMethodFromHandle overloads (bug #78637).
16939
16940 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16941
16942         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
16943         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
16944
16945 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
16946
16947         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
16948         #81498.
16949
16950         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
16951         gracefully.
16952         (mono_custom_attrs_from_index): Ditto.
16953
16954         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
16955         Fixes #81501.
16956
16957 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
16958
16959         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
16960         is now allocated from a mempool.
16961
16962 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
16963
16964         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
16965         caller holds threads_lock, leading to deadlocks. Fixes #81476.
16966
16967 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
16968
16969         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
16970         mono_loader_clear_error () too late. Fixes #81463.
16971
16972 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
16973
16974         * culture-info-table.h : regenerated.
16975
16976 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
16977
16978         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
16979         is missing.
16980
16981 2007-04-25  Dick Porter  <dick@ximian.com>
16982
16983         * Makefile.am: Put the mingw enforced-optimisation back into the
16984         PLATFORM_WIN32 section.
16985
16986 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16987
16988         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
16989         patch.
16990
16991         * image.c (mono_image_load_module): New API function to load a module reference.
16992
16993         * image.c (load_modules): Load modules lazily. Fixes #80812.
16994
16995         * class.c (mono_class_from_typeref): Use mono_image_load_module.
16996         
16997         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
16998
16999         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17000         to mono_image_load_module_dynamic.
17001
17002 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17003
17004         * marshal.c: Fix calling convention for CCW on non-windows
17005         platforms. STDCALL on windows, CDECL everywhere else to work 
17006         with XPCOM and MainWin COM.
17007         
17008         Code is contributed under MIT/X11 license.
17009
17010 2007-04-23  Martin Baulig  <martin@ximian.com>
17011
17012         Fix #80969.
17013
17014         * loader.c
17015         (method_from_memberref): Added `gboolean *used_context' argument.
17016         (mono_get_method_from_token): Likewise.
17017         (mono_get_method_full): Don't insert the method in the cache when
17018         `used_context' is true.
17019
17020 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17021
17022         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17023
17024         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17025         create new MonoTypes for returned types.
17026         * class.c (mono_generic_class_get_class): Export mono-internal.
17027         * class-internals.h: Update to changes.
17028
17029 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17030
17031         * threadpool.c, threadpool.h, icall-def.h: patch from
17032         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17033
17034 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17037         
17038         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17039
17040         * threads.c (mono_thread_get_stack_bounds): New helper function.
17041
17042         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17043         Correctly compute stack bounds when attaching. Fixes #81394.
17044
17045 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17046
17047         * reflection.c: fix handling of doubles in custom attributes
17048         for the arm-fpa format (bug #81368).
17049
17050 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17051
17052         * reflection.c (assembly_add_win32_resources): Mildly relax an
17053         bounds check to let the end pointer point just past the end of the
17054         allocated buffer.  (may fix #81384)
17055
17056 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17057
17058         * culture-info-table.h : regenerated.
17059
17060 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17061
17062         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17063         the thread is aborted early.
17064
17065 2007-04-05  Dick Porter  <dick@ximian.com>
17066
17067         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17068         FindFirstFile()/FindNextFile() to find entries.  This lets the
17069         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17070         81038.
17071
17072         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17073         the parameters of
17074         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17075
17076 2007-04-04  Martin Baulig  <martin@ximian.com>
17077
17078         * debug-helpers.c
17079         (mono_method_desc_full_match): Add support for nested classes.
17080
17081 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17082
17083         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17084
17085 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17086
17087         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17088         waiting for too many threads.
17089
17090 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17091
17092         * environment.c: Fix return value check on uname so we can get the 
17093         executing version on Solaris operating systems.
17094
17095 2007-03-28  Jb Evain  <jbevain@gmail.com>
17096
17097         * class.c (mono_type_get_name_recurse): Complete the
17098         fix for the creation of assembly qualified names for
17099         pointer types. Fixes #81208.
17100
17101 2007-03-27  Dick Porter  <dick@ximian.com>
17102
17103         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17104         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17105         changed.
17106
17107         * threads.c
17108         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17109         the value of ReleaseMutex().
17110
17111 2007-03-27  Dick Porter  <dick@ximian.com>
17112
17113         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17114         in little-endian order, not network endian, so must be converted
17115         to host endian here.  Fixes bug 80593.
17116
17117 2007-03-22  Jb Evain  <jbevain@gmail.com>
17118
17119         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17120         qualified names for pointer types. Fixes #81208.
17121
17122 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17123
17124         * marshal.c: Add support for PreserveSigAttribute. 
17125         
17126         Code is contributed under MIT/X11 license.
17127
17128 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * process.c: Fix endianness issues. Fixes #81126.
17131
17132         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17133         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17134
17135         * image.c (mono_image_lookup_resource): Make this work on big-endian
17136         machines.Change API contract so the caller needs to free the return value.
17137         
17138         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17139         API change.
17140         
17141 2007-03-14  Martin Baulig  <martin@ximian.com>
17142
17143         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17144         mono_type_get_desc() as well.
17145
17146 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17147
17148         * icall.c:  Fix environ access in VS.  
17149         
17150 2007-03-13  Alp Toker  <alp@atoker.com>
17151
17152         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17153         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17154         #63841.
17155
17156 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17157
17158         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17159         circular references among dynamic methods. Fixes #81091.
17160
17161         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17162
17163 2007-03-09  Martin Baulig  <martin@ximian.com>
17164
17165         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17166
17167 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17168
17169         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17170         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17171         
17172         Code is contributed under MIT/X11 license.
17173         
17174 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17175
17176         * loader.c: Reapply patch for bug #79424.
17177
17178 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * metadata.c (mono_type_to_unmanaged): Only convert object to
17181         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17182
17183 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17184
17185         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17186         (and incorrectly set) is_reference field from MonoGenericInst.
17187
17188 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17189
17190         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17191         a little earlier.
17192
17193         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17194
17195         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17196
17197 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17198
17199         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17200         FileOptions.1 value to mean "temporary", map that to
17201         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17202
17203         Fixes 80688
17204
17205 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17206
17207         * appdomain.c: implement MS .Net style shadow copying. Copies of
17208         the assemblies are made in a subdirectory of the dynamic base
17209         directory, the assembly names are preserved.
17210         Copy .mdb and .config files along with the assemblies being shadowed.
17211
17212 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17213
17214         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17215         (emit_marshal_handleref): Ditto.
17216
17217         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17218         on Visual C++. Fixes #80671.
17219
17220 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17221
17222         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17223         for clone operations.
17224
17225 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * marshal.c: Fix warnings.
17228
17229 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17230
17231         * loader.c: allow case-insensitive matching of the dll name
17232         in dllmap handling when prefixed with "i:".
17233
17234 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17235
17236         * threads.c: Fix #ifdef for dummy_apc function for VS.
17237
17238 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17239
17240         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17241
17242 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17243         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17244         giving precedence to the methods with a fully qualified name
17245         (InterfaceName.MethodName) when building the interface sections
17246         of the vtable.
17247
17248 2007-02-16  Dick Porter  <dick@ximian.com>
17249
17250         * threadpool.c (append_job): Fix fast-path array handling, so it's
17251         less likely the array will grow exponentially when the load is
17252         heavy.
17253
17254 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17255
17256         * metadata-internals.h, loader.c: fix dllmap lookup order
17257         for non-function maps, too, and prepare for fallback code.
17258
17259 2007-02-12  Robert Jordan  <robertj@gmx.net>
17260
17261         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17262         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17263         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17264         GlobalFree. Fixes a part of bug #77075.
17265
17266 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17267
17268         * loader.c: implemented typedef parent in field memberref.
17269
17270 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17271
17272         * marshal.c: Fix warnings and remember to call Release on
17273         IUnknown of RCW.
17274         
17275         Code is contributed under MIT/X11 license.
17276
17277 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17278
17279         * class-internals.h: Add MonoHandleRef definition, and
17280         handleref_class to mono_defaults. 
17281
17282         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17283         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17284
17285         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17286         (do nothing on this stage)
17287         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17288         (emit_marshal_handleref): New method, used for argument handling
17289         of HandleRefs. 
17290
17291 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17292
17293         * class.c (mono_class_setup_parent): Lazily init com types.
17294         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17295         init com types.
17296         * object.c (mono_remote_class_vtable): Lazily init com types.
17297         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17298         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17299         * domain-internals.h: Expose mono_init_com_types.
17300         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17301         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17302         Add support for COM Callable Wrapper marshalling.
17303         * marshal.h: Add icall definitions.
17304         * gc.c: Handle freeing of CCWs in finalizer code.
17305         
17306         Code is contributed under MIT/X11 license.
17307
17308 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17309
17310         * reflection.c: changed all the signature encoding code to use
17311         a variable-sized buffer.
17312
17313 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17314
17315         * marshal.c: locking fixes: never take the loader lock
17316         or other runtime locks when holding the marshal lock
17317         (fixes bug#80664).
17318
17319 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17320
17321         * marshal.c: make the delegate function pointer mapping
17322         work for the moving GC.
17323
17324 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17325
17326         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17327         for bug #80618.
17328
17329 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17330
17331         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17332         gmodule.
17333
17334 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17335
17336         * threadpool.c: made the code moving-GC safe.
17337
17338 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17339
17340         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17341         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17342         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17343         warning cleanup.
17344         * reflection.c: warning cleanup, some threading and moving GC fixes.
17345
17346 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17347
17348         * class.c, loader.c: create the needed Set/Get/Address array methods
17349         as well as the .ctors in mono_class_init (), fixes bug #80567.
17350
17351 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17352
17353         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17354         we doesn't decrease its alignment. Should fix the sparc build.
17355
17356 2007-01-24  Dick Porter  <dick@ximian.com>
17357
17358         * socket-io.c
17359         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17360         Create the returned object if we need to ignore an unsupported
17361         socket option.  Fixes a segfault reported by Atsushi.
17362
17363 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17364
17365         * class.c, object.c: restrict GC-tracked fields to
17366         UIntPtr fields used inside corlib, so we provide better
17367         type info to the GC and also allow broken packing as in
17368         bug #80580.
17369
17370 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17371
17372         * sgen-gc.c: removed duplicated function.
17373
17374 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17375
17376         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17377         value that means that the value is not supported, but that we
17378         should not return a failure, but instead report this as a
17379         successful operation.
17380
17381 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17382
17383         Fix tests/bug79956.2.il
17384         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17385         (mono_generic_class_get_class): If the generic definition in an
17386         enum, copy over other fields related to it.
17387
17388 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17389
17390         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17391         genericinst enums (bug #79215).
17392
17393 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17394         * class.c: Fix bug 80307.
17395
17396 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17397
17398         * image.c: if the file table is not present, try to load
17399         all the modules, since we don't have info about them
17400         having or not metadata (bug #80517).
17401         * assembly.c: allow mono_assembly_load_references () to
17402         work for netmodules.
17403
17404 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17405
17406         * image.c, metadata-internals.h, object.c: execute module
17407         cctors when running on the 2 runtime if present (bug #80487).
17408
17409 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17410
17411         * icall.c: optimized InitializeArray() on bigendian.
17412
17413 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17414
17415         * icall.c: fix for the broken ARM FPA double format.
17416
17417 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17418
17419         * icall.c: handle endian issues for r4 and r8 types, too, in
17420         the InitializeArray() icall.
17421
17422 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17423
17424         * loader.c (mono_loader_error_prepare_exception): Clear the error
17425         once we have extracted the information from it, do this before we
17426         call into the JIT's class loading mechanisms.
17427
17428         * object.c (mono_class_create_runtime_vtable): Do not clear the
17429         loader error before calling mono_class_get_exception_for_failure
17430         as the loader error is needed inside
17431         mono_class_get_exception_for_failure to throw the error (thinko).
17432
17433         Fixes #80521
17434         
17435 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17436
17437         * reflection.c: align fields rva data so it's faster to load at
17438         runtime.
17439
17440 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17441
17442         Prepare to simplify GenericMethod handling.
17443         * class-internals.h (mono_method_get_context): New accessor function.
17444         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17445         rather than directly accessing '->context' field.
17446
17447         * class-internals.h (_MonoGenericParam.method): Move ...
17448         (_MonoGenericContainer): ... here.  Add into union with klass field.
17449         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17450         Update to changes.
17451
17452 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17453
17454         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17455         the wrapper type enum and reduce relocations.
17456
17457 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17458
17459         * reflection.c (inflate_mono_method): Reuse method instantiation
17460         from the generic method, if available.
17461
17462 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17463
17464         * marshal.c (emit_marshal_variant): Fix conv_arg
17465         type in last commit, based on whether parameter is byref.
17466         
17467 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17468
17469         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17470         marshalling.
17471         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17472         MONO_TYPE_OBJECT back for VARIANT support.
17473
17474 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17475
17476         * marshal.c, marshal.h, icall-def.h: Implement 
17477         Marshal.ReAllocCoTaskMem.
17478
17479 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17480
17481         * marshal.c: memory retention fixes: use the proper
17482         image cache for runtime_invoke method lookups.
17483
17484 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17485
17486         * mempool.c: added code to help debug mempool allocations.
17487
17488 2007-01-11  Dick Porter  <dick@ximian.com>
17489
17490         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17491         support (experimenting with faking it with IP_MTU_DISCOVER for
17492         systems that don't have IP_DONTFRAGMENT.)
17493         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17494         icall.
17495
17496         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17497
17498         * socket-io.h: Add new fields to MonoSocketAsyncResult
17499         corresponding to the new ones in Socket.cs.
17500
17501 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17502
17503         Fix IronPython regression mentioned in #80249
17504         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17505         'cached_context' field, since it may have been initialized as a
17506         side-effect of metadata parsing.
17507
17508         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17509         (_MonoGenericClass.cached_class): Move here and rename from lone
17510         remaining field of ...
17511         (_MonoInflatedGenericClass): ... this.  Remove.
17512         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17513         to changes.
17514
17515         Fix mcs/tests/test-128.cs regression.
17516         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17517         2007-01-10 change below.
17518         [MONO_TYPE_OBJECT]: Recurse into array case.
17519
17520 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17521
17522         * class-internals.h (mono_get_inflated_generic_class): Remove.
17523         * class.c (mono_get_inflated_generic_class): Remove.
17524         (mono_generic_class_get_class): Rename from
17525         mono_class_create_generic.
17526         (mono_class_from_mono_type) [GENERICINST]: Use it.
17527         * reflection.c, metadata.c: Update to changes.  Use
17528         'mono_class_from_mono_type'.
17529
17530 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17531
17532         * reflection.c: use passed type when encoding an array element
17533         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17534
17535 2007-01-09  Robert Jordan  <robertj@gmx.net>
17536
17537         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17538         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17539         Fixes bug #80392.
17540
17541 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17542
17543         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17544
17545         * object.c (set_value): Avoid aliasing between type->data.klass
17546         and type->data.generic_class.
17547
17548         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17549
17550 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17551
17552         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17553         between type->data.klass and type->data.generic_class.
17554
17555 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17556
17557         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17558         value in out parameters.
17559
17560 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17561
17562         Simplify invariant for MonoGenericClass::klass field.
17563         * class.c (mono_class_create_generic): Verify 'klass' is null.
17564         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17565         initialize 'klass' field.
17566
17567 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17568
17569         Ongoing work to avoid redundant data and simplify invariants.
17570         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17571         'generic_class', and change type to a GenericInst.
17572         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17573         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17574
17575 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17576
17577         * class.c : skip io-layer under PLATFORM_WIN32.
17578
17579 2007-01-03  Tor Lillqvist  <tml@novell.com>
17580
17581         Fix #80305: In a bundled executable, look in the bundled exe
17582         assembly to determine the runtime version. Add the possibility to
17583         bundle also the machine.config file.
17584         
17585         * assembly.c (mono_assembly_open_from_bundle): Make
17586         non-static. Allow being called even if we have no bundled
17587         assemblies, and return NULL right away in that case.
17588
17589         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17590         here.
17591
17592         * domain.c (app_config_parse): Take an assembly exe file name as
17593         parameter instead of a config file name. Check for a bundled
17594         config file for that assembly by calling
17595         mono_config_string_for_assembly_file() (see below) before looking
17596         for one in the file system.
17597         (get_runtimes_from_exe): Corrsponding change to call of
17598         app_config_parse().
17599         (get_runtimes_from_exe): Check for bundled assembly exe file first
17600         by calling mono_assembly_open_from_bundle(). If no bundled
17601         assembly exe file is found, call mono_image_open() as before to
17602         look it up in the file system.
17603
17604         * mono-config.c: Add variable bundled_machinec_onfig.
17605         (mono_config_string_for_assembly_file): New function.
17606         (mono_config_for_assembly): Move code snippet that looks for a
17607         bundled assembly .config file into the above new function. Call
17608         it.
17609         (mono_register_machine_config, mono_get_machine_config): New
17610         functions to set and retrieve
17611
17612         * assembly.h: Declare mono_register_machine_config().
17613
17614         * mono-config.h: Declare mono_get_machine_config() and
17615         mono_config_string_for_assembly_file().
17616
17617         * icall.c: No declaration of environ necessary on Win32. It is
17618         declared (as a macro expanding to a function call) in stdlib.h.
17619         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17620         New internal mono function. Returns the value of
17621         mono_get_machine_config() as a Mono string.
17622
17623         * icall-def.h: Add get_bundled_machine_config().
17624
17625 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17626
17627         Remove redundant field
17628         * class-internals.h (_MonoGenericContext.container): Remove field.
17629         * loader.c (mono_method_get_signature_full): Don't parse a
17630         "container" for a signature parse when the signature is inflated
17631         immediately.
17632         (method_from_methodspec): Likewise, for a generic_inst.
17633         * class.c, metadata.c, reflection.c: Update to changes.
17634
17635 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17636
17637         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17638         'cached_context', and change semantics -- it starts off NULL, and
17639         is initialized on demand.
17640         * class.c (mono_generic_class_get_context): New accessor to
17641         replace 'context' field accesses.
17642         (mono_class_get_context): New helper.
17643         (*): Update to changes.
17644         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17645
17646 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17647
17648         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17649         before the memcpy.   Fixes Marshal2 regression.
17650
17651 2007-01-02  Jb Evain  <jbevain@gmail.com>
17652
17653         * blob.h: add a MONO_TYPE_ENUM definition
17654         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17655         fix the encoding of arrays of enums in custom attributes.
17656
17657         Fixes #79666.
17658
17659 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17660
17661         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17662         string is null terminated, but only cut the string short if it
17663         overflows the buffer.   
17664         
17665         (mono_string_to_byvalstr): Also fix this routine.   The code here
17666         was not properly terminating a string (it was only terminated
17667         because of the previous catch-all memset). 
17668
17669         I left the memset, because I do not know if applications expect
17670         the runtime to clear this region. 
17671
17672         Fixes #79944.
17673
17674         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17675         Clear the error before returning to unmanaged code to prevent the
17676         runtime from being confused later on (fixes  80420).
17677         (ves_icall_type_from_name): Always call mono_loader_clear_error
17678         after parsing a type that could have failed.
17679         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17680
17681         * loader.c (mono_loader_clear_error): Fix indentation.
17682
17683 2006-12-28  Martin Baulig  <martin@ximian.com>
17684
17685         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17686
17687 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17688
17689         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17690         getting a token for an EnumBuilder.
17691
17692 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17693
17694         * reflection.c: be more careful in case resource generation
17695         fails to create the data array.
17696
17697 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17698
17699         * sgen-gc.c: write barrier for clone and fix unregister handles.
17700
17701 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17702
17703         * reflection.c: some fixes needed in the generics code for the moving GC.
17704
17705 2006-12-22  Robert Jordan  <robertj@gmx.net>
17706
17707         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17708         account. Fixes bug #80299.
17709
17710 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17711
17712         Fix WaitHandle usage in delegates.
17713         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17714         * object.c (mono_wait_handle_new): Use the property set method to
17715         initialize the handle.
17716         (mono_wait_handle_get_handle): New.
17717         * threadpool.c (mono_async_invoke): Use it.
17718         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17719         Likewise.
17720         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17721
17722 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17723
17724         * marshal.c (emit_marshal): Call emit_marshal_variant and
17725         emit_marshal_com_interface when applicable.
17726         (emit_marshal_variant, emit_marshal_com_interface): Add
17727         methods for this case and remove if's from emit_marshal_object.
17728         
17729 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17730
17731         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17732
17733 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17734
17735         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17736         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17737         and GlobalFree on Windows. Remove FIXME.
17738
17739 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17740
17741         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17742         implementation for managed objects.
17743
17744 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17745
17746         * object.c: implemented code to be used for checking
17747         that no reference field overlaps with non-references.
17748
17749 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17750
17751         * threadpool.c: fix queue code to be compatible with the
17752         moving GC.
17753
17754 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17755
17756         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17757         in structures by throwing ArgumentNullException.
17758
17759         (emit_marshal_safehandle): Also when they are null parameters.
17760
17761         (emit_marshal_safehandle): Add support for ref
17762         SafeHandles parameters
17763
17764 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17765
17766         * profiler.c: updated to use the mono-dl API instead of
17767         gmodule.
17768
17769 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17770
17771         * profiler.c: updated to use the mono-dl dynamic loading
17772         API instead of gmodule.
17773
17774 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17775
17776         * profiler.c: use readlink, older versions of glib don't have
17777         g_file_read_link ().
17778
17779 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17780
17781         * profiler.c: try to detect the path to mono if libc fails to provide
17782         a useful name (bug #80286).
17783
17784 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17785
17786         Fix #80242
17787         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17788         instance, use the generic type definition instead.
17789         (ves_icall_Type_GetNestedTypes): Likewise.
17790         * class.c (mono_class_create_generic): Always set the
17791         nested_classes of a generic instance to NULL, even if the generic
17792         type definition has nested types.
17793
17794 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17795
17796         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17797         and fix on Linux.
17798         
17799 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17800
17801         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17802         my arguments were in the wrong order.   I also fixed the Windows
17803         version which seems to have had the same issue.
17804
17805         (mono_free_bstr): On Unix, this is g_free.
17806         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17807         conversions (for the tests in corlib to pass).
17808
17809 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17810
17811         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17812         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17813         exception if a ref SafeHandle in a struct has changed).
17814         
17815         (emit_struct_conv): Do not perform layout checks for classes
17816         derived from SafeHandle, as those are specially handled. 
17817
17818         (emit_object_to_ptr_conv): Add support for
17819         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17820
17821         (emit_marshal_safehandle): Implement conversion of return values
17822         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17823         
17824         * threads.c: WaitHandle now is compiled with two different handles
17825         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17826         for 2.0.
17827         
17828         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17829         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17830         these routines to cope with both kinds of fields.
17831
17832 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17833
17834         * metadata.c (mono_type_to_unmanaged): Handle the case where
17835         type->data.klass is a SafeHandle, and in that case, return the
17836         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17837         MONO_MARSHAL_CONV_SAFEHANDLE. 
17838
17839 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17840
17841         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17842         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17843         calling emit_marshal_object.
17844
17845         (emit_marshal_safehandle): Implement marshalling of
17846         SafeHandle parameters (no ref support yet).
17847
17848         (MarshalAction): Document the defines as I implement
17849         them for SafeHandle.
17850
17851         (emit_marshal_object): indentation police.
17852
17853         * class-internals.h: Define MonoSafeHandle.
17854         Add safehandle_class to MonoDefaults type.
17855
17856         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17857         list of classes to check for fields. 
17858
17859         * domain.c (mono_init_internal): Add SafeHandle to the list of
17860         mono_defaults loaded.
17861
17862 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17863
17864         Fix #80253
17865         * reflection.c (mono_reflection_bind_generic_parameters): If the
17866         generic type definition is a type builder, ensure that it is fully
17867         initialized before instantiating it.  Kill some dead code.
17868
17869 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17870
17871         * object.c: clear the loader_error () before loading
17872         more metadata stuff (bug #80258).
17873
17874 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17875
17876         * icall.c, icall-defs.h: type modifiers icalls for
17877         parameters and properties.
17878
17879 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17880
17881         * object.c, icall.c: fixed warnings.
17882
17883 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17884
17885         * marshal.c: fixed a couple of leaks and coding style in a few places.
17886
17887 2006-12-08  Dick Porter  <dick@ximian.com>
17888
17889         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17890         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17891         80173.
17892
17893 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * process.c: ProcessStartInfo may have only filename set and
17896         arguments can be NULL.
17897
17898 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17899
17900         * icall.c: fix leak found by Robert Jordan.
17901
17902 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17903
17904         * marshal.c, marshal.h: generate managed method to access an element
17905         of a multi-dimensional array.
17906
17907 2006-11-30  Paolo Molaro (lupus@ximian.com)
17908
17909         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17910
17911 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17912
17913         * icall.c: back out GetFields () fix until the serialization code is
17914         fixed to not depend on the incorrect behaviour.
17915
17916 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17917
17918         * profiler.c: provide defaults if none are set.
17919
17920 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17921
17922         * Makefile.am, attrdefs.h: new public header file with
17923         constants for attributes for use by embedders.
17924
17925 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17926
17927         * icall.c: GetFields () fix for bug #80064.
17928
17929 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
17930
17931         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
17932         removed long unused icalls.
17933
17934 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
17935   
17936         * marshal.c: 
17937                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
17938                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
17939                 can be generated without a delegate class.
17940                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
17941         
17942         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17943
17944 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17945
17946         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
17947         #80069.
17948
17949 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
17950
17951         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
17952         icall-def.h: added icalls needed by System.GC.
17953
17954 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
17955
17956         * loader.c: ensure the class in catch clauses is handled
17957         correctly for generics methods (fixes bug#79980).
17958
17959 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
17960
17961         * monitor.h, monitor.c: added mono_locks_dump () function
17962         to help debug deadlocks involving managed locks.
17963
17964 2006-11-13  Dick Porter  <dick@ximian.com>
17965
17966         * file-io.c (get_file_attributes): If the file is a symlink try
17967         and get the stat data for the target, but also add the
17968         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
17969         the specs for the windows symlink support, but will probably have
17970         to be reworked when I have test data from a vista machine.  Fixes
17971         bug 79887.
17972
17973 2006-11-13  Dick Porter  <dick@ximian.com>
17974
17975         * gc.c (mono_domain_finalize): 
17976         * marshal.c (mono_delegate_begin_invoke): 
17977         * threadpool.c (socket_io_init, mono_thread_pool_init)
17978         (mono_thread_pool_finish): 
17979         * monitor.c (mono_monitor_try_enter_internal): 
17980         * threads.c (mono_thread_resume, mono_thread_init)
17981         (mono_thread_suspend_all_other_threads)
17982         (mono_thread_execute_interruption): 
17983         * appdomain.c (mono_domain_unload): Check for NULL error returns
17984         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
17985         75733.
17986
17987 2006-11-11  Miguel de Icaza  <miguel@novell.com>
17988
17989         * process.c
17990         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
17991         Only close the handle if the value of the handle is not
17992         INVALID_HANDLE_VALUE.  This just makes the process a bit more
17993         robust.
17994
17995         Improvement for #75733, so that we do not run into this problem. 
17996
17997         
17998         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
17999         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18000         internal variables.  Fixes #79462 
18001         
18002
18003 2006-11-09  Dick Porter  <dick@ximian.com>
18004
18005         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18006         Use poll() not select().  Fixes bug 79397.
18007
18008 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18009
18010         Fix #79872
18011         * assembly.c (mono_assembly_load_from_full): Check that the given
18012         image has an assembly manifest.
18013
18014 2006-11-09  Ankit Jain  <jankit@novell.com>
18015
18016         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18017         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18018         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18019
18020 2006-11-07  Dick Porter  <dick@ximian.com>
18021
18022         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18023         Put the old resolver behaviour back for pre-2.0 profiles.
18024
18025 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18026
18027         * threadpool.c: precise GC and locking fixes.
18028
18029 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * class.c: don't load types that have an explicit unaligned
18032         managed reference. Provide better info in the TypeLoad exception.
18033         Part of the fix for bug #79744.
18034         * object.c: use the correct check for class type load issues.
18035
18036 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18037
18038         * class.c: enforce alignment of fields with managed references
18039         even when Pack=1 is forced by the user (bug #77788).
18040
18041 2006-11-03  Dick Porter  <dick@ximian.com>
18042
18043         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18044         If the address reverse lookup fails, return it as the hostname
18045         anyway.  Fixes bug 79721.
18046
18047 2006-11-03  Dick Porter  <dick@ximian.com>
18048
18049         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18050         Fix build on Windows.
18051
18052 2006-11-02  Dick Porter  <dick@ximian.com>
18053
18054         * icall-def.h: 
18055         * object-internals.h: 
18056         * exception.c (mono_get_exception_thread_interrupted): 
18057         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18058         Fixes bug 74525.
18059
18060         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18061         Check for pending Thread.Interrupt.
18062
18063 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18064         * loader.c: Fixed bug 79684.
18065
18066 2006-10-27  Dick Porter  <dick@ximian.com>
18067
18068         * file-io.c (get_file_attributes): Force symlinks to directories
18069         to be returned as a regular file.  Fixes bug 79733.
18070 2006-10-26  Dick Porter  <dick@ximian.com>
18071
18072         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18073         CreateFile to open a directory then we need to set the
18074         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18075
18076 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18077
18078         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18079         friends.
18080
18081 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18082
18083         * sgengc.c: small cleanup of timer code.
18084
18085 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18086
18087         * sgen-gc.c: fix some warnings and start adding support for
18088         complete object removal on domain unload.
18089
18090 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18091
18092         * assembly.c: build_assembly_name should not consider a version
18093         number without build or revision number invalid. Fixes bug #79715.
18094
18095 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18096
18097         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18098         call kernel32 function OutputDebugString directly.
18099         
18100         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18101         
18102 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18103
18104         * reflection.c: small cleanup, using a function to insert a MonoString
18105         in the string heap.
18106
18107 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18108
18109         * reflection.c: moving GC fixes.
18110
18111 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18112
18113         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18114         all the objects with finalizers belonging to an unloading appdomain.
18115
18116 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18117
18118         * sgen-gc.c: added ability to allocate even when the nursery is fully
18119         pinned and fixed a couple of bugs.
18120
18121 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18122
18123         * threads.h: Revert the last change for now.
18124
18125         * threads.h (mono_thread_get_pending_exception): Rename this to
18126         mono_thread_get_undeniable_exception ().
18127
18128 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18129
18130         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18131         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18132         when fname does not refer to valid assembly. This result in a more
18133         meaningful error message.
18134         * exception.c: added mono_get_exception_bad_image_format2 which 
18135         constructs a BadImageFormatException using the ctor taking a custom
18136         message and the file name. Passing in a NULL msg results in a default
18137         message.
18138         * exception.h: define mono_get_exception_bad_image_format2 function.
18139         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18140         when file name pointed to an invalid IL image. Use 
18141         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18142         as this results in a more meaningful error message.
18143
18144 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18145
18146         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18147         #79465.
18148
18149 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18150
18151         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18152         consistency with the other _size functions.
18153         (mono_type_stack_size): Ditto.
18154
18155         * class.c object.c icall.c: Fix warnings caused by the above change.
18156
18157         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18158
18159         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18160
18161         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18162
18163 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18164
18165         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18166         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18167         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18168         threadpool.h, threads-types.h: mark more internal functions.
18169
18170 2006-10-11  Dick Porter  <dick@ximian.com>
18171
18172         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18173         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18174         reproduce the bug even before applying the fix.)
18175
18176 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18177
18178         * reflection.c: allow retrieving attributes for arguments in generic
18179         methods (bug #79241).
18180
18181 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18182
18183         * debug-mono-symfile.c: properly check fopen () result (found by
18184         coverity).
18185
18186 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18187
18188         * reflection.c: make error message clearer and fixed two
18189         issuelets found by Coverity.
18190
18191 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18192
18193         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18194
18195 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18196
18197         * object-internals.h, gc-internal.h, profiler-private.h:
18198         mark internal functions.
18199
18200 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18201
18202         * reflection.c: put data in the text section.
18203         * icall.c: recognize more types in type_from_typename ().
18204         * process.c, marshal.c: added some GC FIXMEs.
18205
18206 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18207
18208         * loader.c: check for NULL before initializing.
18209
18210 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18211
18212         * gc.c (finalizer_thread): Use a non-alertable wait here.
18213
18214         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18215         until the correct solution is found.
18216
18217 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18218
18219         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18220         modules with no metadata. Fixes #79596.
18221
18222         * image.c (load_metadata_ptrs): Put back the error message when
18223         the #- heap is encountered since the support is not complete yet.
18224
18225 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18226
18227         * gc.c: do not allow the user to SuppressFinalize () a
18228         delegate because it would leak the trampoline if present.
18229
18230 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18231
18232         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18233         PropertyPtr table.
18234
18235 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18236
18237         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18238
18239         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18240
18241         * row-indexes.h: Add definitions for *Ptr tables.
18242
18243         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18244
18245         * metadata.c (mono_metadata_translate_token_index): New helper function to
18246         translate table indexes used in uncompressed metadata.
18247         (mono_metadata_decode_table_row): Ditto.
18248         (mono_metadata_decode_table_row_col): Ditto.
18249
18250         * metadata.c: Add table schema for *Ptr tables.
18251
18252         * class.c loader.c: Use the new helper function to access the affected metadata
18253         tables.
18254         
18255         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18256         #38532.
18257         
18258 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18259
18260         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18261         sequences which can be unbounded in size. Fixes #79583.
18262
18263 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18264
18265         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18266         static initialization.
18267
18268         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18269
18270         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18271
18272         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18273
18274         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18275         ctor fails, i.e. throw the same exception on subsequent accesses.
18276         
18277 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18278
18279         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18280         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18281         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18282         Handle marshalling of interfaces and VARIANTs contained in structs.
18283         
18284         Code is contributed under MIT/X11 license.
18285         
18286 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18287
18288         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18289         
18290         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18291         mempool.
18292
18293 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18294
18295         * console-io.c: ignore previous SIGINT handler.
18296
18297 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18298
18299         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18300         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18301         #79460, #79461, #79485.
18302
18303         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18304
18305         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18306         #79217.
18307
18308 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18309
18310         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18311         could be generated from it.
18312
18313 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18314
18315         * rand.c: fix read loop to correctly handle EINTR.
18316
18317 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18318
18319         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18320         internal calls are defined to keep methods closer to the declaring
18321         type and allow a significant reduction in runtime relocations and
18322         memory usage.
18323
18324 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18325
18326         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18327         exception message to have FileNotFoundException use the default
18328         assembly load error message. Fixes bug #79426.
18329         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18330
18331 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18332
18333         * threadpool.c: (start_thread_or_queue) use the root domain when
18334         creating the thread instead of the async object one.
18335
18336 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18337
18338         * class.c, object.c, class-internals.h, reflection.c:
18339         for arrays, store element_size inside MonoClass (speedup
18340         for array object creation).
18341
18342 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18343
18344         * icall.c: fixed CodeBase to use the file name and not the module
18345         name (bug #79365).
18346
18347 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18348
18349         * mono-debug.c, mono-debug.h: export find_method as
18350         mono_debug_find_method ().
18351
18352 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18353
18354         * debug-helpers.c, class-internals.h: added a few functions useful
18355         when debugging under gdb.
18356
18357 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18358
18359         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18360         characters that need special handling.
18361
18362 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18363
18364         * mono-config.c: make the os/cpu specification more flexible,
18365         allowing lists and negation.
18366
18367 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18368
18369         * marshal.c: COM Interop fixes. Handle case where method->klass.
18370         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18371         calling convention on non-windows platforms. This is for
18372         compatibility with XPCOM and MainWin COM.
18373         
18374         Code is contributed under MIT/X11 license.
18375         
18376
18377 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18378
18379         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18380         correctly. Fixes #79217.
18381
18382         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18383
18384 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18385
18386         * mono-config.c: allow both an os and cpu attribute for dllmap
18387         and dllentry elemnets to enable a single config file to be used
18388         for multiple architectures.
18389
18390 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18391
18392         * loader.c: MonoLoaderError was cleared too soon on load failure.
18393         Fixes bug #79424.
18394
18395 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18396
18397         * icall.c: use the defining class vtable when accessing a
18398         static field, not a pobblibly derived class.
18399
18400 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18401
18402         * icall.c string-icalls.c: Remove references to unicode.h.
18403
18404         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18405
18406         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18407
18408         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18409         indicating the image where custom marshaller types should be looked up.
18410         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18411         custom marshallers, instead of corlib. Fixes #79425.
18412
18413 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18414
18415         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18416
18417 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18418
18419         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18420         Implement Environment.ProcessorCount.
18421         
18422         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18423         Implement Environment.ProcessorCount.
18424         
18425         * icall.c: 
18426         Add Environment.ProcessorCount icall.
18427         
18428         Patch by Jason McFall.
18429
18430 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18431
18432         * assembly.c: don't append .exe/.dll when the filename already contains
18433         one of those extensions.
18434
18435 2006-09-12  Martin Baulig  <martin@ximian.com>
18436
18437         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18438         to array interfaces.
18439
18440 2006-09-11  Martin Baulig  <martin@ximian.com>
18441
18442         * reflection.c (mono_image_build_metadata): Create the
18443         MethodImpl's after emitting all types and methods, so we don't
18444         need another fixup pass for them.
18445
18446 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18447
18448         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18449         change.
18450
18451 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18452
18453         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18454         unload.
18455
18456 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18459         args is not set. Fixes #78926.
18460
18461 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18462
18463         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18464
18465         * image.c (load_class_names): Move this to class.c, and rename it to 
18466         'mono_image_init_name_cache'.
18467         (load_modules): Fix a warning.
18468
18469         * class.c icall.c image.c: Initialize image->name_cache lazily.
18470
18471         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18472         on its name using information in the AOT file.
18473
18474         * class.c (mono_class_from_name): Use the new hook function.
18475
18476 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18477
18478         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18479         correctly.
18480
18481         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18482         Fixes #79289.
18483         
18484 2006-09-06  Martin Baulig  <martin@ximian.com>
18485
18486         * icall.c (mono_lookup_internal_call): Small fix.
18487
18488 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18489
18490         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18491         double g_free.
18492
18493 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18494
18495         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18496         when --debug is specified.
18497
18498 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18499
18500         * class.c (setup_generic_array_ifaces): Fix a warning.
18501
18502 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18503
18504         * Temporarily remove the patch to assemly.c that checks the
18505         assembly versions as it breaks our gacutil.
18506
18507 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18508
18509         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18510
18511         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18512         a net 1.0 runtime.
18513
18514         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18515         created using the default ctor. Fixes #79152.
18516         (mono_string_builder_to_utf16): Ditto.
18517
18518 2006-09-01  Martin Baulig  <martin@ximian.com>
18519
18520         Fix handling of the generic array interfaces.
18521
18522         * class-internals.h
18523         (MonoDefaults): Removed `generic_array_class' and added
18524         `generic_ilist' class.
18525
18526         * class.c
18527         (mono_bounded_array_class_get): Add the new generic array interfaces.
18528         (setup_generic_array_ifaces): New static method; create vtable
18529         entries for each method in the generic array interfaces.
18530
18531         * metadata.c
18532         (select_container): Allow "parent-less" generic methods.
18533
18534         * marshal.c
18535         (mono_marshal_get_generic_array_helper): New public method.
18536
18537         * icall.c
18538         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18539         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18540         moved the interncall into System.Array.
18541
18542 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18543
18544         A few more cases of avoiding work on types with ->byref set.
18545         Has the real fix for #79238
18546         * icall.c (is_generic_parameter): New helper.
18547         (ves_icall_Type_GetGenericParameterPosition): Use it.
18548         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18549         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18550         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18551         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18552         reference types.
18553         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18554         reference types.
18555         (ves_icall_Type_get_IsGenericInstance): Likewise.
18556         (ves_icall_Type_get_IsGenericType): Likewise.
18557
18558 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18559
18560         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18561         class if possible.
18562
18563         * mempool.h (mono_mempool_get_allocated): New helper function.
18564
18565         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18566         change.
18567
18568         * mempool.c: Fix warnings and the calculation of stats.
18569
18570         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18571
18572         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18573
18574         * loader.c (mono_get_method_from_token): Update method_count stat.
18575
18576         * class-internals.h (MonoStats): Add some stats.
18577
18578 2006-08-31 Robert Jordan  <robertj@gmx.net>
18579
18580         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18581         with managed variants.
18582         All code is contributed under the MIT/X11 license.
18583         
18584 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18585
18586         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18587         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18588
18589         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18590
18591         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18592         with cycles in classes.
18593
18594         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18595
18596         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18597         missing a [MarshalAs] directive. Fixes #79203.
18598
18599         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18600         klass->marshal_info. Fixes #79217.
18601
18602 2006-08-30  Martin Baulig  <martin@ximian.com>
18603
18604         Committing a patch from Joachim Ante <joe@otee.dk>:
18605         Add support for binary data symbol stores.
18606
18607         * debug-mono-symfile.c
18608         (mono_debug_open_mono_symbol_file): Renamed into
18609         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18610         arguments.
18611
18612         * mono-debug.c
18613         (mono_debug_open_image): Added `raw_contents' and `size' args.
18614         (mono_debug_init_2_memory): New public function.
18615
18616 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18617
18618         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18619
18620 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18621
18622         * appdomain.c: implement support for ShadowCopyFiles.
18623
18624 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18625
18626         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18627         when value is NULL (and should remove CID #51).
18628
18629 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18630
18631         * image.c: moved 2 functions to ../utils.
18632
18633 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18634
18635         * gc.c: cope with the target object of a GC handle being NULL
18636         (bug #78877).
18637
18638 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18639
18640         * class.c: recursively check parent's explicit implementations
18641         of interface methods (fixes bug #79125).
18642
18643 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18644
18645         * filewatcher.c: Avoid warnings when building, do not redefine
18646         constants that are defined.
18647
18648         Remove warnings.
18649
18650 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18651
18652         * image.c: don't fail when the link points to an absolute path.
18653
18654 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18655
18656         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18657         Fix CID #3.
18658
18659 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18660
18661         * image.c (full_path): A new method used to obtain the actual path
18662         of an assembly even in the presence of symbolic links.  
18663
18664         This is necessary for the case where we are running a binary that
18665         has been GACed, but we are using the "published" path name
18666         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18667         file in the GAC.
18668
18669         This was the source of the failure for the `xsp' command with the
18670         recent AppDomain changes, as far as the runtime was concerned,
18671         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18672         $prefix/mono/gac/blah/version/blah.exe.
18673
18674         (do_mono_image_open): use full path
18675
18676 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18677
18678         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18679
18680 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18681
18682         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18683         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18684
18685 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18686
18687         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18688         small structures. Fixes #78990.
18689
18690 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18691
18692         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18693
18694         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18695
18696 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18697
18698         * appdomain.c:
18699         * marshal.c: don't load all the assemblies from a domain into newly
18700         created ones. The new domains might have different rules and load
18701         assemblies from different locations. Fixes bug #76757.
18702
18703         Patch by Lluis. Conflicts resolved by Brian Crowell.
18704
18705 2006-08-16  Alp Toker  <alp@atoker.com>
18706
18707         * socket-io.c: First half of the fix for #79084.
18708         Set sa_size to the length of the content, not that of the struct.
18709         Don't add NULL suffix to the content, this should be done in
18710         managed code if needed.
18711
18712 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18713
18714         Fix part of #79012
18715         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18716         mono_metadata_parse_type returns NULL.
18717
18718 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18719
18720         * normalization-tables.h : new file for string normalization data.
18721         * locales.c, locales.h, icall.c :
18722           added load_normalization_resource() for string normalization,
18723           and icall as well.
18724         * Makefile.am : added normalization-tables.h to the sources.
18725
18726 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18727
18728         * marshal.c: Add more helper functions to reduce code duplication and use them
18729         everywhere.
18730
18731 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18732
18733         * marshal.c: Fix non-x86 stdcall warnings.
18734         
18735         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18736         them everywhere.
18737
18738 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18739
18740         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18741         type check on multi-dimensional arrays. Fixes #79000.
18742
18743 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18744
18745         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18746         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18747         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18748         * class-internals.h: add is_com_object to class structure.
18749         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18750         null checks to COM object marshalling. Fix .ctor call on RCW.
18751         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18752         
18753         All code is contributed under the MIT/X11 license.
18754
18755 2006-08-09  Dick Porter  <dick@ximian.com>
18756
18757         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18758         racing mono_monitor_allocator_lock() somewhere, so don't delete
18759         the critical section for now.  Found by running and exiting
18760         monodevelop.
18761
18762 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18763
18764         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18765         (ves_icall_System_ComObject_FindInterface): Ditto.
18766         (ves_icall_System_ComObject_CacheInterface): Ditto.
18767
18768         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18769         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18770
18771 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18772
18773         * threadpool.c: treat pipes from process asynchronous reads as sockets
18774         when reading from them, so we get select/poll or epoll to wait for
18775         data.
18776
18777 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18778
18779         * loader.c: Fix a typo (CID #233) in the null check.
18780
18781 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18782
18783         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18784         Hopefully fixes #78949.
18785         
18786         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18787         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18788         bytes. Fixes #78972.
18789
18790 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18791
18792         * filewatcher.c: we need to set errno here.
18793
18794 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18795
18796         * filewatcher.c: let Win32Exception get the error value.
18797
18798 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18799
18800         * filewatcher.c: translate errno into win32 errors for Win32Exception
18801         to know what happened.
18802
18803 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18804
18805         * threadpool.c: Fix more warnings.
18806
18807         * assembly.c (search_loaded): Fix warnings.
18808
18809         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18810         (mono_async_invoke): Ditto.
18811
18812 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18813
18814         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18815         entries for __ComObject type in addition to ComImport types.
18816         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18817         about hash table.
18818         
18819         All code is contributed under the MIT/X11 license.
18820
18821 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18822
18823         * image.c: avoid tentative loading of modulerefs that contain
18824         no metadata (P/Invoke library names).
18825
18826 2006-07-28  Dick Porter  <dick@ximian.com>
18827
18828         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18829         mono_loader_lock() somewhere, so don't delete the critical section
18830         for now.  Found by running and exiting monodevelop.
18831
18832 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18833
18834         * filewatcher.c: define the inotify syscalls when we're building on
18835         linux and have sys/syscall.h. The build system might not have support
18836         for inotify but the target system might have it.
18837
18838 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18839
18840         * domain.c: Documentation updates.
18841
18842         * loader.c (mono_free_method): Do not release the method
18843         information if we are being profiled, as profilers will use this
18844         information at shut down to present some data to the user.
18845
18846         This is needed so that the profiler does not crash, as the
18847         profiler tends to keep MonoMethods around, and they might become
18848         invalid if we free these.
18849
18850         (mono_get_method_constrained): Return the original CIL stream
18851         method as well, so verification can be performed against it.
18852
18853 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18854
18855         * filewatcher.[ch]: support for inotify file system watcher.
18856         * icall.c: add new internal calls for the inotify file system watcher.
18857
18858 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18859
18860         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18861         #78888.
18862
18863 2006-07-20  Dick Porter  <dick@ximian.com>
18864
18865         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18866         warning.
18867
18868 2006-07-20  Dick Porter  <dick@ximian.com>
18869
18870         * threads.c (start_wrapper): Do the thread cleanup while we still
18871         hold a reference to its object.  Fixes bug 78123.
18872
18873 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18874
18875         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18876         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18877           "managed-to-managed".
18878         * icall.c: Redirect string constructors that take sbyte* to
18879           ves_icall_System_String_ctor_RedirectToCreateString.
18880         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18881           to CreateString () methods with matching signature.
18882         * reflection.c: Use original security informations for
18883           MONO_WRAPPER_MANAGED_TO_MANAGED.
18884         * security-manager.c: Use original security informations for
18885           MONO_WRAPPER_MANAGED_TO_MANAGED.
18886         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18887           that is a placeholder and only its address should be used.
18888         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18889           that is a placeholder and only its address should be used.
18890
18891 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18892
18893         Begin implementing COM Interop.
18894         * appdomain.c: Increment corlib version.
18895         * class.c: Set ComImport classes' parent to __ComObject.
18896         * loader.c: Mark cominterop methods as such.
18897         * domain.c: Add __ComObject class to MonoDefaults structure.
18898         * image.c: Add 2 hashtables to the image for COM Interop related methods
18899         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18900         using the mempool allocator
18901         
18902         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18903         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18904         declaration for mono_metadata_type_dup_mp.
18905         
18906         * debug-helpers.c: Added strings for two additional wrapper types
18907         * object.c: Create proxy objects for ComImport classes
18908         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18909         and added __ComObject class to MonoDefaults structure.
18910         
18911         * object-internals.h: Finish MonoRealProxy definition, and add definition of
18912         MonoComInteropProxy and MonoComObject.
18913         
18914         * marshal.c: Added support for COM Interop
18915         (signature_cominterop): Converts managed signature to corresponding
18916         unmanaged COM signature.
18917         (cominterop_get_function_pointer): gets unmanaged function pointer via
18918         COM object vtable
18919         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
18920         (cominterop_get_method_interface): returns interface type that method is defined on
18921         (mono_mb_emit_cominterop_call): emits native call to function pointer
18922         gotten from vtable
18923         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
18924         that matches signature of unmanaged function.
18925         (cominterop_get_native_wrapper): wrapper around adjusted method call.
18926         (cominterop_get_invoke): forwards call from proxy to __ComObject
18927         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
18928         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
18929         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
18930         
18931         * marshal.h: Added Marshal icall declarations.
18932         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
18933         so we can access them in finalizer
18934         
18935 2006-07-14  Dick Porter  <dick@ximian.com>
18936
18937         * object.c (mono_type_initialization_cleanup): Fix a race
18938         condition by temporarily commenting out the critical section
18939         deletion.
18940
18941 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
18942
18943         * reflection.c (create_custom_attr): Fix some warnings.
18944         (create_custom_attr_data): Ditto.
18945         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
18946         types. Fixes #78855.
18947
18948 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
18949
18950         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
18951
18952         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
18953
18954 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
18955
18956         * reflection.c (resolve_object): Add support for DynamicMethod.
18957
18958         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
18959         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
18960
18961 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
18962
18963         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
18964         don't leak GPtrArray's pdata has we have no use (nor free) for it.
18965
18966 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
18967
18968         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
18969         Fixes #77888.
18970
18971 2006-06-30  Raja R Harinath  <rharinath@novell.com>
18972
18973         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
18974         slightly: remove a shadow local variable.
18975
18976 2006-06-29  Raja R Harinath  <rharinath@novell.com>
18977
18978         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
18979         definition that introduces the virtual function slot.
18980         Also fix Coverity #105.
18981
18982 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
18983
18984         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
18985         for dynamic assemblies. Fixes #78724.
18986
18987 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
18988
18989         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
18990         Fixes #78722.
18991
18992 2006-06-21  Martin Baulig  <martin@ximian.com>
18993
18994         * reflection.c
18995         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
18996         fixes #76484.
18997
18998 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
18999
19000         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19001
19002 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19003
19004         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19005         nor TYPEREFs.
19006         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19007         Inflate result if necessary.
19008         (mono_class_get_full): Remove old version.  Rename from
19009         'mono_class_get' and add 'context' argument.  Pass it to
19010         ..._create_from_typespec.
19011         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19012         (mono_ldtoken): Revert change below.
19013
19014 2006-06-20  Martin Baulig  <martin@ximian.com>
19015
19016         * class.c (mono_ldtoken): Don't pass the generic context to
19017         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19018
19019 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19020
19021         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19022         and later freeing it. Fixes #78638.
19023
19024 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19025
19026         * icall.c (mono_class_get_throw): Revert over-zealous error
19027         throwing, the caller for mono_class_get_throw will cope with
19028         errors when classes are not properly initialized already.
19029
19030         The code still copes with loader exceptions though.
19031
19032         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19033         
19034 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19035
19036         Fixes the `make run1' version of RuntimeAbort (to be commited,
19037         source is in Bugzilla).
19038         
19039         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19040         FALSE on class loading failure instead of returning true.
19041
19042         * class.c (mono_class_create_from_typedef): It is possible for
19043         mono_metadata_interfaces_from_typedef_full to fail if a class is
19044         not found, cope with this.
19045         
19046
19047 2006-06-14  Dick Porter  <dick@ximian.com>
19048
19049         * socket-io.c: 
19050         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19051         4.1.1
19052
19053 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19054
19055         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19056
19057 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19058
19059         * icall.c: Another fix for building mono in Visual Studio.
19060
19061 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19062
19063         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19064         
19065 2006-06-09  Martin Baulig  <martin@ximian.com>
19066
19067         * debug-mono-symfile.c: Put this back and really fix it this
19068         time. Sorry for all the trouble.
19069
19070 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19071
19072         * icall.c (mono_class_get_throw): Fix a warning.
19073         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19074         ReflectionTypeLoadException if needed. Fixes #78606.
19075
19076         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19077         (mono_class_init): Ditto.
19078
19079         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19080         ref_only exceptions.
19081         (mono_loader_clear_error): Make this work even if there is no error.
19082
19083 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19084
19085         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19086         Marshal.GetComSlotForMethodInfo using internal call.
19087
19088 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19089
19090         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19091         a function for signalling it.
19092
19093         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19094         a referenced assembly is not found.
19095
19096         * loader.c (mono_loader_error_prepare_exception): Add support for 
19097         LOADER_ERROR_ASSEMBLY. Fix formatting.
19098
19099 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19100
19101         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19102         for VARIANT marshalling on windows and increment corlib version
19103         since Variant struct was added.
19104
19105 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19106
19107         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19108         stack trace line information:
19109
19110         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19111         (Martin) when looking up B which is between A and C, return A not C.
19112
19113         Bug is #78573.
19114
19115         Thanks to Alexander Olk for tracking this down.
19116
19117 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19118
19119         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19120         
19121         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19122         avoid clobbering its value.
19123         (mono_string_to_lpstr): Fix a warning on windows.
19124
19125 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19126
19127         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19128
19129         * reflection.c loader.c: Removed references to 'dummy' flag.
19130
19131         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19132
19133         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19134         it gets GC tracking.
19135
19136         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19137         GC tracking.
19138         
19139         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19140
19141         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19142
19143         * appdomain.c: Bump corlib version.
19144
19145 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19146
19147         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19148         CEE_STIND_REF when working with object references.
19149
19150 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19151
19152         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19153         Fixes #78539.
19154
19155 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19156
19157         * loader.c (method_from_memberref): Fix argument value for
19158         mono_loader_set_error_method_load (I was passing the MonoClass
19159         instead of the class name char *).
19160
19161 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19162
19163         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19164         CEE_STIND_REF when working with object references.
19165
19166 2006-05-30  Martin Baulig  <martin@ximian.com>
19167
19168         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19169         mono_method_full_name() change and replace the ':' with a '.'
19170         here.
19171
19172 2006-05-30  Martin Baulig  <martin@ximian.com>
19173
19174         * debug-mono-symfile.c
19175         (mono_debug_symfile_lookup_location): Fix the algorithm:
19176         when looking up B which is between A and C, return A not C.
19177
19178 2006-05-29  Martin Baulig  <martin@ximian.com>
19179
19180         * mono-debug.h
19181         (MonoDebugMethodInfo): Make the typedef public.
19182         (MonoDebugSourceLocation): New public struct.
19183
19184         * mono-debug.c
19185         (mono_debug_source_location_from_address): Removed.
19186         (mono_debug_source_location_from_il_offset): Removed.
19187         (mono_debug_il_offset_from_address): Removed.
19188         (mono_debug_address_from_il_offset): Removed.
19189         (mono_debug_lookup_method): New public function.
19190         (mono_debug_lookup_source_location): New public function; replaces
19191         the old mono_debug_source_location_from_*() functions; see the
19192         inline documentation.
19193         (mono_debug_free_source_location): New public function.
19194         (mono_debug_print_stack_frame): New public function; see the
19195         inline documentation.
19196
19197         * debug-mono-symfile.c
19198         (mono_debug_find_source_location): Renamed into
19199         mono_debug_symfile_lookup_location(); only take a
19200         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19201         documentation.
19202         (mono_debug_find_method): Renamed into
19203         mono_debug_symfile_lookup_method().
19204
19205 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19206
19207         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19208         returned by mono_image_open_full ().
19209
19210         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19211         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19212         #78517.
19213
19214         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19215         #78518.
19216
19217 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19218
19219         * class.c (mono_class_from_typeref): handle missing images
19220         earlier, deals with bug #78418.   Refactor code; 
19221
19222         Fix a warning introduced in my previous commit (some stale code
19223         from before I revisited my patch).
19224
19225         * class.c (mono_class_create_from_typedef): On failure, remove the
19226         class from the MonoImage->class_cache as the class is not
19227         initialized;   Fixes the leak pointed out by Paolo.
19228
19229 2006-05-25  Dick Porter  <dick@ximian.com>
19230
19231         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19232         DeleteCriticalSections until I figure out which one may still be
19233         sometimes locked when mono_thread_cleanup is called.
19234
19235 2006-05-24  Dick Porter  <dick@ximian.com>
19236
19237         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19238         of mono_thread_manage and back into its own function, so it can be
19239         called after the finalizer thread has finished.
19240
19241         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19242
19243 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19244
19245         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19246         Fixes #78495.
19247
19248         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19249         with non-blittable elements.
19250         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19251
19252 2006-05-24  Martin Baulig  <martin@ximian.com>
19253
19254         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19255         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19256
19257         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19258         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19259         `mono_debugger_event_handler' to NULL.
19260
19261 2006-05-24  Martin Baulig  <martin@ximian.com>
19262
19263         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19264
19265 2006-05-24  Martin Baulig  <martin@ximian.com>
19266
19267         * mono-debug-debugger.h
19268         (mono_debugger_create_notification_function): Added
19269         `MonoCodeManager *' argument.
19270
19271 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19272
19273         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19274
19275 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19276
19277         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19278         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19279         implementation.
19280
19281 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19282
19283         * icall.c: precise GC support: objects can't be stored in unmanaged
19284         memory anymore, even if they are kept alive by other references: since
19285         they can move the GC needs to be able to always find them.
19286
19287 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19288
19289         * object.c: precise GC support for static fields. Support
19290         for moving GCs: write barriers and pinned allocation for interned
19291         strings.
19292
19293 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19294
19295         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19296         structure.
19297
19298 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19299
19300         * class.c, gc.c: sgen and precise GC updates.
19301
19302 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19303
19304         * marshal.h, marshal.c: added write barrier wrapper and precise type
19305         fixes.
19306
19307 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19308
19309         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19310         support.
19311
19312 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19313
19314         * reflection.c: precise and sgen GC updates.
19315
19316 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19317
19318         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19319
19320 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19321
19322         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19323
19324 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19325
19326         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19327         MONO_TYPE_OBJECT. Fixes #78462.
19328
19329 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19330
19331         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19332         and blittable types.
19333
19334 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19335
19336         * class.c (mono_class_get_exception_for_failure): Implement parts
19337         of a TODO: if the loader error is set (instead of the class
19338         error), we return a Loader exception that can be properly thrown
19339         elsewhere.
19340
19341         This was exposed by some Winforms 2.0 code that I tried to run
19342         (Atsushi pointed me to it).
19343
19344 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19345
19346         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19347         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19348         
19349         * marshal.c (emit_marshal_vtype): Add limited support for 
19350         UnmanagedType.LPStruct. Fixes #78427.
19351
19352         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19353         Applied a patch from kangaroo to fix #77523.
19354
19355 2006-05-17  Martin Baulig  <martin@ximian.com>
19356
19357         * threads.c
19358         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19359         (debugger_thread_created): Removed.
19360         (debugger_thread_exited): Removed.
19361
19362 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19363
19364         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19365
19366         * object-internals.h (MonoReflectionResource): Sync with managed version.
19367
19368 2006-05-12  Wade Berrier <wberrier@novell.com>
19369
19370         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19371
19372 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19373
19374         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19375         functions try to allocate from the image mempool.
19376
19377 2006-05-12  Dick Porter  <dick@ximian.com>
19378
19379         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19380
19381 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19382
19383         * object.c: The FieldGetter and FieldSetter methods require the full
19384         name of the class, not only the name. Fixes bug #78277.
19385
19386 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19387
19388         * loader.c (method_from_memberref): Do not pass the NULL klass to
19389         mono_loader_set_error_() methods.  Pass the non-NULL value
19390         (class). 
19391
19392 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19393
19394         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19395         (mono_assembly_close): Null out assembly->image->references after freeing it.
19396
19397         * image.c (mono_image_close): Free image->references.
19398         
19399         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19400
19401 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19402
19403         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19404         before checking if it's NULL (g_assert).
19405
19406 2006-05-10  Martin Baulig  <martin@ximian.com>
19407
19408         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19409         I thought I already killed that two months ago, but now it somehow reappeared.
19410
19411 2006-05-10  Martin Baulig  <martin@ximian.com>
19412
19413         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19414
19415 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19416
19417         * reflection.c: Allocate memory for dynamically created methods in the image
19418         mempools.
19419
19420 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19421
19422         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19423         don't use the ad pointer before checking if it's NULL (g_assert).
19424
19425 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19426
19427         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19428         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19429
19430         * marshal.c: Allocate all signatures from mempools.
19431
19432         * marshal.c: Allocate some more signatures from mempools.
19433
19434 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19435
19436         * object.c (mono_load_remote_field): The code used to provide a
19437         temporary variable for returning results if the user did not
19438         provide a result pointer.  But our temporary variable was allocted
19439         on the satck.
19440
19441         Fix calling code to always pass a result area.   Coverity ID 103.
19442
19443 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19444
19445         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19446         value, not the old. Fixes #78312.
19447         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19448
19449         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19450         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19451         per-image cache.
19452
19453         * assembly.c (mono_assembly_close): Free image->references.
19454
19455         * assembly.c (mono_assembly_names_equal): Fix a warning.
19456         (mono_assemblies_cleanup): Cleanup more global data.
19457
19458         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19459
19460         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19461         ptr_cache and image->modules.
19462
19463         * image.c (mono_image_init): Allocate array_cache lazily.
19464         
19465 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19466
19467         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19468         behavior was changed recently and has bad side effects.
19469
19470 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19471
19472         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19473         
19474         * assembly.c (mono_assembly_close): Remove a debug printf.
19475
19476         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19477
19478         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19479         to also allow for temporary references between mono_image_open ()/close ().
19480
19481         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19482
19483 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19484
19485         * marshal.c: Fix support for dynamic methods.
19486
19487         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19488
19489         * marshal.c (mono_marshal_cleanup): New cleanup function.
19490
19491         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19492         image mempools.
19493
19494         * class.c (mono_class_init): Fix leaking class->nested_classes.
19495
19496         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19497
19498         * image.c (mono_image_init): Initialize the new cashes.
19499
19500         * image.c (mono_image_close): Destroy the new cashes.
19501
19502         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19503
19504         * mempool.c (mono_mempool_strdup): New helper function.
19505
19506         * class-internals.h: Add prototype for mono_loader_unlock ().
19507
19508         * domain.c (mono_jit_info_table_find): Fix a warning.
19509         (mono_debugger_check_runtime_version): Ditto.
19510
19511         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19512         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19513         functions to these modules.
19514
19515         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19516         metadata modules.
19517         
19518         * marshal.c (mono_free_bstr): Fix a warning.
19519
19520         * assembly.c (mono_assembly_open_full): Fix another small leak.
19521
19522         * object.c: Fix some unload leaks in the remoting code.
19523
19524         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19525         function.
19526
19527         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19528
19529         * reflection.c: Fix some unload leaks in dynamic assemblies.
19530
19531 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19532
19533         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19534         * marshal.h: Add BSTR support on Win32
19535         * icall.c: Add BSTR icalls
19536         * metadata.h: Add BSTR enums
19537
19538 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19539
19540         Work to catch the crash from #76795 and turn it into an
19541         exception.   As I stubbed out pieces of the VisualBasic support,
19542         I found a number of places where the code was failing and I added
19543         checks to those places. 
19544         
19545         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19546         function return a status code.  If we fail to parse the signature
19547         from mono_metadata_parse_generic_inst, return FALSE.
19548
19549         * loader.c (mono_get_method_from_token): If we fail to load the
19550         method (mono_class_get) return NULL.   
19551
19552         * (method_from_memberref): Return NULL if we are unable to parse
19553         the method signature
19554
19555         (mono_loader_error_prepare_exception): Since we now use the
19556         loader_error flag internally to stop processing, and obtaining
19557         exceptions that might be thrown will walk this code path the
19558         proper way of going from a MonoLoaderError into a
19559         MonoException was convoluted.   This new routine encapsulates the
19560         process of turning the error into an exception and *clearing* the
19561         error afterwards.
19562         
19563 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19564
19565         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19566         with missing assemblies), and to cope with:
19567
19568                 * Missing fieldref from a non-existing assembly.
19569                 * Missing methodref from a non-existing assembly.
19570
19571         The first batch of work to address *some* of the issues from 76661.
19572         
19573         * object.c (mono_class_create_runtime_vtable): If we fail to
19574         initialize the class raise the exception here. 
19575
19576         * metadata.c (mono_class_get_overrides_full): If any methods fail
19577         to load return the failure to the caller.
19578
19579         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19580         flagging assemblies that failed to load.   
19581
19582         Do not crash if we are unable to load the assembly.
19583
19584         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19585         assemblies. 
19586
19587         * loader.c (mono_loader_set_error_type_load): Change the
19588         convention to always pass unallocated strings, so we make our own
19589         copies (I know our own code had duplicated strings before, but
19590         this keeps the normal conventions).
19591         (method_from_memberref): Call mono_loader_set_error_method_load
19592         for all possible failures of loading the class. 
19593         Remove assert, turn into a loader error.
19594
19595         (mono_loader_error_to_exception): Move this routine from mini
19596         (mini_loader_error_to_exception) there was no need to have that in
19597         mini. 
19598
19599         * class.c (mono_class_from_typeref): If we were not able to load
19600         the assembly with mono_assembly_load_reference, call the
19601         mono_loader_set_error_type_load to register the problem.
19602
19603         (mono_class_setup_fields): If we fail to load the type from
19604         mono_metadata_parse_type_full, call mono_class_set_failure and
19605         break from the loop.
19606
19607         If class->exception_type is set, we do not layout the fields as
19608         that might crash the runtime, and instead return (from breaking
19609         from the previous loop).
19610
19611         (mono_class_setup_vtable): This now returns a boolean indicating
19612         whether the table was properly setup.   The decision is driven by
19613         mono_class_get_overrides_full which might run into non-existing
19614         methods. 
19615         
19616         (mono_class_init): Returns TRUE on success or FALSE if there was a
19617         problem in loading the type (incorrect assemblies, missing
19618         assemblies, methods, etc).
19619
19620         When we call mono_class_setup_fields we also check for a potential
19621         error inside this call (either a class exception or a general
19622         loader exception).
19623
19624         (mono_class_create_from_typedef): If the parent fails to load
19625         (calling mono_class_get_full) return NULL.
19626         
19627         ** Important **
19628
19629         calls to mono_metadata_parse_type_full should be checked
19630         everywhere and set the mono_class_set_failure
19631         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19632
19633         The current patch checks the places where my manually constructed
19634         tests show the errors are showing up, but we should do it
19635         everywhere. 
19636
19637         ** Important2 **
19638
19639         mono_class_init return values should be tested everywhere, like
19640         the previous case this is something that we should audit
19641         everywhere and not only on the cases exposed by the tests I
19642         created. 
19643
19644 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19645
19646         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19647         boolean parameter and instead pass the information on `options'
19648         parameter (FileOptions).
19649
19650         * icall.c: Register the new signature for MonoIO.Open.
19651
19652         * debug-helpers.c (dis_one): Trying to understand how coverity
19653         works.  Fix Run 5, item 78.
19654
19655 2006-04-26  Dick Porter  <dick@ximian.com>
19656
19657         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19658         dereference.
19659
19660 2006-04-25  Martin Baulig  <martin@ximian.com>
19661
19662         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19663
19664         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19665         debugger_thread_created().
19666         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19667         special way.
19668         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19669         (mono_debugger_finalize_threads): New function; undo the effects
19670         of mono_debugger_init_threads().
19671         (mono_debugger_create_all_threads): Removed.
19672
19673 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19674
19675         * image.c (mono_image_close): Tidy up trace messages.
19676
19677         * assembly.c (mono_assembly_close): Ditto.
19678
19679         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19680         no longer references an already freed assembly. Fixes #78168.
19681
19682 2006-04-21  Dick Porter  <dick@ximian.com>
19683
19684         * threads.c (mono_thread_detach): Fix reference counting when
19685         detaching threads.
19686
19687 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19688
19689         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19690         #78155.
19691
19692 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19693
19694         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19695         (mono_type_to_stind): Ditto.
19696
19697         * marshal.c: Use the new helper functions to simplify code.
19698
19699         * image.c (mono_image_close): Add some code for help debug assembly unloading
19700         problems.
19701
19702         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19703         image mempool.
19704
19705         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19706         assembly was already loaded in another appdomain. Fixes #78083.
19707
19708 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19709
19710         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19711         referenced assemblies.
19712         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19713
19714         * domain.c (mono_domain_free): Add a trace message.
19715
19716         * appdomain.c (add_assemblies_to_domain): Ditto.        
19717
19718         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19719         field.  
19720
19721 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19722
19723         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19724
19725 2006-04-12  Martin Baulig  <martin@ximian.com>
19726
19727         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19728         `USE_INCLUDED_LIBGC'.   
19729
19730 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19731
19732         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19733         the patch contains ../ and a small directory name later. Hopefully fixes
19734         #78035.
19735
19736 2006-04-10  Martin Baulig  <martin@ximian.com>
19737
19738         Clean up the debugger's thread-handling code.
19739
19740         The debugger's thread-handling code has been moved from
19741         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19742         over the `threads' hash, keep track of exiting threads and also
19743         use proper locking.
19744
19745         We can now debug XSP and XSP based applications with the debugger.
19746
19747         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19748
19749         * threads.h
19750         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19751         (mono_install_thread_callbacks): Likewise.      
19752
19753         * threads.c (mono_thread_callbacks): Removed.
19754         (debugger_thread_created, debugger_thread_exited): New static functions.
19755         (start_wrapper): Call debugger_thread_created().
19756         (thread_cleanup): Call debugger_thread_exited().
19757         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19758         (mono_debugger_init_threads): New public function.
19759         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19760         iterate directly over the `threads' hash and also use proper locking.
19761
19762         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19763
19764         * mono-debug-debugger.h
19765         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19766
19767 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19768
19769         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19770         argument type=array. Fixes #78057.
19771
19772 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19773
19774         * culture-info-table.h : regenerated. Fixed bug #69652.
19775
19776 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19777
19778         * loader.c metadata.c: Reapply a variant r59116.
19779         
19780         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19781
19782         * class.c (mono_class_setup_interface_offsets): New internal function.
19783
19784         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19785         interfaces too. Fixes #77398.
19786
19787         * reflection.c (encode_cattr_value): Add support for 
19788         parameter type=object, argument type=array.
19789         (load_cattr_value): Ditto. Fixes #77916.
19790
19791         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19792         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19793
19794         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19795         a byval char array and CharSet is Ansi.
19796
19797         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19798
19799 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19800
19801         * metadata.c: Add some locking comments.
19802         
19803         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19804         mempool.
19805         (mono_metadata_free_method_signature): Don't free the signature itself.
19806
19807         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19808
19809         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19810         reference the same MonoImage.
19811         (mono_assembly_load_from_full): Add an assert.
19812
19813 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19814
19815         * image.c (mono_image_close): Don't put the image we are about to free into the
19816         loaded_images_guid_hash.
19817
19818         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19819         to reduce code duplication.
19820
19821         * marshal.c: Register the native functions called by this module as icalls, to
19822         somewhat centralize the creation of MonoMethodSignature's.
19823
19824         * loader.c (mono_method_signature): Add a cache for method signatures.
19825
19826         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19827         the parameter attributes of a method.
19828         (mono_metadata_parse_method_signature_full): Refactored the computation of
19829         parameter attributes into a separate function. Also avoid one allocation in
19830         most cases.
19831
19832         * assembly.c (mono_assembly_close): Ditto.
19833
19834         * image.c (mono_image_close): Log trace messages with INFO level.
19835
19836         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19837
19838         * image.c reflection.c: Correct reference counting of image modules.
19839         
19840         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19841         of this function from the image mempool.
19842         
19843         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19844         to allow more cached types to be used.
19845
19846         * mono-debug.c (mono_debug_add_method): Appled patch from
19847         David S. Miller  <davem@sunset.davemloft.net>: Access 
19848         minfo->lexical_blocks[] entry elements using read32().
19849
19850 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19851
19852         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19853         methods as it is allocated from the mempool.
19854
19855         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19856         image mempool.
19857
19858         * metadata-internals.h: Add comments describing the reference counting scheme
19859         used for MonoImage and MonoAssembly.
19860
19861         * image.c assembly.c reflection.c: Rework reference counting of images and 
19862         assemblies so they are freed when the runtime is shut down. Free some 
19863         additional memory structures when an image is unloaded.
19864         
19865 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19866
19867         * class.c loader.c reflection.c: Allocate more data structures in
19868         the image mempool.
19869
19870 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19871
19872         * icall.c
19873         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19874         build on pre glib 2.4 systems.
19875
19876 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19877
19878         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19879
19880         * icall.c: Fix some warnings.
19881
19882 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19883
19884         * culture-info-table.h : regenerated.
19885
19886 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19887
19888         * threads.c, object-internals.h, verify.c: changed the culture caching
19889         code to use a normal MonoArray for storage so the GC can keep track of
19890         them easily. Fixed bits of the cache logic, too and simplified the
19891         code.
19892
19893 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19894
19895         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19896         thread for non-Boehm GCs.
19897
19898 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19899
19900         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19901         needed to keep track of the data for static fields.
19902
19903 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19904
19905         Fix #75172
19906         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19907         for interface classes.  Use 'num_methods' instead.
19908         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19909         before using '->vtable_size' field.
19910
19911 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
19912
19913         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
19914         doesn't contain managed pointers, so use a normal hashtable.
19915
19916 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
19917
19918         * reflection.c, class-internals.h, domain.c: fixed handling of types
19919         used as values for objects in custom attributes (bug #77915):
19920
19921 2006-03-24  Martin Baulig  <martin@ximian.com>
19922
19923         * class.c (mono_class_setup_fields): Added support for generic
19924         instances; fixes #77580.
19925
19926 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19927
19928         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
19929
19930 2006-03-24  Dick Porter  <dick@ximian.com>
19931
19932         * file-io.c (get_file_attributes): More stat macro breakage.
19933         Fixes bug 77759.
19934
19935 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
19936
19937         * profiler.c: added the file=filename option in the default profiler
19938         to output the profile data to filename.
19939
19940 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19941
19942         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
19943         bug #77877.
19944
19945 2006-03-22  Martin Baulig  <martin@ximian.com>
19946
19947         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
19948         allocated `MonoClassField *' in `fb->handle'.
19949
19950 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
19951
19952         * class.c, image.c, metadata-internals.h: implemented new mechanism to
19953         allocate interface ID to save memory and allow better ID reuse on
19954         appdomain unload. setup_generic_vtable () removal from Martin.
19955
19956 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
19957
19958         * object.h, appdomain.c, domain.c, exception.c, icall.c,
19959         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
19960         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
19961         write barriers for reference stores with managed objects accessed with
19962         C structures in the runtime and in embedding programs.
19963
19964 2006-03-20  Raja R Harinath  <rharinath@novell.com>
19965
19966         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
19967         'interface_id' and 'max_interface_id' fields of MonoClasses
19968         representing open generic types.
19969
19970 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
19971
19972         * object.h, object.c, icall.c: added functions to deal with
19973         storing valuetypes that contain references in managed objects.
19974         * reflection.c, string-icalls.c, threads.c, marshal.c: small
19975         fixes and comments around uses of mono_array_addr ().
19976
19977 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
19978
19979         * object.h, icall.c, monitor.c: object.GetHashCode ()
19980         implementation that supports the moving garbage collector.
19981
19982 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
19983
19984         * icall.c, threads-types.h, threads.c: implemented finalizer for
19985         LocalDataStoreSlot.
19986
19987 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
19988
19989         * metadata.c (mono_type_size): Add a fixme.
19990         (mono_type_stack_size): Ditto.
19991
19992         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
19993         'type_forwarders' field.
19994
19995         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
19996         attribute from net 2.0.
19997
19998         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
19999         from class.c.
20000
20001         * class.c (mono_class_setup_fields): Fix a warning.
20002         
20003         * class.c (mono_class_from_name): Add support for assemblyref entries
20004         in the EXPORTEDTYPE table.
20005
20006         * reflection.c: Add support for handling type forwarders under net 2.0.
20007
20008         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20009         
20010 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20011
20012         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20013         overwriting entries in ModuleBuild->types, also clean up the code
20014         a little. Fixes #77774.
20015
20016 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20017
20018         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20019         load friend assembly info when present.
20020
20021 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20022
20023         Fix crasher on gtest-158.cs.
20024         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20025         the return value if the MonoClass we want is yet in an
20026         inconsistent state.
20027         * class.c (mono_class_create_from_typedef): Add an comment
20028         explaining an order dependency between mono_class_setup_parent and
20029         mono_class_setup_mono_type.
20030
20031 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20032
20033         * class.c: documentation updates and events bug fix.
20034
20035 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20036
20037         * class.c: some cleanup, locking fixes.
20038
20039 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20040
20041         * class.c: fix the generics code to setup nested
20042         type info to the instantiated type (bug #77770).
20043
20044 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20045
20046         * marshal.c: fixed a few type correctness issues.
20047
20048 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20049
20050         * loader.c: the Set/Get/Addrtess array methods should be public.
20051
20052 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20053
20054         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20055         
20056         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20057         info->wrapper.
20058
20059 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20060
20061         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20062
20063         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20064
20065         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20066         (mono_mempool_alloc0): Ditto.
20067
20068 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20069
20070         * socket-io.c:
20071         (create_object_from_sockaddr): it was allocating 4 extra bytes
20072         for the AF_UNIX data. Fixes bug #77747.
20073
20074 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20075
20076         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20077
20078 2006-03-09  Dick Porter  <dick@ximian.com>
20079
20080         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20081         Fixes bug 76966 again.
20082
20083 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20084
20085         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20086         names from r57532
20087         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20088
20089 2006-03-07  Martin Baulig  <martin@ximian.com>
20090
20091         * object.c
20092         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20093
20094 2006-03-07  Martin Baulig  <martin@ximian.com>
20095
20096         * class.c
20097         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20098         regression introduced in r56970; see gtest-252.cs.
20099
20100         * loader.c (mono_get_method_constrained): Correctly handle generic
20101         methods; see gtest-253.cs.
20102
20103 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20104
20105         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20106
20107 2006-03-04  Martin Baulig  <martin@ximian.com>
20108
20109         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20110         compute the parent type at runtime, just like we're already doing
20111         it for interfaces.
20112
20113         * reflection.c
20114         (mono_reflection_bind_generic_parameters): Don't compute the
20115         parent type anymore.
20116
20117         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20118
20119 2006-03-04  Martin Baulig  <martin@ximian.com>
20120
20121         * mono-debug-debugger.h
20122         (mono_debugger_create_notification_function): Allocate memory at
20123         runtime and return a pointer to it.
20124
20125 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20126
20127         * assembly.c: Fix windows build.
20128         
20129         * assembly.c: Fix build.
20130
20131         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20132
20133         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20134         
20135 2006-03-03  Dick Porter  <dick@ximian.com>
20136
20137         * process.c
20138         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20139         Check parameters before dereferencing them.  Fixes Aaron's part of
20140         bug 77393.
20141
20142 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20143
20144         Fix performance regression.
20145         * loader.c (find_method_in_class): Add 'from_class' argument.
20146         Rename 'klass' argument to 'in_class'.  The signature is compared
20147         against the method in 'in_class', and the corresponding method is
20148         returned from 'from_class'.
20149         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20150         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20151         type definition and generic instantiation in parallel.
20152         (mono_get_method_constrained): Update to changes.
20153
20154 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20155
20156         * threads.c: make sure the domain is correct, too when doing
20157         mono_thread_attach ().
20158
20159 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20160
20161         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20162         windows. Fixes #77683.
20163
20164 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20165
20166         * object.h, *: introduced specific way to set elements of an array
20167         of references to be used as write barrier. Still need to audit the
20168         uses of mono_array_addr.
20169
20170 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20171
20172         * object-internals.h: New field to cache the assmebly name, patch
20173         from Tambet Ingo (tambet@ximian.com)
20174
20175 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20176
20177         * decimal.h, class-internals.h, metadata-internals.h,
20178         file-io.h: mark a few function declarations as internal, to
20179         reduce the number of PLT entries.
20180
20181 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20182
20183         * file-io.c: fix typo in warning message.
20184
20185 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20186
20187         * loader.c: on unix, lookup the "*A" version of a function
20188         if charset is auto as a second option before failing.
20189
20190 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20191
20192         * class.h (mono_class_inflate_generic_method): Revert to two
20193         argument version.
20194         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20195         (mono_class_inflate_generic_method_full): Add.
20196         * class.c (mono_class_inflate_generic_method_full): Rename from
20197         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20198         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20199         * loader.c, reflection.c: Update to changes.
20200
20201 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20202
20203         * icall.c: const fixes and small improvements.
20204
20205 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20206
20207         * threadpool.c: for asynchronous connect(), enable the same workaround
20208         for BSD 6 as for the Mac. Fixes bug #77637.
20209
20210 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20211
20212         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20213         formatted classes. Fixes #77524.
20214
20215 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20216
20217         * class.c (inflate_generic_type): Add a couple more
20218         micro-optimizations.
20219         (inflate_generic_context): Don't use the 'gmethod' from
20220         'inflate_with'.
20221         (mono_class_inflate_generic_method): If the method has generic
20222         parameters, but the passed-in context doesn't have a 'gmethod',
20223         create one.  Use the possibly simplified generic instantiation
20224         from the declaring class instead of the one passed in.
20225
20226 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20227
20228         Make generic method signature and method header handling lazy.
20229         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20230         (inflate_generic_header): Likewise.
20231         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20232         parameter to avoid inflating types.
20233         (mono_get_inflated_method): Empty out.
20234         * class.h (mono_class_inflate_generic_method): Update to changes.
20235         * loader.c (mono_get_method_from_token): Don't parse signature for
20236         generic methods, nor methods of generic classes.
20237         (mono_method_signature): Rename from 'mono_method_signature'.
20238         Inflate signature on demand.
20239         (mono_method_get_header): Inflate method header on demand.
20240         * reflection.c: Update to changes.
20241
20242 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20243
20244         * metadata.c (mono_metadata_inflate_generic_inst): If the
20245         instantiation is closed, don't bother expanding it in the new
20246         context.
20247         * class.c (inflate_generic_class): If the generic instantiation
20248         doesn't change after inflation, return the argument itself.
20249         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20250         Add bounds checks.
20251         (inflate_generic_context): If neither the generic class nor the
20252         generic method instantiations change, return the original context.
20253         * reflection.c (mono_method_get_object): Do
20254         'mono_get_inflated_method' before accessing the ->klass field.
20255         (inflate_mono_method): Don't create a MonoGenericMethod unless
20256         necessary.
20257         (inflate_method): Don't pass a constructed type as the declaring
20258         type of a methodbuilder.
20259
20260 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20261
20262         * object.c: fix memory overwrite.
20263
20264 2006-02-22  Dick Porter  <dick@ximian.com>
20265
20266         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20267         it doesn't work any more.
20268         (mono_threads_request_thread_dump): Fix unused variable warnings.
20269
20270 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20271
20272         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20273         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20274         the public header file.
20275
20276 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20277
20278         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20279
20280 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20281
20282         * class-internals.h, object.c: reduce the size of MonoVTable
20283         and store the interface_offsets array at negative offsets.
20284
20285 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20286
20287         * metadata.c: tweak table descriptors data structures to reduce
20288         size and runtime relocations.
20289
20290 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20291
20292         * marshal.c: fix some types and opcodes to be type-safe
20293         in marshaling wrappers.
20294
20295 2006-02-21  Ankit Jain  <jankit@novell.com>
20296
20297         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20298
20299 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20300
20301         * metadata.c (get_constraints): Relax debugging checks for monodis.
20302
20303 2006-02-21  Ankit Jain  <jankit@novell.com>
20304
20305         * metadata.c (mono_metadata_load_generic_params): Move the code
20306         checking for ambiguous generic params from here to mono/dis/get.c
20307         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20308
20309 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20310
20311         Fix assertion triggered when compiling nemerle.
20312         * class.c (mono_get_shared_generic_inst): Rename from
20313         get_shared_inst and make non-static.
20314         * loader.c (mono_get_shared_generic_method): New.  Used to create
20315         the MonoGenericContext-equivalent of a MonoGenericContainer.
20316         (mono_get_method_from_token): Initialize the 'context' field of
20317         the created MonoGenericContainer.
20318         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20319         * metadata.c (get_constraints): Add sanity check.
20320         * class-internals.h: Add new internal methods.
20321
20322         * reflection.c (verify_safe_for_managed_space): New sanity check.
20323         Currently checks that owner-less generic parameters aren't allowed
20324         in managed space.
20325         (mono_type_get_object): Use it.
20326         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20327         that are now in mono_type_get_object.
20328         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20329
20330 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20331
20332         * metadata.c (mono_type_create_from_typespec): Rename from
20333         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20334         argument and caching of types in the generic container.
20335         (unwrap_arrays, find_generic_param): Remove.
20336         * metadata-internals.h: Update.
20337         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20338
20339 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20340
20341         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20342
20343         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20344         return values. Fixes #77581.
20345
20346         * class.c (mono_fnptr_class_get): Switch name and name_space.
20347
20348         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20349         classes and add support for [In, Out] attributes.
20350         (mono_marshal_free_asany): Ditto. Fixes #77524.
20351
20352 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20353
20354         * class.c (mono_class_from_generic_parameter): Make more robust to
20355         incomplete MonoGenericContainers from monodis.
20356
20357 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20358
20359         * class-internals.h: added some more exception types.
20360         * class.c, metadata.c: added a few checks to handle missing
20361         types.
20362
20363 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20364
20365         Use owner-less generic-params some more.
20366         * class.c (my_mono_class_from_generic_parameter): Remove.
20367         (mono_class_from_generic_parameter): Handle null image,
20368         param->name and param->owner.
20369         (mono_class_from_mono_type): Update.
20370         (mono_class_create_from_typespec): Remove 'container' parameter.
20371         If that parameter is non-null, the result is always inflated by
20372         'mono_class_get_full' anyway.
20373         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20374         parameter.
20375         (mono_class_get_full): Update.
20376
20377         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20378         instance is not open, don't bother inflating.
20379         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20380         parse metadata for inflated classes.
20381         (_mono_class_get): Change GenericContext* parameter to
20382         GenericContainer*.
20383         (mono_class_create_from_typespec): Likewise.  Simplify, and
20384         implement trivially.  All the cases are handled in
20385         mono_class_from_mono_type.  Don't inflate returned class.
20386         (mono_class_get_full): Delegate GENERICINST optimization to
20387         inflate_generic_type.
20388         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20389
20390 2006-02-16  Dick Porter  <dick@ximian.com>
20391
20392         * socket-io.c (create_object_from_sockaddr): Fix typo.
20393         (create_sockaddr_from_object): Check array lengths before
20394         potentially accessing items off the end.
20395         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20396         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20397         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20398         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20399         length checks to avoid wraparound overflows.
20400         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20401         contents of the array of sockets
20402         (hostent_to_IPHostEntry2)
20403         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20404         Check return value of inet_ntop ().
20405         (addrinfo_to_IPHostEntry): Fix typo
20406
20407 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20408
20409         Type metadata parsing doesn't use generic-instantiation information.
20410         * metadata.c (mono_metadata_parse_array_full): Change
20411         MonoGenericContext* parameter to MonoGenericContainer*.
20412         (mono_metadata_parse_type_full): Likewise.
20413         (mono_type_create_from_typespec_full): Likewise.
20414         (mono_metadata_parse_mh_full): Likewise.
20415         (mono_metadata_parse_generic_inst): Likewise.
20416         (do_mono_metadata_parse_generic_class): Likewise.
20417         (do_mono_metadata_parse_type): Likewise.
20418         * metadata-internals.h: Update to changes.
20419         * class.c (mono_class_find_enum_basetype): Likewise.
20420         (mono_class_setup_fields): Likewise.
20421         (mono_class_create_from_typespec): Likewise.
20422         * loader.c (method_from_methodspec): Likewise.
20423         (mono_get_method_from_token): Likewise.
20424         (mono_method_get_header): Likewise.
20425
20426 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20427
20428         * marshal.c: handle additional GENERICINST case (patch from
20429         Thong Nguyen <tum@veridicus.com>).
20430         Fix a few cases where LDIND_I/STIND_I was used for references.
20431
20432 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20433
20434         * reflection.c (mono_reflection_get_token): Remove unused variable.
20435
20436 2006-02-16  Martin Baulig  <martin@ximian.com>
20437
20438         * reflection.c (mono_reflection_get_token): Add support for fields
20439         in instantiated generic types.
20440
20441         * icall.c
20442         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20443
20444 2006-02-15  Martin Baulig  <martin@ximian.com>
20445
20446         * icall.c
20447         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20448         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20449         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20450         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20451
20452 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20453
20454         * class.c, metadata.c, metadata.h, object.c, icall.c,
20455         marshal.c: changed mono_type_get_underlying_type () to do
20456         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20457         Fixed handling of instantiated generic valuetypes (bug #75479).
20458
20459 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20460
20461         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20462         Delegate to mono_metadata_decode_value, and work on the returned value.
20463
20464         * icall.c (ves_icall_MonoType_GetGenericArguments):
20465         Add consistency check here too.
20466         
20467 2006-02-15  Ankit Jain  <jankit@novell.com>
20468
20469         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20470         char/short etc.
20471
20472 2006-02-15  Ankit Jain  <jankit@novell.com>
20473
20474         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20475         signed values, used only for representing lower bounds of arrays.
20476         (mono_metadata_parse_array_full): Use new
20477         mono_metadata_decode_signed_value to decode lower bounds.
20478
20479 2006-02-14  Martin Baulig  <martin@ximian.com>
20480
20481         * reflection.c
20482         (mono_reflection_get_token): Support "MonoGenericMethod" and
20483         "MonoGenericCMethod" and allow generic instances / methods.
20484
20485 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20486
20487         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20488         to obtain the terminal size using an ioctl.
20489
20490         * object.c (mono_nullable_init): Revert this as nullable reference
20491         types are not valid.
20492         (mono_nullable_box): Ditto.
20493
20494 2006-02-09  Dick Porter  <dick@ximian.com>
20495
20496         * threads.c (mono_thread_detach): Drop a reference to the thread
20497         we're detaching.
20498
20499 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20500
20501         * object.c (mono_nullable_init): Handle nullable reference types.
20502         (mono_nullable_box): Ditto. Fixes #77446.
20503
20504 2006-02-07  Martin Baulig  <martin@ximian.com>
20505
20506         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20507
20508 2006-02-07  Ankit Jain  <jankit@novell.com>
20509
20510         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20511         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20512         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20513         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20514         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20515         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20516
20517 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20518
20519         * class.c (mono_class_create_generic): Set type_token as well.
20520
20521         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20522         compatible with MS.
20523
20524 2006-02-02  Martin Baulig  <martin@ximian.com>
20525
20526         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20527         has never been used so far.
20528
20529 2006-02-02  Martin Baulig  <martin@ximian.com>
20530
20531         * mono-debug-debugger.h: Changed comment at the top of this file;
20532         the header is not installed, but it's safe to #include it from
20533         within the JIT.
20534
20535         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20536         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20537
20538 2006-02-02  Martin Baulig  <martin@ximian.com>
20539
20540         * mono-debug.h
20541         (MonoSymbolTable): Removed the `metadata_info' field.
20542
20543         * mono-debug.c
20544         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20545
20546         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20547         (mono_debugger_add_builtin_types): Removed.
20548         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20549         (mono_debugger_create_notification_function): We now operate on a
20550         pre-allocated area; take a `gpointer' and return `void'.
20551
20552         * mono-debug-debugger.c
20553         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20554         (mono_debugger_add_builtin_types): Removed.
20555
20556 2006-02-02  Martin Baulig  <martin@ximian.com>
20557
20558         * threads.c (mono_debugger_create_all_threads): New public method.
20559
20560 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20561
20562         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20563         breaks on several platforms.
20564
20565 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20566
20567         * assembly.c: the VS.NET build doesn't supply default values for
20568         MONO_ASSEMBLIES and MONO_CFG_DIR.
20569
20570 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20571
20572         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20573         helper function.
20574
20575         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20576
20577         * loader.c (method_from_memberref): Fix a warning.
20578
20579         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20580
20581         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20582         with explicit layout. Fixes #77433.
20583
20584 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20585
20586         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20587         max_interface_id is initialized before using it. Fixes #77398.
20588         (ves_icall_Type_GetInterfaces): Ditto.
20589
20590 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20591
20592         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20593         allocate memory for parameter attributes when parsing memberref
20594         signatures.
20595         * loader.c (mono_loader_set_error_method_load): Don't warn.
20596         (method_from_memberref): Ensure MissingMethodException gets thrown
20597         if method is not found.  Make warning more informative.
20598
20599 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20600
20601         Fix #77397
20602         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20603         return true if is byref.
20604         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20605         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20606         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20607
20608 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20609
20610         Fix tests/find-method.2.il
20611         * loader.c (find_method, find_method_in_class): Remove is_inflated
20612         argument.  Revert 2006-01-18 change.
20613         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20614         is generic, search for method in its generic definition.
20615         * class.c (mono_class_setup_vtable_general): Print generic
20616         arguments of generic types in debugging printf.
20617
20618 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20619
20620         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20621
20622         * threads.c (mono_threads_request_thread_dump): New helper function.
20623
20624 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20625
20626         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20627
20628 2006-01-25  Ankit Jain  <jankit@novell.com>
20629
20630         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20631         move definition to ..
20632         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20633         
20634 2006-01-25  Ankit Jain  <jankit@novell.com>
20635             Raja R Harinath  <rharinath@novell.com>
20636
20637         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20638         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20639         as necessary.
20640
20641 2006-01-25  Martin Baulig  <martin@ximian.com>
20642
20643         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20644         `MonoDebuggerThread' into debug-debugger.c.
20645
20646 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20647
20648         * profiler.c: fix printing of data.
20649
20650 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20651
20652         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20653           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20654
20655 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20656
20657         * object.c: fix deadlock related to string interning.
20658
20659 2006-01-23  Martin Baulig  <martin@ximian.com>
20660
20661         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20662
20663         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20664
20665 2006-01-23  Martin Baulig  <martin@ximian.com>
20666
20667         * mono-debug.h: Moved the prototypes of some functions which are
20668         used by the JIT here from mono-debug-debugger.h.
20669
20670 2006-01-21  Martin Baulig  <martin@ximian.com>
20671
20672         * Makefile.am: Don't install mono-debug-debugger.h.
20673
20674 2006-01-21  Martin Baulig  <martin@ximian.com>
20675
20676         * mono-debug-debugger.h: Enforce the private status of this header
20677         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20678         Moved some stuff from mono-debugger-jit-wrapper.h here.
20679
20680 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20681
20682         * class.c (mono_class_from_typeref): Add a sanity test to help
20683         catch lack of assembly load/search hooks.
20684
20685 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20686
20687         * marshal.c (emit_struct_conv): Relax the fields with same offset
20688         check even more. Fixes #77230.
20689
20690 2006-01-18  Martin Baulig  <martin@ximian.com>
20691
20692         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20693         argument; if false, we compare the uninstantiated signatures.
20694         (method_from_memberref): Compare the uninstantiated signatures;
20695         fixes #76417.
20696
20697 2006-01-18  Robert Jordan  <robertj@gmx.net>
20698
20699         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20700         Clear the weak link. Fixes bug #77170.
20701
20702         * gc.c (mono_gchandle_free):
20703         Reflect *-gc.c changes (tiny optimization).
20704
20705 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20706
20707         * metadata.c (mono_metadata_signature_dup): Applied patch from
20708         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20709         Fixes #77288.
20710
20711 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20712
20713         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20714         marshalling from native to managed code. Fixes #77230.
20715
20716 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20717
20718         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20719         connect. Fixes bug #77020.
20720
20721 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20722
20723         * class.c: fixed id assignement for nested interfaces (bug #77275).
20724         Added also better info for --print-vtable debugging.
20725
20726 2006-01-12  Martin Baulig  <martin@ximian.com>
20727
20728         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20729         interfaces on-the-fly; fixes #76625.
20730
20731         * class-internals.h
20732         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20733         don't need that anymore.
20734
20735 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20736
20737         * socket-io.c
20738         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20739         To avoid initing the nested_classes when not needed I turned the
20740         PeerCredData as a toplevel internal class, as it has to be shared
20741         anyways. 
20742
20743         Fixes the CASA issue.
20744
20745 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20746
20747         * domain.c: Accessors for MonoJitInfo
20748
20749         * profiler-private.h: Add jitinfo to the end jit hook
20750
20751         * profiler.[ch]: Define new hooks, called after jitting which give
20752         the MonoJitInfo that was compiled
20753
20754 2006-01-10  Martin Baulig  <martin@ximian.com>
20755
20756         * class.c (mono_class_setup_events): Add support for generic
20757         classes; fixes #76440.
20758
20759 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20760
20761         Fix #77160.
20762         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20763         on passed-in method.
20764
20765 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20766
20767         * object.c (mono_runtime_invoke_array): Add Nullable support.
20768
20769         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20770
20771 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20772
20773         * file-io.c: Don't consider sockets as directory and avoid an endless
20774         loop. Fix bug #76966.
20775
20776 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20777
20778         * object.c (mono_nullable_init): New helper function.
20779         (mono_nullable_box): Ditto.
20780
20781         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20782
20783         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20784
20785         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20786         
20787 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20788
20789         * class.c (mono_class_is_assignable_from): Make T assignable to 
20790         Nullable<T>.
20791
20792 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20793
20794         * appdomain.c: Bump corlib version to 46.
20795         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20796         serialization purpose) and changed ves_icall_System_Reflection_
20797         Assembly_get_code_base signature to accept a boolean (to escape, or 
20798         not, the assembly code base).
20799
20800 2005-12-23  Dick Porter  <dick@ximian.com>
20801
20802         * icall.c: 
20803         * threads-types.h: 
20804         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20805         CreateEvent icall now returns "created" boolean parameter.
20806
20807 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20808
20809         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20810         #76967.
20811
20812         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20813         when attr_klass is an interface. Fixes #77045.
20814
20815 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20816
20817         * marshal.c (emit_struct_conv): Fix previous patch.
20818         
20819         * marshal.c (emit_struct_conv): Add a check for fields with the same
20820         offset.
20821
20822 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20823
20824         Fix regression in Mono.C5.
20825         * class.c (mono_class_create_generic): If 'klass' is an interface
20826         set up the interface offsets.
20827         (mono_class_is_assignable_from): Don't throw away generic arguments.
20828
20829 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20830
20831         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20832         type parameters.
20833
20834 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20835
20836         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20837         dead store.
20838         (do_mono_metadata_parse_generic_class): Don't pass the current
20839         generic context when parsing the type being instantiated: it
20840         cannot use it, anyway.
20841
20842         * loader.c (method_from_memberref): Don't inflate a signature if
20843         it doesn't contain any type parameters.
20844
20845 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20846
20847         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20848
20849 2005-12-14  Martin Baulig  <martin@ximian.com>
20850
20851         * class.c
20852         (mono_type_get_name_recurse): Don't return null for type
20853         parameters and open generic classes.
20854         (mono_class_setup_methods): Don't exclude generic instances.
20855         (mono_get_unique_iid): Use different IDs for different
20856         instantiations of the same generic type.
20857         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20858         open generic instances; create a normal vtable for closed generic
20859         instances.
20860         (mono_class_setup_vtable_general): We're now also called for
20861         closed generic instances.
20862
20863         * reflection.c
20864         (mono_reflection_bind_generic_parameters): Correctly use
20865         mono_metadata_lookup_generic_inst() everywhere.
20866
20867 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20868
20869         * object.c (mono_class_create_runtime_vtable): Call 
20870         mono_class_setup_vtable ().
20871
20872         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20873         function.
20874         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20875         #76959.
20876
20877         * loader.c (mono_loader_set_error_type_load): Print the type load
20878         warnings to the console so they are more visible to the user.
20879         (mono_loader_set_error_method_load): Ditto.
20880
20881         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20882         is still broken.
20883         
20884         * reflection.c (ensure_runtime_vtable): Fix build.
20885
20886         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20887         doesn't work in all cases.
20888
20889 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20890
20891         * object.c (mono_array_new_full): Treat a single dimensional array
20892         with 0 lower bounds as an szarray. Fixes #76973.
20893
20894         * reflection.c (custom_attr_visible): Really fix this.
20895
20896 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20897
20898         * reflection.c (custom_attr_visible): Allow nested public attributes
20899         as well.
20900
20901         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20902         interface check.
20903
20904 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20905
20906         * class.c (set_generic_param_owner): Delete.
20907         (mono_class_create_from_typedef): Don't set ->owner field of
20908         generic parameters to "param containers" of enclosing classes.
20909         * reflection.c (mono_reflection_initialize_generic_parameter):
20910         Likewise.
20911
20912 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
20913
20914         * reflection.c (custom_attr_visible): Fix build.
20915
20916 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
20917
20918         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
20919         private attributes.
20920         
20921         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
20922         handling of null parameter defaults.
20923
20924 2005-12-09  Raja R Harinath  <rharinath@novell.com>
20925
20926         * class.c (mono_class_from_generic_parameter): Don't set
20927         klass->generic_container.
20928         (my_mono_class_from_generic_parameter): Likewise.
20929
20930 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
20931
20932         * reflection.c (load_public_key): Fix a warning.
20933         (method_encode_code): Fix unaligned accesses.
20934
20935 2005-12-07  Martin Baulig  <martin@ximian.com>
20936
20937         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
20938
20939         * reflection.c
20940         (write_generic_param_entry): Encode our custom attrs.
20941
20942         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
20943
20944 2005-12-07  Martin Baulig  <martin@ximian.com>
20945
20946         * reflection.c (encode_new_constraint): Removed; we don't use the
20947         `NewConstraintAttribute' anymore.
20948
20949 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
20950
20951         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
20952         not fire a TypeResolve event when Assembly.GetType () is called.
20953
20954 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
20955
20956         Beginning of support for nullable types in the runtime. Parts of
20957         this patch are from Martin.
20958
20959         * appdomain.c (MONO_CORLIB_VERSION): Bump
20960
20961         * domain.c (mono_init_internal): get the nullable type
20962
20963         * class.c (mono_class_is_nullable): New method
20964         (mono_class_get_nullable_param): New mehod
20965         (mono_class_create_generic): In types T? set cast_class to T
20966
20967         * class-internals.h (MonoDefaults): new nullable default class
20968         (mono_class_get_nullable_param, mono_class_get_nullable_param):
20969         new methods.
20970
20971 2005-12-05  Raja R Harinath  <rharinath@novell.com>
20972
20973         * metadata.c (select_container): New.  Refactor code to select the
20974         appropriate GenericContainer given the type of generic parameter
20975         we are looking for.
20976         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
20977         not a MonoGenericContext.  Use select_container.  Update parameters.
20978         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
20979         and MONO_TYPE_MVAR.
20980         (unwrap_arrays): Remove duplicate tests.
20981         (find_generic_param): Rename from 'has_same_context'.  Now walks a
20982         generic instantiated class to find any arguments that are generic
20983         parameters.
20984         (mono_type_create_from_typespec_full): Use find_generic_param to
20985         avoid evicting some generic instantiations from the typespec
20986         cache.
20987
20988 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
20989
20990         * reflection.c: fixed writing of doubles on ARM FPA.
20991
20992 2005-12-02  Robert Jordan  <robertj@gmx.net>
20993
20994         * icall.c: Fixed EventInfo.ReflectedType (#76829).
20995
20996 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20997
20998         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
20999         least on SUSE 10 they are not the same (on debian, they are just the
21000         same thing).
21001
21002 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21003
21004         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21005         DeclaringType for VARs and MVARs.
21006         * class.c (set_generic_param_owner): Fix initialization of owner
21007         fields.
21008
21009 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21010
21011         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21012
21013 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21014
21015         * threadpool.c: workaround for a bug that shows up on the Mac:
21016         select()+connect() on a blocking socket is not like it should
21017         be, so we proceed to connect() in that case, wasting the I/O
21018         threadpool thread until connect succeedes. Fixes bug #75436.
21019
21020 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21021
21022         * threadpool.c: fix typo when setting file descriptor states.
21023
21024 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21025
21026         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21027         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21028         create a temporary signature container.
21029         (mono_metadata_parse_generic_param): Update to changes.
21030         (mono_type_create_from_typespec_full): Update to changes.
21031         * loader.c (method_from_memberref): Don't use a
21032         MonoGenericContainer while parsing a memberref signature.
21033         (method_from_methodspec): Remove dead-store of the 'container'
21034         variable.  It's overwritten before use.
21035
21036         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21037         checks tighter.
21038         (mono_metadata_parse_generic_param): Likewise.
21039         * loader.c (find_method_in_class): Does not need a
21040         MonoGenericContainer.  Use 'mono_method_signature' rather than
21041         'mono_method_signature_full'.
21042         (find_method, mono_get_method_constrained, method_from_memberref):
21043         Update to changes.
21044
21045         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21046         owner-less generic-parameters are never evicted from the typespec
21047         cache.
21048
21049         * loader.c (method_from_memberref): Don't use the current context
21050         when parsing signatures.
21051         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21052
21053         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21054         side-effects in g_assert.
21055         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21056         that we don't potentially lose information.
21057
21058 2005-11-26  Dick Porter  <dick@ximian.com>
21059
21060         * icall.c:
21061         * threads.c: icalls to implement basic (ie, not named)
21062         System.Threading.Semaphore.
21063
21064 2005-11-24  Dick Porter  <dick@ximian.com>
21065
21066         * process.c
21067         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21068         Use GetProcessId() if it's available.
21069
21070 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21071
21072         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21073
21074 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21075             Ankit Jain  <jankit@novell.com>
21076
21077         * loader.c (mono_get_method_from_token): Initialize 'method' field
21078         of all generic parameters before parsing the signature.  Remove
21079         code that "fixed"-up MVAR references.
21080
21081 2005-11-23  Ankit Jain  <jankit@novell.com>
21082
21083         * metadata.c (mono_metadata_has_generic_params):
21084         (mono_metadata_load_generic_param_constraints):
21085         (mono_metadata_load_generic_params): Move duplicate code ...
21086         (mono_metadata_get_generic_param_row): ... here. Returns the
21087         first row-id in GenericParam table for a given owner (token).
21088         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21089         prototype.
21090
21091 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21092             Ankit Jain  <jankit@novell.com>
21093
21094         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21095         comparing VARs too.
21096         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21097         type->data.generic_param only if the type is an MVAR.
21098         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21099         leak owner-less VARs and MVARs into managed space.
21100
21101 2005-11-21  Martin Baulig  <martin@ximian.com>
21102
21103         * class-internals.h
21104         (MonoMethod): Moved the `generic_container' here from
21105         `MonoMethodNormal' since we now also need it for
21106         `MonoMethodPInvoke';
21107         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21108         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21109         an union containing both `MonoMethodNormal' and
21110         `MonoMethodPInvoke'.
21111
21112         * loader.c
21113         (mono_get_method_from_token): Allow implementing generic methods
21114         as interncalls.
21115
21116         * threads.c
21117         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21118         icall.
21119
21120 2005-11-17  Dick Porter  <dick@ximian.com>
21121
21122         * icall.c: 
21123         * process.h: 
21124         * process.c: Split the Process Start_internal icall into
21125         ShellExecuteEx_internal and CreateProcess_internal, which are
21126         called depending on whether UseShellExecute is true.  Fixes bug
21127         76670.
21128
21129         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21130
21131 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21132
21133         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21134         'msize' parameters, use the information in 'mspec' instead.
21135         (emit_object_to_ptr_conv): Ditto.
21136
21137         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21138         fields out of order. Fixes #76733.
21139
21140 2005-11-17  Ankit Jain  <jankit@novell.com>
21141
21142         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21143
21144 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21145
21146         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21147           bug #76575.
21148
21149 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21150
21151         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21152         for types with non-auto layout. Fixes #76717.
21153
21154 2005-11-16  Ankit Jain  <jankit@novell.com>
21155
21156         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21157         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21158         if generic_context is null.
21159           (mono_metadata_generic_param_equal): param->owner can be null.
21160           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21161         null.
21162
21163 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21164
21165         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21166         the correct value.
21167
21168 2005-11-15  Martin Baulig  <martin@ximian.com>
21169
21170         * object.c (set_value): Use mono_class_from_mono_type() instead of
21171         the hack for generic instances; fixes #76136.
21172
21173 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21174
21175         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21176         fields.
21177
21178         * image.c (load_metadata_ptrs): Initialize the new fields.
21179
21180         * reflection.c (create_dynamic_mono_image): Ditto.
21181
21182         * reflection.c (build_compressed_metadata): Use the new fields.
21183
21184         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21185         icall.
21186
21187         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21188         icall.
21189         
21190 2005-11-15  Ankit Jain  <jankit@novell.com>
21191             Raja R Harinath  <harinath@gmail.com>
21192
21193         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21194         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21195         new per-generic_container cache if the cached MonoType's context matches
21196         the current context.
21197           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21198         to the expected context.
21199           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21200
21201 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21202
21203         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21204         we changed the signature of an icall.
21205         * icall.c: Modify to mono_double_ParseImpl return true/false 
21206         depending on the success, instead of throwing the exception. This will
21207         help us in Double.TryParse methods.
21208         
21209 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21210
21211         * marshal.c (emit_marshal_object): Throw an exception when
21212         marshalling 'object' instead of crashing. Fixes #76696.
21213
21214 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21215
21216         * class-internals.h: Add prototype for mono_type_get_full_name ().
21217
21218 2005-11-11  Dick Porter  <dick@ximian.com>
21219
21220         * threads.c (mono_thread_manage): Make sure the main thread has
21221         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21222
21223 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21224
21225         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21226         console about the missing type.
21227         (mono_loader_set_error_method_load): Ditto.
21228
21229 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21230
21231         * mono-config.c (mono_get_config_dir): Set the system defaults if
21232         none is specified.
21233
21234         * assembly.c (mono_set_dirs): New API entry point to set the
21235         assembly and the config directory in one call
21236
21237 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21238
21239         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21240         the ftnptr was created from a delegate in a domain other than the
21241         current domain. Fixes #75377.
21242
21243         * exception.h exception.c: Add mono_get_exception_not_supported ().
21244
21245 2005-11-08  Martin Baulig  <martin@ximian.com>
21246
21247         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21248
21249 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21250
21251         * security-manager.h: Added definitions to deal with strongname key 
21252         pairs bigger (and smaller) than 1024 bits.
21253         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21254         adjust wrt the public key length being used.
21255
21256 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21257
21258         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21259           Windows build (r51396-51397).
21260
21261 2005-11-03  Martin Baulig  <martin@ximian.com>
21262
21263         * class.c (mono_class_setup_vtable_general): Also add generic
21264         methods to the vtable; fixes #76581.
21265
21266 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21267
21268         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21269         sure that we lookup GetString method from the System.Text.Encoding
21270         class, not the derived class or we get an empty method.
21271
21272         Fixed class #76612.
21273
21274 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21275
21276         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21277         if it has been previously set (embedders). 
21278
21279         Make mono_set_rootdir available also on Unix.
21280
21281 005-10-24  Robert Jordan  <robertj@gmx.net>
21282
21283         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21284
21285 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21286
21287         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21288         only calls which are made to native code use this flag.
21289
21290         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21291
21292 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21293
21294         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21295         Add support for FieldBuilders.
21296
21297 2005-10-29  Martin Baulig  <martin@ximian.com>
21298
21299         * mono-debug.c
21300         (mono_debug_using_mono_debugger): New public method; returns
21301         whether we're running inside the debugger.
21302
21303 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21304
21305         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21306         for Method/Constructor/FieldBuilders.
21307
21308 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21309
21310         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21311         and fields as well.
21312
21313 2005-10-26  Martin Baulig  <martin@ximian.com>
21314
21315         * mono-debug-debugger.c
21316         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21317
21318 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21319
21320         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21321         integer to isspace.
21322
21323 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21324
21325         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21326         when passing valuetypes byref. Fixes #76502.
21327
21328 2005-10-19  Jackson Harper  <jackson@ximian.com>
21329
21330         * profiler.c: Don't put a . in front of types that are not in a
21331         namespace.
21332
21333 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21334
21335         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21336
21337 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21340         #76436.
21341         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21342
21343 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21344
21345         * assembly.c metadata-internals.h icall.c: Define an additional
21346         parameter for mono_assembly_name_parse_full, so we can avoid creating
21347         S.R.AssemblyName.Version when no version info wasn't passed.
21348         
21349 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21350
21351         * class.c (mono_type_get_full_name): Reimplement method that was
21352         removed. 
21353
21354         * image.c: Some docs
21355
21356 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21357
21358         * profiler.c (output_newobj_profile): Fix printing of Total memory
21359         on x86.
21360
21361 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21364
21365 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21366
21367         * threads.c: remove debug output.
21368
21369 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21370
21371         * threads.c (mono_thread_manage): Fix crashes if more than 64
21372         threads need to be aborted. Hopefully fixes #75899.
21373
21374         * assembly.c (mono_stringify_assembly_name): New helper function.
21375
21376         * class.c: Use mono_stringify_assembly_name instead of the similar
21377         static function.
21378
21379         * assembly.h assembly.c: Add support for calling a postload search 
21380         hook if an assembly cannot be loaded.
21381
21382         * appdomain.c: Register new search hooks which call the AssemblyResolve
21383         events in AppDomain. Fixes #75231
21384
21385 2005-10-07  Martin Baulig  <martin@ximian.com>
21386
21387         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21388         methods without debug info.
21389
21390 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21391
21392         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21393         wrappers.
21394
21395 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21396
21397         * file-io.c: now that we return symlinks, use lstat and, when the file
21398         is a symbolic link, stat, to get the file attributes. Also avoid the
21399         conversion to/from utf16/external.
21400
21401 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21402
21403         * class.c (mono_class_layout_fields): Compute klass->has_references
21404         correctly if an embedded valuetype is not yet initialized. Fixes
21405         #76331.
21406
21407 2005-10-04  Martin Baulig  <martin@ximian.com>
21408
21409         * metadata.c
21410         (mono_metadata_load_generic_param_constraints): New public
21411         function; splitted the constraints loading out from
21412         mono_metadata_load_generic_params().
21413
21414         * class.c (mono_class_create_from_typedef): Call
21415         mono_metadata_load_generic_param_constraints() after setting up
21416         the type and creating our parent; fixes #75329.
21417
21418 2005-10-04  Martin Baulig  <martin@ximian.com>
21419
21420         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21421         non-dynamic parent classes.
21422
21423 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21424
21425         * file-io.c : win32 build fix (ETXTBSY seems not found).
21426
21427 2005-10-04  Martin Baulig  <martin@ximian.com>
21428
21429         * reflection.c
21430         (mono_image_get_methodspec_token): Make the cache actually work;
21431         fixes #75974.
21432
21433 2005-10-04  Martin Baulig  <martin@ximian.com>
21434
21435         * class.c (mono_class_name_from_token): Removed the unneccessary
21436         `MonoGenericContext *' argument.
21437
21438 2005-10-04  Martin Baulig  <martin@ximian.com>
21439
21440         * loader.c
21441         (method_from_methodspec): Make the caching work again; fixes the
21442         performance regression from #76262.
21443
21444 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21445
21446         * file-io.c:
21447         * file-io.h:
21448         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21449         GetFileSystemEntries that performs the same work but without going
21450         into io-layer, locking, etc.
21451
21452 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21453
21454         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21455         ThreadState_Stopped as well. Fixes #76047.
21456
21457 2005-09-29  Martin Baulig  <martin@ximian.com>
21458
21459         * class.c
21460         (inflate_generic_context): If the new context has a `gmethod', set
21461         its `container' that that gmethod's `container'.
21462
21463         * metadata.c
21464         (mono_metadata_parse_generic_param): Simplify things;
21465         `generic_container = generic_context->container;' is just fine.
21466
21467         * loader.c (method_from_methodspec): Code cleanups.
21468
21469 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21470
21471         * decimal.c: fix warning (and let gcc generate correct
21472         code on ARM with optimizations).
21473
21474 2005-09-28  Martin Baulig  <martin@ximian.com>
21475
21476         * loader.c
21477         (method_from_memberref): Added `MonoGenericContext *class_context'
21478         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21479         (method_from_methodspec): If we're a memberref, use the enclosing
21480         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21481
21482 2005-09-28  Martin Baulig  <martin@ximian.com>
21483
21484         * object.c (mono_runtime_invoke_array): Added support for
21485         MONO_TYPE_GENERICINST; fixes #75917.
21486
21487 2005-09-27  Martin Baulig  <martin@ximian.com>
21488
21489         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21490         `k->byval_arg.type' to determine the actual type.
21491
21492         * loader.c (method_from_methodspec): Removed some hacks.
21493
21494 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21495
21496         * class-internals.h (mono_field_is_deleted): Do the test for
21497         rtspecialname before we check the actual name of the field. This
21498         prevents us from dereferencing a pointer into the string table,
21499         saving us from accessing a few pages
21500
21501         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21502         macros. This will allow a deadlock debugger to easily be plugged
21503         in.
21504
21505 2005-09-27  Martin Baulig  <martin@ximian.com>
21506
21507         * loader.c (method_from_methodspec): Create a "signature"
21508         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21509
21510 2005-09-27  Martin Baulig  <martin@ximian.com>
21511
21512         * class.c
21513         (inflate_generic_class): Correctly set the new context's
21514         container.
21515
21516         * loader.c
21517         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21518         instead of a `MonoGenericContext *'.
21519         (mono_method_signature_full): Take a `MonoGenericContainer *'
21520         instead of a `MonoGenericContext *'.
21521
21522         * metadata.c
21523         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21524         instead of a `MonoGenericContext *'.
21525         (mono_metadata_parse_method_signature_full): Likewise.
21526
21527 2005-09-26  Martin Baulig  <martin@ximian.com>
21528
21529         * class.c
21530         (mono_class_from_generic_parameter): Set `klass->generic_container'
21531         (mono_class_from_generic_parameter): Likewise.
21532         (mono_bounded_array_class_get): We inherit the generic container
21533         from the element class.
21534
21535         * loader.c
21536         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21537         argument rather than computing it here.
21538         (method_from_memberref): Correctly set the generic context before
21539         parsing the signature.  Fixes #75681.
21540
21541 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21542
21543         * object.c (mono_class_has_special_static_fields): Fix warnings.
21544
21545 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21546
21547         * assembly.c: Add parse_public_key function, to
21548         par the public keys. Also added mono_assembly_name_parse_full,
21549         to define it the parsed key should be freed or not.
21550         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21551         to parse a long format assembly name.
21552         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21553         private, since calling it to preserve the key requires
21554         freeing it manually.
21555         
21556 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21557
21558         * locales.c : removed HAVE_ICU part.
21559
21560 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21563         field_is_special_static if the klass has no special static fields.
21564
21565         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21566         (MonoCachedClassInfo): Likewise.
21567
21568         * object.c (mono_class_has_special_static_fields): New helper function.
21569
21570 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21571
21572         * class.c (mono_class_create_from_typedef): Don't call 
21573         interfaces_from_typedef_full for enums.
21574         (mono_class_create_from_typedef): Compute the base types of enums directly
21575         without calling mono_class_setup_fields ().
21576         (mono_class_find_enum_basetype): New helper function.
21577
21578         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21579         one place inside the string heap.
21580         
21581 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21582
21583         * class.c: locking fixes, code cleanups, some docs added.
21584         Allocate some data structures in the image mempool.
21585
21586 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21587
21588         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21589         the example code.
21590         
21591 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21592
21593         * class-internals.h, class.c, reflection.c: reduce memory taken by
21594         MonoClass.
21595
21596 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21597
21598         * metadata.c, metadata.h, loader.h: documentation updates, code and
21599         API cleanups.
21600
21601 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21602
21603         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21604         the example code.
21605
21606         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21607         page faults caused by the runtime while reading metadata.
21608
21609 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21610
21611         * socket-io.c: the field names were changed 3 months ago and no one
21612         realized until bug #76077 got filed!
21613
21614 2005-09-20  Martin Baulig  <martin@ximian.com>
21615
21616         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21617
21618 2005-09-20  Martin Baulig  <martin@ximian.com>
21619
21620         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21621         write the rank into the class entry.
21622
21623 2005-09-20  Martin Baulig  <martin@ximian.com>
21624
21625         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21626
21627 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21628
21629         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21630
21631         * icall.c (custom_attrs_defined_internal): New icall.
21632
21633         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21634         function.
21635         (mono_custom_attrs_construct_by_type): New helper function.
21636
21637 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21640         terminate the resulting string. Fixes #76123.
21641
21642 2005-09-16  Martin Baulig  <martin@ximian.com>
21643
21644         * mono-debug.c
21645         (mono_debug_add_method): Ignore inflated methods for the moment.
21646
21647 2005-09-14  Martin Baulig  <martin@ximian.com>
21648
21649         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21650
21651 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21652
21653         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21654         return a success/failure indication.
21655         (mono_metadata_interfaces_from_typedef_full): Ditto.
21656         (get_constraints): Ditto.
21657
21658 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21659
21660         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21661         
21662         * marshal.c (emit_marshal_array): Add support for returning string
21663         arrays from delegates. Fixes #76063.
21664
21665         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21666
21667 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21668
21669         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21670         icall.
21671
21672 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21673
21674         * reflection.c icall.c: Fix after mono_get_exception_type_load
21675         signature change.
21676
21677         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21678         (mono_assembly_load_reference): Use the new helper.
21679
21680         * class-internals.h (MonoLoaderError): New structure containing 
21681         information about type loading errors.
21682
21683         * class-internals.h loader.c: Add APIs to store per-thread loader
21684         error information.
21685
21686         * loader.c class.c: Set the loader error if needed.
21687
21688         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21689
21690 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21691
21692         * decimal.c: fixed to handle the broken ARM fp format.
21693
21694 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21695
21696         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21697         broken.
21698
21699 2005-09-06  Martin Baulig  <martin@ximian.com>
21700
21701         * domain.c (supported_runtimes): Added v2.0.50727.
21702
21703 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21704
21705         * culture-info.h: reduce the size of some structures.
21706
21707 2005-09-05  Martin Baulig  <martin@ximian.com>
21708
21709         Reflect latest API changes in the August CTP.
21710
21711         * icall.c
21712         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21713         ("MonoType.HasGenericArguments"): Removed.
21714         ("MonoMethod.BindGenericParameters"): Renamed to
21715         "MakeGenericMethod".
21716         ("MethodBuilder.BindGenericParameters"): Renamed to
21717         "MakeGenericMethod".    
21718
21719 2005-09-05  Martin Baulig  <martin@ximian.com>
21720
21721         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21722
21723 2005-09-05  Martin Baulig  <martin@ximian.com>
21724
21725         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21726
21727         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21728         generic_container is non-NULL.
21729
21730 2005-09-05  Martin Baulig  <martin@ximian.com>
21731
21732         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21733
21734         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21735
21736 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21737
21738         * reflection.c (encode_locals,
21739         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21740         for large generic types.
21741
21742 2005-09-05  Martin Baulig  <martin@ximian.com>
21743
21744         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21745
21746         * class.c (mono_dup_array_type): New public method.
21747         (mono_metadata_signature_deep_dup): New public method.
21748         (dup_type): Correctly duplicate array and function types.
21749
21750 2005-09-05  Martin Baulig  <martin@ximian.com>
21751
21752         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21753
21754         * reflection.c (get_default_param_value_blobs): Handle generic types
21755         and generic methods.
21756
21757 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21758
21759         * class.c: Fixed error reporting (method/class were inversed) for 
21760         inheritance demands.
21761         * security-manager.c|h: Added the AppDomain when calling the managed
21762         System.Security.SecurityManager.InheritanceDemand method.
21763
21764 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21765
21766         * reflection.c (encode_marshal_blob): 'marshaltype' and
21767         'marshaltyperef' are alternate sources for the custom marshaler
21768         name.
21769
21770 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21771
21772         * class.c: fix creation of array classes with rank == 1
21773         (patch by Ankit Jain <jankit@novell.com>).
21774
21775 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21776
21777         * object.c: fix check for creating the bound data for arrays vs
21778         szarrays.
21779
21780 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21781
21782         * object.c: configuration file name is now based on the executable name,
21783         not the image name. Fixes bug #75931.
21784
21785 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21786
21787         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21788         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21789
21790 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21791
21792         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21793
21794 2005-08-24  Ankit Jain  <jankit@novell.com>
21795             Raja R Harinath  <rharinath@novell.com>
21796
21797         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21798           called by it recursively.
21799           (mono_class_init): Remove special case in pending_init handling, since it's
21800           superseded by the fix to mono_class_from_typeref.
21801
21802 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21805         BROKEN_THREAD_START stuff.
21806
21807 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21808
21809         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21810         trampoline.
21811
21812         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21813         
21814         * object.c (mono_delegate_ctor): Replace the original function address with
21815         a delegate trampoline.
21816
21817 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21818
21819         * icall.c: add boolean argument to base64_to_byte_array and 
21820         InternalFromBase64String to control whether a whitespace-only string
21821         is allowed (or should casue a FormatException to be thrown). We need
21822         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21823         to match the MS behaviour in both profiles.
21824         * appdomain.c: Bump corlib version.
21825
21826 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21827
21828         This patch implements a big portion of publisher policy
21829         support, used to bind assembly versions and redirect
21830         one assembly from version A to version B.
21831
21832         * assembly.c:
21833         New GSList loaded_assembly_bindings, for storing the cached
21834         assembly bindings.
21835         (assembly_binding_maps_name): New static function for checking if a 
21836         assembly binding information maps an assembly name.
21837         (mono_assembly_binding_info_free): New function for freeing
21838         assembly binding information resources.
21839         (get_publisher_policy_info): New static function for retrieving 
21840         assembly binding information from a MonoImage.
21841         (compare_versions): New static function for comparing an assembly
21842         binding information data and the version of an assembly name.
21843         (check_policy_versions): New static function for checking if an
21844         assembly binding info mapping an assembly name is valid for it.
21845         (mono_assembly_load_publisher_policy): New static function for
21846         loading the 'policy.major.minor.MyAssembly' image for an assembly
21847         with an assembly name 'aname'.
21848         (mono_assembly_bind_version): New static function for updating
21849         assembly redirection.
21850         (mono_assembly_apply_binding): New static function for applying
21851         assembly binding.
21852         (search_binding_loaded): New static function for searching 
21853         loaded assembly binding infos in the cache domain.
21854         (mono_assembly_load_full): Don't apply assembly binding for
21855         reflection only assemblies.
21856
21857         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21858         which contains information about assembly binding. Also
21859         declare signature for mono_config_parse_publisher_policy ()
21860         function, used to retrieve pub policy info.
21861         
21862         * mono-config.c:
21863         (publisher_policy_start): New static function used to parse publisher 
21864         policy config files.
21865         (publisher_policy_parser): New static MonoParseHandler containing 
21866         the functions used when parsing config files.
21867         (mono_config_parse_publisher_policy): New function for parsing
21868         publisher policy files.
21869         
21870 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21871
21872         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21873
21874         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21875
21876         * object.c (mono_get_addr_from_ftnptr): New helper function.
21877
21878         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21879
21880         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21881
21882 2005-08-19  Dick Porter  <dick@ximian.com>
21883
21884         * threads.c, threads.h, appdomain.c, appdomain.h,
21885         profiler-private.h, monitor.c, object.c, object-internals.h,
21886         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21887         store the thread ID, so it can hold a 64 bit value if needed.
21888
21889 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21890
21891         * reflection.c (mono_reflection_create_dynamic_method): Store the
21892         handle class into the method references as well so ldtoken works in
21893         dynamic methods.
21894
21895         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21896         types.
21897
21898 2005-08-19  Ankit Jain <jankit@novell.com>
21899
21900         Fix #75847.
21901         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21902           here rather than using the method signature of a arbitrary function
21903           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21904           two arguments.
21905           Hack done with Harinath.
21906
21907 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21908
21909         * threadpool.c: disable printing stack traces when we get a exception
21910         in a threadpool thread. I need to do more testing to figure out which
21911         cases actually print this. Fixes bug #75828.
21912
21913 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21914
21915         * icall.c: there might be ignored whitespace after the last '='. This
21916         fixes length computation and bug #75840.
21917
21918 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
21919
21920         * assembly.c (mono_assembly_load_full): Consider .exe extension as
21921         well. Fixes #75809.
21922
21923         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
21924         #75784.
21925         
21926         * reflection.c (create_custom_attr_data): Ditto.
21927
21928 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
21929
21930         * locales.c, culture-info.h : removed RegionLCIDMap.
21931         * culture-info-tables.h : regenerated.
21932
21933 2005-08-16  Martin Baulig  <martin@ximian.com>
21934
21935         * class.c (mono_type_get_name_recurse): Small fix.
21936
21937 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
21938
21939         * locales.c : indentation fixie.
21940
21941 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
21942
21943         * object-internals.h,
21944           locales.h,
21945           locales.c,
21946           culture-info.h,
21947           icall.c : added RegionInfo table support.
21948         * culture-info-table.h : regenerated for region support.
21949
21950 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
21951
21952         * reflection.c (resolve_object): handle all kinds of MonoMethod
21953         including generic ones
21954
21955 2005-08-12  Ankit Jain <jankit@novell.com>
21956
21957         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
21958           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
21959
21960 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
21961
21962         * process.c: Don't close a thread handle when it's NULL. This is a
21963         workaround for bug #75733.
21964
21965 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
21968
21969 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
21972
21973 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21974
21975         * threadpool.c: if a work item in the thread pool has a callback that
21976         catches a exception, don't propagate it after invoking the callback.
21977         Fixes bug #75336.
21978
21979 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
21980
21981         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
21982
21983         * class-internals.h (MonoCachedClassInfo): Add some new fields.
21984
21985         * class.c (mono_class_init): Load field info lazily in the AOT case.    
21986
21987         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
21988
21989 2005-08-03  Ankit Jain  <jankit@novell.com>
21990
21991         Fix #75683.
21992         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
21993           PInvoke calling convention is 0.
21994
21995 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
21996
21997         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
21998         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
21999
22000 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22001
22002         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22003         to handle threads not started by the GC (patch by Michael Meeks
22004         <michael.meeks@novell.com>).
22005
22006 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22007
22008         * reflection.c: Make buffer used in emitting types larger for some
22009         big generic types (patch by Michal Moskal).
22010
22011 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22012
22013         * mono-debug.c: Fix some (not all) alignment problems.
22014
22015 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22016
22017         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22018         Invoke mono_image_load_from_data_full passing the refonly
22019         parameter.
22020
22021         * assembly.c
22022         (mono_assembly_open_from_bundle): Add the refonly argument, 
22023         in order to pass it to other methods it calls to.
22024         (do_mono_assembly_open): Add the refonly argument, in order 
22025         to pass it to other methods it calls to.
22026         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22027         the refonly parameter to it.
22028
22029         * image.c: Add loaded_images_refonly_hash and
22030         loaded_images_refonly_guid_hash to cache the reflection
22031         only loaded images.
22032         (mono_images_init): Initialize the hash tables used for
22033         caching the reflection only images.
22034         (load_modules): Invoke mono_image_open_full passing the refonly
22035         parameter to load the modules the correct way.
22036         (build_guid_table): Add the refonly argument, to re-build the 
22037         correct hash table.
22038         (do_mono_image_open): Added the refonly argument, in order to
22039         define it for the loaded image.
22040         (mono_image_loaded_full): New function, which receives an
22041         additional parameter to look for the image in the refonly or
22042         non-refonly section.
22043         (mono_image_loaded): Updated, using mono_image_loaded_full.
22044         (mono_image_loaded_by_guid_full): The same case that happens
22045         with mono_image_loaded_full.
22046         (mono_image_loaded_by_guid): Likewise.
22047         (register_image): Use the ref_only variable inside MonoImage
22048         to decide in which hash table store the current image.
22049         (mono_image_open_from_data_full): Rename
22050         mono_image_open_from_data to mono_image_open_from_data_full,
22051         adding the refonly argument, to define the ref_only variable 
22052         inside MonoImage.
22053         (mono_image_open_from_data): Return 
22054         mono_image_open_from_data_full.
22055         (mono_image_open_full): Rename mono_image_open to
22056         mono_image_open_full, receiving the new refonly argument,
22057         to pass it to inner methods.
22058         (mono_pe_file_open): Update this function, to open
22059         a MonoImage as a non-refonly image.
22060         (mono_image_close): Use the refonly variable inside
22061         MonoImage to remove the image from the correct caches.
22062
22063         * image.h: Add the signatures of mono_image_open_full,
22064         mono_image_open_from_data_full, mono_image_loaded_full,
22065         mono_image_loaded_by_guid_full.
22066
22067         * metadata-internals.h: Add the ref_only field to 
22068         MonoImage.
22069         
22070 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22071
22072         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22073         Fix the last behavior, which used to load the assemblies and
22074         extract MonoReflectionAssemblyName information, instead of
22075         extract it from the metadata tables. Needed for Reflection
22076         Only assemblies.
22077         
22078 2005-07-29  Martin Baulig  <martin@ximian.com>
22079
22080         * mono-debug-debugger.c
22081         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22082         not initialized.
22083
22084         * mono-debug.c
22085         (mono_debug_address_from_il_offset): Check whether we have
22086         debugging support before attempting to take the lock.
22087         (mono_debug_source_location_from_address): Likewise.
22088         (mono_debug_source_location_from_il_offset): Likewise.
22089         (mono_debug_il_offset_from_address): Likewise.
22090         (mono_debug_address_from_il_offset): Likewise.
22091
22092 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * class.c (mono_class_from_name_case): Add support for dynamic images.
22095         Fixes #75650.
22096
22097         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22098         for #75479.
22099
22100 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22101         
22102         * reflection.c (mono_method_get_object): Fix warning.
22103
22104 2005-07-28  Martin Baulig  <martin@ximian.com>
22105
22106         * mono-debug.c
22107         (mono_debug_add_wrapper): Also write the wrapper type.
22108
22109 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22110
22111         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22112         
22113         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22114         data indicates the class has none.
22115
22116 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22117
22118         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22119         loader lock with the debugger lock. Prevents deadlocks for beagle.
22120
22121         Beagle can now run on an smp box for a weekend without any
22122         issues. Woohoo!
22123
22124 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22125
22126         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22127         in a module. Fixes #75629.
22128
22129 2005-07-26  Martin Baulig  <martin@ximian.com>
22130
22131         * mono-debug.c (mono_debug_add_wrapper): New static method.
22132         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22133         interncall or a wrapper.
22134
22135         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22136         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22137         (MONO_DEBUGGER_VERSION): Bump to 51.
22138
22139         * mono-debug-debugger.c
22140         (mono_debugger_add_type): Removed this empty function.
22141         (mono_debugger_add_method): Likewise.
22142
22143 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22144
22145         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22146         before accessing method->slot.
22147
22148 2005-07-21  Jb Evain  <jbevain@gmail.com>
22149
22150         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22151         Fixes #75010.
22152
22153 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22156         #75587.
22157
22158 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * image.h image.c: Add mono_image_get_guid () API function.
22161
22162 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22163
22164         There were issues when multiple threads tried to load
22165         assemblies. A deadlock was created between assemblies_mutex and
22166         mono_domain_assemblies_lock. This fixes the issue by making the
22167         assembly ref counting be lock free. See bug 75586.
22168         
22169         * image.c (mono_image_close): The add ref function here was using
22170         Interlocked operations while the unref was using a mutex and a
22171         --. I don't think this was ever a bug that would be exposed in a
22172         non-pendantic way (ie, by an embedder doing a ref on one thread
22173         and an unref on another), but for the sake of correctness, this is
22174         now Interlocked.
22175
22176         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22177         (mono_assembly_load_reference): Call mono_assembly_addref rather
22178         than touching the refcount ourselves.
22179         (mono_assembly_close): Use InterlockedDecrement to unref the
22180         assembly. Don't acquire the lock unless it is actually needed.
22181
22182 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22183
22184         * class.c (mono_class_layout_fields): Fix calculation of has_references
22185         for generic types.
22186
22187 2005-07-12  Martin Baulig  <martin@ximian.com>
22188
22189         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22190
22191         * metadata.c
22192         (mono_type_hash): Provide better hashing for generic instances.
22193         (mono_generic_inst_hash): Improve hashing.
22194         (mono_generic_class_hash): Likewise.
22195
22196         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22197         generic instances.
22198
22199 2005-07-12  Martin Baulig  <martin@ximian.com>
22200
22201         * reflection.c (mono_reflection_create_runtime_class): Remove the
22202         hack for generic type definitions and non-`Run' assemblies.
22203         (mono_reflection_bind_generic_parameters): Also use
22204         `klass->wastypebuilder' to check for TypeBuilders.
22205
22206 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22207
22208         * class.c (mono_class_layout_fields): Fix calculation of has_references
22209         for generic types.
22210
22211         * class.c (inflate_generic_class): Fix a leak.
22212         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22213         for generic types.
22214
22215 2005-07-11  Martin Baulig  <martin@ximian.com>
22216
22217         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22218         on error.
22219
22220 2005-07-11  Martin Baulig  <martin@ximian.com>
22221
22222         * loader.c (find_method): Also lookup in
22223         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22224
22225 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22226
22227         * appdomain.c (mono_domain_unload): Don't free the error message
22228         before passing it to mono_get_exception_...
22229
22230         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22231         
22232 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22233
22234         * threads.c: try to better guess an available RT signal (bug #75387).
22235
22236 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22237
22238         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22239         and CACHE_OBJECT.
22240
22241 2005-07-07  Martin Baulig  <martin@ximian.com>
22242
22243         * class.c (mono_type_get_name_full): Return NULL for
22244         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22245         fixes #75408.
22246
22247 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22248
22249         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22250         exit the appdomain as well being aborted.
22251
22252         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22253         change back to the root domain after calling managed code. This enables
22254         appdomains using threadpools to be unloaded.
22255
22256 2005-07-07  Martin Baulig  <martin@ximian.com>
22257
22258         * class-internals.h
22259         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22260         into `MonoDynamicGenericClass' since we only need it for dynamic
22261         types.
22262
22263         * reflection.c (mono_class_bind_generic_parameters): We don't need
22264         to compute the `parent' here.
22265
22266 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22267
22268         * culture-info-table.h : regenerated.
22269
22270 2005-07-06  Martin Baulig  <martin@ximian.com>
22271
22272         * icall.c
22273         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22274
22275         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22276
22277 2005-07-06  Martin Baulig  <martin@ximian.com>
22278
22279         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22280         we're doing a signature-only comparision; fixes #74945.
22281
22282 2005-07-06  Martin Baulig  <martin@ximian.com>
22283
22284         * class-internals.h (MonoGenericClass): Moved some things out into
22285         a new `MonoInflatedGenericClass' type.  
22286         (MonoInflatedGenericClass): New type; the `klass' of a
22287         `MonoGenericClass' is now computed lazyly in
22288         mono_get_inflated_generic_class().      
22289
22290         * class.c (mono_get_inflated_generic_class): New public function.
22291         (mono_class_inflate_generic_method): Removed the unused
22292         `MonoClass *' argument.
22293         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22294         all the methods.
22295         (mono_class_create_generic): Make this static and merge it with
22296         mono_class_create_generic_2(); we're now called automatically from
22297         mono_get_inflated_generic_class().
22298
22299         * loader.c (mono_method_signature): Call
22300         mono_get_inflated_method() here.
22301
22302 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22303
22304         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22305         type of fields with RVA.
22306
22307         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22308         for this pseudo class.
22309         (my_mono_class_from_generic_parameter): Likewise.
22310         (mono_class_init): Allow interfaces to have cctors.
22311
22312 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22313
22314         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22315         lazily for AOT methods.
22316
22317 2005-07-05  Martin Baulig  <martin@ximian.com>
22318
22319         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22320         returns FALSE for a successful match, not TRUE.
22321
22322 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22323
22324         * loader.c (mono_method_get_index): Optimize this a bit.
22325
22326 2005-07-04  Martin Baulig  <martin@ximian.com>
22327
22328         * class.c
22329         (class_compute_field_layout): Move the check for generic type
22330         definitions into mono_class_layout_fields().  Fixes #74684.
22331         (mono_class_from_generic_parameter): Correctly compute
22332         `klass->parent'; fixes #75457.
22333
22334         * reflection.c (register_assembly, register_module): Make sure
22335         `domain->rejobject_hash' is already created.
22336
22337 2005-07-02  Martin Baulig  <martin@ximian.com>
22338
22339         * class-internals.h
22340         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22341         `MonoDynamicGenericClass'.      
22342
22343 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22344
22345         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22346         returned by a field getter is null, since null is a valid value.
22347
22348 2005-07-01  Martin Baulig  <martin@ximian.com>
22349
22350         * reflection.c (mono_reflection_generic_class_initialize): Update
22351         the `dgclass->fields [i].parent' to the correct class.
22352         (mono_image_get_fieldref_token): Use the declaring type, not the
22353         reflected type.
22354
22355 2005-07-01  Martin Baulig  <martin@ximian.com>
22356
22357         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22358
22359 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22360
22361         * threads.c (thread_cleanup): assert that thread != NULL
22362         (wait_for_tids_or_state_change): We were using the wrong variable
22363         when accessing wait->threads. `i' was always out of the bounds of
22364         the array.
22365
22366 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22367
22368         * loader.c: map user32 and kernel32 to libMonoSupportW
22369
22370 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22371
22372         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22373
22374 2005-06-28  Martin Baulig  <martin@ximian.com>
22375
22376         * loader.c (method_from_methodspec): Fix #75334.
22377
22378 2005-06-28  Martin Baulig  <martin@ximian.com>
22379
22380         Fix #74953 - Arrays now implement the generic IList<T> interface
22381         on the 2.0 platform.
22382
22383         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22384
22385         * reflection.c (mono_class_bind_generic_parameters): New public
22386         function; similar to mono_reflection_bind_generic_parameters(),
22387         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22388
22389         * domain.c (mono_init_internal): Try to initialize.
22390         `mono_defaults.generic_array_class' here; this'll only succeed if
22391         we're using the 2.0 corlib.
22392
22393         * icall.c
22394         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22395         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22396         (mono_lookup_internal_call): Added support for nested classes.
22397
22398         * loader.c
22399         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22400         we're an interncall and have generic arguments.
22401
22402         * class.c
22403         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22404         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22405         instance of System.Array.InternalArray<T> for arrays, so they
22406         implement the generic IList<T> interface.
22407
22408 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22409
22410         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22411         (chastamar@yahoo.com). Fixes #75374.    
22412
22413 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22414
22415         * culture-info-table.h: regenerated.
22416
22417 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22418
22419         * icall.c: handle spaces correctly for base64 strings.
22420
22421 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22422
22423         * *.c: Kill some warnings.
22424
22425 2005-06-23  Duncan Mak  <duncan@novell.com>
22426
22427         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22428         that this builds on Solaris 10 (x86).
22429
22430 2005-06-23  Martin Baulig  <martin@ximian.com>
22431
22432         * class.c
22433         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22434         generic type definitions.
22435
22436 2005-06-23  Martin Baulig  <martin@ximian.com>
22437
22438         Fix #75331.
22439
22440         * metadata.c (mono_class_get_overrides): Renamed to
22441         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22442         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22443         pass it to mono_get_method_full().
22444
22445 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22446
22447         * reflection.c (mono_reflection_create_runtime_class): take the
22448         mono_domain_lock in this method. Prevents deadlocks
22449
22450 2005-06-22  Martin Baulig  <martin@ximian.com>
22451
22452         * loader.c (method_from_methodspec): Fix #75330.
22453
22454 2005-06-22  Martin Baulig  <martin@ximian.com>
22455
22456         * reflection.c (type_get_qualified_name): Use
22457         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22458         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22459         argument; use it if we don't have an assembly name.
22460
22461 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22462
22463         * object.c: In mono_message_init, set "copy out" flag for in
22464         parameters with the [Out] flag.
22465
22466 2005-06-21  Martin Baulig  <martin@ximian.com>
22467
22468         * class.c
22469         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22470         and MONO_TYPE_PTR.
22471
22472 2005-06-21  Martin Baulig  <martin@ximian.com>
22473
22474         * class.c (mono_class_init): Don't initialize `class->fields' for
22475         generic instances since they're initialized again in
22476         compute_field_layout(). 
22477         (compute_field_layout): Set the field's `generic_info' here; fix
22478         #75320. 
22479
22480 2005-06-21  Martin Baulig  <martin@ximian.com>
22481
22482         * class-internals.h
22483         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22484
22485         * metadata.c (mono_metadata_generic_method_equal): Also
22486         distinguish the `generic_class'; fixes #75334.
22487
22488 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22489
22490         * domain.c:
22491         * appdomain.c:
22492         * domain-internals.h:
22493         * reflection.c: 'domain_assemblies' field is now protected by its own
22494         lock. Don't call into managed code to run the AssemblyLoad event if we
22495         now there are no registered delegates for it.
22496
22497 2005-06-20  Martin Baulig  <martin@ximian.com>
22498
22499         * class.c (mono_class_is_assignable_from): Use a custom version of
22500         mono_class_has_parent() to make things work for generic instances;
22501         fix #75300.
22502
22503 2005-06-20  Martin Baulig  <martin@ximian.com>
22504
22505         * loader.c (method_from_methodspec): Apply a patch from
22506         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22507
22508 2005-06-20  Martin Baulig  <martin@ximian.com>
22509
22510         * class.c (mono_class_init): Reverted Zoltan's last change; it
22511         breaks generics.
22512
22513 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22514
22515         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22516
22517 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22518
22519         * socket-io.c: fix the index in the socket array for writable/error
22520         sockets. Fixes bug #75306.
22521
22522 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * class.c (mono_class_init): Allow interfaces to have static ctors.
22525
22526 2005-06-17  Martin Baulig  <martin@ximian.com>
22527
22528         * loader.c (method_from_methodspec): Use `context->container' when
22529         parsing the `gmethod->inst'.
22530
22531 2005-06-17  Martin Baulig  <martin@ximian.com>
22532
22533         * class.c (mono_type_get_name_recurse): Don't add the assembly
22534         name for type arguments.
22535
22536 2005-06-15  Martin Baulig  <martin@ximian.com>
22537
22538         * reflection.c (mono_image_get_inflated_method_token): Encode
22539         correct klass; fixes #75260.
22540
22541 2005-06-13 Michal Moskal <malekith@nemerle.org>
22542
22543         * icall.c: Make GetCorrespondingMethod/Constructor take
22544         MonoReflectionMethod method not MonoMethod. Removed
22545         MonoType.GetCorrespondingField, and make
22546         MonoGenericType.GetCorrespondingField take name not
22547         MonoClassField.
22548
22549 2005-06-13  Michal Moskal <malekith@nemerle.org>
22550
22551         * reflection.c (field_encode_signature, encode_locals):
22552          Make sizes of buffers for types larger (for big generic types).
22553          (create_generic_typespec,
22554          mono_reflection_sighelper_get_signature_local,
22555          mono_reflection_sighelper_get_signature_field):
22556          Add asserts for too small buffers.
22557
22558 2005-06-15  Martin Baulig  <martin@ximian.com>
22559
22560         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22561         if our parent is not a dynamic type.
22562
22563 2005-06-15  Martin Baulig  <martin@ximian.com>
22564
22565         * class-internals.h (MonoTypeNameFormat): New enum.
22566
22567         * class.c
22568         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22569         (mono_type_get_full_name): Removed.
22570         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22571         argument instead of the boolean's.
22572
22573         * icall.c (ves_icall_System_MonoType_getFullName):
22574         Added `gboolean assembly_qualified'.    
22575
22576         * reflection.h
22577         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22578
22579         * reflection.c (mono_reflection_parse_type): Parse the new type
22580         name format.
22581
22582 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22583
22584         * icall.c: no need to convert from utf16 to utf8 and then back again
22585         after the call to GetLogicalDrives.
22586
22587 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22588
22589         * icall.c: frombase64. Fix problems exposed by new tests.
22590
22591 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22592
22593         * icall.c: added internal calls for converting char [] and strings in
22594         base64 into byte [].
22595
22596 2005-06-10  Martin Baulig  <martin@ximian.com>
22597
22598         * class.c (mono_class_create_generic_2): Read the nested classes
22599         from the metadata rather than from `gklass->nested_classes' since
22600         `gklass' might not be initialized yet.
22601
22602 2005-06-09  Duncan Mak  <duncan@novell.com>
22603
22604         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22605         all public headers. Fixes #74919.
22606
22607 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22608
22609         * domain.c: The key for proxy_vtable_hash is now a pointer
22610         array. Added new GHashFunc and GCompareFunc functions for this.
22611
22612         * class.h: The list of interfaces in MonoRemoteClass is known in
22613         advance and can't grow (we create a new MonoRemoteClass if needed),
22614         so now the interface array can be allocated together with
22615         MonoRemoteClass.
22616         
22617         * object.c: Added a new method create_remote_class_key.
22618         Fixed mono_remote_class so it does not depend on
22619         mono_upgrade_remote_class.
22620         Removed extend_interface_array.
22621         Added new method clone_remote_class(), which makes a copy of a remote
22622         class and adds a new interface or class to it.
22623         mono_upgrade_remote_class() now creates a new remote class (or gets
22624         it from the cache) if an vtable upgrade is needed. In this way
22625         we make sure that other objects sharing the same remote class
22626         don't get the new vtable with unwanted interfaces.
22627         
22628         * object-internals.h:
22629         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22630         
22631         * marshal.c: Track changes in mono_upgrade_remote_class().
22632
22633 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22634         * icall.c: Add runtime methods for obtaining members of inflated
22635         class, which were created from supplied non-inflated members. It
22636         is used in internal Get{Method,Constructor,Field} methods in
22637         System.Type
22638
22639 2005-06-09  Martin Baulig  <martin@ximian.com>
22640
22641         * reflection.c
22642         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22643
22644 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22645         * reflection.c (mono_image_basic_init): Define
22646         Version in MonoDynamicAssembly. 
22647         
22648 2005-06-08  Martin Baulig  <martin@ximian.com>
22649
22650         Fix #75136.
22651
22652         * loader.c
22653         (mono_method_signature_full): New public method; takes a
22654         `MonoGenericContext *'.
22655         (find_method): Use mono_method_signature_full() and pass the
22656         klass'es context to it.
22657
22658         * class.c (mono_class_is_inflated_method): Use
22659         mono_method_signature_full() and pass the context to it.
22660
22661 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22662
22663         * object.c: add proper locking in mono_remote_class_vtable(),
22664         fixes possible memory corruption.
22665
22666 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22667
22668         * marshal.c (mono_remoting_marshal_init): set
22669         initialized after initialization.
22670
22671 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22672
22673         * locales.c : hush.
22674
22675 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22676
22677         * object.c (extend_interface_array): fix really silly
22678         memory corrupting / comparison bug.
22679
22680 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22681
22682         * reflection.c: Functions added to support the creation
22683         of CustomAttributeData, which includes Attribute data
22684         used by ReflectionOnly methods.
22685
22686         * reflection.h:  mono_reflection_get_custom_attrs_data and
22687          mono_custom_attrs_data_construct added (functions exposed).
22688
22689          * icall.c: Added mono_reflection_get_custom_attrs_data
22690          as icall.
22691         
22692 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22693
22694         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22695         lupus's request.
22696
22697 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22698
22699         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22700
22701         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22702         dynamic DllImportAttribute.
22703
22704         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22705         dynamic DllImportAttribute.
22706
22707         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22708         Fixes #75162.
22709
22710 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22711
22712         * threads.c: avoid segfault when an unstarted thread is aborted.
22713
22714 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22715
22716         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22717         Returns the name and version of the runtime for reporting.
22718
22719 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22720
22721         * appdomain.c: bump corlib version.
22722         * object-internals.h: new field in MonoReflectionAssembly.
22723
22724 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22725
22726         * object-internals.h: Carlos forgot to add this field.
22727
22728 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22729
22730         * icall.c: Added create_version to create instances
22731         of Version of MonoReflectionAssemblyName. This change helps
22732         the AssemblyName tests to keep running fine.
22733         
22734 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22735   
22736         * object.c (mono_method_return_message_restore): A somehow less
22737         intrusive fix for #75138.
22738
22739 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22740
22741         * object.c (mono_method_return_message_restore): Fix computation
22742         of expected number of out args.
22743
22744 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * reflection.c (mono_image_get_method_info): Fix the case when the
22747         charset is empty.
22748
22749 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22750
22751         * object.c: Added missing null check in
22752           mono_method_return_message_restore.
22753
22754 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22755
22756         * reflection.c (mono_image_get_method_info): Handle the case when
22757         dllentry is empty.
22758
22759 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22760
22761         * object.c: When creating the vtable for a proxy, take into account
22762         all inherited interfaces, not only the ones registered in
22763         iclass->interfaces. This fixs bug #74996.
22764         Also, in mono_method_return_message_restore, verify that the array
22765         of out args has the expected lengh.
22766
22767 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22768
22769         * socket-io.c: update the timeout in Poll when the call is interrupte.
22770
22771 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22772
22773         * socket-io.c: support abort/suspend in Select_internal after last
22774         change.
22775
22776 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22777
22778         * threadpool.c: remove warning.
22779
22780 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22781
22782         * icall.c:
22783         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22784         removing the 1024 limit from select(). Runtime part of the fix for
22785         bug #71203.
22786
22787 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22788
22789         * socket-io.c: when resolving the addresses for the same
22790         host returned by gethostname(), get the local IPs from the interface
22791         list. Loopback addresses are discarded if the are interfaces up with
22792         non-loopback ones. Fixes bug #63265.
22793
22794 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22795
22796         * appdomain.c, verify.c, object-internals.h, reflection.c:
22797         bumped corlib number to 36, and added new extra_flags field
22798         to ReflectionMethodBuilder and friends.  Fixes #75060.
22799
22800 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22801
22802         * gc.c: register a new weak link only if the object is non-null
22803         (fixes bug#75047).
22804
22805 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22806
22807         * culture-info.h : short time pattern too.
22808
22809 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22810
22811         * culture-info.h : expand long time pattern string length.
22812
22813 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22814
22815         * culture-info-table.h : update (more French date format; #72788).
22816
22817 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22818
22819         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22820         the method is static. Fixes #75029.
22821
22822 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22823
22824         * reflection.c: Update the table_idx field of method builders after
22825         saving the module, since it can change. This is a workaround for
22826         bug #74914. 
22827
22828 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22829
22830         * culture-info-table.h : update (additional French date format).
22831
22832 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22833
22834         * icall.c (ves_icall_type_Equals): Revert last change.
22835         
22836         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22837
22838         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22839
22840 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22841
22842         * class-internals.h: Added executioncontext_class field to 
22843         MonoDefaults structure.
22844         * domain.c: Cache System.Threading.ExecutionContext class in 
22845         mono_defaults.
22846         * object.c: Capture the ExecutionContext for asynchroneous calls in
22847          mono_async_result_new.
22848         * object-internals.h: Added execution_context and original_context 
22849         fields to MonoAsyncResult. Added execution_context to MonoThread.
22850         * security-manager.c|.h: Added mono_get_context_capture_method to 
22851         return the capture method (if required by the security manager or by
22852         the framework version used).
22853         * threadpool.c: Apply capture (if present) ExecutionContext in 
22854         mono_async_invoke and revert to original context after it completes.
22855
22856 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22857
22858         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22859
22860 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22861
22862         * culture-info-table.h : zh-CHT related workaround.
22863
22864 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22865
22866         * marshal.c (emit_marshal_custom): Add some error checking and call the
22867         methods in the ICustomMarshaler interface. Fixes #74875.
22868         
22869         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22870         native->managed wrappers.
22871
22872 2005-05-12  Martin Baulig  <martin@ximian.com>
22873
22874         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22875         here and use the loader lock.
22876
22877         * mono-debug.c: Properly lock when the debugger is not attached.
22878         (mono_debug_init): Release the initial lock if we're not running
22879         in the debugger.
22880
22881 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22882
22883         * marshal.c (emit_marshal_custom): Pass through NULL values without
22884         calling the custom marshalling routines.
22885
22886         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22887         conversion in structures. Fixes #74882.
22888
22889 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22890
22891         * culture-info-table.h : zh-* cultures were missing.
22892
22893 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22894
22895         * threads.c: Added a new event background_change_event which is signaled
22896         when a thread changes its background mode.
22897         Moved here several checks previously done in managed code. The checks
22898         require the thread lock, and using the thread lock in managed code
22899         can result in deadlocks.
22900         Merged Start_internal and Thread_internal into a single method. Now 
22901         Thread_internal does all work of creating and starting a thread.
22902         Added icalls for setting and getting the state of the object. Moved from
22903         managed code to avoid locking there.
22904         Added wait_for_tids_or_state_change() which is called instad of
22905         wait_for_tids when waiting for non-backround threads to end. This method
22906         will return if one of the threads ends or the background_change_event
22907         is signaled.
22908         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22909         the background mode. This method signals the background_change_event
22910         event.
22911         * icall.c:
22912         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
22913         removed Start_internal.
22914         
22915 2005-05-11  Martin Baulig  <martin@ximian.com>
22916
22917         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
22918         to order of some fields to get proper alignment on 64-bit machines.
22919
22920 2005-05-11  Martin Baulig  <martin@ximian.com>
22921
22922         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
22923         changes as they're broken and completely fuck up the debugger.
22924
22925         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
22926
22927 2005-05-10  Martin Baulig  <martin@ximian.com>
22928
22929         * reflection.c (mono_reflection_generic_class_initialize): Don't
22930         call mono_class_setup_parent() here.
22931
22932 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22933
22934         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
22935         send/receive timeout use an integer in milliseconds. We were using a
22936         struct timeval.
22937
22938 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22939
22940         * locales.c:
22941         (internal_get_cultures): reserve the first slot of the array for the
22942         InvariantCulture, which will be filled in managed code.
22943
22944 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
22945
22946         * reflection.c (mono_image_fill_module_table): Initialize the
22947         GENERATION field as well.
22948
22949 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22950
22951         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
22952         Monitor.Enter on the object.
22953
22954 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
22955
22956         * threads.c: Enable the wait for running threads when exiting.
22957         * icall.c: Suspend all threads before exiting.
22958
22959 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * assembly.c (mono_assembly_load_reference): Fix warning.
22962
22963 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22964
22965         * threadpool.c: changed the default number of threads per cpu. From now
22966         on, the default will be 20 + (5 * number of cpus) instead of 50.
22967
22968 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
22969
22970         * loader.c (mono_method_get_signature_full): Add locking here.
22971
22972 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
22973
22974         * appdomain.c: Moved methods for parsing and freeing assembly
22975         names to assembly.c.
22976         * assembly.c, domain-internals.h: Created public methods for parsing
22977         assembly names. Fixed mono_assembly_load_with_partial_name:
22978         it now finds the best match, taking into account the version,
22979         token and culture specified in the partial name. Also return
22980         the latest version if no version information is specified.
22981
22982 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
22983
22984         * threadpool.c: replace check for SocketAsyncCall class.
22985
22986 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22987
22988         * threadpool-internals.h:
22989         * Makefile.am: added threadpool-internals.h
22990
22991         * threadpool.c: call mono_unhandled_exception on exceptions not handled
22992         that happen in threadpool threads (tested on MS).
22993         (mono_thread_pool_remove_socket): new function that dispatch any pending
22994         AIO call on a socket that is closing. By now only epoll really needs it,
22995         as select/poll wake up when the socket closes.
22996
22997
22998         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
22999
23000 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23001
23002         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23003
23004 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23005
23006         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23007
23008 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23009
23010         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23011         has an abort request, convert it into a suspend request.
23012
23013 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23014
23015         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23016         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23017         is not supported yet.
23018
23019 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23020
23021         * image.c: register assemblies loaded from data (bundles) in the loaded
23022         assemblies hash. Fixes bug #74772.
23023
23024 2005-04-29  Martin Baulig  <martin@ximian.com>
23025
23026         * class.c (mono_type_get_name_recurse): Update to the new naming
23027         schema from the latest .NET 2.x beta2.
23028         (mono_class_setup_vtable_general): If we're a generic instance,
23029         copy the vtable from our generic type definition and inflate all
23030         the methods in it.
23031
23032         * loader.c (find_method): Update to the new naming schema from the
23033         latest .NET 2.x beta2.
23034
23035 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23036
23037         * class.c (mono_class_init): Add a mono_loader_unlock to the
23038         #74734 fix.
23039
23040 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23043         suspend_all_other_threads () call for the time being, since it can hang.
23044
23045         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23046         the background threads to exit, since it can also hang.
23047
23048         * class.c (mono_class_init): Applied patch from Ankit Jain 
23049         (radical@gmail.com). Avoid pending init errors when a field refers
23050         to a nested class using a typeref. Fixes #74734.
23051
23052         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23053         this for dynamic modules.
23054
23055 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23056
23057         * threads.c: don't wait for threads that are in the process of aborting
23058         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23059         and waiting for background threads to finish. This makes xsp and
23060         mod-mono-server exit without random length delays and/or hangs.
23061
23062 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23063
23064         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23065
23066 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23067
23068         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23069         dynamic types to prevent infinite loops. Fixes #74727.
23070
23071         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23072         ..._is_assignable_to.
23073
23074 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23075
23076         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23077
23078 2005-04-25  Martin Baulig  <martin@ximian.com>
23079
23080         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23081
23082         * domain.c
23083         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23084
23085         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23086
23087         * reflection.c (build_compressed_metadata): Set metadata header
23088         version to 2.0.
23089
23090 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23091
23092         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23093         number into an integral and a decimal part. Fixes #70473.
23094
23095         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23096
23097 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23098
23099         * culture-info-table.h : reflected the latest locale-builder output.
23100
23101 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23102
23103         * threadpool.c: check for SuspendRequested too when deciding if
23104         mono_thread_interruption_checkpoint should be called.
23105
23106 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23107
23108         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23109         * threads.c: remove interruption_mutex and use Interlocked instead. When
23110         suspending all the threads, wait for all the suspended events at once.
23111         If we're shutting down and get an APC that is going to be queued,
23112         call mono_thread_execute_interruption immediately, as the thread might
23113         be sleeping on a pthread condition or mutex.
23114
23115         * icall.c: call mono_runtime_set_shutting_down before suspending the
23116         threads.
23117
23118         Fixes bug #74693. And now xsp is happier when exiting.
23119
23120 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23121
23122         * loader.c (mono_stack_walk): Fix #74690.
23123
23124 2005-04-22  Martin Baulig  <martin@ximian.com>
23125
23126         * mono-debug.h (MonoDebugMethodJitInfo): Added
23127         `MonoDebugMethodJitInfo *jit'.
23128
23129         * mono-debug.c (mono_debug_read_method): Cache the
23130         MonoDebugMethodJitInfo in `address->jit'.
23131         (mono_debug_free_method_jit_info): New public method.
23132
23133 2005-04-22  Martin Baulig  <martin@ximian.com>
23134
23135         * class.c (mono_class_is_assignable_from): Disallow
23136         type parameter -> interface.
23137
23138 2005-04-21  Dick Porter  <dick@ximian.com>
23139
23140         * threads.c (mono_thread_create): Turn an assertion into an error.
23141
23142 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23143
23144         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23145         
23146         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23147         Fix some gcc 4.0 warnings.
23148
23149 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23150
23151         * file-io.c: fix alt dir separator char on unix systems
23152         and cleanup (fixes bug #71214).
23153
23154 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23155
23156         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23157         a call to a remote domain, since the method may be an
23158         interface method in the client domain. This fixes bug #74192.
23159
23160 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23161
23162         * threadpool.c: recv/send are now performed before going back to managed
23163         code to save one transition.
23164
23165 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23166
23167         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23168
23169         * metadata/threadpool.c: removed hack to workaround the bug above.
23170
23171         Fixes bug #74618.
23172
23173 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23174
23175         * reflection.c reflection.h: Fix handling of parameter defaults in
23176         dynamic methods. Also fixes handling of parameter attributes.
23177         Fixes #74609.
23178
23179         * mono-debug.c (mono_debug_close_image): Fix warning.
23180
23181 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23182
23183         * socket-io.h: replaced old unused field with new 'blocking'.
23184         * threadpool.c: restore socket blocking state on windows(tm).
23185
23186 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23187
23188         * icall.c: don't return the codebase in the AssemblyName[] returned by
23189         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23190         * object-internals.h: Removed FIXME (fields were presents) and fixed
23191         versioncompat declaration.
23192
23193 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23194
23195         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23196         not closed, so don't cleanup when it happens.
23197
23198 2005-04-13  Chris Toshok  <toshok@ximian.com>
23199
23200         * mono-debug-debugger.h: change prototype for
23201         mono_debugger_lookup_type.
23202
23203         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23204         this function, although it should probably be named
23205         mono_debugger_init_type.
23206
23207 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23208
23209         * threadpool.c: fix non-AIO case.
23210
23211 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23212
23213         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23214         the built-in profiler to measure just JIT compilation times.
23215
23216 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23217
23218         * threadpool.c: the epollfd might be closed by another thread at
23219         any time, so ignore EBADF at treat it as a "we're closing" sign.
23220
23221 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23222
23223         * threadpool.c: release the semaphores with a count equals to the number
23224         of working threads in both IO and regular pools. Fixed typo that messed
23225         up the count of IO pool threads. Don't initialize the pipe handles if
23226         we're using epoll.
23227
23228 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23229
23230         * threadpool.c: some systems don't like a NULL when deleting the socket
23231         from epoll.
23232
23233 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23234
23235         * threadpool.c: fix semaphore allocation.
23236
23237 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23238
23239         * threadpool.c: added epoll() based implementation for asynchronous IO
23240         that is used instead of the default poll() when available.
23241         It can be disabled by setting MONO_DISABLE_AIO.
23242
23243 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23244
23245         * threadpool.c: windows needs 'closesocket' and instead of returning
23246         0 when the stream is closed while in select, it returns -1. Fixes bug
23247         #74573.
23248
23249 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23250
23251         * class.c (class_compute_field_layout): Fix the regression caused by
23252         the previous try.
23253
23254 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23255
23256         * threadpool.c: separate pool for socket async. IO.
23257         * threadpool.h: mono_max_worker_threads is not a global any more.
23258
23259 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23260
23261         * class.c (class_compute_field_layout): Fix #74549.
23262
23263 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23264
23265         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23266         use 2 connected sockets instead.
23267
23268 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23269
23270         * mono-config.c: Add new entry point for mkbundle
23271         mono_config_parse_memory. 
23272
23273 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23274
23275         * threadpool.c: removed another unused function.
23276
23277 2005-04-08  Ankit Jain  <radical@corewars.org>
23278
23279         * reflection.c (get_default_param_value_blobs): Add 'types'
23280         parameter to get the types encoded in the constant table.
23281         (mono_param_get_objects): Use the type from the constant table,
23282         not the type of the parameter, when creating default values.
23283         Handle null default values correctly.
23284
23285 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23286
23287         * file-io.c:
23288         * file-io.h:
23289         * threadpool.c:
23290         * threadpool.h:
23291         * icall.c:
23292         * socket-io.c: removed dead code for async IO.
23293
23294 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23295
23296         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23297
23298         * threadpool.c: intercept socket async. calls and pass them to a thread
23299         that is polling and dispatching the job items to the threadpool as
23300         socket become ready. Fixes bugs #71217, #71933.
23301
23302         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23303         between char and short/ushort arrays.
23304
23305         * socket-io.c: remove dead code.
23306
23307 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23308
23309         * locales.c,
23310           icall.c : removed InternalToUpper_Comp() and
23311           InternalToLower_Comp().
23312
23313 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23314
23315         * char-conversions.h : The tables were incorrectly generated. Should
23316           be generated against invariant culture.
23317
23318 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23319
23320         * object.c (mono_runtime_invoke_array): Fix return value when 
23321         passing pre-created valuetype objects to ctors.
23322
23323         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23324         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23325         Fixes #74338.
23326
23327 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23328
23329         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23330         only used with --security and hides the wrong corlib version error.
23331
23332 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23333
23334         * class.c: Changed mono_class_name_from_token so that types
23335         outside of a namespace don't have an initial period.  Improved
23336         the g_warning message used in _mono_class_get when loading
23337         fails.
23338         * assembly.c: In mono_assembly_load_reference, when an assembly
23339         can't be found, "No such file or directory" is misleading and
23340         unhelpful because a few paths were checked for the presence of
23341         the assembly.  When that happens (ENOENT), display a nicer
23342         message indicating the directories that were searched.  In all
23343         cases, the warning is made easier to read for non-hackers.
23344
23345 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23346
23347         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23348         project/solution.
23349         * appdomain.h|domain.c: Removed inline from functions.
23350         * appdomain.c: Reduced warnings when compiling on windows.
23351         * icall.c: Fixed output_debug declaration to gunichar2*.
23352         * mono-config.c: Reduced warnings when compiling on windows.
23353         * rand.c: Added missing "windows.h". Added missing return value.
23354         * rawbuffer.c: Added missing winsock2.h for windows.
23355         * sysmath.h: Added mono-compiler.h header to allow/ease 
23356         compilation with non-GCC compilers.
23357         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23358         Removed cast warnings.
23359
23360         Adapted from the work of J Lothian (for VC6).
23361
23362 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23363
23364         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23365         from default_path.
23366
23367 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23370         the 2.0 profile.
23371
23372 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23373
23374         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23375         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23376         stuff, and it would probably use $(prefix)/share rather than
23377         $(prefix)/lib.
23378
23379 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23380
23381         * console-io.c: added 2 includes that might be missing.
23382
23383 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23384
23385         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23386         profile.
23387
23388         * reflection.c (create_custom_attr): Allocate the params array using
23389         alloca so it gets GC tracking.
23390
23391 2005-03-23  Chris Toshok  <toshok@ximian.com>
23392
23393         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23394         out some spew.
23395
23396 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23397
23398         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23399         changes to pick up any changes in prefix, etc.
23400
23401 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23402
23403         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23404         
23405         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23406         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23407
23408 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23409
23410         * class-internals.h object-internals.h class.c reflection.c: Extend the
23411         mono_lookup_dynamic_token () function to return the class of the
23412         token as well. 
23413
23414         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23415         well. Fixes #73848.
23416
23417 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23418
23419         * security-manager.c: Skip inheritance checks for intra-corlib
23420         class inheritance and method overrides. This skips a lot of checks
23421         and (anyway) permissions cannot work until corlib is loaded.
23422
23423 2005-03-23  Martin Baulig  <martin@ximian.com>
23424
23425         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23426         MONO_TYPE_GENERICINST.  
23427
23428 2005-03-23  Martin Baulig  <martin@ximian.com>
23429
23430         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23431
23432 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23433
23434         * class.c: added locking comments to some functions.
23435         Cache the interface offsets arrays (saves about 20 KB
23436         of runtime memory in a typical app).
23437         Reduce the time overhead in mono_class_setup_supertypes ().
23438
23439 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23440
23441         * icall.c: speedup and fix leaks in GetMethodsByName and
23442         GetPropertiesByName.
23443
23444 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23445
23446         * reflection.c: some locking fixes.
23447
23448 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23449
23450         * metadata.c: added missing break in case statement.
23451
23452 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23453
23454         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23455         typedbyref return values. Fixes #73941.
23456
23457 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23458
23459         * security-manager.c|h: Added demandunmanaged method and 
23460         suppressunmanagedcodesecurity class to MonoSecurityManager.
23461         Renamed aptc class to allowpartiallytrustedcallers.
23462
23463 2005-03-17  Martin Baulig  <martin@ximian.com>
23464
23465         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23466
23467 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23468
23469         * file-io.c: disabled file async. IO using aio_*. It uses the
23470         threadpool now. Workaround for bug #73718.
23471
23472 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23473
23474         * assembly.h, mono-config.c: added code to deal with bundled configs
23475         for bundled assemblies.
23476
23477 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23478
23479         * *.c, private.h: cleanup, removing old private.h header file.
23480
23481 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23484         and throw_on_unmappable_char attributes.
23485
23486 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23487
23488         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23489         _ProcessName_internal.
23490
23491 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23492
23493         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23494         #73631.
23495
23496         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23497         are no longer used.
23498
23499 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23500
23501         * object.c (compute_class_bitmap): Add support for generics. Fixes
23502         #73527.
23503
23504 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23505
23506         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23507
23508 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23509
23510         * filewatcher.c: commented out the code for windows watcher, as we don't
23511         use it (we use the managed implementation instead).
23512
23513 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * object-internals.h (MonoThread): Remove 'unused1' field.
23516
23517         * appdomain.c: Bump corlib version.
23518
23519         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23520
23521         * reflection.c (mono_reflection_create_runtime_class): Remove the
23522         AssemblyBuilder.Save optimization since it causes too many problems.
23523
23524 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23525
23526         * exception.c|h: Added mono_get_exception_reflection_type_load to
23527         create a ReflectionTypeLoadException object.
23528         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23529         to return NULL is a InheritanceDemand fails during reflection. Updated
23530         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23531         ReflectionTypeLoadException if an InheritanceDemand fails during 
23532         reflection. Added icall mapping for GetLinkDemandSecurity.
23533         * security-manager.c|h: Added ves_icall_System_Security_
23534         SecurityManager_GetLinkDemandSecurity internal call to return the
23535         class and methods permissions set for a LinkDemand. Removed unused
23536         fields in MonoSecurityManager.
23537
23538 2005-03-10  Martin Baulig  <martin@ximian.com>
23539
23540         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23541         it's a generic instance.
23542
23543 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23544
23545         * reflection.c (mono_get_object_from_blob): Applied patch from
23546         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23547
23548         * class.c (mono_class_is_assignable_from): Another try at fixing 
23549         #73469 without breaking anything.
23550
23551 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23552
23553         * class.c: (mono_class_is_assignable_from): Revert the last changes
23554         since they don't work with generics.
23555         
23556         * class.c (mono_class_is_assignable_from): Fix build bustage.
23557
23558         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23559         the managed IsAssignableFrom method. Fixes #73469.
23560
23561         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23562         function.
23563
23564 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23565
23566         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23567         memory when the remoting callback does not sets the out arguments.
23568         Fixes #73007.
23569
23570         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23571         by mistake.
23572
23573         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23574
23575         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23576
23577         * appdomain.c: Bump corlib version.
23578
23579 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23580
23581         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23582         function.
23583
23584         * threads.c (mono_thread_attach): Detect threads which are not started
23585         by the GC pthread wrappers.
23586
23587 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23588
23589         * icall.c: Added new icall for RNG.
23590         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23591         single handle on Linux to access /dev/urandom and fix #73183.
23592
23593 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23594
23595         * object.c: setting the new vtable in a transparent proxy object must
23596         not change the GC descriptor.
23597
23598 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23599
23600         * object.c: fixed compilation without GCJ support.
23601         * reflection.c: for runtime-created types ensure klass->has_references
23602         is correct (bug #73215).
23603
23604 2005-03-02  Martin Baulig  <martin@ximian.com>
23605
23606         * class.c (mono_class_is_assignable_from): Make this work if
23607         `oklass' is a generic instance; fixes #72831.
23608
23609 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23610
23611         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23612         with hasthis set.
23613         
23614         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23615
23616         * marshal.c: Reorganize native->managed marshalling code to also use
23617         the emit_marshal_... functions.
23618
23619 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23620
23621         * object.c: typed allocs have issues with bitmap sizes > 30,
23622         so check for max_set >= 30.
23623
23624 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23625
23626         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23627         managed code. Fixes #73012.
23628
23629         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23630
23631         * metadata.c reflection.c: Load/Emit elem_mult as well.
23632         
23633         * metadata.h (MonoMarshalSpec): Add comment.
23634
23635         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23636
23637         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23638         num_elem to -1 if not given.
23639
23640         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23641
23642         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23643         given values.
23644
23645 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23646
23647         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23648
23649 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23650
23651         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23652
23653         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23654
23655 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23656
23657         * object.c: generalized the reference bitmap creation
23658         and added hooks for the new GC.
23659         * class-internals.c: removed the gc_bitmap field from MonoClass.
23660
23661 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23662
23663         * domain.c: help the compiler to produce better code
23664         in mono_jit_info_table_find ().
23665
23666 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23667
23668         * object.c: make all allocations look typed.
23669
23670 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23671
23672         * socket-io.c: load Mono.Posix if it's not loaded already
23673         (fixes bug#73033).
23674
23675 2005-02-24  Martin Baulig  <martin@ximian.com>
23676
23677         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23678         * reflection.c (dup_type): Likewise.
23679
23680 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23681
23682         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23683         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23684
23685 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23686
23687         * domain.c, threads.c, object-internals.h: make the critical thread
23688         local vars use the fast access mode (even when we're compiled in
23689         a lib). Provide accessors to be used by the jit during codegen.
23690
23691 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23692
23693         * appdomain.c: Changed hook functios behavior to include
23694         support for the reflection only assemblies. Some icalls were changed
23695         to support the mentioned assemblies too. Signatures of static methods
23696         try_assembly_resolve and real_load now have an additional parameter:
23697         refonly.
23698
23699         * assembly.c: General changes to mono_assembly_ methods to support
23700         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23701         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23702         suffix, to support an additional gbool parameter to specify whether
23703         the assembli is reflection only or not. Created some new hook functions 
23704         to add support for reflection only assemblies. Signatures of static 
23705         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23706         have now an additional parameter: refonly.
23707
23708         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23709         indicating whether the assembly is reflection only or not.
23710
23711         * exception.c: Add mono_get_exception_invalid_operation.
23712
23713         * icall.c: Throw an InvalidOperationException when trying to invoke
23714         a property/method/event, or trying to set/get the value of a field.
23715         Also add an icall to retrieve the ref_only flag to the
23716         MonoReflectionAssembly.
23717
23718 2005-02-23  Chris Toshok  <toshok@ximian.com>
23719
23720         Part of fix for #72827.
23721         * mono-debug.c (mono_debug_add_method): add lexical block data to
23722         the info we write.  Kind of a hack at the moment - we copy the
23723         lexical block info from the MonoDebugMethodInfo to the
23724         MonoDebugMethodJitInfo here, before writing it.
23725         (mono_debug_read_method): read the lexical block info.
23726
23727         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23728
23729         * debug-mono-symfile.h: add lexical block support.
23730
23731         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23732         support.
23733
23734 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23735
23736         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23737
23738         * object.c (mono_runtime_free_method): Call mono_free_method () and
23739         put the TODOs there.
23740
23741         * loader.c (mono_free_method): Free up most memory allocated for 
23742         dynamic methods.
23743
23744 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23745
23746         * reflection.c: properly flag a Type argument to a
23747         named custom attr value (bug #72248).
23748
23749 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23750
23751         * reflection.c: reduce code duplication in named custom
23752         attribute encoding.
23753
23754 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23755
23756         * reflection.c: properly encode custom attrs of type object
23757         (bug #72649).
23758
23759 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23760
23761         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23762
23763 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23764
23765         * socket-io.c: load System.dll if it's not loaded already
23766         (bug #72850 and #70477).
23767
23768 2005-02-21  Martin Baulig  <martin@ximian.com>
23769
23770         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23771         generic instances.
23772
23773 2005-02-21  Martin Baulig  <martin@ximian.com>
23774
23775         * reflection.c (mono_image_build_metadata): We also need to
23776         "fixup" the MethodImpl table after we computed the final method
23777         indices.  Call fixup_methodimpl() to do that.
23778         (fixup_methodimpl): New private method.
23779
23780 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23781
23782         * assembly.c: special case mscorlib.dll (bug#72536),
23783         patch from Carlos Alberto Cortez.
23784
23785 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23786
23787         * threads-types.h threads.c: Fix build bustage.
23788
23789         * threads.c: Use a union for long<->double conversions.
23790
23791         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23792         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23793
23794         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23795         containing the checkpoint call with NOT_TAKEN.
23796         
23797         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23798         checkpoint before pushing the arguments, so they won't have to be
23799         spilled to stack.
23800
23801 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23802
23803         * domain.c, assembly.c, domain-internals.h: make some data
23804         const and relocation-free.
23805
23806 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23807
23808         * object.c, appdomain.c, class-internals.h: introduce the
23809         MonoClassRuntimeInfo structure to hold the info needed to
23810         use a class at runtime. Made mono_class_vtable() lock-free
23811         for all the appdomains.
23812
23813 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23814
23815         * metadata-internals.h, image.c: introduce a per-image mempool to
23816         be used for memory that has the same lifetime as the image.
23817
23818 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23819
23820         * domain.c: In mono_init_internal(), instead of selecting the first
23821         runtime version supported by an executable, get a list of all
23822         supported versions and select the one for which an mscorlib exists
23823         (since even if the runtime supports a given version, it doesn't mean
23824         that the framework for that version is installed).
23825         Modified get_runtimes_from_exe to support this behavior.
23826         In supported_runtimes, added information about additional system
23827         assembly versions.
23828         
23829         * assembly.c: Added support for more than one system assembly version
23830         per runtime version. Updated the assembly list.
23831         In mono_assembly_remap_version, removed the initial version check,
23832         since we don't know to which version we need to compare until we
23833         get the version set on which the assembly is based.
23834         Moved the code for loading corlib into the new method
23835         mono_assembly_load_corlib(), so it can be used by the initialization
23836         code.
23837         
23838         * domain-internals.h: Updated data structures and added declaration
23839         for mono_assembly_load_corlib.
23840
23841 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23842
23843         * reflection.c (resolve_object): Fix the creation of the signature in 
23844         the SignatureHelper case.
23845
23846         * assembly.c (mono_assembly_remap_version): Fix binary search.
23847         
23848 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23849  
23850         * class.c: Added inheritance check when a method is overloaded (from a
23851         virtual method or when implementing an interface) and when a class is
23852         inherited. Added functions to set a failure for a class and to 
23853         retreive the exception from a failure.
23854         * class-internals.h: Added fields to MonoClass to keep the exception
23855         information status for inheritance (or other exceptions) to be thrown
23856         later (i.e. not at load time).
23857         * object.c: Throw the inheritance SecurityException when a type is to 
23858         be created with either class or method inheritance violations.
23859         * reflection.c|h: Fix when getting declsec from a class. Removed 
23860         unrequired code for class. Improved sanity in parameter naming.
23861         * security-manager.c|h: Added functions to check for class and method
23862         inheritance.
23863
23864 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23865
23866         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23867         and has_finalize in dynamic types as well.
23868
23869 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23870
23871         * culture-info-table.h : fixed currency format for en-GB (and so on).
23872
23873 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23874
23875         * gc.c: ensure the GC handles never have 0 as a value.
23876
23877 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23878
23879         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23880         a pointer to a struct to unmanaged code. Fixes #72625.
23881
23882 2005-02-16  Martin Baulig  <martin@ximian.com>
23883
23884         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23885
23886 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23889
23890 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23893
23894         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23895         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23896         etc. Fixes #71471.
23897
23898         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23899
23900         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23901
23902 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23903
23904         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23905         changes to make the current context a field in MonoThread.
23906
23907 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23910         the last change.
23911         
23912         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
23913         extracted from mono_marshal_get_native_wrapper.
23914
23915         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
23916         to create wrappers around native functions.
23917
23918         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
23919         delegates for arbitrary function pointers. Fixes #71472.
23920
23921 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
23922
23923         * threads.c: cleaned up the code a little.
23924
23925 2005-02-15  Martin Baulig  <martin@ximian.com>
23926
23927         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
23928         the data table.
23929
23930         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
23931         allocate larger chunks if needed.
23932
23933 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23934
23935         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
23936         in by mistake.
23937
23938 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
23939
23940         * domain.c: keep the domains in an array and ensure the domain ids
23941         are kept small, so they can be used as indexes to domain-specific data
23942         with a small memory overhead.
23943
23944 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * icall.c: Handle byref types in Type icalls. Fixes #72544.
23947
23948 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
23949
23950         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
23951
23952 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
23953
23954         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
23955
23956         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
23957         values.
23958
23959         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
23960         
23961 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
23962
23963         * domain-internals.h: add the hashtable here.
23964
23965         * class-internals.h: Remove `info' from MonoMethod
23966
23967         * domain.c: Add a new hashtable, jit_trampoline_hash
23968
23969 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
23970
23971         * object.c: don't set the value of static fields
23972         (fixes bug#72494).
23973
23974 2005-02-11  Martin Baulig  <martin@ximian.com>
23975
23976         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
23977         (mono_debug_add_method): Silently ignore the method if it's too big.
23978         (mono_debug_add_type): Likewise.
23979
23980 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
23981
23982         * threads.c, appdomain.c: remove #ifdefs from the code.
23983
23984 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
23985
23986         * metadata-internals.h: Added flags to MonoAssembly to cache the most
23987         common security informations. This allows us to stay in unmanaged code
23988         when doing LinkDemand and it's special cases (except for the first 
23989         time for initialization). The flags a very much used with --security.
23990         * reflection.c|h: Added code to get declarative security attributes 
23991         for LinkDemand and InheritanceDemand. This required to refactor the
23992         existing code for Demand.
23993         * security-manager.c|h: Added new method fields for the special cases
23994         of LinkDemand.
23995
23996 2005-02-10  Martin Baulig  <martin@ximian.com>
23997
23998         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
23999         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24000
24001 2005-02-10  Martin Baulig  <martin@ximian.com>
24002
24003         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24004         debugging code; this is almost a complete rewrite.
24005
24006         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24007
24008 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24009
24010         * domain.c, object.h: expose mono_string_equal () and 
24011         mono_string_hash ().
24012         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24013         it's implemented in managed code.
24014
24015 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24016
24017         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24018         lo leak objects between appdomains.
24019
24020 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24021
24022         * assembly.c: old compilers compilation fix from 
24023         robertj@gmx.net (Robert Jordan).
24024
24025 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24026
24027         * class-internals.h: Little reminder for the future.
24028
24029         * debug-helpers.c: Fix up wrapper_type_names
24030
24031 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24032
24033         * image.c, metadata-internals.h: when loading an image from a file,
24034         mmap all of it and use the same codepaths as when using a
24035         in-memory image: the code is simpler and we use less memory
24036         (both writable and readonly).
24037
24038 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24039
24040         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24041         API to alloc runtime data structures that need to be tracked by the
24042         GC and contain pointers.
24043         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24044         make the code more readable and eventually use a different GC.
24045
24046 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24047
24048         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24049         for out arguments.
24050         
24051 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24052
24053         * object.c: In release_type_locks(), don't release the cctor lock
24054         if it has already been released. This fixes a crash in the
24055         thread5 test.
24056
24057 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24058
24059         * gc.c, marshal.c, icall.c: register a delegate for finalization
24060         only when the native function pointer has been allocated for it.
24061
24062 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24063
24064         * object.c: cleaned up some code, allocate objects that are
24065         pointer free with the atomic malloc variant. Allocate memory
24066         for static data from the mempool if it's pointer-free.
24067         Allocate the bounds array at the end of the array data, when needed.
24068         * object-internals.h, object.h: move a private function in a private
24069         header.
24070         * class.c: handle missing case in tracking references in fields.
24071
24072 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24073
24074         * class.c, class-internals.h: keep track if a type has
24075         reference fields in either the instance or static fields.
24076
24077 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24078
24079         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24080         and renamed to MonoRuntimeInfo. Added fields to store the expected
24081         framework assembly version. Changed mono_get_framework_version and
24082         mono_get_runtime_version for a single mono_get_runtime_info method.
24083         
24084         * assembly.c: Added method to remap system assembly versions to the
24085         current executing runtime version. Removed old mapping code.
24086         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24087         
24088         * icall.c, reflection.c: Track api changes.
24089
24090 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24091
24092         * loader.c (method_from_memberref): Improve error reporting,
24093         produce the class name instead of the typeref/typedef index. 
24094
24095 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24098
24099 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24102         stdcall and charset name mangling.  Reorganize the code and add
24103         some tracing stuff.
24104
24105 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24106
24107         * monodiet.c: More iters!
24108
24109         * marshal.c: Iter usage.
24110
24111         * icall.c: Iter usage.
24112
24113         * object.c: Use iters.
24114
24115         * debug-helpers.c: More iters
24116
24117 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24118
24119         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24120         under win32.
24121
24122 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24123
24124         * mono-debug-debugger.c: use iters
24125
24126         * class.c, class-internals.h: mono_class_setup_events is static
24127         now
24128
24129         * All callers: use iters
24130
24131 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24134         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24135
24136 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24137
24138         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24139
24140         * marshal.h: Add prototypes for ldfld/stfld_remote.
24141
24142         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24143         this is called during startup.
24144         
24145 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24146
24147         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24148         MonoThreadsSync struct private in monitor.c. Changed the way
24149         MonoThreadsSync is allocated so it's faster and there is no
24150         need to keep track of it with a finalizer and it uses less memory.
24151         This also finally allows us to allocate mono objects as ptrfree when
24152         there are no reference fields.
24153
24154 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24155
24156         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24157         disappearing link to the GC interface and use them to simplify
24158         the gchandles code.
24159
24160 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24163         stfld_remote which call mono_load/store_field_new. This allows methods
24164         calling ldfld/stfld wrappers to be AOTed.
24165
24166         * console-io.c: Include sys/filio.h under solaris.
24167         
24168         * console-io.c: Include curses.h if needed correctly.
24169
24170 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24171         
24172         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24173         method->klass as well.
24174
24175         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24176
24177         * class.c (mono_class_init): Switch on lazy initialization of 
24178         methods.
24179
24180         * class.c (mono_class_get_finalizer): Handle the case when the 
24181         finalizer is inherited.
24182
24183 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24184
24185         * console-io.c: <curses.h> is needed by term.h on solaris.
24186
24187 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24188
24189         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24190         mono_class_setup_properties where possible. Remove this ftn from
24191         the header file, and make it static.
24192
24193 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * loader.c: Add missing setup_... call.
24196
24197         * class.c: Add missing setup_... calls.
24198
24199         * class.c (mono_class_init): Switch on lazy initialization of 
24200         the generic vtable.
24201         
24202         * class.c (mono_class_init): Fix generics broken by the recent changes.
24203
24204         * monodiet.c (handle_type): Add missing setup_... calls.
24205
24206         * class.c: Back out garbage in previous patch.
24207         
24208         * class.c: Add missing setup_... calls.
24209
24210         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24211         mono_class_setup_methods () if possible.
24212
24213         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24214
24215         * class-internals.h (MonoCachedClassInfo): New structure.
24216
24217         * class.c: Initialize properties and events fields of MonoClass lazily.
24218
24219         * class.c: Add infrastructure for lazily initializing the methods and
24220         vtable fields of MonoClass. Not yet used.
24221
24222         * class.c (mono_class_get_finalizer): New helper function.
24223
24224         * class.c: Add infrastructure for loading some class related data from
24225         an AOT file.
24226
24227         * object.c: Add infrastructure for initializing the vtable from data
24228         in the AOT file.
24229
24230         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24231
24232         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24233         appropriate initialization function before accessing parts of the
24234         MonoClass structure.
24235
24236         * marshal.c: Fix warnings.
24237         
24238         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24239
24240         * mono-debug-debugger.c (get_exception_message): Use 
24241         mono_class_get_method_from_name_flags ().
24242
24243 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24244
24245         * reflection.c, appdomain.c: Replace a few manual searches that
24246         Zoltan missed. (Paolo approved this part of my initial patch).
24247
24248 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24249
24250         * profiler.c: disable recording statistical events at report time.
24251
24252 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24253
24254         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24255         to byteswap arrays of enum values, too (bug #72080).
24256
24257 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24258
24259         * appdomain.c (set_domain_search_path): Allow this to be called if
24260         domain->setup is not yet set.
24261
24262         * loader.c (mono_method_get_index): New helper function.
24263
24264         * loader.c reflection.c: Use mono_method_get_index ().
24265
24266         * class.c (mono_class_get_method_from_name_flags): New helper method.
24267
24268         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24269         this.
24270
24271         * class.c (mono_class_get_cctor): New helper method.
24272
24273         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24274         mono_class_get_method () to look up methods.
24275
24276 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24277
24278         * console-io.c: Fix the build, this should work on Windows.
24279
24280 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24281
24282         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24283         be set to null to keep things valid
24284
24285 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24286
24287         * icall.c: added Console 2.0 icalls.
24288         * Makefile.am: added console-io.[ch]
24289         * console-io.[ch]: internal calls for Console 2.0 API.
24290
24291 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24292
24293         * class.c: make sure we consider all the interfaces
24294         when calculating max_interface_id (bug found by
24295         Jeroen Frijters running ikvm).
24296
24297 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24298
24299         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24300         valuetype fields to null.
24301
24302         * object.c (set_value): Ditto. Fixes #71669.    
24303
24304 2005-01-31  Martin Baulig  <martin@ximian.com>
24305
24306         * metadata.c (mono_metadata_has_generic_params): New public
24307         function; checks whether something is a generic method.
24308
24309 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24310
24311         * appdomain.c: fix infinite recursion when adding assemblies.
24312
24313 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24314
24315         * object.c: Fix small typo to return all items for Environment.
24316         GetCommandLineArgs.
24317
24318 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24319
24320         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24321         reflection.c: more domain and assembly-unload related fixes
24322         and memory leaks plugs.
24323
24324 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * 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.
24327
24328 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24329
24330         * loader.c (mono_method_signature): Make this method lazy
24331         (mono_get_method_from_token): Don't computate the signature here.
24332
24333         Doing this saves quite a bit of memory. I got 90 kb on starting up
24334         monodoc. It should also save some disk reads on startup.
24335
24336         * *: MonoMethod->signature might be NULL now. You *MUST* use
24337         mono_method_signature.
24338
24339 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24340
24341         * object.c (mono_runtime_get_main_args): Return an array from the
24342         current domain here. Fixes #71938.
24343
24344 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24345
24346         * monitor.c: formatting changes to comply with the
24347         mono coding style and remove #ifdefs from the code.
24348
24349 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24350
24351         * metadata.c, private.h: remove some unneeded data
24352         and use a more compact representation for table schemas.
24353
24354 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24355
24356         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24357         to get a better distribution in hash tables.
24358         * *.c: use mono_aligned_addr_hash() where appropriate.
24359         * assembly.c: make var static.
24360
24361 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24362
24363         * domain-internals.h: Put MonoJitInfo on a diet.
24364
24365         * domain.c: Fix a warning.
24366
24367 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24368
24369         * gc.c: rework the gc handles code to reuse handles
24370         when freed.
24371
24372 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24373
24374         * domain.c: fixed long standing bug in mono_string_equal() which
24375         was brought to light with the ldstr changes.
24376
24377 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24378
24379         * reflection.c: Remove warning by adding missing include for marshal.h
24380
24381 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24382
24383         * domain.c, object.c: change the ldstr_table to hold
24384         MonoString* as keys: makes the runtime isinterned lookup
24385         faster and simplifies memory management.
24386
24387 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24388  
24389         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24390         possible to add imperative security checks before calling the icall.
24391         * reflection.c: Return security attributes on the original MonoMethod
24392         (and not the wrapped one). This fix permissions on icalls.
24393
24394 2005-01-25  Dick Porter  <dick@ximian.com>
24395
24396         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24397         the check for mktime() support actually test the mktime() return
24398         value.  "Fixes" bug 71682, though the output is still different to
24399         MS.
24400
24401 2005-01-25  Martin Baulig  <martin@ximian.com>
24402
24403         * class.c (mono_class_is_assignable_from): Make this work for
24404         generic instances.
24405
24406 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24407
24408         * marshal.c (mono_string_utf8_to_builder)
24409         (mono_string_builder_to_utf16): We might not have ownership of the
24410         string. In thise case, we need to create a new buffer.
24411
24412         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24413         be null, in which case, use the default capacity.
24414
24415 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24416
24417         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24418         GC events to the profiler.
24419
24420 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24421
24422         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24423         if you don't want the GC to run.
24424
24425 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24426
24427         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24428         start providing a GC API and keeping different implementations in
24429         their own file.
24430         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24431
24432 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24433
24434         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24435         mmap rather than allocating a huge buffer.
24436         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24437         above.
24438
24439 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24440
24441         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24442         and CheckExecutionRights.
24443         * reflection.c|h: Keep the index of the declarative security to be 
24444         used, instead of the pointer, when AOT compiler is used. Also add 
24445         class initialization when requesting demands.
24446         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24447         CheckExecutionRights. Both properties are now FALSE by default, and
24448         unmodifiable, unless the --security option is used.
24449
24450 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24451
24452         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24453         reflection.c: properly refcount images and assemblies, many leaks fixed.
24454
24455 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24456
24457         * threadpool.c: increase the timeout for threads in the thread pool to
24458         10s.  Fixes bug #67159.
24459
24460 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24461
24462         * class-internals.h: Sun's compiler insists on explicit
24463         signed on bit fields to handle then correctly.
24464
24465 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24466
24467         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24468         Make the size of the array fit only the number of invalid path
24469         chars that we have.
24470
24471         * class.c (_mono_class_get): Improve the error reporting when a
24472         class referenced is not found, to assist debugging. 
24473
24474 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24475
24476         * threads.c: fix off-by-one error.
24477         * domain.c: free data allocated in the domain.
24478
24479 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24480
24481         * reflection.c (mono_method_body_get_object): Fill out exception info
24482         as well.
24483
24484         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24485         structure.
24486         
24487 2005-01-19  Martin Baulig  <martin@ximian.com>
24488
24489         * loader.c (mono_get_method_constrained): Make this work again.
24490
24491 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24492
24493         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24494         guint16 to match the managed side.
24495
24496         * reflection.c (mono_reflection_body_get_object): Fill out local
24497         variables array.
24498
24499         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24500         as well.
24501
24502         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24503         'local_var_sig_token'.
24504
24505 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24508         System.Drawing.
24509
24510         * reflection.c (mono_method_body_get_object): Handle abstract and
24511         runtime methods.
24512
24513 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24514
24515         * marshal.c, loader.c, class-internals.h, reflection.c:
24516         store the emthod data for a wrapper in an array instead of a list.
24517
24518 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24519
24520         * marshal.c: change the code to allocate memory more
24521         conservatively for method wrappers.
24522
24523 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24524
24525         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24526         fields from MonoClass to the marshal info structure where they belong.
24527
24528 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24529
24530         * class.c, object.c, class-internals.h, marshal.c: rearrange
24531         some fields and tweak some types to lower memory usage.
24532
24533 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24534
24535         * threads.c (signal_thread_state_change): Handle the case when the
24536         target thread is the current thread.
24537
24538         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24539
24540         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24541         emit_ptr_to_object_conv. 
24542
24543         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24544         marshalling. Fixes #71352.
24545
24546 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24547
24548         * metadata.h, blob.h: move table enum to blob.h so it can be included
24549         in any header.
24550         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24551         cut the size of MonoImage/MonoDynamicImage.
24552
24553 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24554
24555         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24556
24557 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24558
24559         * reflection.c, reflection.h, icall.c: add a function to check
24560         if an attribute type is defined for a metadata object.
24561
24562 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24563
24564         * object-internals.h: Added some needed fields from StringBuilder class.
24565         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24566
24567 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24568
24569         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24570         threads before shutting down the runtime.
24571
24572         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24573
24574 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24575
24576         * object-internal.h, threads.c: implement stacksize and 
24577         parameterized thread start functionality (requires
24578         matching corlib). Marked broken code for later removal.
24579
24580 2005-01-12  Martin Baulig  <martin@ximian.com>
24581
24582         * class-internals.h (MonoGenericClass): Moved the `initialized'
24583         flag to MonoDynamicGenericClass, removed `init_pending'.
24584         (MonoGenericInst): Added `is_reference' flag.
24585
24586 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24587
24588         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24589         inside the MSDOS header. Fixes #71201.
24590
24591         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24592         gc thread.
24593         (mono_domain_finalize): Ditto.
24594
24595 2005-01-12  Martin Baulig  <martin@ximian.com>
24596
24597         * class.c (mono_get_shared_generic_class): Use the cache for
24598         non-dynamic generic classes.
24599
24600         * class-internals.h (mono_class_create_generic_2): Removed
24601         function prototype, this function is now static inside class.c.
24602
24603         * class.c (mono_class_create_generic_2): Made this static, only
24604         call it from mono_class_init() and mono_class_setup_parent().
24605         (collect_implemented_interfaces_aux): Call mono_class_init() on
24606         the interfaces we collect.
24607         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24608
24609 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24612         it a real thread handle.
24613
24614         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24615         MonoJitExceptionInfo, since each catch clause needs its own variable.
24616         
24617 2005-01-11  Dick Porter  <dick@ximian.com>
24618
24619         * image.c (mono_pe_file_open): New variant on mono_image_open()
24620         that does not set up the CLI metadata; used for FileVersionInfo so
24621         it can get the data for windows binaries too.
24622         
24623         * process.c (process_read_string_block): Don't read off the end of
24624         the StringTable block.
24625
24626         These both fix bug 70766.
24627
24628 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24629
24630         * gc.c: set some fields to NULL at GC cleanup time.
24631         * threads.c: if we quit the main thread, call exit ().
24632
24633 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24634
24635         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24636
24637 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24638
24639         * threads.h, threads.c, object.c: added accessor and settor for
24640         main_thread. Handle it specially when exiting from it: wait
24641         for other foreground threads to exit.
24642
24643 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24644
24645         * process.c, verify.c: remove some bloat.
24646
24647 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24648
24649         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24650         the calling convention to cdecl under win32.
24651
24652 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24653
24654         * object.c (mono_object_get_size): New function to get the size of
24655         an object instance.
24656
24657         * profiler.c (simple_allocation): Use above.
24658
24659 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24660
24661         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24662         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24663         get an appdomain by it's id and we can't assume the root's id is 0).
24664         * domain-internals.h: Change the function prototype to match.
24665         * icall.c: Change the icall table for AppDomain.
24666
24667 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24668
24669         * locales.c (string_invariant_compare_char): Only compute
24670         GUnicodeTypes in the case where we need them.  Test for ordinality
24671         first and return if so.
24672
24673         From the commit:
24674
24675                 /*
24676                  * FIXME: here we must use the information from c1type and c2type
24677                  * to find out the proper collation, even on the InvariantCulture, the
24678                  * sorting is not done by computing the unicode values, but their
24679                  * actual sort order.
24680                  */
24681
24682 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24683
24684         * loader.c: for P/Invoke methods, allow the "Internal" shared
24685         library name to refer to the calling process symbol namespace.
24686
24687 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24688
24689         * Makefile.am: Add the security manager to the build.
24690         * security-manager.c|h: New. Initialization of the security manager.
24691
24692 2005-01-07  Dick Porter  <dick@ximian.com>
24693
24694         * threads.c: 
24695         * monitor.c: Update thread state during Monitor and WaitHandle
24696         waits.  Fixes bug 71031.
24697
24698 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24699
24700         * reflection.c (property_encode_signature): Correctly handle when the
24701         property has no methods.
24702
24703 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24704
24705         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24706         
24707         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24708         fields from mb, not rmb. Fixes #71017.
24709
24710         * marshal.c (emit_ptr_to_str_conv): Add support for 
24711         ByValTStr -> string conversion. Fixes #71015.
24712
24713         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24714
24715         * mempool.c (mono_mempool_contains_addr): New helper function.
24716
24717 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24718
24719         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24720         HasSematics encoded fields.
24721         
24722         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24723         invalid string marshalling.
24724
24725         * metadata.c: Fix warnings.
24726         
24727 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24728
24729         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24730         profiler support.
24731
24732 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24733
24734         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24735         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24736         tests.
24737
24738 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24739
24740         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24741         so methods containing these can be AOTed.
24742
24743 2005-01-03  Martin Baulig  <martin@ximian.com>
24744
24745         * loader.c (find_method): Removed the hack for generic instances.
24746         (method_from_memberref): If our parent is a generic instance, pass
24747         its generic type definition to find_method() and then inflate the
24748         method.
24749         (mono_get_method_constrained): Pass the generic type definition to
24750         find_method() and inflate the method later.
24751
24752         * class-internals.h (MonoStats): Added `generic_class_count'.
24753
24754         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24755         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24756
24757         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24758         generic type definitions.
24759
24760 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24761
24762         * loader.c icall.c: Fix warnings.
24763
24764 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24765
24766         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24767         blittable types. Fixes #70864.
24768
24769 2004-12-29  Martin Baulig  <martin@ximian.com>
24770
24771         * icall.c
24772         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24773
24774         * reflection.c (mono_method_get_object): Create a
24775         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24776         call mono_get_inflated_method().
24777
24778         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24779
24780 2004-12-27  Martin Baulig  <martin@ximian.com>
24781
24782         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24783         (MonoMethodInflated): Added `inflated' field.
24784
24785         * class.c (mono_class_inflate_generic_method): Don't really
24786         inflate the method here; just set the `is_inflated' flag in the
24787         MonoMethod.
24788         (mono_class_get_inflated_method): Actually inflate the method here
24789         if it's not already inflated; we use the MonoMethodInflated's new
24790         `inflated' field as a cache.
24791
24792 2004-12-26  Martin Baulig  <martin@ximian.com>
24793
24794         * class.c
24795         (inflate_generic_class): Moved some code out of inflate_generic_type().
24796         (mono_class_inflate_generic_method): If we're already inflated,
24797         inflate the context and use the declaring method; ie. make sure
24798         the declaring method of an inflated method is always the generic
24799         method definition.
24800         (mono_class_create_from_typedef): Create
24801         `class->generic_container->context->gclass'.
24802
24803 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24804
24805         * metadata-internals.h, marshal.c, reflection.c: More
24806         MonoGHashTable->GHashTable.
24807
24808         * domain-internals.h, class.c: Change MonoGHashTable's into
24809         GHashTables for some cases where no gc stuff is used
24810
24811         All users: update apis
24812
24813 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24814
24815         * metadata.c (builtin_types): Make this `const'. Makes this get
24816         put into the shareable section.
24817         (mono_metadata_init): Casts to make gcc happy.
24818
24819 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24820
24821         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24822
24823 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24824
24825         * icall.c: Added an internal call to retrieve the position and length
24826         of assembly-level declarative security attributes (RequestMinimum, 
24827         RequestOptional and RequestRefuse). This is used by the Assembly class
24828         to re-create the corresponding permission sets.
24829
24830 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24831
24832         * marshal.c: fix the stelemref wrapper to be type correct
24833         (and faster).
24834
24835 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24836
24837         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24838         to do key & 0x7fffffff. Hashtable already does this. It just
24839         results in longer code.
24840
24841 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24842
24843         * appdomain.c: Bump corlib version.
24844         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24845         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24846         * reflection.c|h: Add functions to get declarative security infos
24847         (blob position and length) for assemblies, classes and methods.
24848
24849 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24850
24851         * reflection.c: sort the constant table (bug #70693).
24852
24853 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24854
24855         * object-internals.h, threads.c, domain.c: add accessors for
24856         the MonoThread and MonoDomain tls keys.
24857
24858 2004-12-18  Martin Baulig  <martin@ximian.com>
24859
24860         * class.c (inflate_generic_type): If we're inflating a generic
24861         instance, set `ngclass->context->container = context->container';
24862         ie. the container we inflated into.
24863
24864         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24865         inflate_generic_type() changes.
24866
24867 2004-12-17  Martin Baulig  <martin@ximian.com>
24868
24869         * class-internals.h
24870         (MonoGenericClass): Replaced `MonoType *generic_type' with
24871         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24872         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24873         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24874
24875 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24876
24877         * exception.c (mono_exception_from_token): New helper function.
24878
24879 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24880
24881         * assembly.c (mono_assembly_load_with_partial_name): Call 
24882         mono_assembly_loaded before invoking the preload hooks. Fixes
24883         #70564.
24884
24885         * object-internals.h (MonoThread): Change culture_info and 
24886         ui_culture_info into an array.
24887
24888         * threads.c: Cache culture info objects from more than one appdomain.
24889
24890         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24891         current UI culture.
24892
24893 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24894
24895         * threads.h threads.c appdomain.c: Clear the culture_info field of
24896         all threads during unloading if they point to an object in the dying
24897         appdomain.
24898
24899 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24900
24901         * culture-info.h (TextInfoEntry): New struct
24902         * object-internals.h: sync with managed
24903         * locales.c: fill the `text_info_data' field
24904         * culture-info-tables.h: update
24905
24906 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24907
24908         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24909         collector.
24910
24911 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
24912
24913         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
24914         (ves_icall_ModuleBuilder_getMethodToken): Ditto
24915
24916 2004-12-12  Martin Baulig  <martin@ximian.com>
24917
24918         * mono-debug-debugger.c (write_type): If we're an enum and the
24919         builtin types have already been initialized, call mono_class_init().
24920
24921 2004-12-11  Martin Baulig  <martin@ximian.com>
24922
24923         * metadata.c (mono_metadata_load_generic_params): Added
24924         `MonoGenericContainer *parent_container' argument; automatically
24925         compute `container->is_method'; pass the correct owner to
24926         get_constraints().      
24927
24928         * reflection.c (compare_genericparam): Sort the GenericParam table
24929         according to increasing owners. 
24930
24931 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
24932
24933         * profiler.c: allow disabling the default profiler.
24934
24935 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
24936
24937         * decimal.c, icall.c: allow disabling System.Decimal support.
24938
24939 2004-12-09  Marek Safar <marek.safar@seznam.cz>
24940
24941         * reflection.c: Add support for null attribute arguments.
24942
24943 2004-12-09  Martin Baulig  <martin@ximian.com>
24944
24945         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
24946         names to get rid of compiler warnings.
24947
24948 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
24951         mono_marshal_load_type_info (). Fixes #69625.
24952         (mono_marshal_get_ptr_to_struct): Likewise.
24953
24954 2004-12-08  Martin Baulig  <martin@ximian.com>
24955
24956         * mono-debug.h: Bumped version number to 47.
24957
24958         * mono-debug-debugger.c
24959         (mono_debugger_event_handler, mono_debugger_event): Take two
24960         guint64 arguments insteed of a gpointer and a guint32.  
24961
24962 2004-12-08  Martin Baulig  <martin@ximian.com>
24963
24964         * debug-mono-symfile.h
24965         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
24966         `address' to `native_offset'.
24967
24968 2004-12-08  Martin Baulig  <martin@ximian.com>
24969
24970         * class.c (mono_class_create_from_typespec): Only inflate if we
24971         either have `context->gclass' or `context->gmethod'.
24972
24973 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24974
24975         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
24976
24977         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
24978
24979         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
24980
24981         * reflection.c (mono_assembly_get_object): Remove the workaround put
24982         in for the release.
24983         
24984         * appdomain.c: Use the corlib_internal field from MonoAssembly.
24985
24986         * appdomain.c: Bump corlib version.
24987
24988         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
24989         be visible in other appdomains.
24990
24991 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
24992
24993         * threads.c: Interlocked inc and dec for longs were messed up,
24994         use a KISS based impl for this. Fixes 70234
24995
24996 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
24997
24998         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
24999
25000 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25001
25002         * icall.c: fix to follow policy not to allow struct
25003         arguments in icalls.
25004
25005 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25006
25007         * process.c: make the patch that handles spaces in file paths work
25008         on mono/windows too.
25009
25010 2004-12-06  Martin Baulig  <martin@ximian.com>
25011
25012         * class.c (mono_class_create_generic): Call
25013         mono_class_setup_supertypes() if we're dynamic.
25014         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25015
25016 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25017
25018         * object-internals.h: Add new fields to MonoThread.
25019
25020         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25021
25022         * icall.c threads-types.h threads.c: Add new icalls.
25023
25024         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25025
25026         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25027         managed side.
25028
25029         * appdomain.c: Bump corlib version.
25030
25031         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25032         internal assemblies. Fixes #69181.
25033
25034 2004-12-05  Martin Baulig  <martin@ximian.com>
25035
25036         * class.c (mono_class_inflate_generic_signature): Make this a
25037         no-op if `context' is NULL or we don't have any type parameters;
25038         also copy `sentinelpos'.        
25039
25040 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25041
25042         * image.c: Add unbox_wrapper_cache.
25043
25044         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25045
25046         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25047         function generator.
25048         
25049         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25050         Fixes #70173.
25051
25052         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25053         
25054 2004-12-04  Martin Baulig  <martin@ximian.com>
25055
25056         * loader.c (mono_method_get_signature_full): New public function;
25057         like mono_method_get_signature(), but with an additional
25058         `MonoGenericContext *' argument.
25059
25060         * class.c (mono_class_inflate_generic_signature): Formerly known
25061         as inflate_generic_signature(); make this public.
25062
25063 2004-12-04  Martin Baulig  <martin@ximian.com>
25064
25065         * metadata.c
25066         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25067         instead of a `MonoGenericContainer *'.  
25068         (mono_metadata_parse_array_full): Likewise.
25069         (mono_metadata_parse_signature_full): Likewise.
25070         (mono_metadata_parse_method_signature_full): Likewise.
25071         (mono_metadata_parse_generic_inst): Likewise.
25072         (mono_metadata_parse_generic_param): Likewise.
25073         (mono_metadata_parse_mh_full): Likewise.
25074         (mono_type_create_from_typespec_full): Likewise.
25075
25076 2004-12-03  Martin Baulig  <martin@ximian.com>
25077
25078         * class-internals.h (MonoGenericContainer): Replaced the
25079         `MonoGenericContext * pointer with a `MonoGenericContext'
25080         structure and made it the first element.
25081
25082 2004-12-03  Martin Baulig  <martin@ximian.com>
25083
25084         * class.c
25085         (inflate_generic_type): Set the `context->container' when creating
25086         a new MonoGenericContext.
25087         (mono_class_inflate_generic_method): Likewise.
25088         (mono_class_create_from_typespec): Just use `context->container'
25089         to get the container.
25090
25091         * loader.c (method_from_methodspec): Set `context->parent' from
25092         `context->container' - and if that's a method container, use its
25093         parent.  Also set the `context->container' when creating a new
25094         MonoGenericContext.
25095         (mono_get_method_from_token): Use just `context->container' to get
25096         the container.
25097
25098         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25099         `gclass->context->container'.
25100
25101         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25102         the `context->container' when creating a new MonoGenericContext.
25103
25104 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25105
25106         * reflection.c (compare_genericparam): Sort params with identical
25107         owner by their number. Fixes gen-111 on sparc.
25108
25109 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25110
25111         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25112         around the domain changes.
25113
25114         * appdomain.c (mono_domain_unload): Handle the case when the thread
25115         calling Unload is itself being aborted during unloading. Fixes #70022.
25116
25117         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25118
25119         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25120         checkpoint_func as an icall so it gets a wrapper.
25121         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25122         in the cross-appdomain wrappers too.
25123
25124         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25125
25126         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25127
25128         * reflection.c: Fix some memory leaks.
25129         
25130 2004-12-02  Martin Baulig  <martin@ximian.com>
25131
25132         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25133
25134         * metadata.c (generic_class_cache): New static hashtable.
25135         (mono_metadata_lookup_generic_class): New public method.
25136
25137 2004-12-02  Martin Baulig  <martin@ximian.com>
25138
25139         * class.c (mono_class_create_from_typedef): Call
25140         mono_class_setup_parent() and mono_class_create_mono_type() before
25141         parsing the interfaces.
25142
25143 2004-12-02  Martin Baulig  <martin@ximian.com>
25144
25145         * metadata.c (generic_inst_cache): New static hashtable.
25146         (mono_metadata_lookup_generic_inst): New public function.
25147         (mono_metadata_inflate_generic_inst): New public function.
25148         (mono_metadata_parse_generic_inst): New public function.
25149         (do_mono_metadata_parse_generic_class): Use the new
25150         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25151         since this'll also use the cache.
25152
25153         * reflection.c (mono_reflection_bind_generic_method_parameters):
25154         Use mono_metadata_lookup_generic_inst() to use the new cache.
25155
25156         * class.c (inflate_mono_type): Use
25157         mono_metadata_inflate_generic_inst() to inflate a generic
25158         instance; this'll also use the new cache.
25159
25160         * loader.c (method_from_methodspec): Use
25161         mono_metadata_parse_generic_inst() and
25162         mono_metadata_inflate_generic_inst() rather than parsing it
25163         manually, so we can use the new cache.
25164
25165 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25166
25167         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25168         the wait times out.
25169
25170 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25171
25172         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25173         iter->args based on whether parameters are passed in registers (i.e.
25174         MONO_ARCH_REGPARMS is defined)
25175
25176 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25177
25178         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25179         the exception message. Fixes #70070.
25180         (method_from_methodspec): Fix warnings.
25181
25182 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25183
25184         * process.c: (complete_path) return the path quoted
25185
25186 2004-12-01  Martin Baulig  <martin@ximian.com>
25187
25188         * class-internals.h (MonoGenericInst): New structure.
25189         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25190         `is_open' with `MonoGenericInst *inst'.
25191         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25192         `is_open' with `MonoGenericInst *inst'.
25193
25194 2004-11-30  Martin Baulig  <martin@ximian.com>
25195
25196         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25197
25198         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25199         to `generic_class_cache'.
25200
25201         * metadata.c
25202         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25203         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25204         (mono_generic_inst_is_valuetype): Renamed to
25205         mono_generic_class_is_valuetype().
25206
25207         * class-internals.h
25208         (MonoGenericInst): Renamed to MonoGenericClass.
25209         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25210         (MonoClass): Renamed `generic_inst' to `generic_class'.
25211         (MonoGenericContext): Renamed `ginst' to `gclass'.
25212
25213         * object-internals.h
25214         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25215
25216         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25217         mono_reflection_generic_class_initialize().
25218
25219         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25220         now known as "System.Reflection.MonoGenericClass".
25221         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25222
25223 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25224
25225         * class-internals.h: Added a flag field to MonoClass to cache the
25226         declarative security attributes actions associated with the class.
25227         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25228         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25229         applicable to the JITted method.
25230         * reflection.c|h: Added functions to extract (as flags) which security
25231         actions are available (declaratively) for a method, class or assembly.
25232         * metadata.c|h: Added functions to search the declarative security
25233         table in the metadata.
25234         
25235 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25236
25237         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25238         EXPORTEDTYPES are already in the class name cache, so there is no
25239         need to add extra code here to look at them. Just removes a bit of
25240         cruft.
25241
25242         (ves_icall_System_Environment_get_TickCount): No need for #if
25243         WINDOWS. We already have the code in io-layer.
25244
25245 2004-11-28  Martin Baulig  <martin@ximian.com>
25246
25247         * loader.c
25248         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25249         Fixes gen-112.cs.
25250
25251 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25252
25253         * assembly.c (do_mono_assembly_open): Instead of having a
25254         conditional WITH_BUNDLE, incorporate support for bundles here, by
25255         having a global `bundles' variable holding a pointer to the actual
25256         bundles. 
25257
25258         (mono_register_bundled_assemblies): New API call used by the
25259         bundle code. 
25260
25261         See mkbundle.1 for details.
25262         
25263 2004-11-27  Martin Baulig  <martin@ximian.com>
25264
25265         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25266         the vtable for generic methods.
25267
25268 2004-11-26  Martin Baulig  <martin@ximian.com>
25269
25270         * metadata.c
25271         (mono_metadata_generic_method_hash): New public function.
25272         (mono_metadata_generic_method_equal): Likewise.
25273
25274         * class-internals.h
25275         (MonoGenericContainer): Added `GHashTable *method_hash'.
25276
25277         * reflection.c (ReflectionMethodBuilder): Added
25278         `MonoGenericContainer *generic_container'.
25279         (reflection_methodbuilder_to_mono_method): Don't create a new
25280         MonoGenericContainer each time we're called.
25281         (mono_reflection_bind_generic_method_parameters): Use
25282         `container->method_hash' to cache the results so we don't create a
25283         different method if we're called several times with the same
25284         arguments.
25285
25286         * loader.c (method_from_methodspec): Use the new
25287         `container->method_hash' here, too.
25288
25289 2004-11-26  Martin Baulig  <martin@ximian.com>
25290
25291         * class.c (inflate_generic_signature): Correctly compute
25292         `res->has_type_parameters'.
25293         (mono_class_vtable): Use the `has_type_parameters' flag to
25294         determine whether we're a generic method.
25295
25296         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25297
25298 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25299
25300         * object.c (mono_runtime_run_main): Fix a small memory leak.
25301
25302 2004-11-25  Martin Baulig  <martin@ximian.com>
25303
25304         * class.c (set_generic_param_owner): Fixed the loop.
25305
25306 2004-11-25  Martin Baulig  <martin@ximian.com>
25307
25308         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25309         generic methods.
25310
25311 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25312
25313         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25314         names. Fixes #69787.
25315
25316 2004-11-24  Martin Baulig  <martin@ximian.com>
25317
25318         * class.c (mono_class_create_generic_2): If we don't have a
25319         `ginst->parent', inflate `gklass->parent' to get our parent.
25320
25321 2004-11-24  Martin Baulig  <martin@ximian.com>
25322
25323         * reflection.c (compare_genericparam): Correctly sort the
25324         GenericParam table; fixes #69779.
25325
25326 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25327
25328         * reflection.c: When writing a PE file, don't create a huge
25329         buffer in memory. Just write the arrays we have to the file.
25330         This reduces memory usage.
25331
25332         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25333         globally.
25334
25335 2004-11-17  Martin Baulig  <martin@ximian.com>
25336
25337         * class.c (mono_class_init): Don't setup `class->parent' for
25338         dynamic instances; moved this to mono_class_generic_2().
25339         (mono_class_create_generic): Also set `klass->inited' for dynamic
25340         generic instances.
25341         (mono_class_create_generic_2): Don't do anything for dynamic
25342         generic instances.  Set `klass->parent' here and also call
25343         mono_class_setup_parent() here. 
25344
25345         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25346         `MonoType *parent' argument; set `ginst->parent' before calling
25347         mono_class_create_generic_2(), so we set the correct parent.
25348
25349 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25350
25351         * reflection.c: allow getting attributes from ModuleBuilder
25352         (used by ikvm).
25353
25354 2004-11-17  Martin Baulig  <martin@ximian.com>
25355
25356         * class.c (mono_class_create_from_typedef): If a type parameter is
25357         inherited from an outer class, set its owner to that class.
25358
25359 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25360
25361         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25362           for (int*) written size. This fixes bug #69592.
25363
25364 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25365
25366         * icall.c: Added IsAuthenticodePresnet internal call.
25367         * image.c|h: New function that check a MonoImage for an Authenticode
25368         signature in the certificate PE data directory.
25369         * security.c|h: New internal call to ask the runtime if an 
25370         Authenticode signature seems referenced in the PE header.
25371
25372 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25373
25374         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25375
25376         * reflection.c (mono_image_create_pefile): Free the assembly streams
25377         after writing out the assembly file.
25378
25379         * object.c (mono_runtime_run_main): Fix small memory leak.
25380
25381         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25382         property access modifiers. Fixes #69389.
25383
25384 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25385
25386         * domain.c, object.c, object-internals.h, domain-internals.h,
25387         object.h, marshal.c: keep dynamic code info per domain.
25388
25389 2004-11-15  Martin Baulig  <martin@ximian.com>
25390
25391         * class.c (mono_type_get_name_recurse): Put type arguments in
25392         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25393         see bug #68387.
25394
25395 2004-11-15  Martin Baulig  <martin@ximian.com>
25396
25397         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25398         (mono_class_setup_vtable): When computing `the_cname' for a
25399         generic instance, don't include the namespace since we'd otherwise
25400         add it twice.
25401
25402 2004-11-15  Martin Baulig  <martin@ximian.com>
25403
25404         * class.c (mono_class_create_generic): Changed return type to void.
25405         (mono_class_create_generic_2): New public function; setup
25406         `class->method', `class->field' and `class->interfaces' here
25407         instead of in mono_class_init().
25408
25409         * class.h (mono_class_create_generic): Moved to class-internals.h.
25410
25411 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25412
25413         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25414         rather than writing to memory, write to this file. Right now,
25415         we are just writting into a buffer, and copying that. However
25416         we can avoid the buffer later.
25417
25418         (mono_dynamic_stream_reset): new function
25419
25420         * icall.c, object-internals.h: update for the above.
25421
25422 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25423
25424         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25425         have been using gc'd memory. First it is slower, unlikely
25426         the comment in the source code said, secondly, it increases
25427         our footprint to do it in the gc.
25428
25429         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25430         the method so that it does not have to copy to managed code.
25431
25432 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25433
25434         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25435
25436 2004-11-12  Martin Baulig  <martin@localhost>
25437
25438         * reflection.c (mono_image_create_token): Allow generic method
25439         definitions here, since they may appear in an `.override'; see
25440         gen-98/gen-99 for an example.
25441
25442 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25443
25444         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25445         #69365.
25446
25447         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25448         descriptive.
25449
25450 2004-11-11  Martin Baulig  <martin@ximian.com>
25451
25452         * class.c (mono_class_setup_vtable): In an explicit interface
25453         implementation, the method name now includes the arity.
25454
25455 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25456
25457         * object.c (mono_array_full_copy): Fix warning.
25458
25459 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25460
25461         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25462         mono_class_get_method_from_name() instead.
25463         
25464         * class-internals.h: Added two new types of wrappers. 
25465         Added MonoRemotingTarget enum. Added new trampoline function type, which
25466         takes an additional MonoRemotingTarget value as parameter, so it is
25467         possible to request a trampoline for a specific target.
25468         
25469         * class.c: Added new mono_class_get_method_from_name() method.
25470         
25471         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25472         general remoting sinks and one specific for cross domain calls.
25473         
25474         * debug-helpers.c: Added new wrapper names.
25475         
25476         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25477         of a remote class.
25478         
25479         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25480         
25481         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25482         with several other methods (mono_marshal_get_xappdomain_dispatch,
25483         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25484         and others) can generate a fast remoting wrapper for cross domain calls.
25485         More information can be found in docs/remoting.
25486         Other changes: Removed mono_find_method_by_name, and used
25487         mono_class_get_method_from_name instead.
25488         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25489         is stored in the remoting invoke hashtable.
25490         
25491         * marshal.h: published the new method for getting the xdomain wrapper,
25492         and also added a method for getting the adequate wrapper for a given
25493         method and target.
25494         
25495         * object-internals.h, object.c: Added a couple of methods for capying and
25496         cloning arrays.
25497         Modified mono_install_remoting_trampoline, which takes the new remoting
25498         trampoline that has a remoting target as parameter.
25499         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25500         will return the most suitable vtable for the target.
25501         Added mono_remote_class_vtable, which returns the vtable of a remote class
25502         (which can be the normal remoting vtable or the xdomain vtable).
25503         
25504         * threads.c: the xdomain invoke and dispatch wrappers must also be
25505         protected against interruptions.
25506
25507 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25508
25509         * icall.c: use memmove in BlockCopyInternal when the source and
25510         destination arrays are the same.
25511
25512 2004-11-09  Martin Baulig  <martin@ximian.com>
25513
25514         * class-internals.h (MonoGenericContainer): Removed `method' and
25515         `signature', replaced them with `is_method' and `is_signature'
25516         flags.  Added `context'.
25517
25518         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25519         instead of a `MonoGenericContainer *'.
25520
25521         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25522         for dynamic type parameters.
25523         (mono_metadata_load_generic_params): Setup `container->context'.
25524
25525         * reflection.c (mono_reflection_setup_generic_class): Setup
25526         `tb->generic_container->context'.
25527         (do_mono_reflection_bind_generic_parameters): Use
25528         mono_class_inflate_generic_type() to correctly inflate types,
25529         rather than using our own hack just for MONO_TYPE_VAR.
25530
25531 2004-11-09  Martin Baulig  <martin@ximian.com>
25532
25533         * class.c (mono_class_inflate_generic_method): Small fix; don't
25534         crash here.
25535
25536         * icall.c
25537         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25538         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25539         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25540         (ves_icall_Type_BindGenericParameters): Likewise.
25541         (ves_icall_Type_get_IsGenericInstance): Likewise.
25542         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25543         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25544         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25545         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25546
25547 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25548
25549         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25550         assembly versions and public key tokens. Fixes #69113.
25551
25552 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25553
25554         * metadata.c: fix bug introduced with the type cache changes
25555         on 2004-11-06.
25556
25557 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25558
25559         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25560         the MonoClass pointer instead of the token in exception clauses.
25561         * reflection.c: updates for the above and make the code not depend
25562         on the structure of MonoExceptionClause.
25563
25564 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25565
25566         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25567         Add support for dynamic assemblies. Fixes #69114.
25568
25569         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25570
25571 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25572
25573         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25574         since most only those methods use it. the code member of
25575         MonoMethodPInvoke was dead, so that can be removed too. Also,
25576         remove inline_count (again, not used), and move slot so that it
25577         can share bits with some other flags. This saves 8 bytes in the
25578         structure and gives us about 50 kb back for mcs helloworld.cs
25579
25580         * *.[ch]: Do naming changes for the above.
25581
25582         * loader.c (mono_method_get_header): Lazily init the header
25583         on first access.
25584         (mono_get_method_from_token): don't init the header here
25585         (mono_free_method): the header may never be allocated
25586
25587         Overall, this saves 150 kb of unmanaged allocations
25588         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25589         memory at runtime.
25590         
25591         * loader.c, loader.h (mono_method_get_header): new accessor.
25592
25593         * *.[ch]: use the above method. Prepares us to lazily load
25594         the header.
25595
25596         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25597         three warnings, which are actual bugs (see 69206).
25598
25599         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25600         unused. Saves a cool 4 bytes / method.
25601
25602 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25603
25604         * metadata.c (builtin_types): Add types for System.Object here.
25605         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25606         for a class or valuetype from klass->this_arg or klass->byval_arg.
25607
25608         On mcs for a hello world, this gets us down from 21836 MonoType's
25609         to 14560.
25610
25611         (mono_metadata_free_type): Account for the above change.
25612
25613 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25614
25615         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25616         exception instead of asserting if name is null.
25617         (ves_icall_System_AppDomain_GetData): Ditto.
25618
25619 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25620
25621         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25622         EnumBuilder.
25623
25624         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25625         Return NULL when the domain does not have entry_assembly set.
25626
25627         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25628         Add a 'resource_modules' argument.
25629         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25630
25631         * reflection.c (mono_reflection_create_runtime_class): Move setting
25632         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25633         for enums too.
25634
25635         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25636         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25637         Throw an ArgumentNullException if 'ptr' is null.
25638
25639         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25640         assemblies here. Fixes #69020.
25641
25642 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25643
25644         * reflection.c (build_compressed_metadata): Fix the previous patch for
25645         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25646         the stack.
25647
25648 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25649
25650         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25651         the cultures is false. Fixes #69090.
25652
25653         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25654         detected by valgrind.
25655         
25656         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25657         TypeResolve multiple times for the same type. Fixes #65577.
25658
25659 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25660
25661         * marshal.c: Avoid using ldftn to call managed functions. It is
25662         much slower than just a call.
25663
25664         * reflection.c (mono_module_get_object): free the basename we
25665         allocate here from glib.
25666         
25667         * reflection.c (ensure_runtime_vtable): make sure to free
25668         overrides.  Also, we were allocating an array of MonoMethod not an
25669         array of MonoMethod*.
25670
25671         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25672
25673         * image.c (mono_image_close): free image->guid here.
25674
25675 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25676
25677         * reflection.c: Fix some spec conformance issues with the PE file
25678         structures so mcs compiled apps run on the Net 2.0 beta.
25679
25680 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25681
25682         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25683         Implement this. Fixes #67264.
25684
25685         * debug-helpers.h debug-helpers.c marshal.c: Move 
25686         mono_find_method_by_name to debug-helpers.c.
25687
25688 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25689
25690         * object.c (mono_release_type_locks): type_initialization_hash is
25691         a GHashTable.
25692
25693         * reflection.c object.c object-internals.h: Fix warnings.
25694
25695         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25696         without accessors. Fixes #61561.
25697
25698         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25699         application base from the root domain if not set. Fixes #65641.
25700         (mono_runtime_init): Fix warning.
25701
25702 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25703
25704         * appdomain.c: call mono_thread_pool_init.
25705         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25706         of worker threads based on the number of CPUs and the environment
25707         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25708         for non-windows (windows) systems.
25709
25710 2004-10-27  Chris Toshok  <toshok@ximian.com>
25711
25712         * mono-debug-debugger.c (write_class): don't call mono_class_init
25713         here, as even with the check for (!klass->init_pending), we get
25714         into a situation where we're hitting cycles in class
25715         initialization.  Fixes #68816.
25716
25717 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25718
25719         * image.c: Avoid overwriting values in the loaded_images_hash when an
25720         assembly is loaded multiple times. Fixes #61152.
25721
25722         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25723         so multiple satellite assemblies for the same name can be loaded.
25724         Fixes #68259.
25725
25726         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25727         not NULL.
25728
25729         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25730         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25731
25732         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25733         pending finalizers are not invoked after the appdomain has been 
25734         unloaded. Fixes #67862.
25735
25736 2004-10-22  Martin Baulig  <martin@ximian.com>
25737
25738         * mono-debug-debugger.c
25739         (mono_debugger_runtime_invoke): Don't box valuetypes.
25740
25741 2004-10-22  Chris Toshok  <toshok@ximian.com>
25742
25743         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25744         don't hide private methods.
25745
25746 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25747
25748         * icall.c: Allows the runtime to "share" (when known) the public key
25749         token of an assembly. This avoid the need to recalculate the token 
25750         (from the public key) in managed code.
25751
25752 2004-10-21  Chris Toshok  <toshok@ximian.com>
25753
25754         * debug-helpers.c (append_class_name): argh, revert last patch.
25755         
25756 2004-10-21  Chris Toshok  <toshok@ximian.com>
25757
25758         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25759         not '/', so that it matches what the debugger uses to look up
25760         methods.
25761
25762 2004-10-21  Martin Baulig  <martin@ximian.com>
25763
25764         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25765         public method; this is called each time an exception is thrown and
25766         allows the debugger to use exception catch points.
25767
25768 2004-10-21  Martin Baulig  <martin@ximian.com>
25769
25770         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25771         the stack pointer and the exception object in some struct and pass
25772         that to the debugger.
25773
25774 2004-10-21  Chris Toshok  <toshok@ximian.com>
25775
25776         * mono-debug-debugger.c (do_write_class): add instance/static
25777         event support.  We don't expose "raise" or "other" yet.
25778         (event_is_static): new method.
25779
25780 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25781
25782         * mono-debug-debugger.c
25783         (mono_debugger_handle_exception): Remove
25784         bogus return value for fussy compilers.
25785
25786 2004-10-20  Martin Baulig  <martin@ximian.com>
25787
25788         * mono-debug-debugger.c
25789         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25790         (mono_debugger_handled_exception): Likewise.
25791
25792 2004-10-20  Martin Baulig  <martin@ximian.com>
25793
25794         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25795         MONO_DEBUGGER_EVENT_EXCEPTION.
25796
25797         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25798         public function to send the debugger a notification for an
25799         exception and inform it about a catch/finally clause.
25800
25801 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25802
25803         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25804         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25805         fix 2.95 build. 
25806
25807         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25808
25809 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25810
25811         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25812         marshalled as [In,Out]. Fixes #58325.
25813
25814 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25815
25816         * reflection.c (mono_method_body_get_object): Implement some fields.
25817
25818 2004-10-12  Martin Baulig  <martin@ximian.com>
25819
25820         * reflection.c (mono_reflection_bind_generic_parameters): Small
25821         fix, correctly retrieve our parent from a generic instance.
25822
25823 2004-10-12  Martin Baulig  <martin@ximian.com>
25824
25825         * metadata.c (mono_metadata_generic_param_equal): We always have
25826         an owner.
25827
25828         * class.c
25829         (mono_class_from_generic_parameter): We need to have an owner.
25830         (my_mono_class_from_generic_parameter): Likewise.
25831
25832         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25833         mono_reflection_create_generic_class() and added a new
25834         mono_reflection_setup_generic_class().  
25835         (mono_reflection_initialize_generic_param): If we're a nested
25836         generic type and inherited from the containing class, set our
25837         owner to the outer class.
25838
25839 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25840
25841         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25842
25843         * reflection.c (mono_method_body_get_object): New function to create
25844         a MethodBody object.
25845
25846         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25847
25848 2004-10-11  Martin Baulig  <martin@ximian.com>
25849
25850         * metadata.c (_mono_metadata_type_equal): Renamed to
25851         do_mono_metadata_type_equal() and made static.
25852
25853 2004-10-11  Martin Baulig  <martin@ximian.com>
25854
25855         * appdomain.c: Bump corlib version number to 28.
25856
25857 2004-10-10  Martin Baulig  <martin@ximian.com>
25858
25859         * class-internals.h
25860         (MonoGenericInst): Added `MonoGenericContainer *container'.
25861         (MonoGenericMethod): Likewise.
25862         (MonoGenericContext): Likewise.
25863         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25864
25865         * metadata.c
25866         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25867         (do_mono_metadata_parse_generic_inst): Likewise.
25868         (mono_metadata_parse_type_full): New public method.  This is the actual
25869         mono_metadata_parse_type() implementation - with an additional
25870         `MonoGenericContainer *' argument.
25871         (mono_metadata_parse_array_full): Likewise.
25872         (mono_metadata_parse_signature_full): Likewise.
25873         (mono_metadata_parse_method_signature_full): Likewise.
25874         (mono_metadata_parse_mh_full): Likewise.
25875         (mono_type_create_from_typespec): Likewise.
25876         (mono_metadata_interfaces_from_typedef_full): New public method;
25877         this is similar to the other _full() methods, but we take a
25878         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25879         (mono_metadata_parse_generic_param): Take an additional
25880         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25881         from that container.
25882         (mono_metadata_generic_param_equal): New static method to compare
25883         two type parameters.
25884         (_mono_metadata_type_equal): New static method; takes an
25885         additional `gboolean signature_only' argument - if true, we don't
25886         compare the owners of generic parameters.
25887         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25888         with a TRUE argument - do a signature-only comparision.
25889
25890         * loader.c: Use the new _full() methods and pass the
25891         MonoGenericContainer to them.
25892
25893         * object-internals.h (MonoReflectionTypeBuilder): Added
25894         `MonoGenericContainer *generic_container' field.
25895         (MonoReflectionMethodBuilder): Likewise.
25896
25897 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25898
25899         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25900         case initial images of dynamic assemblies.
25901
25902         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25903
25904         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25905
25906         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25907         length of event->other array.
25908         (typebuilder_setup_events): Ditto.
25909
25910         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25911         'assembly_by_name' and add an 'assemblies' list.
25912
25913         * assembly.h assembly.c: Add a new search hook for determining whenever
25914         an assembly is already loaded. Use this instead of searching in the
25915         loaded_assemblies list.
25916
25917         * domain.c appdomain.c: Implement the new search hook so loaded 
25918         assemblies are now scoped by appdomain. Fixes #67727.
25919
25920 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
25921
25922         * threads.c (mono_thread_attach): Initialize synch_lock field so
25923         mono_thread_detach works again.
25924
25925         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
25926         'lib' too. Fixes #63130.
25927
25928 2004-10-06  Jackson Harper  <jackson@ximian.com>
25929
25930         * culture-info-tables.h: regenerated.
25931
25932 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
25933
25934         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
25935         implemented by other interfaces in the result. Fixes #65764.
25936         
25937         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25938         Handle unloadable modules without crashing.
25939
25940         * image.c (load_modules): Revert the previous patch since modules must
25941         have a fixed index inside the array.
25942         
25943         * image.c (load_modules): Don't include native modules in the modules
25944         array.
25945
25946 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
25947
25948         * reflection.h: Add param_defaults field.
25949
25950         * reflection.c: Add support for parameter defaults in dynamic methods.
25951         Fixes #64595.
25952
25953         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
25954         an empty string when a type has no namespace. Fixes #64230.
25955
25956 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
25957
25958         * tabledefs.h: Added "internal" security actions to support non-CAS
25959         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
25960         Note: they do not seems to be used anymore in 2.0 (new metadata format)
25961
25962 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
25963
25964         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
25965         constructor of abstract class. Fixes #61689.
25966
25967 2004-10-04  Martin Baulig  <martin@ximian.com>
25968
25969         * class-internals.h (MonoGenericContainer): New type.
25970         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
25971         `MonoGenericContainer *generic_container'.
25972         (MonoClass): Replaced `gen_params' and `num_gen_params' with
25973         `MonoGenericContainer *generic_container'.
25974
25975         * metadata.c (mono_metadata_load_generic_params): Return a
25976         `MonoGenericContainer *' instead of a `MonoGenericParam *';
25977         removed the `num' argument.
25978
25979 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
25980
25981         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
25982         for dynamic images.
25983
25984         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
25985         machine fields.
25986
25987         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
25988
25989         * reflection.c: Save pe_kind and machine values into the generated
25990         image file.
25991
25992         * appdomain.c: Bump corlib version number.
25993
25994         * object-internals.h: Reorganize layout of LocalBuilder.
25995
25996         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
25997         New helper function.
25998
25999         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26000         created MonoType for dynamic types. Fixes #66180.
26001
26002 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26003
26004         * threadpool.c: the ares hashtable needs a critical section around it.
26005         this prevents some nasty segfaults
26006
26007 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26008
26009         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26010         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26011         bug 67324).
26012         
26013 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26014
26015         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26016         
26017 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26018
26019         * image.c: Always canonicalize image file names, to avoid loading
26020         the same assembly twice when referenced using a relative path.
26021
26022 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26023
26024         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26025
26026         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26027
26028         * marshal.c: Fix warnings.
26029
26030 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26031
26032         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26033         attempting to marshal the delegate_trampoline as the method_addr.
26034         This patch has a static hashtable of marshalled delegates so that 
26035         we can map delegate_trampoline addresses back to delegates.  This
26036         allows a delegate passed to managed code to be passed back into native
26037         code.  Fixes #67039
26038
26039 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26040
26041         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26042
26043         * reflection.c (method_encode_code): Align method headers properly.
26044         Fixes #66025.
26045
26046 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26047
26048         * marshal.c: In the runtime invoke wrapper, reset the abort
26049         exception if it is cached. This avoids the automatic rethrowal of 
26050         the exception after the catch of the wrapper. Also check for pending
26051         interruptions before calling the managed method. This is done using
26052         the new method emit_thread_force_interrupt_checkpoint, since the
26053         normal checkpoint method is ignored when running the invoke wrapper.
26054         * object.c: If the abort exception is rethrown, set the abort_exc
26055         field of the thread, so it will be rethrown aftere every catch.
26056         * threadpool.c: Only run an interruption checkpoint if what has been
26057         requested is a stop of the thread (aborts will be ignored).
26058         * threads.c: By default, a thread will now never be interrumped while
26059         running the runtime invoke wrapper (this ensures that runtime_invoke
26060         will always return to the caller if an exception pointer is provided).
26061         There is a new special method mono_thread_force_interruption_checkpoint()
26062         to force an interruption checkpoint even if running a protected
26063         wrapper, which is used by the same runtime invoke wrapper to do a check
26064         at a safe point.
26065
26066 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26067
26068         * object.c, object-internals.h: Implemented mono_release_type_locks,
26069         which releases the cctor locks held by a thread.
26070         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26071         by a thread. Added mono_thread_exit() method to be used to safely stop
26072         a thread.
26073
26074 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26075
26076         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26077         Move null check before dereference.  Avoid indexing beyond the end
26078         of the 'modules' array.
26079
26080 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26081
26082         * metadata-internals.h (MonoImage): Add module_count field.
26083         * image.c (load_modules): Set image->module_count.
26084         (mono_image_load_file_for_image): Use image->module_count.
26085         * reflection.c (mono_image_load_module): Append to image->modules array 
26086         of dynamic assembly.
26087         (mono_module_get_object): Fix loop to actually increment index.
26088         Use image->module_count.
26089         * assembly.c (mono_assembly_load_references): Use image->module_count.
26090         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26091         Likewise.
26092
26093 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26094
26095         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26096         Avoid assert on generic types.
26097
26098 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26099
26100         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26101
26102         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26103
26104         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26105         function to convert a MarshalSpec structure to its managed counterpart.
26106
26107         * reflection.c: Fix warnings.
26108         
26109         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26110         field.
26111
26112         * icall.c (mono_create_icall_signature): Fix build.
26113
26114 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26115
26116         * icall.c: Add MakePointType icall.
26117
26118         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26119         warnings.
26120
26121 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26122
26123         * threadpool.c: reuse allocated slots in the queue.
26124
26125 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26126
26127         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26128
26129         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26130
26131         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26132         previous change.
26133
26134         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26135         ThrowOnUnmappableChar.
26136
26137         * icall.c (ves_icall_Type_GetPacking): New icall.
26138
26139 2004-09-24  Martin Baulig  <martin@ximian.com>
26140
26141         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26142
26143 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26144
26145         * appdomain.c:
26146         (mono_domain_set): allow setting a domain that is being unloaded.
26147         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26148         being unloaded.
26149
26150 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26151
26152         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26153         the GetCustomAttributes icall.
26154
26155 2004-09-23  Martin Baulig  <martin@ximian.com>
26156
26157         * object-internals.h (MonoReflectionGenericParam): Replaced
26158         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26159         with `guint32 attrs'.
26160
26161 2004-09-23  Martin Baulig  <martin@ximian.com>
26162
26163         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26164
26165 2004-09-23  Martin Baulig  <martin@ximian.com>
26166
26167         * object-internals.h (GenericParameterAttributes): New enum.
26168
26169 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26170
26171         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26172         
26173         * class.c (init_events): Fill out event->other field.
26174
26175         * class.c: Fix warnings.
26176
26177         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26178
26179 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26180
26181         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26182         walk which doesn't supply the IL offset.
26183
26184 2004-09-22  Martin Baulig  <martin@ximian.com>
26185
26186         * reflection.c (mono_reflection_setup_internal_class): If we're
26187         System.ValueType, System.Object or System.Enum, set
26188         `klass->instance_size' and create the vtable.
26189         (mono_reflection_create_internal_class): If we're an enum type,
26190         get the base class from our current corlib.
26191
26192 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26193
26194         * reflection.h (MonoResolveTokenError): New type.
26195
26196         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26197         icall.
26198
26199         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26200
26201 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26202
26203         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26204         Support also calling constructors, but only for already allocated objects.
26205
26206 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26207
26208         * reflection.c (type_get_qualified_name): If the klass is null
26209         return the typename to avoid a NullRefEx.
26210         (encode_cattr_value): Get the qualified name of the boxed type,
26211         not the underlying enumtype.  Fixes #62984.
26212
26213 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26214
26215         * marshal.c: Fix problems with previous checkin.
26216
26217 2004-09-21    <vargaz@freemail.hu>
26218
26219         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26220         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26221
26222         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26223
26224 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26225
26226         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26227         should only return a type for pointers, arrays, and passbyref types.
26228         Fixes bug #63841.
26229
26230 2004-09-21  Martin Baulig  <martin@ximian.com>
26231
26232         * domain.c (mono_debugger_check_runtime_version): New public
26233         function.
26234
26235         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26236
26237 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26238
26239         * reflection.c: Added missing sort to the declarative security 
26240         attributes table. MS implementation stops seeing the attributes if the
26241         token number regress in the table (as shown by ildasm and permview).
26242
26243 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26244
26245         * object-internals.h (MonoReflectionModule): Add 'token' field.
26246         
26247         * reflection.c (mono_reflection_get_token): Add support for Module
26248         and Assembly.
26249         (mono_module_get_object): Set 'token' field.
26250         (mono_module_file_get_object): Set 'token' field.
26251
26252         * icall.c: Add new Assembly and Module icalls.
26253
26254         * appdomain.c: Bump corlib version.
26255
26256 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26257
26258         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26259         tokens of metadata objects.
26260
26261         * reflection.h reflection.c (mono_reflection_get_token): New function
26262         to obtain the token of a metadata object.
26263
26264         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26265
26266 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26267
26268         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26269         
26270         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26271
26272 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26273
26274         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26275         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26276         AssemblyBuilder to access the permissions set in the class lib.
26277         * reflection.c: Added security attributes encoding step in 
26278         mono_image_build_metadata.
26279         * tabledefs.h: Added new security actions defined in 2.0:
26280         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26281
26282 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26283
26284         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26285         macro parameter.
26286
26287 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26288  
26289         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26290           finalized. There where random SIGSEVs at program termination, when
26291           an object being finalized was trying to do a string comparison and
26292           the current culture was already finalized.
26293  
26294 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26295
26296         * threads.c: call thread_cleanup before finishing the thread if we get
26297         there.
26298
26299 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26300
26301         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26302         assemblies from the parent. Fixes #65665.
26303
26304 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26305
26306         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26307         modifiers.
26308
26309 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26310
26311         * reflection.h: add prototype for mono_get_dbnull_object
26312         * reflection.c: add prototypes for get_default_param_value_blobs 
26313         and mono_get_object_from_blob for fussier compilers
26314
26315 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26316  
26317         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26318         false deadlock checks in class initialization.
26319  
26320 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26321
26322         * image.c (mono_image_addref): Fix comment.
26323
26324         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26325         possible.
26326
26327 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26328
26329         * reflection.c (mono_param_get_objects): Modified to return
26330         ParameterInfo.DefaultValue object.
26331
26332         (get_default_param_value_blobs):
26333         (mono_get_object_from_blob):
26334         (mono_get_dbnull_object): New helper routines. 
26335
26336         * object.c (mono_get_constant_value_from_blob): New helper routine
26337         carved out from get_default_field_value ()
26338
26339         * object-internals.h (mono_get_constant_value_from_blob): Added
26340         function declaration.
26341
26342 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26343
26344         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26345         referenced assemblies. Fixes #62135.
26346
26347         * exception.h exception.c (mono_get_exception_file_not_found2): New
26348         helper function.
26349
26350 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26351
26352         * class.h class.c: Add mono_type_get_underlying_type ().
26353
26354 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26355
26356         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26357         Fix GetTypes() to support dynamically created assemblies.
26358
26359 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26360
26361         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26362         
26363         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26364         previous patch.
26365
26366         * reflection.h reflection.c loader.c: Allow dynamic construction of
26367         pinvoke methods. Fixes #65571.
26368         
26369         * reflection.c (mono_reflection_get_type): Revert previous change since
26370         it causes regressions.
26371
26372 2004-09-08  Martin Baulig  <martin@ximian.com>
26373
26374         * class.c (class_compute_field_layout): Don't call
26375         mono_class_layout_fields() for open generic instances.
26376
26377 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26378         * threads.c appdomain.c: fix typo in GC macro
26379
26380 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26381
26382         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26383         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26384
26385 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26386
26387         * image.c (mono_image_close): Applied patch from 
26388         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26389         assembly is loaded multiple times from data.
26390         
26391         * image.c (mono_image_open): Fix warning.
26392
26393 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26394
26395         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26396         once. Fixes #58334.
26397         
26398         * reflection.c (mono_reflection_create_runtime_class): Initialize
26399         klass->nested_classes. Fixes #61224.
26400
26401 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26402
26403         * threads.c: sched_yield() on exit, to allow threads to quit.
26404
26405 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26406
26407         * object.c (mono_unhandled_exception): Remove leftover debug code.
26408
26409 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26410
26411         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26412
26413 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26414
26415         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26416         
26417         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26418
26419 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26420
26421         * marshal.c (emit_marshal_array): Null terminate string arrays.
26422         
26423         * marshal.c (raise_auto_layout_exception): Fix warning.
26424
26425         * reflection.c (mono_param_get_objects): Initialize the default value
26426         with DBNull.Value, not null. Fixes #62123.
26427
26428 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26429
26430         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26431         throw an exception with a cute explanation.
26432
26433 2004-09-06  Dick Porter  <dick@ximian.com>
26434
26435         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26436         Close the new process's thread handle, as we don't use it.  The
26437         handle stays around forever otherwise.
26438
26439 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26440
26441         * object.c (arith_overflow): Fix warning.
26442
26443         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26444         calling conventions in method refs. Fixes #65352.
26445
26446         * reflection.c: Fix warnings.
26447
26448 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26449
26450         * icall.c: Add a new icall for Array.Clear
26451
26452 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26453
26454         * object.c: When allocating an array, we have to throw
26455         an overflow exception if any of the lengths are < 0.
26456
26457 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26458
26459         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26460         properly. Also move implementation of string array marshalling to 
26461         managed code. Fixes #42316.
26462
26463 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26464
26465         * assembly.c: provide more information when loading an assembly fails.
26466
26467 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26468
26469         * filewatcher.c: don't expect the development fam package to be
26470         installed.
26471
26472 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26473
26474         * marshal.c: Make a copy of the signature cookie since it will be
26475         freed by the caller.
26476         
26477         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26478
26479         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26480
26481         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26482         marshal specs.
26483
26484         * marshal.c: More refactoring.
26485         
26486         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26487         smaller functions.
26488
26489 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26490
26491         * object.c: In mono_message_invoke, fill the output parameter array after
26492           calling the managed method (it was done before the call). This fixes
26493           bug #59299.
26494
26495 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26496
26497         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26498         as well.
26499
26500 2004-09-02  Martin Baulig  <martin@ximian.com>
26501
26502         * class.c (mono_class_instance_size): Don't allow generic type
26503         definitions or open generic instances.
26504         (mono_class_array_element_size): If we're a value type, call
26505         mono_class_instance_size() on the original class.
26506
26507         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26508         handle generic instances.
26509
26510         * mono-debug-debugger.c (write_type): Handle generic instances
26511         like classes.
26512
26513 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26514
26515         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26516         the allocation request fails. Fixes #65089.
26517
26518         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26519         
26520         * object.c (mono_runtime_free_method): New function to free a dynamic
26521         method.
26522
26523         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26524         delegate trampoline.
26525
26526         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26527         with hasthis as dynamic,
26528
26529         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26530
26531         * domain.c (mono_jit_info_table_remove): New function to remove an
26532         entry from the jit info table.
26533
26534         * class-internals.h (MonoMethod): Add 'dynamic' field.
26535
26536         * loader.c: Fix warnings.
26537
26538 2004-09-01  Martin Baulig  <martin@ximian.com>
26539
26540         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26541         instead of mono_debugger_lock() because the latter one is a no-op
26542         unless running in the debugger.
26543
26544 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26545
26546         * class.c (class_compute_field_layout): Classes with auto-layout or
26547         reference fields are not blittable.
26548         
26549 2004-09-01  Dick Porter  <dick@ximian.com>
26550
26551         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26552         mono_image_get_filename() to get the assembly location.
26553
26554         * icall.c:
26555         * metadata.h: Fix compile warnings
26556
26557 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26558
26559         * class.c (class_compute_field_layout): System.Object is blittable.
26560
26561         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26562         as in/out. Fixes #59909.
26563
26564 2004-09-01  Martin Baulig  <martin@ximian.com>
26565
26566         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26567         mono_metadata_generic_inst_is_valuetype() if we're a generic
26568         instance to check whether our underlying type is a reference type.
26569
26570 2004-09-01  Martin Baulig  <martin@ximian.com>
26571
26572         * metadata.c (mono_type_size): If we're a generic instance, call
26573         mono_class_value_size() for value types.
26574
26575 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26576
26577         * marshal.c: Implement more custom marshalling functionality. Fixes
26578         #64915.
26579
26580 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26581
26582         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26583
26584 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26585
26586         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26587
26588         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26589
26590         * icall.c: Fix some warnings.
26591
26592         * threads.c (abort_appdomain_thread): Fix unref errors.
26593         (mono_thread_current): Fix THREAD_DEBUG define.
26594
26595 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26596
26597         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26598
26599         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26600
26601 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26602
26603         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26604         string arrays.
26605
26606 2004-08-28  Martin Baulig  <martin@ximian.com>
26607
26608         * metadata.c
26609         (mono_metadata_generic_inst_is_valuetype): New public function.
26610
26611         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26612         mono_metadata_generic_inst_is_valuetype() if we're a generic
26613         instance to check whether our underlying type is a valuetype.
26614
26615 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26616
26617         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26618         #63768.
26619
26620 2004-08-25  Martin Baulig  <martin@ximian.com>
26621
26622         * loader.c (mono_get_method_from_token): Abstract methods can also
26623         be generic and thus have type parameters.
26624
26625         * metadata-internals.h
26626         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26627
26628         * reflection.c (mono_image_get_generic_param_info): Don't create a
26629         metadata row, just add an entry to the `gen_params' array.
26630         (build_compressed_metadata): Sort the `gen_params' array and then
26631         actually create the metadata.
26632
26633 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26634
26635         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26636
26637 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26638
26639         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26640
26641 2004-08-24  Martin Baulig  <martin@ximian.com>
26642
26643         * class.cs (mono_class_is_subclass_of): Like an interface, a
26644         generic instance also derives from System.Object.
26645
26646 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26647
26648         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26649         custom modifiers to be in any order. Fixes #61990.
26650
26651 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26652
26653         * object.c: Register mono_object_new_fast icall.
26654         
26655         * object.c (mono_class_get_allocation_ftn): Return to calling
26656         mono_object_new_fast, since it seems faster to compute the object 
26657         size in unmanaged code than passing it as a parameter.
26658
26659         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26660
26661         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26662         this function with Boehm as the oom handler, so we don't have to check
26663         the result of GC_malloc.
26664
26665         * object.c: Remove checks for oom.
26666
26667         * object.h object.c (mono_class_get_allocation_ftn): New function to
26668         return the icall which can be used to allocate an instance of a given
26669         class. 
26670
26671         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26672
26673         * class-internals.h: Add 'enabled' field.
26674
26675 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26676
26677         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26678
26679 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26680         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26681         value 0x0010.
26682
26683 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26684
26685         * appdomain.c: use the Tls function for appdomain too,
26686         at Zoltan's request. Actually return in mono_context_get
26687
26688         * appdomain.c, profiler.c, threads.c: use __thread
26689
26690 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26691
26692         * appdomain.c threads.c: Call GC_CreateThread on windows.
26693
26694         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26695         multiple libraries since this don't work on windows.
26696
26697 2004-08-18  Martin Baulig  <martin@ximian.com>
26698
26699         * class-internals.h
26700         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26701         MonoMethodHeader.
26702
26703         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26704         MonoMethodNormal since we also need it for abstract and interface
26705         methods.
26706
26707         * reflection.c
26708         (build_compressed_metadata): Sort the GenericParam table.
26709         (mono_image_create_token): Added `gboolean create_methodspec'
26710         argument; this is false when generating a MethodImpl token.
26711         (reflection_methodbuilder_to_mono_method): Abstract and interface
26712         methods may also have generic parameters.
26713
26714 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26715
26716         * appdomain.c: thread local alloc
26717
26718 2004-08-17  Martin Baulig  <martin@ximian.com>
26719
26720         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26721
26722         * icall.c
26723         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26724         argument.
26725
26726         * class.c (mono_type_get_full_name): New public function.
26727         (mono_type_get_name): Don't include the type arguments.
26728
26729 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26730
26731         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26732         for inclusion into the mono executable.
26733
26734 2004-08-16  Martin Baulig  <martin@ximian.com>
26735
26736         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26737         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26738
26739 2004-08-14  Martin Baulig  <martin@ximian.com>
26740
26741         * class.c (dup_type): Also copy the `byref' field.
26742
26743 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26744
26745         * reflection.c (create_dynamic_mono_image): Revert the last change 
26746         since it breaks bootstrap.
26747
26748 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26749
26750         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26751
26752         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26753         not free them with g_free.
26754
26755 2004-08-11  Martin Baulig  <martin@ximian.com>
26756
26757         * reflection.c (mono_reflection_setup_internal_class): Also call
26758         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26759
26760 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26761
26762         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26763         called during default (first) AppDomain creation. Keep track of
26764         Evidence when loading assemblies.
26765
26766 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26767
26768         * opcodes.c, opcodes.h: reduce runtime relocations.
26769
26770 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26771
26772         * culture-info.h, locales.c: fixes and chages to sue the new
26773         optimized format of the locale data.
26774         * culture-info-tables.h: regenerated.
26775
26776 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26777         
26778         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26779
26780 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26781
26782         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26783         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26784         * domain-internals.h: icall declaration.
26785         * icall.c: icall registration.
26786         * object-internals.h: New fields in MonoAssembly for CAS.
26787
26788 2004-08-05  Duncan Mak  <duncan@ximian.com>
26789
26790         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26791         CEE_LDELEM_ANY.
26792
26793 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26794
26795         * reflection.c: fix to deal with object[] arrays in custom ctors
26796         (bug #62550).
26797
26798 2004-08-05  Martin Baulig  <martin@ximian.com>
26799
26800         * class.c (mono_class_array_element_size): Added support for
26801         generic instances and correctly handle "recursive" types.
26802
26803 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26804
26805         * assembly.c: Fix warnings.
26806
26807 2004-08-04  Martin Baulig  <martin@ximian.com>
26808
26809         * class.c
26810         (mono_type_get_name_recurse): Added `gboolean include_arity'
26811         argument specifying whether or not we should include the generic
26812         arity in the type name.
26813         (_mono_type_get_name): New static function.
26814         (mono_class_setup_vtable): If we're a generic instance, don't
26815         include the generic arity in the names of explicit method
26816         implementations.        
26817
26818 2004-08-03  Martin Baulig  <martin@ximian.com>
26819
26820         * class.c (mono_type_get_name_recurse): Enclose the generic type
26821         arguments in `<', '>'.
26822
26823 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26824
26825         * gc.c: make GC warning messages use the trace API, they are just
26826         noise to most of the users.
26827
26828 2004-08-03  Martin Baulig  <martin@ximian.com>
26829
26830         * debug-mono-symfile.c (read_string): Correctly read the string.
26831
26832 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26833
26834         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26835         
26836         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26837         icalls.
26838         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26839
26840 2004-07-30  Martin Baulig  <martin@ximian.com>
26841
26842         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26843         Reflect latest symbol writer changes.   
26844
26845 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26846
26847         * object.c: always create an object if null is passed
26848         to Invoke() where a valuetype is expected.
26849
26850 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26851
26852         * marshal.c (mono_marshal_init): make managed
26853         signatures match native ones better for 64bits.
26854
26855 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26856
26857         * appdomain.c: hack to build correctly the private bin path on windows.
26858         Fixes bug #61991.
26859
26860 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26861
26862         * assembly.c: Load mscorlib from the correct framework directory
26863           (mono/<version>/mscorlib.dll).
26864         * appdomain.h: Added prototypes for new functions.
26865         * internals.h: Added some prototypes.
26866         * domain.c: When initializing the runtime, get from the executable and
26867           the configuration files the runtime version that the app supports.
26868           Added support methods for reading app.exe.config. Added list of versions
26869           supported by the JIT. Added two new methods: mono_init_from_assembly,
26870           which initializes the runtime and determines the required version from
26871           the provided exe file, and mono_init_version, which initializes
26872           the runtime using the provided version.
26873         * icall.c: Get machine.config from version-specific directory.
26874         * reflection.c: When generating an image, embed the version number
26875           of the current runtime.
26876
26877 2004-07-28  Dick Porter  <dick@ximian.com>
26878
26879         * socket-io.c
26880         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26881         returned sockaddr size before creating the remote address object.
26882         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26883         61608.
26884
26885 2004-07-28  Dick Porter  <dick@ximian.com>
26886
26887         * locales.c (string_invariant_compare_char): Fix invariant char
26888         compares between upper and lower cases.  Fixes bug 61458.
26889
26890 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26891         
26892         * marshal.c: actually cache stelem.ref wrappers.
26893         
26894 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26895
26896         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26897         sections and remove the mono_cli_rva_map () function.
26898
26899 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26900
26901         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26902         by Geoff Norton (<gnorton@customerdna.com>).
26903
26904 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26905
26906         * class.c: fix class loads for pointer types (typeof(int) !=
26907         typeof(int*)).
26908
26909 2004-07-27  Martin Baulig  <martin@ximian.com>
26910
26911         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
26912         reading the debugging information from an external ".mdb" file.
26913
26914 2004-07-24  Martin Baulig  <martin@ximian.com>
26915
26916         * reflection.c (mono_image_get_type_info): Only write a class
26917         layout entry if we actually have a size or a packing size.
26918
26919 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26920
26921         * reflection.c (type_get_fully_qualified_name): 
26922         insert cast to get type checking of ?: with non-gcc compilers
26923
26924 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26925
26926         * rand.c: use g_getenv for both lookups of
26927         MONO_EGD_SOCKET
26928
26929 2004-07-17  Martin Baulig  <martin@ximian.com>
26930
26931         * reflection.c (mono_reflection_bind_generic_method_parameters):
26932         Set `gmethod->reflection_info'.
26933
26934 2004-07-17  Martin Baulig  <martin@ximian.com>
26935
26936         * class.c (mono_class_create_from_typedef): Insert the newly
26937         created class into the hash table before computing the interfaces
26938         since we could be called recursively.
26939
26940 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
26941
26942         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
26943         function to implement stelem.ref in managed code
26944         * class-internals.h, debug-helpers.c: a new wrapper type
26945         for the above.
26946
26947 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26948
26949         * gc.c: allow GC handles to work even when no GC is compiled in.
26950         Fix part of bug #61134 (GetAddrOfPinnedObject).
26951
26952 2004-07-13  Peter Williams  <peter@newton.cx>
26953  
26954         * process.c (complete_path): Make sure we don't attempt to execute
26955         directories.
26956  
26957 2004-07-12  Geoff Norton <gnorton@customerdna.com>
26958
26959         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
26960           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
26961           and will add/subtract the hour if needed
26962
26963 2004-07-12  Martin Baulig  <martin@ximian.com>
26964
26965         * reflection.c (mono_field_get_object): If we have
26966         `field->generic_info', take the attributes from
26967         `field->generic_info->generic_type'.    
26968
26969 2004-07-12  Martin Baulig  <martin@ximian.com>
26970
26971         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
26972         This function must be called before initializing the runtime.
26973         (mono_debug_init_1): New function; call this after initializing
26974         the runtime, but before loading the assembly.  It tells the
26975         debugger to load corlib and the builtin types.
26976
26977         * mono-debug-debugger.c: Did some larger changes in the debugging
26978         code; support recursive class declarations, make sure we actually
26979         add all classes.
26980
26981 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26982
26983         * debug-helpers.c: undo my previous patch and fixed the real issue in
26984         ../mini/exceptions-x86.c
26985
26986 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26987
26988         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
26989         when no HOME env. variable was set and a NullRef was thrown in a .cctor
26990         called from other .cctors.
26991
26992 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
26993
26994         * loader.c: Removed the mono_loader_wine_init hack now that we are
26995         doing a managed version of Windows.Forms.
26996
26997 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
26998
26999         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27000         threadpool.c, threads.c: remove static data from rootset.
27001
27002 2004-07-09  Dick Porter  <dick@ximian.com>
27003
27004         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27005         Don't do any more processing if the matched length was 0.  It was
27006         increasing the size of the string before.  Fixes bug 61167.
27007
27008 2004-07-09  Dick Porter  <dick@ximian.com>
27009
27010         * socket-io.h:
27011         * socket-io.c
27012         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27013         Add support for SO_PEERCRED if its available.
27014
27015 2004-07-09  Peter Bartok <pbartok@novell.com>
27016         * loader.c: winelib.exe.so error message is now only displayed if
27017         MONO_DEBUG is set. To help us avoid questions when people are trying
27018         out the new Managed.Windows.Forms.
27019
27020 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27021
27022         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27023         for isinst and castclass wrappers.
27024
27025         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27026         to libmetadata from the JIT, so they could be used by the marshalling
27027         code and the interpreter.
27028
27029         * marshal.c: Register marshalling related JIT icalls here instead of
27030         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27031         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27032
27033         * metadata.h: Remove unneeded marshalling conversions.
27034
27035         * opcodes.c: Update for new opcodes.
27036         
27037 2004-07-08  Martin Baulig  <martin@ximian.com>
27038
27039         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27040         (mono_debug_get_domain_data): Make this function static.
27041
27042 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27043
27044         * gc.c, object.h: add nice GC handle API for embedders.
27045
27046 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27047
27048         * reflection.c: more changes for the new api
27049
27050         * object.c: When we reflect on a field w/ a constant value, it
27051         will not have a memory location, so we must access metadata. Also,
27052         allow easier reading of strings so that we can read them from
27053         the constant data.
27054
27055         * class.c (mono_class_layout_fields): no need for literal fields here.
27056
27057         * class-internals.h: api changes for const fields
27058
27059         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27060
27061 2004-07-06  Martin Baulig  <martin@ximian.com>
27062
27063         * mono-debug.h: Increment version number to 44.
27064
27065         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27066         now a gpointer, rewrote this whole method.
27067
27068         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27069         function.  Add information about the wrapper in a new "misc table".
27070
27071         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27072         for the new misc table.
27073
27074 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27075
27076         * metadata-internals.h image.c: Add a cache for helper signatures.
27077
27078         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27079
27080 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27081
27082         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27083         delegates from a delegate. Fixes #61033.
27084         
27085         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27086         marshalling of stringbuilder arrays. Fixes #59900.
27087
27088 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27089
27090         * icall.c: Add EnumBuilder:setup_enum_type icall.
27091
27092 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27093
27094         * icall.c: Added a new icall for the property version of
27095         OffsetOfStringData.
27096
27097 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27098
27099         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27100         it has a constant size across platforms.
27101
27102         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27103         stack trace.
27104
27105 2004-06-29  Martin Baulig  <martin@ximian.com>
27106
27107         * mono-debug.c (mono_debug_add_method): Protect the whole function
27108         in mono_debugger_lock(), not just parts of it.
27109
27110 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27111
27112         * reflection.c: make sure padding bytes in heaps are zeroed.
27113
27114 2004-06-24  David Waite  <mass@akuma.org>
27115
27116         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27117         image.c, loader.c, locales.c, marshal.c, metadata.c,
27118         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27119         string-icalls.c, threads.c: change to C90-style comments from C99 /
27120         C++ -style
27121
27122 2004-06-24  Dick Porter  <dick@ximian.com>
27123
27124         * threads.c
27125         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27126         return createdNew.  Fixes bug 60412.
27127
27128         * threads-types.h: 
27129         * icall.c: Add createdNew parameter to CreateMutex icall
27130
27131 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27132
27133         * reflection.c, object-internals.h: save default value in params.
27134
27135 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27136
27137         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27138         no need to build a new path combining that with the application base.
27139         Fixes bug #60442.
27140
27141 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27142
27143         * reflection.c: fixed minor standard compliance issues.
27144
27145 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27146
27147         * reflection.c: fixed issue with encoding some custom attributes
27148         (arrays in properties and fields, bug #60411).
27149
27150 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27151
27152         * reflection.c: fix start address when copying the public key token.
27153
27154 2004-06-23  Martin Baulig  <martin@ximian.com>
27155
27156         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27157         the `exc' object in a static object to put it into the GC's root set.
27158
27159 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27160
27161         * reflection.c: make mono_reflection_setup_internal_class ()
27162         callable a second time to setup a new parent class.
27163
27164 2004-06-23  Dick Porter  <dick@ximian.com>
27165
27166         * threads.c: Check for WAIT_IO_COMPLETION return values.
27167
27168 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27169
27170         * appdomain.c: Removed the g_free on the public key token. Now copy 
27171         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27172         * assembly.c: Added public key token string value when loading 
27173         assemblies. Fix bug #60439.
27174         * icall.c: Added missing informations (like public key) in 
27175         GetReferencedAssemblies. Fix #60519.
27176         * image.h: Changed definition for public key token from const char*
27177         public_tok_value to guchar public_key_token [17];
27178         * reflection.c: Updated for changes to public key token.
27179
27180 2004-06-22  Lluis Sanchez Gual
27181
27182         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27183         for the field in base classes.
27184
27185 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27186
27187         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27188         mark headers as not supported, they are installed only for use by the
27189         debugger.
27190
27191 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27192
27193         * *.c, *.h: avoid namespace pollution in public headers.
27194
27195 2004-06-21  Martin Baulig  <martin@ximian.com>
27196
27197         * exception.c (mono_get_exception_security): It's in
27198         "System.Security", not in "System".
27199
27200         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27201         the exception classes.
27202
27203 2004-06-21  Martin Baulig  <martin@ximian.com>
27204
27205         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27206         Protect the exception object from being finalized.
27207
27208 2004-06-21  Martin Baulig  <martin@ximian.com>
27209
27210         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27211         public function.
27212
27213 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27214
27215         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27216         if it was not loaded before. Fix parts of #60439.
27217
27218 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27219
27220         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27221         code that was broken since Ben's change: wrappers are now
27222         dependent on the method signature only again.
27223
27224 2004-06-21  Martin Baulig  <martin@ximian.com>
27225
27226         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27227         added interface support.
27228
27229 2004-06-21  Martin Baulig  <martin@ximian.com>
27230
27231         * class.c (mono_vtable_get_static_field_data): New public method.
27232
27233 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27234
27235         * filewatcher.c : Windows build fix to be compliant with API changes.
27236
27237 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27238
27239         * class.h, class.c: more accessors.
27240         * metadata.h, metadata.c: prepare for hiding MonoType and
27241         MonoMethodSignature: people should use the accessors from now on
27242         outside of the tree.
27243
27244 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27245
27246         * *.c, *.h: more API cleanups.
27247
27248 2004-06-18  Jackson Harper  <jackson@ximian.com>
27249
27250         * assembly.c: Trace loading assemblies.
27251         * loader.c: Trace loading native libraries.
27252         * mono-config.c: Trace loading config files.
27253         
27254 2004-06-18  Dick Porter  <dick@ximian.com>
27255
27256         * locales.c: Tell ICU the lengths of strings, it can cope with
27257         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27258
27259 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27260
27261         * image.c: swapped name/filename;
27262
27263 2004-06-18  Martin Baulig  <martin@ximian.com>
27264
27265         * mono-debug-debugger.c (write_class): Write the parent class at
27266         the end of the header.
27267
27268 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27269
27270         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27271
27272 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27273
27274         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27275         (bundle_obj): New conditional define.
27276         (BUILT_SOURCES): Remove.
27277         ($(bundle_srcs)): Make parallel-make safe.
27278         (libmonoruntime_la_LIBADD): Make unconditional.
27279         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27280         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27281
27282 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27283
27284         * culture-info-tables.h: It was inconsistent with the latest
27285           supp info files.
27286
27287 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27288
27289         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27290         be loaded.
27291
27292         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27293         with gcc 2.95.
27294
27295 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27296
27297         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27298         cleaned up public header threads.h.
27299
27300 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27301
27302         * Makefile.am, *.c, *.h: more API cleanups.
27303
27304 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27305
27306         * Makefile.am: removed monosn from compilation.
27307         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27308         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27309         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27310         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27311         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27312         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27313
27314 2004-06-15  Jackson Harper  <jackson@ximian.com>
27315
27316         * assembly.c: Make locales lower case when searching the GAC for
27317         assemblies. gacutil will always make locales lowercase when
27318         installing so this effectively makes them case insensitive.
27319         
27320 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27321
27322         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27323         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27324           parameter which allows to choose whether the wait can be interrupted or 
27325           not. Also added the method mono_monitor_enter(), which locks the monitor
27326           using an infinite wait and without allowing interruption.
27327           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27328           interrupted.
27329         * object.h: Added new fields in MonoThread. suspend_event holds the event
27330           used to susped/resume the thread. synch_lock is the lock object to use for
27331           modifying the thread state.
27332         * threads.c: Use the new synch_lock object for locking, instead of "this",
27333           which can generate deadlocks.
27334           Moved thread state change in Thread.Sleep and Thread.Join from managed
27335           to unmanaged code. This avoids a deadlock when the thread was suspended
27336           just after acquiring the thread lock.
27337           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27338           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27339           which is not fully implemented in the io-layer.
27340         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27341
27342 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27343
27344         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27345         threads-types.h: more API cleanups.
27346
27347 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27348
27349         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27350         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27351         threadpool.c, threads.c: first pass at the exported API cleanup.
27352
27353 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27354
27355         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27356
27357 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27358
27359         * icall.c: added internalGetHome.
27360
27361 2004-06-14  Dick Porter  <dick@ximian.com>
27362
27363         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27364         possible to return successfully when '.' or '..' were the only
27365         entries in a directory, but were skipped.  The MonoIOStat was not
27366         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27367         Fixes bug 59574.
27368
27369 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27370
27371         * reflection.c: make binaries run on .Net 1.1 by default.
27372
27373 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27374
27375         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27376
27377 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27378
27379         * marshal.c: keep track of struct size with explicit layout
27380         (bug #59979).
27381
27382 2004-06-12  Martin Baulig  <martin@ximian.com>
27383
27384         * mono-debug-debugger.c: Comment out a debugging g_message().
27385
27386 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27387
27388         * reflection.c, reflection.h: do not free custom attrs that are cached.
27389         * icall.c: use braces to make code clearer.
27390
27391 2004-06-11  Martin Baulig  <martin@ximian.com>
27392
27393         * class.h (MonoInflatedField): New type.
27394         (MonoClassField): Replaced `MonoType *generic_type' with
27395         `MonoInflatedField *generic_info'.
27396
27397         * icall.c
27398         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27399
27400 2004-06-11  Martin Baulig  <martin@ximian.com>
27401
27402         * reflection.c (mono_image_create_method_token): Correctly encode
27403         varargs methods.
27404
27405 2004-06-11  Martin Baulig  <martin@ximian.com>
27406
27407         * metadata.c (mono_metadata_parse_method_signature): When parsing
27408         a MethodDef which has VarArgs, also set sentinelpos if we don't
27409         have any parameters.
27410
27411 2004-06-11  Martin Baulig  <martin@ximian.com>
27412
27413         * verify.c (mono_method_verify): In CEE_CALL, use
27414         mono_method_get_signature() to get the method's signature, unless
27415         we're a PInvoke method.
27416
27417 2004-06-10  Jackson Harper  <jackson@ximian.com>
27418
27419         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27420         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27421         logical name as the supplied path is just a prefix to the gac not
27422         the direct path to it.
27423         
27424 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27425
27426         * reflection.c: make the token for a created method match
27427         the token of the MethodBuilder it was created from
27428         (IKVM requires this behaviour now).
27429
27430 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27431
27432         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27433         reflection.c, socket-io.c: leak fixes.
27434
27435 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27436
27437         * icall.c: handle sentinel pos in vararg methods in position different
27438         from 0.
27439
27440 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27441
27442         * culture-info-tables.h: freshly generated.
27443
27444 2004-06-09  Martin Baulig  <martin@ximian.com>
27445
27446         * loader.c (mono_get_method_constrained): Call `mono_class_init
27447         (constrained_class)'.   
27448
27449 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27450
27451         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27452         any methods. Fixes #59629.
27453
27454 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27455
27456         * culture-info-tables.h: reflecting locale-builder updates.
27457
27458 2004-06-08  Dick Porter  <dick@ximian.com>
27459
27460         * object.h:
27461         * locales.c: Fixed compile warnings, including a real bug in
27462         CompareInfo_internal_compare.
27463         
27464 2004-06-08  Dick Porter  <dick@ximian.com>
27465
27466         * locales.c
27467         (ves_icall_System_Globalization_CompareInfo_internal_index):
27468         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27469         Double-check the resuls of usearches, because ICU currently
27470         ignores most of the collator settings here.  Fixes bug 59720.
27471         
27472 2004-06-08  Dick Porter  <dick@ximian.com>
27473
27474         * locales.c
27475         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27476         Fix memory leak and segfault-causing typo.  No idea how this one
27477         lasted so long without being noticed.
27478
27479 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27480
27481         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27482         any methods. Fixes #59629.
27483
27484 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27485
27486         * assembly.c:
27487         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27488         own the critical section before). Removed dead code (that's done
27489         in the preload hook).
27490
27491         (mono_assembly_load_with_partial_name): call the preload hook.
27492
27493 2004-06-08  Martin Baulig  <martin@ximian.com>
27494
27495         * metadata.c (mono_metadata_signature_alloc): Default
27496         `sentinelpos' to -1.
27497
27498         * reflection.c (mono_image_get_array_token): Likewise.
27499
27500 2004-06-08  Martin Baulig  <martin@ximian.com>
27501
27502         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27503
27504         * metadata.c (mono_metadata_parse_method_signature): When parsing
27505         a MethodDef which has VarArgs, set sentinelpos.
27506
27507         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27508         `gint16' since we're using -1 for non-varargs methods.
27509
27510         * reflection.c
27511         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27512         (method_encode_signature): Added varargs support.
27513         (method_builder_encode_signature): Likewise.
27514         (mono_image_get_varargs_method_token): New static method.
27515         (mono_image_create_method_token): New public method; this is
27516         called via an icall instead of mono_image_create_token() when
27517         calling a varargs method.       
27518
27519 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27520
27521         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27522
27523 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27524
27525         * culture-info-tables.h : Reflecting the latest locale-builder that
27526           fixed empty array representation ({} to {0}).
27527
27528 2004-06-07  Jackson Harper  <jackson@ximian.com>
27529
27530         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27531         looking up extra gac paths. This allows MONO_GAC_PATH to act
27532         exactly like a prefix.
27533         
27534 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27535
27536         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27537         type name before modifying it. Fixes #59405.
27538
27539 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27540
27541         * culture-info.h: added fields for "all datetime patterns".
27542         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27543           _construct_datetime_format ()): fill xxx_patterns fields.
27544         * object.h: added fields for "all datetime patterns" to
27545           MonoDateTimeFormatInfo.
27546         * culture-info-tables.h: reflecting locale-builder updates.
27547
27548 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27549
27550         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27551         the event has no add and remove methods. Fixes #59629.
27552
27553 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27554
27555         * object.c: Fixed possible integer overflow when allocating large
27556         strings.
27557
27558 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27559
27560         * culture-info-tables.h: reflecting locale-builder updates.
27561
27562 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27563
27564         * culture-info-tables.h: reflecting locale-builder updates.
27565
27566 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27567
27568         * culture-info-tables.h: reflecting locale-builder updates.
27569
27570 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27571
27572         * threads.c: Made Thread.Sleep abortable.
27573
27574 2004-06-02  Martin Baulig  <martin@ximian.com>
27575
27576         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27577
27578         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27579
27580 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27581
27582         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27583
27584 2004-05-30  Jackson Harper  <jackson@ximian.com>
27585
27586         * reflection.c: Do not hardcode assembly versions or public key
27587         tokens anymore. All of this except the corlib section was dead
27588         code anyways.
27589         
27590 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27591
27592         * object.c (mono_runtime_invoke_array): Automatically create boxed
27593         objects for byref valuetypes if needed. Fixes #59300.
27594         
27595         * object.c (mono_method_return_message_restore): Handle 
27596         MONO_TYPE_OBJECT as well.
27597
27598 2004-05-28  Jackson Harper  <jackson@ximian.com>
27599
27600         * reflection.c: The modified type encoding was causing build
27601         problems. Reverted for now.
27602         
27603 2004-05-28  Jackson Harper  <jackson@ximian.com>
27604
27605         * reflection.c/h: Take an assembly ref so that we dont create
27606         fully qualified names when encoding types in the same assembly as
27607         the custom attribute being emitted.
27608         * appdomain.c: Increment version number.
27609         
27610 2004-05-26  Duncan Mak  <duncan@ximian.com>
27611
27612         * icall.c
27613         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27614         Set the full version number (major, minor, build, revision).
27615
27616 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27617
27618         * marshal.c (emit_struct_conv): increment src/dst after blit
27619         (mono_marshal_get_managed_wrapper,
27620         mono_marshal_get_native_wrapper): make sure we have marshalling
27621         info before marshalling params (info computation affects
27622         blittable)
27623
27624         * class.c (class_compute_field_layout): correctly deal with
27625         blittable
27626         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27627         value types (as per what windows dows by default)
27628         (mono_class_setup_mono_type): System.ValueType is blittable
27629         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27630         blittable
27631
27632         * marshal.c (mono_marshal_load_type_info): flag types  as
27633         non-blittable if the native layout doesn't match the managed
27634         layout
27635
27636 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27637
27638         * appdomain.c: don't add stuff in the private search path that is
27639         above the application base. If application base is not set, there's
27640         no private search path.
27641
27642 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27643
27644         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27645         byref struct arguments in native->managed marshalling.
27646
27647 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27648
27649         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27650         cache methods using signature (special case for methods
27651         that are value type or string class)
27652         
27653         * image.c (mono_image_close): clean up allocated GSList's
27654         in runtime_invoke_cache.
27655
27656 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27657
27658         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27659         there's no MONO_CFG_DIR environment variable defined.
27660
27661 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27662
27663         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27664
27665 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27666
27667         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27668           is interrumped.
27669         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27670           before waiting for it, and call CloseHandle after the wait to unref it.
27671           This will make sure that handles are not disposed too early.
27672
27673 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27674
27675         * appdomain.c:
27676         * appdomain.h:
27677         * icall.c: removed
27678         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27679         needed now.
27680
27681         * object.c: se the application_base only for the domain that runs
27682         Main. Fixes bug #59216,
27683
27684 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27685
27686         * appdomain.c:
27687         * object.c: only the domain in which Main is run have
27688         SetupInformation.ConfigurationFile set, so moved a few lines from
27689         appdomain.c to object.c.
27690
27691 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27692
27693         * appdomain.c: we tried to load [name].(dll|exe), but according
27694         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27695         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27696         There's a test case attached to bug #58922.
27697
27698 2004-05-27  Dick Porter  <dick@ximian.com>
27699
27700         * icall.c:
27701         * file-io.c: Implemented icalls for locking and unlocking regions
27702         in a file.
27703         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27704         FALSE on error (fixes both compiler warning and real bug.)
27705
27706 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27707
27708         * culture-info-tables.h: reflecting locale-builder updates.
27709
27710           (Added missing ChangeLog entry for 05/26)
27711
27712 2004-05-27  Jackson Harper  <jackson@ximian.com>
27713
27714         * locales.c: Fix some cut and paste errors.
27715         
27716 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27717
27718         * mono-config.c: set the correct path for config. directory on windows.
27719
27720 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27721
27722         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27723           on win32.
27724
27725 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27726
27727         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27728         from pinvoke functions.
27729         
27730         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27731
27732 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27733
27734         * culture-info-tables.h: reflecting locale-builder updates.
27735
27736 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27737
27738         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27739         #59086.
27740
27741 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27742
27743         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27744         * icall.c: Modified icalls for RNG.
27745         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27746         Windows (CryptoAPI).
27747
27748 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27749
27750         * locales.c: Fix build.
27751
27752 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27753
27754         * culture-info-tables.h: reflecting locale-builder updates.
27755
27756 2004-05-25  Jackson Harper  <jackson@ximian.com>
27757
27758         * locales.c: When creating the current culture use the $LANGs
27759         specific culture. So DateTimeFormat and NumberFormat entries are created.
27760         
27761 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27762
27763         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27764         a char array as parameter.
27765
27766 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27767
27768         * image.c: In mono_image_open(), always use an absolute path name to
27769           look for already loaded images.
27770
27771 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27772
27773         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27774         missing in the windows build (like older cygwin include files).
27775
27776 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27777
27778         * icall.c: Fixed check for possible integer overflow in Buffer_
27779         BlockCopy icall. Replaced comments style // by /* */.
27780
27781 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27782
27783         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27784         
27785         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27786         check after MONO_VTADDR. Fixes pinvoke2.exe.
27787
27788         * marshal.h marshal.c metadata.h: Add beginnings of support for
27789         ftnptr -> delegate marshalling.
27790
27791 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27792
27793         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27794         * threads.c: Fix warnings.
27795
27796 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27797
27798         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27799         * icall.c: Registered icalls for Suspend and Resume.
27800         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27801           Thread.Abort.
27802         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27803         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27804         * process.c: Use WaitForSingleObjectEx.
27805         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27806           checkpoints.
27807         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27808           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27809           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27810           background threads. Added basic support for Abort in Windows.
27811           Start new threads using a managed delegate invoke wrapper. This wrapper
27812           has an interruption checkpoint that is needed since an interruption
27813           can be requested before the thread leaves the unmanaged code that starts 
27814           the thread.
27815         * marshal.c: Added interruption checkpoint after every native call, and
27816           also before managed calls for wrappers called from unmanaged code to
27817           go into managed code.
27818         * object.h: Added new field in MonoThread to keep track of interruption
27819           requests.
27820
27821 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27822
27823         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27824         calls.
27825
27826 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27827
27828         * appdomain.c:
27829         * assembly.c:
27830         * gc.c:
27831         * locales.c:
27832         * mono-config.c:
27833         * rand.c: getenv -> g_getenv (windows!)
27834
27835         * process.c: complete_path is also used on non-windows platforms.
27836
27837 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27838
27839         * icall.c: new signature for Process_Start.
27840
27841         * process.[ch]: new signature for Process_Start. If we're on windows
27842         and UseShellExecute is false, we have to search for the program by
27843         ourselves if we don't get a full path.
27844
27845 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27846
27847         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27848         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27849
27850 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27851
27852         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27853         Fixes bug #58373.
27854
27855 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27856
27857         * process.c: use double quotes to quote program name and arguments on
27858         windows. Fixes bug #58575.
27859
27860 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27861
27862         * file-io.c: don't return "." and ".." when using windows Find*File.
27863
27864 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27865
27866         * marshal.c: Don't pass wrappers to message init because method 
27867         addressed used to lookup metadata. part of remoting[2|3] fix.
27868
27869 2004-05-15  Jackson Harper  <jackson@ximian.com>
27870
27871         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27872         path is essentially the same as MONO_PATH except that it points to
27873         GACs instead of lib directories.
27874         * loader.h: The user gac is gone so we dont need function to
27875         enable/disable it.
27876         * mono-config.c: user gac option is now gone.
27877         
27878 2004-05-15  Jackson Harper  <jackson@ximian.com>
27879
27880         * culture-info.h: Make defines more consistent, add calendar data
27881         to the culture info table.
27882         * culture-info-tables.h: Add basic calendar data. Basically
27883         everyone gets default gregorian until all the data is
27884         updated.
27885         * locales.c: Use the new consistent defines. Set calendar data for
27886         culture info objects.
27887         * object.h: add a field for calendar data to CultureInfo
27888         
27889 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27890
27891         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27892         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27893         a signature.
27894         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27895         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27896         an extra param that is the pointer of the method to invoke. The IL for
27897         the invoke method is no longer specific to the method, but to the
27898         signature of the method. Thus, we can share the same code for multiple
27899         methods. This reduces the number of methods that have to be compiled.
27900
27901 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27902
27903         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27904
27905         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27906
27907         * icall.c: Optimize Buffer.BlockCopy.
27908
27909 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27910
27911         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
27912         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
27913         quote). Changed them to "MMMM yyyy".
27914
27915 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
27916
27917         * rand.c
27918         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
27919
27920 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
27921
27922         * reflection.h: Updated after changes to managed structures.
27923
27924         * appdomain.c: Bump corlib version.
27925
27926 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27927
27928         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
27929         windows.
27930
27931 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27932
27933         * Makefile.am: link to ../os/libmonoos.la on windows.
27934
27935         * assembly.c:
27936                 -If MONO_DEBUG, warn about non-existing directories in
27937                 MONO_PATH.
27938                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
27939                 compile time variable.
27940                 -Removed init_default_path and call mono_set_rootdir from
27941                 libmonoos.a instead (windows only).
27942
27943         * assembly.h: declare mono_assembly_getrootdir().
27944
27945         * domain.c:
27946         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
27947
27948         * loader.c: s/getenv/g_getenv/
27949
27950 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
27951
27952         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
27953
27954         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
27955
27956         * metadata.h: Add new marshalling conversions.
27957
27958         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
27959         function.
27960
27961         * reflection.c (mono_reflection_get_type): Lookup the type in all
27962         modules of a multi-module assembly. Fixes #58291.
27963
27964 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
27965
27966         * threads.c: Before aborting a background, set the StopRequested
27967         state.  This avoids throwing the Abort exception.
27968         In mono_thread_manage, don't continue with the shutdown until all
27969         aborted threads have actually stopped.
27970
27971 2004-05-10  Jackson Harper  <jackson@ximian.com>
27972
27973         * locales.c: Remove the modifier from culture names.
27974         
27975 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27976
27977         * Makefile.am: monosn is not installed any more. It has been deprecated
27978         in favor of sn.
27979
27980 2004-05-07  Jackson Harper  <jackson@ximian.com>
27981
27982         * locales.c
27983         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
27984         Fix array construction, add bailout if the length is 0.
27985
27986 2004-05-07  Dick Porter  <dick@ximian.com>
27987
27988         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
27989         machine doesn't have a DNS entry.  Patch by Urs Muff
27990         (umuff@quark.com), fixes bug 57928.
27991
27992 2004-05-06  Jackson Harper  <jackson@ximian.com>
27993
27994         * reflection.c: Handle null PublicTokens properly. alloc mem for
27995         assembly names culture so we dont crash when freeing it.
27996         
27997 2004-05-06  Jackson Harper  <jackson@ximian.com>
27998
27999         * assembly.c: Check the usergac when loading with partial names.
28000         
28001 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28002
28003         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28004         does nothing for now (not required for Linux/Windows) but the class
28005         library can call it (and a newer or modified runtime could need it).
28006         * icall.c: Registred icall.
28007
28008 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28009
28010         * loader.c: prints a message on module loading error we set MONO_DEBUG
28011         environment variable.
28012
28013 2004-05-05  Jackson Harper  <jackson@ximian.com>
28014
28015         * appdomain.c: Handle PublicKeyToken=null properly.
28016         
28017 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28018
28019         * environment.c|h: Added icall ves_icall_System_Environment_
28020         GetOSVersionString to get the current OS version as a string.
28021         * icall.c: Registred icall.
28022
28023 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28024
28025         * object.c: in mono_object_get_virtual_method(), take into account that
28026         non-virtual methods don't have a slot in the vtable. Check needed when
28027         the object is a proxy.
28028
28029 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28030
28031         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28032         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28033
28034         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28035
28036         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28037         passed when a valuetype is expected.
28038
28039         * object.c (mono_unhandled_exception): Only set the exit code if the
28040         exception happens in the main thread. Fixes thread5.exe.
28041
28042         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28043         invalid names. Fixes #58047.
28044
28045 2004-05-03  Jackson Harper  <jackson@ximian.com>
28046
28047         * assembly.c: This line was committed accidently and is unneeded.
28048         
28049 2004-05-03  Jackson Harper  <jackson@ximian.com>
28050
28051         * icall.c: Add new icall for Assembly::LoadWithPartialName
28052         * assembly.c/.h: new function that probes the GAC to load partial
28053         assembly names by Paolo Molaro.
28054         
28055 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28056
28057         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28058         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28059         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28060         full type name.
28061
28062 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28063
28064         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28065         * reflection.c: fix bug when parsing a full type name and Version is not
28066         the last thing in the string.
28067
28068 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28069
28070         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28071         crashes when it is freed.
28072
28073 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28074
28075         * assembly.c: print the compat warning to stderr.
28076
28077 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28078
28079         * assembly.c (mono_assembly_load_references): Add a compatibility
28080         hack to run old applications that might be still referencing the
28081         3300-based assemblies, only do this for System.xxx.
28082
28083 2004-05-01  Jackson Harper  <jackson@ximian.com>
28084
28085         * appdomain.c: If the culture is neutral we set it to "".
28086         
28087 2004-04-29  Jackson Harper  <jackson@ximian.com>
28088
28089         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28090
28091 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28092  
28093         * string-icalls.c: added low overhead function for copying chars
28094         * icall.c: added needed icall for the above function
28095  
28096 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28097
28098         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28099         Environment.GetLogicalDrives.
28100
28101 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28102
28103         * rand.c: try and talk to egd or prngd
28104         for random bytes if opening devices fail.
28105
28106 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28107
28108         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28109         alignment for the type using the native alignment of its members 
28110         instead of using klass->min_align.
28111
28112         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28113
28114 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28115
28116         * file-io.c:
28117         * socket-io.c: added check for sys/aio.h.
28118
28119 2004-04-28  Dick Porter  <dick@ximian.com>
28120
28121         * threads.c: Don't abort a thread thats already aborting, when
28122         terminating everything.
28123
28124 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28125
28126         * icall.c: added 2 new async calls for Socket.
28127
28128         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28129         IO on *nix systems.
28130
28131         * threadpool.c: removed unused variable.
28132
28133 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28134
28135         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28136
28137 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28138
28139         * locales.c: put back string_invariant_tolower () and
28140         string_invariant_toupper ().
28141
28142 2004-04-26 David Waite <mass@akuma.org>
28143
28144         * file-io.h:
28145         * socket-io.h:
28146         * threads.h:
28147         * unicode.h: remove comma from end of enumeration declarations
28148
28149 2004-04-26 David Waite <mass@akuma.org>
28150
28151         * debug-mono-symfile.h:
28152         * decimal.c:
28153         * mono_debug.h:
28154         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28155
28156
28157 2004-04-26  Jackson Harper  <jackson@ximian.com>
28158
28159         * appdomain.c: Increment version number.
28160         
28161 2004-04-26  Jackson Harper  <jackson@ximian.com>
28162
28163         * appdomain.c: Set assembly references public token value when
28164         PublicKeyToken is specified, not the hash_value. Free public token
28165         values when free assembly name data. Previously the public key
28166         token was hex decoded, however we are using hex encoded public key
28167         tokens, so this is not neccasary.
28168         * assembly.c: Lookup assemblies in the gac if their public token
28169         value is set. Add function to allow enabling user gac
28170         lookups. Specify whether or not the assembly was loaded from the
28171         GAC. Compare full assembly names when checking the cache for
28172         assemblies (Temporarily disabled see comment in code). Remove
28173         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28174         specifies trace-loader they get extra info to stdout on the
28175         loading of assemblies.
28176         * image.h: Add a field for an assembly references public token
28177         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28178         whether an assembly has been loaded from the GAC.
28179         * image.c: Remove a corlib -> mscorlib name mapping.
28180         * loader.h: Add function to enable/disable the user gac.
28181         * mono-config.c: Check if the usergac is enabled in the config
28182         file.
28183         * icall.c: New icall to determine whether or not an assembly has
28184         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28185         * tabldefs.h: Add constant for assemblyref flag that specifies a
28186         full public key is used instead of a public token.
28187         * reflection.c: Remove mscorlib -> corlib mappings. Set
28188         PublicTokenValue instead of hash value. This value is a hex
28189         string so it does not need to be expanded.
28190
28191 2004-04-26  Martin Baulig  <martin@ximian.com>
28192
28193         * mono-debug-debugger.c (mono_debugger_initialize): Set
28194         `mono_debugger_initialized' before calling mono_debug_lock().
28195
28196 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28197
28198         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28199           InternalToUpper/InternalToLower.
28200         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28201           removed invariant culture shortcut.  This is now done in managed code.
28202         * locales.c: (string_invariant_toupper/tolower) removed.
28203
28204 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28205
28206         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28207         Added Poll internal call.
28208
28209         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28210         call for Poll. Select was too heavy for polling a single socket.
28211
28212         * threadpool.[ch]: added mono_threadpool_cleanup.
28213         * threads.c: use it. Don't use Thread_Abort on windows.
28214
28215 2004-04-23  Martin Baulig  <martin@ximian.com>
28216
28217         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28218
28219 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28220
28221         * icall.c: Registred new icalls for key pair protection and added an
28222         icall for Environment.GetFolderPath on Windows.
28223         * security.c|h: Added new icalls for key pair protection.
28224
28225 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28226
28227         * socket-io.c: don't display the non-supported family warning for known
28228         families. Now this is not displayed on windows when checking support
28229         for IPv4/IPv6.
28230
28231 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28232
28233         * class.c: don't display the layout warning for static fields.
28234
28235 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28236
28237         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28238         * locales.c, locales.h: Added new icalls for culture-specific
28239         Char.ToLower and Char.ToUpper.
28240
28241 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28242
28243         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28244         by David Waite.
28245
28246 2004-04-20  Martin Baulig  <martin@ximian.com>
28247
28248         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28249         of the type name before passing it to mono_reflection_type_from_name().
28250
28251 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28252
28253         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28254         encodings here. Fixes #56965.
28255
28256 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28257
28258         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28259         fix test on strstr result not that I can see anything that
28260         relies on the result.
28261
28262 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28263
28264         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28265         Fixes #57081.
28266
28267         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28268
28269         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28270         function to determine which marshalling to use for strings. Fixes
28271         #56965.
28272
28273         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28274
28275         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28276
28277 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28278
28279         * icall.c: #include mono-config.h
28280
28281 2004-04-15  Jackson Harper  <jackson@ximian.com>
28282
28283         * culture-info-tables.h: Fix date formats for en-US culture.
28284         
28285 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28286
28287         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28288         ThreadPool.SetMinThreads.
28289         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28290         ThreadPool.SetMinThreads.
28291
28292 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28293
28294         * mono-config.c: also load the .config file in the directory
28295         where the assembly was found.
28296
28297 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28298
28299         * assembly.c: load per-assembly config files.
28300         * icall.c: decrapified code to get the config dir and moved to
28301         mono-config.c.
28302         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28303         per-assembly config files. When doing a dll map lookup give precedence
28304         to the per-assembly data.
28305
28306 2004-04-14  Martin Baulig  <martin@ximian.com>
28307
28308         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28309         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28310         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28311
28312         * mono-debugger-debugger.c: While the debugger is locked, remember
28313         whether the symbol tables have changes and send one single
28314         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28315
28316 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28317
28318         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28319
28320         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28321         function.
28322
28323         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28324         account when marshalling string arrays. Fixes #56965.
28325
28326 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28327
28328         * icall.c: Add new icalls mapping for security.
28329         * security.c|h: Add internal calls for WindowsIdentity,
28330         WindowsImpersonationContext and WindowsPrincipal.
28331
28332 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28333
28334         * class.c: Added comment to ensure the System.MonoDummy class
28335         is removed when no longer necessary
28336
28337 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28338
28339         * appdomain.c: Pass arguments to the bootstraping exceptions to
28340         minimize JITed methods at boot
28341
28342         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28343         second string to be null.
28344
28345         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28346         Change the protocol to minimize the JIT methods at startup.  Now
28347         it Returns the internal codepage, if the value of "int_code_page"
28348         is 1 at entry, and we can not compute a suitable code page
28349         number, returns the code page as a string.
28350
28351 2004-04-13  Jackson Harper  <jackson@ximian.com>
28352
28353         * culture-info-tables.h: Fix number of decimal digits for all
28354         english locales.
28355
28356 2004-04-13  Jackson Harper  <jackson@ximian.com>
28357
28358         * icall.c: Clairfy out of sync error message. It is not always
28359         your corlib that is out of sync.
28360
28361 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28362
28363         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28364         properties when only the set accessor is overriden. Fixes #55874.
28365
28366 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28367
28368         * assembly.c (mono_assembly_load_references): Make this thread safe.
28369         Fixes #56327.
28370
28371 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28372
28373         * monosn.c: Add missing initialization calls.
28374
28375 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28376
28377         * locales.c:
28378         ves_icall_System_Globalization_CultureInfo_construct_number_format
28379         Fix g_assert so it compiles on fussier compilers re int/ptr
28380         mismatch
28381
28382 2004-04-08  Dick Porter  <dick@ximian.com>
28383
28384         * socket-io.h:
28385         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28386         53992.  Also rearrange the code so that the internal calls return
28387         an error value and exceptions are thrown from managed code.
28388
28389         * icall.c: Add type info to the socket icalls.
28390
28391 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28392
28393         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28394         owes me a beer.
28395
28396 2004-04-07  Martin Baulig  <martin@ximian.com>
28397
28398         * class.c (mono_class_from_generic_parameter): Don't default
28399         `klass->parent' to `mono_defaults.object_type'.
28400
28401 2004-04-07  Martin Baulig  <martin@ximian.com>
28402
28403         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28404         `param->pklass->reflection_info'.       
28405
28406 2004-04-07  Jackson Harper  <jackson@ximian.com>
28407
28408         * culture-info-tables.h: Fix date separator symbol.
28409         
28410 2004-04-07  Martin Baulig  <martin@ximian.com>
28411
28412         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28413         from System.Type to System.MonoType.
28414
28415 2004-04-07  Martin Baulig  <martin@ximian.com>
28416
28417         * reflection.h
28418         (MonoReflectionGenericParam): Added `has_reference_type' and
28419         `has_value_type' fields.
28420
28421         * reflection.c (mono_image_get_generic_param_info): Encode the
28422         correct flags if we have the `class' or `struct' constraint.
28423
28424 2004-04-07  Martin Baulig  <martin@ximian.com>
28425
28426         * reflection.h
28427         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28428
28429 2004-04-07  Jackson Harper  <jackson@ximian.com>
28430
28431         * appdomain.c: Revert extra patches, just wanted to bump the
28432         version number.
28433         
28434 2004-04-07  Jackson Harper  <jackson@ximian.com>
28435
28436         * Makefile.am: Add culture-info private headers.
28437         * icall.c: Add new icalls for contructing locales.
28438         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28439         * locales.h: Declare new culture info construction methods.
28440         * object.h: Add new fields used to avoid the CultureMap to
28441         MonoCultureInfo.
28442         * culture-info.h: Definition of structs used in the culture info
28443         tables.
28444         * culture-info-tables.h: Autogenerated tables that contain culture
28445         info data. This file was generated with the locale-builder tool.
28446         * appdomain.c: Incement corlib version number.
28447         
28448 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28449
28450         * appdomain.c: (mono_runtime_init) move mono_thread_init
28451         to before mono_object_new calls so critical sections
28452         are initialized before use.
28453
28454 2004-04-07  Martin Baulig  <martin@ximian.com>
28455
28456         * icall.c
28457         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28458         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28459         (ves_icall_MonoGenericParam_initialize): Removed.
28460         (monogenericparam_icalls): Removed.
28461         (generictypeparambuilder_icalls): Added new table for
28462         System.Reflection.Emit.GenericTypeParameterBuilder.
28463
28464         * reflection.c
28465         (mono_reflection_define_generic_parameter): Removed.
28466         (mono_reflection_initialize_generic_parameter): This is now called
28467         from GenericTypeParameterBuilder's .ctor.
28468
28469 2004-04-06  Martin Baulig  <martin@ximian.com>
28470
28471         * class.c (mono_class_init): Don't inflate nested classes in a
28472         generic instance.
28473         (mono_type_get_name_recurse): Include the generic arguments for
28474         generic instances and generic type declarations.
28475         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28476         (_mono_class_get_instantiation_name): Removed.
28477         (mono_class_create_generic): Always use `gklass->name' as our name.
28478
28479         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28480
28481         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28482         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28483         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28484         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28485         closed generic methods here.
28486
28487         * reflection.c
28488         (mono_reflection_generic_inst_get_nested_types): Removed.
28489         (inflate_mono_method): Copy the generic parameters from the
28490         MonoMethodHeader into out MonoGenericMethod.
28491
28492 2004-04-06  Martin Baulig  <martin@ximian.com>
28493
28494         * row-indexes.h
28495         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28496
28497         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28498
28499         * reflection.c (build_compressed_metadata): If we have any entries
28500         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28501         set the header version to 1.1.
28502
28503 2004-04-06  Martin Baulig  <martin@ximian.com>
28504
28505         * class.c (mono_class_init): If we're a generic instance,
28506         initialize our nested classes, too.
28507         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28508         suffix. 
28509
28510 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28511
28512         * process.c: quote the argument passed to the shell on windows.
28513
28514 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28515
28516         * threads.c (mono_alloc_special_static_data): Allow this to be
28517         called during startup.
28518
28519 2004-04-02  Martin Baulig  <martin@ximian.com>
28520
28521         * icall.c
28522         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28523
28524 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28525
28526         * icall.c: Fix build.
28527
28528 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28529
28530         * Makefile.am: Added security.c|h.
28531         * icall.c: Added icall for get_UserName;
28532         * security.c: New file for security related icalls. Added function
28533         get_UserName for System.Environment (fix #56144).
28534         * security.h: New. Header file for security.c
28535
28536 2004-04-02  Dick Porter  <dick@ximian.com>
28537
28538         * icall.c: Deleted the icalls that were obsoleted some time ago
28539         by the ICU string code, and which were mixed into the icall
28540         rearranging.  Fixes bug 55969.
28541
28542         * string-icalls.h: 
28543         * string-icalls.c: Deleted the code that those icalls reference.
28544
28545 2004-04-01  Martin Baulig  <martin@ximian.com>
28546
28547         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28548
28549         * class.c (mono_class_from_generic_parameter): Don't set 
28550         TYPE_ATTRIBUTE_INTERFACE.
28551         (my_mono_class_from_generic_parameter): Likewise.
28552
28553 2004-04-01  Martin Baulig  <martin@ximian.com>
28554
28555         * loader.c (find_method): Added an optional `MonoClass *ic'
28556         argument to search in a specific interface.
28557         (mono_get_method_constrained): New public function.
28558
28559 2004-04-01  Martin Baulig  <martin@ximian.com>
28560
28561         * reflection.c (mono_image_get_generic_field_token): Use the
28562         `handleref' cache here.
28563
28564 2004-04-01  Martin Baulig  <martin@ximian.com>
28565
28566         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28567
28568         * reflection.c (create_generic_typespec): Use the `typespec' hash
28569         here, not the `typeref' one.    
28570
28571 2004-04-01  Martin Baulig  <martin@ximian.com>
28572
28573         * class.c (mono_class_inflate_generic_type): Moved the
28574         functionality into a new static inflate_generic_type() which
28575         returns NULL if it didn't do anything.  Only increment the
28576         `mono_stats.inflated_type_count' if we actually inflated
28577         something.
28578         (mono_class_get_full): Check the classes type to see whether we
28579         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28580
28581 2004-04-01  Jackson Harper  <jackson@ximian.com>
28582
28583         * reflection.c: Set culture for assembly references.
28584         
28585 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28586
28587         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28588
28589 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28590
28591         * assembly.c:
28592         (do_mono_assembly_open): the critical section also covers
28593         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28594
28595 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28596
28597         * threads.c:
28598         (mono_manage_threads): abort the background threads when finishing.
28599         Fixes bug #47232.
28600
28601 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28602
28603         * gc.c: only close the done_event handle if there was no timeout.
28604         C-ified comments.
28605
28606 2004-03-30  Martin Baulig  <martin@ximian.com>
28607
28608         * icall.c (icall_entries): It's called "System.Activator", not
28609         "System.Activation".    
28610
28611 2004-03-30  Martin Baulig  <martin@ximian.com>
28612
28613         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28614         (mono_class_create_from_typespec): Likewise.
28615
28616 2004-03-30  Martin Baulig  <martin@ximian.com>
28617
28618         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28619         `has_ctor_constraint' and `initialized'.
28620
28621 2004-03-30  Martin Baulig  <martin@ximian.com>
28622
28623         * reflection.c (encode_new_constraint): New static function to add
28624         the constructor constraint attribute to a type parameter.
28625         (encode_constraints): Call encode_new_constraint() if necessary.
28626
28627         * reflection.h
28628         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28629
28630         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28631         
28632 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28633
28634         * reflection.c, icall.c: add support for pinning variables. 
28635
28636 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28637
28638         * marshal.c (mono_marshal_get_managed_wrapper):
28639         init bool local with zero rather than null.
28640
28641 2004-03-29  Martin Baulig  <martin@ximian.com>
28642
28643         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28644         the "official" behavior here.
28645         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28646
28647 2004-03-29  Martin Baulig  <martin@ximian.com>
28648
28649         * icall.c: Reflect latest API changes.
28650
28651 2004-03-29  Martin Baulig  <martin@ximian.com>
28652
28653         * loader.c (mono_get_method_from_token): Also call
28654         mono_metadata_load_generic_params () for abstract and interface
28655         methods; replace the type arguments in the method signature with
28656         the ones which are loaded from the metadata.
28657
28658 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28659
28660         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28661         of the lock is not the current thread. MS.NET don't do it, in spite of
28662         what the documentation says. See bug #56157.
28663
28664 2004-03-28  Martin Baulig  <martin@ximian.com>
28665
28666         * class.c (mono_class_init): Don't call init_properties() and
28667         init_events() for generic instances; set `prop->parent' when
28668         inflating properties.
28669
28670         * reflection.c (mono_generic_inst_get_object): Call
28671         `mono_class_init (ginst->klass)'.
28672         (mono_type_get_object): Only create a MonoGenericInst if your
28673         generic type is a TypeBuilder.
28674         (do_mono_reflection_bind_generic_parameters): Only set
28675         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28676
28677 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28678
28679         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28680         Fixes #56091.
28681
28682 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28683
28684         * icall.c: added Kill_internal icall.
28685         * process.[ch]: added Kill_internal icall.
28686
28687 2004-03-25  Martin Baulig  <martin@ximian.com>
28688
28689         * class.h (MonoStats): Added `generic_instance_count',
28690         `inflated_method_count', `inflated_type_count' and
28691         `generics_metadata_size'.       
28692
28693 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28694
28695         * reflection.c: no warnings now.
28696
28697 2004-03-25  Martin Baulig  <martin@ximian.com>
28698
28699         * class.c (mono_class_get_full): New public function; does a
28700         mono_class_get(), but also takes a `MonoGenericContext *'.
28701
28702         * loader.c (mono_field_from_memberref): Renamed to
28703         `field_from_memberref', made static and added `MonoGenericContext *'
28704         argument.
28705         (mono_field_from_token): Added `MonoGenericInst *' argument.
28706         (method_from_memberef): Likewise.
28707         (mono_get_method_from_token): Likewise.
28708         (mono_get_method_full): New public function; does a
28709         mono_get_method(), but also takes a `MonoGenericContext *'.
28710
28711         * verify.c (mono_method_verify): Get the method's generic context
28712         and pass it to mono_field_from_token(), mono_get_method_full() and
28713         mono_class_get_full().
28714
28715 2004-03-25  Martin Baulig  <martin@ximian.com>
28716
28717         * class.c (mono_class_inflate_generic_type): Take a
28718         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28719         `MonoGenericMethod *'.
28720
28721 2004-03-25  Martin Baulig  <martin@ximian.com>
28722
28723         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28724         instead of the MonoGenericMethod here.
28725
28726 2004-03-25  Martin Baulig  <martin@ximian.com>
28727
28728         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28729         each time we create a new MonoGenericInst, we also create a new
28730         context which points back to us.
28731
28732         * class.c (inflate_method): Use `ginst->context' instead of
28733         creating a new context.
28734
28735         * loader.c (method_from_memberref): Use
28736         `klass->generic_inst->context' instead of creating a new context.
28737
28738 2004-03-25  Martin Baulig  <martin@ximian.com>
28739
28740         * class.h (MonoGenericContext): New struct.
28741         (MonoGenericMethod): Removed `generic_inst'.
28742
28743         * class.c (mono_class_inflate_generic_method): Take a
28744         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28745
28746 2004-03-25  Martin Baulig  <martin@ximian.com>
28747
28748         * loader.h (MonoMethodInflated): New typedef.
28749
28750         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28751         `generic_param_count' consume just 30 bits, added `is_inflated'
28752         and `has_type_parameters' flags (one bit each).
28753
28754         * class.c (mono_class_inflate_generic_method): Create a
28755         MonoMethodInflated instead of a MonoMethodNormal and set
28756         `is_inflated' in the method signature.
28757
28758         * class.h (MonoGenericMethod): Removed `generic_method'.
28759
28760 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28761
28762         * image.c: Make sure the name of a MonoImage is always an absolute path.
28763           This fixes bug #54415.
28764
28765 2004-03-24  Martin Baulig  <martin@ximian.com>
28766
28767         * class.c (mono_class_setup_vtable): If we're a generic instance,
28768         use our generic type's vtable size.
28769
28770 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28771
28772         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28773         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28774         problems.
28775
28776 2004-03-23  Martin Baulig  <martin@ximian.com>
28777
28778         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28779         `MonoEvent *events'.
28780
28781         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28782         (typebuilder_icalls): Added "get_event_info"; calls
28783         mono_reflection_event_builder_get_event_info(). 
28784
28785         * reflection.c (mono_reflection_generic_inst_initialize): Added
28786         `MonoArray *events'.
28787         (mono_reflection_event_builder_get_event_info): New function.
28788
28789 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28790
28791         * object.h: add mono_type_initialization_init
28792
28793         * object.c (mono_runtime_class_init): 
28794         implement class constructor synchronization rules
28795         to cope with threading issues.  
28796         add mono_type_initialization_init
28797
28798         * appdomain.c (mono_runtime_init): call 
28799         mono_type_initialization_init
28800
28801         * class.h: removing initializing field from MonoVTable
28802
28803 2004-03-23  Martin Baulig  <martin@ximian.com>
28804
28805         * class.c (my_mono_class_from_generic_parameter): Use
28806         `param->name' if it's not NULL. 
28807
28808 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28809
28810         * class.c: do not insert non-virtual methods in the vtable.
28811         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28812         that means the method is non-virtual. This never would have
28813         happened before.
28814
28815 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28816
28817         * profiler.c: Added lock for accessing coverage_hash.
28818
28819 2004-03-22  Martin Baulig  <martin@ximian.com>
28820
28821         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28822         `method->method->signature->generic_param_count != 0' to make it
28823         work for interface methods.
28824
28825 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28826
28827         * process.c: quote the string passed to the shell using g_shell_quote.
28828
28829 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28830
28831         * threads.c:
28832         (mono_threads_manage): don't remove the finalizer thread and self
28833         from the threads hash table so that mono_thread_manage can be called
28834         more than once.
28835
28836 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28837
28838         * process.c: quote the arguments when UseShellExecute is true. Fixes
28839         bug #55790.
28840
28841 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28842
28843         * threads.c: set mono_thread_detach as a cleanup routine for every
28844         thread. This way it's always executed upon thread termination, either
28845         aborted or finished normally. No more xsp hangs!
28846
28847 2004-03-17  Martin Baulig  <martin@ximian.com>
28848
28849         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28850         `int count_nested' and a `MonoType **nested'.
28851
28852         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28853         most of the functionality into a new static
28854         do_mono_reflection_bind_generic_parameters() and don't take a
28855         `MonoType *nested_in' argument any more.  Don't compute nested
28856         types here.
28857         (mono_reflection_generic_inst_get_nested_types): New public method
28858         to get nested types.
28859
28860         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28861         we're a nested class.
28862
28863         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28864         mono_reflection_generic_inst_get_nested_types() to compute the
28865         nested types.
28866
28867 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28868
28869         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28870         descriptive error message under windows.
28871         
28872 2004-03-17  Martin Baulig  <martin@ximian.com>
28873
28874         * class.c (dup_type): Added `const MonoType *original' argument;
28875         copy the attrs from the original type.
28876
28877 2004-03-17  Martin Baulig  <martin@ximian.com>
28878
28879         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28880         `m->generic_inst_cache' here.
28881
28882 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28883
28884         * exception.h exception.c: Add stack_overflow_exception.
28885
28886 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28887
28888         * threadpool.c:
28889         (overlapped_callback): call SetEvent *after* invoking the callback.
28890         No need to call CloseHandle.
28891
28892 2004-03-16  Martin Baulig  <martin@ximian.com>
28893
28894         * reflection.c (mono_image_get_fieldref_token): Take a
28895         `MonoReflectionField *' instead of a `MonoClassField *' and a
28896         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28897
28898 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28899
28900         * appdomain.c: don't add the culture to the filename we're looking for
28901         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28902
28903 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28904
28905         * locales.c: don't ignore symbols when doing case insensitive compares.
28906         Thanks Dick! Fixes bug #54046.
28907
28908         * threads.c: surround 'threads' usage with enter/leave in
28909         mono_thread_manage.
28910
28911 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
28912
28913         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
28914         implicitly marshalled as [Out]. Fixes #55450.
28915
28916         (mono_marshal_get_runtime_invoke): Zero out the result if there is
28917         an exception.
28918
28919 2004-03-16  Martin Baulig  <martin@ximian.com>
28920
28921         * class.c (mono_class_from_generic_parameter): Use the actual
28922         parameter name. 
28923
28924 2004-03-16  Martin Baulig  <martin@ximian.com>
28925
28926         * reflection.c (type_get_signature_size): New static function.
28927         Compues the size of the type in a method signature.
28928         (method_get_signature_size): New static function; calls
28929         type_get_signature_size() to compute the actual size of the
28930         method's signature.
28931         (method_encode_signature): Use method_get_signature_size() to get
28932         the signature's size rather than using `nparams * 10'.
28933
28934 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28935
28936         * file-io.h: define here WapiOverlapped on windows. I don't want the
28937         regular OVERLAPPED one.
28938
28939         * file-io.c:
28940         * threadpool.c: somehow, BindIoCompletionCallback is not found.
28941         Disabling AIO on windows.
28942
28943 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28944
28945         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
28946         bug #55385.
28947
28948 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28949
28950         * appdomain.c: upgraded corlib version.
28951
28952         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
28953         and BeginWrite. Allow opening files for asynchrnous operations.
28954
28955         * file-io.h: new struct that maps FileStreamAsyncResult.
28956         * icall.c: added new icalls.
28957         * process.[ch]: support setting child process environment variables
28958         and use the SHELL or COMSPEC when UseShellExecute is true.
28959
28960         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
28961         callback for async. IO is here and also BindHandle.
28962
28963         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
28964         from here.
28965
28966 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
28967
28968         * reflection.c (create_custom_attr): Allow len == 0.
28969
28970         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
28971         computation on big-endian machines.
28972
28973 2004-03-13  Martin Baulig  <martin@ximian.com>
28974
28975         * class.h (MonoGenericInst): Added `int count_ifaces'.
28976
28977         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
28978         `ginst->count_ifaces' instead `klass->interface_count' since we
28979         may get called before the vtable is created.
28980
28981         * loader.c (mono_method_get_param_names): If we're a generic
28982         instance, return and don't initialize the class.
28983
28984         * reflection.c (mono_reflection_setup_generic_class): Don't call
28985         ensure_runtime_vtable().
28986         (mono_reflection_bind_generic_parameters): Set
28987         `ginst->count_ifaces'.
28988
28989 2004-03-11  Jackson Harper <jackson@ximian.com>
28990
28991         * icall.c:
28992         * unicode.c:
28993         * unicode.h: Remove unused System.Char icalls.
28994         
28995 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
28996
28997         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
28998         code when we P/Invoke the first library in Windows.Forms, instead
28999         of when we first open the assembly.
29000
29001         * assembly.c: Drop the lookup from here.
29002
29003 2004-03-10  Martin Baulig  <martin@ximian.com>
29004
29005         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29006         class for properties, fields and events.  Finally fixes #54945.
29007
29008 2004-03-10  Martin Baulig  <martin@ximian.com>
29009
29010         * metadata.c (mono_metadata_class_equal): New static function;
29011         checks whether two generic instances or two generic parameters are
29012         equal.
29013         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29014         compare classes.        
29015
29016 2004-03-10  Martin Baulig  <martin@ximian.com>
29017
29018         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29019
29020         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29021         argument and write it into the `reflection_info' field.
29022
29023         * icall.c
29024         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29025         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29026
29027 2004-03-09  Jackson Harper  <jackson@ximian.com>
29028
29029         * char-conversions.h: use 8 bits for numeric data its all we need
29030         * icall.c: numeric data is only 8 bits now.
29031
29032 2004-03-09  Martin Baulig  <martin@ximian.com>
29033
29034         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29035
29036         * class.c (init_properties, init_events): Initialize the new
29037         `parent' field.
29038
29039         * reflection.c (typebuilder_setup_properties): Likewise.
29040         (typebuilder_setup_events): Likewise.
29041
29042         * reflection.h (MonoEventInfo): Replaced `parent with
29043         `declaring_type' and `reflected_type'.
29044
29045         * icall.c (ves_icall_get_property_info): Distinguish between
29046         declaring and reflected type.
29047         (ves_icall_get_event_info): Likewise.
29048
29049 2004-03-09  Martin Baulig  <martin@ximian.com>
29050
29051         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29052         (ves_icall_Type_GetField): Correctly set field->klass.
29053
29054 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29055
29056         * loader.h: Fix warning.
29057
29058 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29059
29060         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29061         library routine if present.  Notice that it will still continue
29062         executing even if its missing, for those working on the Gtk#
29063         edition of Windows.Forms.
29064
29065         * assembly.c (do_mono_assembly_open): If loading the
29066         System.Windows.Forms call mono_loader_wini_init.
29067
29068 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29069
29070         * class.h: Added MonoRemoteClass struct.
29071         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29072         function for MonoStrings.
29073         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29074         Added internal call for getting the proxy type.
29075         * marshal.c: Get the type of transparent proxies from its remote_class.
29076         Added methods that generate the IL for type checks and casts:
29077         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29078         mono_marshal_get_proxy_cancast.
29079         * marshal.h: Declaration of the previous new methods.
29080         * object.c: Added new moethods for creating and updating MonoRemoteClass
29081         instances: mono_remote_class, mono_upgrade_remote_class, 
29082         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29083         * verify.c: FIx transparent_proxy_fields layout.
29084         * appdomain.c: Bump corlib version.
29085
29086 2004-03-04  Jackson Harper  <jackson@ximian.com>
29087
29088         * icall.c: Add icall to access char conversion tables.
29089         * char-conversions.h: Character conversion tables.
29090         * Makefile.am: Add char-conversions.h private header file.
29091         
29092 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29093
29094         * appdomain.c (unload_thread_main): Increase unloading timeout to
29095         10 sec as a temporary workaround for Nant problems.
29096
29097 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29098
29099         * gc.c: Add checks for GC_enable and GC_disable.
29100
29101         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29102         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29103         (bug #54988).
29104         
29105 2004-02-27  Martin Baulig  <martin@ximian.com>
29106
29107         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29108         `MonoReflectionType *' instead of a `MonoType *'.
29109
29110 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29111
29112         * gc.c (run_finalize): Avoid finalizing the object representing the
29113         finalizer thread.
29114         (finalizer_thread): Fix warning.
29115
29116 2004-02-25  Martin Baulig  <martin@ximian.com>
29117
29118         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29119         argument for nested types.
29120         (mono_class_create_generic): Added support for nested generictypes.
29121
29122         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29123         `GList *nested'.
29124
29125         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29126
29127         * reflection.c (method_encode_signature): Increase the minimum
29128         value of `size' from 10 to 11.
29129         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29130         and `MonoType **types' arguments instead of the `MonoArray
29131         *types'; added `MonoType *nested_in'.  Recursively instantiate
29132         nested classes. 
29133
29134 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29135
29136         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29137         stack_overflow_ex members which are used by exception handling.
29138
29139         * appdomain.c (mono_runtime_init): Initialize the new members.
29140
29141         * gc.c (mono_gc_enable): New helper function.
29142         * gc.c (mono_gc_disable): New helper function.
29143
29144 2004-02-23  Martin Baulig  <martin@ximian.com>
29145
29146         * icall.c: I must have been really stupid - make it actually work
29147         this time ;-)
29148
29149 2004-02-23  Martin Baulig  <martin@ximian.com>
29150
29151         * loader.c (method_from_memberref): Only inflate the method if
29152         it's in another klass.
29153
29154 2004-02-23  Martin Baulig  <martin@ximian.com>
29155
29156         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29157         (mono_class_init): If we're a generic instance and an interface,
29158         compute `class->interface_id'; also create `class->interfaces'
29159         here and inflate them.
29160
29161         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29162         `ginst->is_open'.
29163         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29164
29165         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29166
29167 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29168
29169         * reflection.c (method_encode_code): Improved the error message
29170         generated by the exception.
29171
29172 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29173
29174         * icall.c: Martin did not do what he said in the ChangeLog for
29175         2004-02-18, but put back the changes for properties and events.
29176         Commenting those changes out again and adding comment to bug #54518.
29177         
29178         * process.c: removed warning.
29179
29180 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29181
29182         * marshal.c (emit_struct_conv): Print an error message instead of
29183         asserting when a type does not have the StructLayout attribute.
29184
29185 2004-02-20  Martin Baulig  <martin@ximian.com>
29186
29187         * reflection.c (mono_type_get_object): Also use the cache for
29188         generic instances.
29189         (mono_reflection_bind_generic_parameters): Always compute
29190         `ginst->ifaces'.        
29191
29192 2004-02-20  Martin Baulig  <martin@ximian.com>
29193
29194         * class.h (MonoGenericMethod): Removed `klass'.
29195
29196         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29197         *klass' argument.
29198
29199 2004-02-20  Martin Baulig  <martin@ximian.com>
29200
29201         * reflection.c (method_encode_methodspec): Actually use the
29202         uninflated signature for the memberref.
29203
29204 2004-02-20  Martin Baulig  <martin@ximian.com>
29205
29206         * class.h (MonoGenericMethod): Removed `declaring'.
29207
29208         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29209         is NULL, compute it here.
29210
29211 2004-02-20  Martin Baulig  <martin@ximian.com>
29212
29213         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29214
29215         * metadata.c (mono_metadata_generic_inst_hash): New method.
29216         (mono_metadata_generic_inst_equal): New method.
29217
29218         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29219         `klass->image->generic_inst_cache' cache to avoid creating
29220         duplicate MonoGenericInst's.
29221
29222         * class.c (mono_class_inflate_generic_type): Use the cache.
29223
29224 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29225
29226         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29227
29228 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29229
29230         * icall.c: added Socket.WSAIoctl icall.
29231
29232         * socket-io.[ch]: implemented
29233         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29234
29235 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29236
29237         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29238
29239 2004-02-18  Urs C Muff  <umuff@quark.com>
29240
29241         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29242         this work on PPC and other big-endian architectures.
29243
29244         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29245         fields with an underscore to make sure they're only accessed by
29246         the read32() macro.
29247
29248 2004-02-18  Martin Baulig  <martin@ximian.com>
29249
29250         * icall.c: Put the klass->refclass changes back for methods and
29251         fields, but not for properties and events.  We're currently not
29252         distinguishing between DeclaringType and ReflectedType for
29253         properties and events, that's what caused the regressions.
29254
29255 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29256
29257         * object.c:
29258         (mono_async_result_new): the handle can be NULL.
29259
29260         * threadpool.c: Use an event instead of a semaphore, don't initialize
29261         it until needed. This saves quite a few semaphores from being created
29262         when using the threadpool.
29263
29264 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29265
29266         * object.c (mono_string_is_interned_lookup): Fix interning of long
29267         strings. Fixes #54473.
29268
29269         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29270
29271         * icall.c: Revert the klass->refclass changes since they introduce
29272         regressions (bug #54518).
29273
29274 2004-02-18  Martin Baulig  <martin@ximian.com>
29275
29276         * class.c (mono_class_init): If we're a generic instance and don't
29277         come from a TypeBuilder, inflate our members here.
29278         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29279         (mono_class_create_generic): New public method.
29280         (mono_class_initialize_generic): Removed.
29281         (get_instantiation_name): Renamed to
29282         _mono_class_get_instantiation_name() and made it public.
29283
29284 2004-02-18  Martin Baulig  <martin@ximian.com>
29285
29286         * class.c (mono_class_inflate_generic_type): Clear the new
29287         instance's `nginst->klass' when inflating a generic instance.
29288         (mono_class_is_subclass_of): Added (basic) support for generic
29289         instances.
29290
29291 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29292
29293         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29294         MonoMempool to hold compiled native code.
29295
29296 2004-02-17  Martin Baulig  <martin@ximian.com>
29297
29298         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29299         `properties'.
29300
29301         * reflection.c (mono_reflection_generic_inst_initialize): Added
29302         `MonoArray *properties' argument.
29303
29304         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29305
29306 2004-02-17  Martin Baulig  <martin@ximian.com>
29307
29308         * icall.c (ves_icall_Type_GetFields): Renamed to
29309         ves_icall_Type_GetFields_internal() and added a
29310         `MonoReflectionType *rtype' argument; pass it to
29311         mono_field_get_object() to set the field's "reflected" type.
29312         (ves_icall_Type_GetConstructors): Likewise.
29313         (ves_icall_Type_GetEvents): Likewise.
29314         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29315         argument; pass it to mono_method_get_object() to set the method's
29316         "reflected" type.       
29317
29318 2004-02-17  Martin Baulig  <martin@ximian.com>
29319
29320         * class.h (MonoDynamicGenericInst): New type.
29321         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29322
29323         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29324         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29325         (ves_icall_MonoGenericInst_GetFields): New interncall.
29326
29327         * class.c (mono_class_from_generic): Don't call
29328         mono_class_initialize_generic() if this is a dynamic instance;
29329         ie. it's being created from a TypeBuilder.
29330         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29331         `class->byval_arg.type'.
29332
29333         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29334         to `inflate_method' and made static.
29335         (mono_reflection_inflate_field): Removed.
29336         (mono_reflection_generic_inst_initialize): New public method.
29337
29338         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29339         `ctors' and `fields'; added `initialized'.
29340
29341 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29342
29343         * debug-helpers.c (mono_method_full_name): Fix output for empty
29344         namespaces.
29345
29346 2004-02-12  Martin Baulig  <martin@ximian.com>
29347
29348         * class.h (MonoClassField): Added `MonoType *generic_type'.
29349
29350         * reflection.c (mono_image_get_fieldref_token): Added support for
29351         instantiated generic types.
29352         (field_encode_inflated_field): Removed.
29353         (mono_image_get_inflated_field_token): Removed.
29354         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29355
29356         * reflection.h (MonoReflectionInflatedField): Removed.
29357
29358 2004-02-12  Martin Baulig  <martin@ximian.com>
29359
29360         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29361         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29362
29363         * reflection.c (mono_image_get_methodspec_token): Take a
29364         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29365         (mono_image_create_token): Check whether we have a
29366         `method->signature->gen_method' and call
29367         mono_image_get_methodspec_token() if appropriate.
29368         (inflated_method_get_object): Removed.
29369         (mono_reflection_bind_generic_method_parameters): Return a
29370         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29371         (mono_reflection_inflate_method_or_ctor): Likewise.
29372
29373         * reflection.h (MonoReflectionInflatedMethod): Removed.
29374
29375 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29376
29377         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29378         for custom valuetype marshalling.
29379
29380         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29381
29382 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29383
29384         * icall.c: fixed WSAGetLastError_internal name.
29385
29386 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29387
29388         * threads.c (mono_thread_attach): Allow this to be called multiple
29389         times for a thread.
29390         
29391         * threads.c (build_wait_tids): Do not wait for ourselves.
29392
29393         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29394         appdomain list is empty.
29395
29396         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29397         memory returned by mono_string_builder_to_utf16, since it points into
29398         managed memory. Thanks to Bernie Solomon for noticing this.
29399
29400         * icall.c: Add AppDomainSetup icalls.
29401
29402         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29403
29404         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29405         types.
29406
29407         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29408         custom attributes to the method_aux struct. Also fix array indexes etc.
29409
29410         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29411         
29412 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29413
29414         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29415         (both static and runtime) and reduce startup time.
29416
29417 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29418
29419         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29420         AsAny marshalling conversion instead of crashing.
29421
29422         * marshal.c: Fix warnings.
29423
29424 2004-02-09  Martin Baulig  <martin@ximian.com>
29425
29426         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29427
29428         * reflection.h (MonoReflectionInflatedMethod): Removed the
29429         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29430
29431         * reflection.c (method_encode_methodspec): Removed the `method'
29432         argument; we get it from `gmethod->declaring'.
29433         (inflated_method_get_object): Removed the `declaring' argument.
29434
29435 2004-02-09  Martin Baulig  <martin@ximian.com>
29436
29437         * class.h (MonoGenericMethod): New type.
29438         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29439         `generic_method'.
29440
29441         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29442         a `MonoGenericMethod *gen_method' one.
29443
29444         * class.c (mono_class_inflate_generic_type): Take an additional
29445         `MonoGenericMethod * argument.  This is only non-NULL if we're
29446         inflating types for a generic method.   
29447         (mono_class_inflate_generic_signature): Renamed to
29448         inflate_generic_signature() and made static; take a
29449         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29450         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29451         instead of a `MonoGenericInst *' one.
29452         (mono_class_inflate_generic_method): Likewise.
29453
29454         * reflection.c (encode_generic_method_sig): Take a
29455         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29456         (method_encode_methodspec): Likewise.
29457         (inflated_method_get_object): Likewise. 
29458
29459         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29460         field with a `MonoGenericMethod *gmethod' one.  
29461
29462 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29463
29464         * class.h (mono_class_has_parent): add parens to expansion
29465         so you can ! this.
29466
29467 2004-02-08  Martin Baulig  <martin@ximian.com>
29468
29469         * image.h (MonoImage): Removed `generics_cache'.
29470
29471         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29472         instead of a `MonoType *' argument; removed the `inflate_methods'
29473         argument.  Don't inflate methods here.
29474
29475         * loader.c (find_method): If it's a generic instance, call
29476         mono_class_init() on the `sclass->generic_inst->generic_type'.
29477
29478         * metadata.c (mono_type_size): Make this work on uninitialized
29479         generic instances; call it on the `ginst->generic_type's class.
29480
29481         * reflection.c (mono_reflection_bind_generic_parameters): Call
29482         mono_class_from_generic() to create the `ginst->klass'.
29483
29484 2004-02-08  Martin Baulig  <martin@ximian.com>
29485
29486         * class.h (MonoClass): Changed type of `generic_inst' from
29487         `MonoType *' to `MonoGenericInst *'.
29488
29489 2004-02-08  Martin Baulig  <martin@ximian.com>
29490
29491         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29492         mono_type_get_object(), this is now creating a `MonoGenericInst'
29493         for MONO_TYPE_GENERICINST.
29494         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29495         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29496
29497         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29498         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29499         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29500         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29501         and reflected type.
29502
29503         * reflection.h (MonoReflectionInflatedMethod): Removed
29504         `declaring_type' and `reflected_type'.
29505
29506 2004-02-08  Martin Baulig  <martin@ximian.com>
29507
29508         * class.h (MonoGenericInst): Added `MonoType *parent' and
29509         `MonoType **ifaces'.
29510
29511         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29512         `parent' and `interfaces'.
29513
29514         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29515         `MonoType *' argument and return a `MonoType *'.
29516
29517         * icall.c
29518         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29519         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29520
29521 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29522
29523         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29524         valuetype marshalling.
29525
29526 2004-02-06  Martin Baulig  <martin@ximian.com>
29527
29528         * class.c
29529         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29530         (my_mono_class_from_generic_parameter): Likewise.
29531
29532 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29533
29534         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29535         contents of the symbol files lazily.
29536
29537         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29538
29539         * threads.h threads.c icall.c: New icalls for getting and setting the
29540         threads name.
29541
29542 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29543
29544         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29545         Raise an exception when the domain is not found.
29546
29547 2004-02-03  Martin Baulig  <martin@ximian.com>
29548
29549         * reflection.c (mono_image_get_methodspec_token): Use the
29550         uninflated signature; fixes gen-33.
29551
29552 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29553
29554         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29555         the finalizer code can use thread functionality.
29556
29557         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29558         the finalizer thread.
29559
29560         * threads.c: Make some functions more robust.
29561
29562         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29563
29564         * metadata.h: Add new marshalling conventions.
29565
29566         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29567         stringbuilder marshalling. Fixes #53700.
29568
29569         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29570
29571         * reflection.c (mono_image_get_type_info): Save declarative security
29572         info.
29573
29574         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29575         unmanaged fields as well.
29576
29577         * appdomain.c: Bump corlib version.
29578
29579 2004-02-01  Martin Baulig  <martin@ximian.com>
29580
29581         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29582         method type arguments.  
29583
29584 2004-01-30  Duncan Mak  <duncan@ximian.com>
29585
29586         * marshal.h: Add prototype for
29587         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29588         and
29589         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29590         fix the build.
29591
29592 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29593
29594         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29595         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29596
29597 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29598
29599         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29600         custom marshalling of valuetypes.
29601
29602         * marshal.c: Fix some warnings.
29603
29604 2004-01-29  Martin Baulig  <martin@ximian.com>
29605
29606         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29607         for generic method parameters.
29608
29609         * reflection.c (method_encode_methodspec): Write the uninflated
29610         signature into the methodspec table.
29611         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29612         is always the uninflated method.
29613         (reflection_methodbuilder_to_mono_method): Copy the generic
29614         parameters from the MethodBuilder into `header->gen_params'.
29615
29616 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29617
29618         * class.c (mono_class_from_generic_parameter): Fix warning.
29619
29620 2004-01-27  Martin Baulig  <martin@ximian.com>
29621
29622         * class.c (mono_class_from_generic_parameter): Don't create
29623         `klass->methods' here.  
29624
29625 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29626
29627         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29628         extension since it does not work with libraries named lib<FOO>.dll.so.
29629
29630 2004-01-25  Martin Baulig  <martin@ximian.com>
29631
29632         * class.c (mono_class_inflate_generic_type): Added support for
29633         MONO_TYPE_GENERICINST.
29634
29635         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29636         inflate methods on open constructed types.      
29637
29638 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29639
29640         * object.c: fire ProcessExit event in the root AppDomain after running
29641         Main. Fixes bug #53299.
29642
29643 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29644
29645         * socket-io.c: include the new socket-wrappers.h header.
29646         Use the wrappers instead of the unix socket functions to make the code
29647         more clear.
29648
29649 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29650
29651         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29652
29653         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29654         Fixes #22532.
29655
29656 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29657
29658         * reflection.c (mono_image_create_pefile): Handle the case when the
29659         entry point is not a MethodBuilder.
29660
29661         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29662         field to ReflectionMethod since it is not allways a builder.
29663
29664         * reflection.c (type_get_fully_qualified_name): New helper function to
29665         return the fully qualified name of a type.
29666
29667         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29668         type name for custom marshallers.
29669
29670         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29671
29672         * class.c (mono_class_setup_vtable): If a parent class already 
29673         implements an interface, use the implementing methods from that class.
29674         Fixes #53148.
29675
29676 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29677
29678         * threadpool.c: just return instead of ExitThread to allow for thread
29679         clean up earlier.
29680
29681 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29682
29683         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29684         when closing resource modules.
29685
29686         * reflection.c (mono_image_create_pefile): Handle the case when the
29687         entry point is not a MethodBuilder.
29688
29689         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29690         field to ReflectionMethod since it is not allways a builder.
29691
29692 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29693
29694         * marshal.c (mono_marshal_get_managed_wrapper): 
29695         mono_marshal_alloc takes native int so CONV_I
29696         the arg for 64bits.
29697
29698 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29699
29700         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29701         tokens in the cattr table. Fixes #53108.
29702
29703 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29704
29705         * loader.c: don't trim ".dll" before looking up in the config file.
29706         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29707
29708 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29709
29710         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29711         Return the module which contains the resource as well.
29712         (ves_icall_System_Reflection_Module_Close): New icall.
29713
29714         * appdomain.c: Bump corlib version number.
29715
29716         * image.c (mono_image_addref): New public function.
29717
29718         * assembly.c: Call mono_image_addref.
29719
29720         * reflection.c (mono_module_get_object): Increase reference count of 
29721         the image.
29722
29723         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29724         Fixes #22532.
29725
29726         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29727         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29728         proper exceptions on DllImport problems.
29729
29730 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29731
29732         * class.c, metadata.c: eliminate CSIZE macro.
29733
29734 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29735
29736         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29737         * object.h: Added async_callback field in MonoAsyncResult.
29738         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29739         * verify.c: Added async_callback in MonoAsyncResult layout.
29740
29741 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29742
29743         * reflection.c (mono_reflection_get_custom_attrs): Add support
29744         for Modules.
29745
29746 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29747
29748         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29749         marshalling.
29750         (mono_marshal_method_from_wrapper): Add null pointer check.
29751
29752 2004-01-16  Martin Baulig  <martin@ximian.com>
29753
29754         * debug-mono-symfile.h: Set version number to 36 and reflect
29755         latest symbol writer changes.
29756
29757 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29758
29759         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29760         multi-dimensional arrays.
29761         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29762         (mono_class_from_mono_type): Use bounded_array_class_get.
29763         
29764         * class.c (mono_bounded_array_class_get): New function which takes
29765         a 'bounded' bool argument to distinguish vectors from one dimensional
29766         arrays.
29767
29768         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29769         bounded_array_class_get if the array has bounds.
29770
29771         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29772         Search modules loaded using AssemblyBuilder:AddModule as well.
29773
29774 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29775
29776         * appdomain.c: increased corlib version.
29777         * filewatcher.c: removed g_print.
29778         * icall.c:
29779         (get_property_info): only allocate what is actually requested.
29780         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29781
29782 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29783
29784         * Makefile.am: added filewatcher.[ch]
29785         * filewatcher.[ch]: FileSystemWatcher runtime support.
29786         * icall.c: added new FSW icalls.
29787
29788 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29789
29790         * string-icalls.c: fix stringbuilder regression as suggested by
29791         Iain McCoy <iain@mccoy.id.au>.
29792
29793 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29794
29795         * process.c (process_read_stringtable_block): Recognize '007f' as
29796         a language neutral stringtable block.
29797
29798 2004-01-12  Patrik Torstensson
29799
29800         * object.h (MonoStringBuilder) : Changed layout to support our
29801         new stringbuilder class.
29802         * marshal.c: Change marshalling to support the new layout of 
29803         string builder.
29804         * appdomain.c: increased version number because new layout of
29805         string builder.
29806
29807 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29808
29809         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29810         assembly name as an string instead of an AssemblyName, since it is
29811         easier to extract info from it.
29812
29813         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29814         the culture subdirectories too. Fixes #52231.
29815
29816 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29817
29818         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29819         It takes 2 new parameters with an optional name for the method to look
29820         for and case ignoring info.
29821
29822         * threadpool.c: removed unused variable.
29823
29824 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29825
29826         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29827         It takes 2 new parameters with an optional name for the property to look
29828         for and case ignoring info.
29829         Fixes bug #52753.
29830
29831 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29832
29833         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29834         Fix #52451.
29835
29836 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29837
29838         * appdomain.c:
29839         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29840         Fixes bug #52630.
29841
29842 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29843
29844         * reflection.c: Add support for more than one unmanaged resource.
29845
29846         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29847         in field->def_value, as done in all other cases.
29848
29849         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29850         TypeBuilders.
29851
29852         * reflection.c (mono_reflection_create_runtime_class): Remove 
29853         errorneous assignment to klass->element_class, since it is already
29854         done in mono_reflection_setup_internal_class.
29855
29856 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29857
29858         * gc.c: added missing LeaveCriticalSection.
29859         * icall.c: indented a couple of lines.
29860         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29861         if we call EndInvoke inside a callback. Fixes bug #52601.
29862
29863 2004-01-07  Martin Baulig  <martin@ximian.com>
29864
29865         * mono-debug-debugger.h
29866         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29867
29868 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29869
29870         * appdomain.c: Use messages in NotImplementedException.
29871
29872         * exception.c (mono_get_exception_not_implemented): Now this takes
29873         a message argument.
29874
29875         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29876         exception instead of g_asserting an aborting when something is not
29877         implemented.
29878
29879         Add some inline docs.
29880
29881 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29882
29883         * reflection.h: Update after changes to object layout.
29884
29885         * reflection.c: Implement saving of unmanaged aka win32 resources.
29886
29887         * appdomain.c: Bump version number.
29888
29889         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29890         Handle missing domains gracefully.
29891
29892 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29893
29894         * file-io.c : On Windows, there are much more invalid_path_chars.
29895
29896 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29897
29898         * class.h, object.c: prepare for GetType () speedup.
29899
29900 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29901
29902         * profiler.c: workaround for --profile null reference exception on
29903           cygwin. Patch by Patrik Torstensson.
29904
29905 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29906
29907         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29908         make work for unaligned access.
29909
29910 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29911
29912         * class.c: small cleanup (class->fields [i] -> field).
29913         * image.c: check address of metadata is valid.
29914
29915 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
29916
29917         * assembly.h assembly.c (mono_assembly_loaded): New public function to
29918         search the list of loaded assemblies.
29919
29920         * reflection.c (mono_reflection_type_from_name): Use 
29921         mono_assembly_loaded instead of mono_image_loaded.
29922
29923         * reflection.c: Fix warnings.
29924
29925 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
29926
29927         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
29928         is dynamic. This is needed since an assembly can contain both dynamic and
29929         non-dynamic images.
29930
29931         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
29932         assembly->dynamic.
29933
29934         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
29935
29936         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
29937         to store modules loaded using AddModule.
29938
29939         * reflection.c (mono_image_fill_file_table): Generalize this so it works
29940         on Modules.
29941
29942         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
29943
29944         * reflection.c (mono_image_fill_export_table_from_module): New function to
29945         fill out the EXPORTEDTYPES table from a module.
29946
29947         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
29948         into a separate function. Also handle loaded non-dynamic modules.
29949
29950         * reflection.c (mono_image_basic_init): Fix memory allocation.
29951
29952         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29953
29954         * assembly.c (mono_assembly_load_references): Make this public.
29955
29956 2003-12-19  Martin Baulig  <martin@ximian.com>
29957
29958         * class.c (mono_class_initialize_generic): Made this static, take
29959         a `MonoGenericInst *' instead of a `MonoClass *'.
29960         (mono_class_from_generic): Call mono_class_initialize_generic()
29961         unless we're already initialized or being called from
29962         do_mono_metadata_parse_generic_inst().
29963
29964         * class.h (MonoGenericInst): Added `initialized' and
29965         `init_pending' flags.
29966
29967         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
29968         `mono_class_init (gklass)' or mono_class_initialize_generic()
29969         here; set `generic_inst->init_pending' while parsing the
29970         `type_argv'.
29971
29972 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
29973
29974         * locales.c: include string.h for memxxx prototypes
29975
29976 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
29977
29978         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
29979         constructor when accessing literal fields.
29980
29981 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
29982
29983         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29984
29985         * reflection.c (assembly_add_resource_manifest): New function to fill
29986         the MANIFESTRESOURCE table.
29987
29988         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
29989
29990         * reflection.h: Update to changes in class layout.
29991
29992         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
29993         Reenable call to mono_runtime_is_shutting_down ().
29994
29995         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
29996         determine if the runtime is shutting down.
29997
29998 2003-12-16  Jackson Harper <jackson@ximian.com>
29999
30000         * icall.c: comment out call to mono_runtime_is_shutting_down to
30001         fix build.
30002         
30003 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30004
30005         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30006         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30007
30008 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30009
30010         * reflection.c: move definition of swap_with_size
30011         to before its first call
30012
30013 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30014
30015         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30016
30017         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30018         icall.
30019
30020         * object.c: Fix warnings.
30021
30022         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30023         members if FlattenHierarchy is set.
30024
30025         * reflection.c (mono_image_add_decl_security): New function to emit
30026         declarative security.
30027
30028         * reflection.h reflection.c: Add support for declarative security.
30029
30030         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30031         
30032 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30033
30034         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30035         
30036         * appdomain.c verify.c: Moved corlib version checking into its own
30037         function in appdomain.c since it needs to create vtables etc.
30038
30039 2003-12-13  Patrik Torstensson <p@rxc.se>
30040
30041         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30042         instead of unwrapped server.
30043
30044 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30045
30046         * verify.c (check_corlib): Fix field index.
30047
30048 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30049
30050         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30051         GetGacPath icall.
30052
30053 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30054
30055         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30056         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30057         cope with sizeof(size_t) != sizeof(guint32).
30058
30059 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30060
30061         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30062         in case of failure.
30063
30064 2003-12-10  Mark Crichton <crichton@gimp.org>
30065
30066         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30067         in managed code.
30068
30069         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30070
30071 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30072
30073         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30074         marked as deleted.
30075
30076 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30077
30078         * verify.c (check_corlib): Handle the case when the version field is 
30079         initialized by a static constructor.
30080
30081 2003-12-08  Patrik Torstensson  <p@rxc.se>
30082
30083     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30084
30085 2003-12-08  Martin Baulig  <martin@ximian.com>
30086
30087         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30088         a MonoReflectionGenericParameter, also take the parameter index
30089         and name as arguments.
30090         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30091         (ves_icall_MonoGenericParam_initialize): New interncall.
30092         (ves_icall_Type_make_byref_type): New interncall.
30093
30094         * reflection.h (MonoReflectionGenericParam): Derive from
30095         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30096         `index' fields.
30097
30098         * reflection.c (mono_reflection_define_generic_parameter): Create
30099         and return a new MonoReflectionGenericParam; don't initialize the
30100         constraints here.
30101         (mono_reflection_initialize_generic_parameter): New public method;
30102         initializes the constraints and creates the `param->pklass'.
30103
30104 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30105
30106         * reflection.h reflection.c: Use the new fields 'num_types', 
30107         'num_fields' and 'num_methods' to track the number of types etc.
30108
30109         * verify.c (check_corlib): Check corlib version number.
30110
30111 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30112
30113         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30114         function works on all methods.
30115
30116 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30117
30118         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30119         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30120         the custom_type_info flag of the transparent proxy.
30121         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30122         objects that supports IRemotingTypeInfo.
30123         * object.h: Added custom_type_info field in transparent proxy.
30124
30125 2003-12-06  Martin Baulig  <martin@ximian.com>
30126
30127         * class.c (mono_class_create_from_generic): Removed.
30128         (mono_class_from_generic): Check `ginst->klass' before doing
30129         anything else.  This is important to fully support "recursive"
30130         generic types.
30131
30132         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30133         empty `generic_inst->klass' before doing anything else.
30134
30135 2003-12-06  Dick Porter  <dick@ximian.com>
30136
30137         * verify.c: 
30138         * object.h:
30139         * icall.c:
30140         * locales.c: Use C structs to access class fields.  Don't do a
30141         conversion between MonoString and UChar because both are
30142         platform-endian UTF-16.  Compare now takes startindex and count
30143         parameters.  Add a char overload for IndexOf.  Speed up the
30144         invariant string IndexOf.
30145
30146 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30147
30148         * Makefile.am (monosn_LDADD): Fix parallel build.
30149
30150 2003-12-04  Martin Baulig  <martin@ximian.com>
30151
30152         * icall.c
30153         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30154         (ves_icall_Type_make_array_type): New interncall.       
30155
30156 2003-12-04  Martin Baulig  <martin@ximian.com>
30157
30158         * locales.c: also change it in the !HAVE_ICU case.
30159
30160 2003-12-04  Dick Porter  <dick@ximian.com>
30161
30162         * icall.c:
30163         * locales.c: construct_compareinfo is now in CompareInfo, not
30164         CultureInfo.
30165
30166 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30167
30168         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30169         image->files array.
30170
30171         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30172         table as well.
30173
30174         * assembly.c (mono_assembly_load_references): Only load references
30175         once.
30176
30177         * class.c (mono_class_from_name): Avoid linear search of the 
30178         EXPORTEDTYPE table.
30179
30180         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30181
30182 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30183
30184         * image.h (MonoImage): Add 'field_cache' field.
30185
30186         * loader.c (mono_field_from_token): Cache field lookups.
30187         
30188         * reflection.c (mono_module_get_object): Fix name property.
30189
30190         * icall.c (ves_icall_get_enum_info): Update after changes to 
30191         mono_metadata_get_constant_index ().
30192
30193         * icall.c: Get rid of get_type_info icall, use a separate icall for
30194         each type property to avoid needless memory allocations. Fixes #51514.
30195
30196         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30197         to avoid needless binary searches.
30198
30199         * class.c (class_compute_field_layout): Move the initialization of
30200         field->def_value to mono_class_vtable ().
30201
30202         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30203         non-corlib types.
30204
30205         * object.c (mono_object_allocate): Make it inline.
30206
30207         * object.c (mono_object_allocate_spec): Make it inline.
30208         
30209 2003-12-02  Dick Porter  <dick@ximian.com>
30210
30211         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30212         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30213
30214 2003-12-01  Dick Porter  <dick@ximian.com>
30215
30216         * threads.c: Fix signature and call in CreateMutex and
30217         CreateEvent.
30218
30219 2003-12-01  Dick Porter  <dick@ximian.com>
30220
30221         * icall.c: 
30222         * locales.c: Implement string compares and searching
30223
30224         * object.h: Add extra Thread field
30225
30226 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30227
30228         * reflection.c (fixup_method): Add support for MonoCMethod.
30229
30230 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30231
30232         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30233
30234         * reflection.c (assembly_name_to_aname): Allow extra characters in
30235         assembly names. Fixes #51468.
30236
30237 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30238
30239         * exception.c (mono_exception_from_name_domain): New helper function.
30240
30241         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30242         exception object in the correct domain.
30243
30244         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30245         formatting + make a copy a the input data.
30246
30247         * loader.c (mono_get_method_from_token): Methods which contain
30248         native code do not have entries in the ImplMap.
30249
30250         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30251         Thanks to Gonzalo for spotting this.
30252         
30253         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30254         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30255
30256         * assembly.h (mono_assembly_load_from): Split the second part of 
30257         assembly loading into a new public function.
30258
30259         * exception.h (mono_get_exception_bad_image_format): New function.
30260
30261 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30262
30263         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30264         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30265         
30266         * icall.c: Add new icall for creating dynamic methods.
30267
30268         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30269
30270         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30271
30272         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30273         create a dynamic method.
30274
30275         * reflection.c (resolve_object): New helper function.
30276
30277         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30278         which manipulate it so they can also work on dynamic methods.
30279
30280         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30281         creating the MonoReflectionMethodAux structure if it is not needed.
30282         
30283         * reflection.h verify.c: Update after changes to object layout.
30284
30285         * reflection.c (method_builder_encode_signature): Fix compilation on
30286         gcc 2.95.x.
30287
30288 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30289
30290         * appdomain.h: Added support for context static fields. Added static_data
30291           field to MonoAppContext and renamed thread_static_fields to a more
30292           generic special_static_fields in MonoAppDomain, since it can now contain
30293           context static fields.
30294         * domain.c: Updated hashtable name.
30295         * object.c: Replaced field_is_thread_static() for a more generic
30296           field_is_special_static() which also checks for context static attribute.
30297           In mono_class_vtable(), added support for static context fields.
30298         * threads.c: Changed methods that manage thread static fields to more
30299           generic methods so they can be reused both for thread and context static
30300           data.
30301         * threads.h: Declared some new methods.
30302
30303 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30304
30305         * reflection.h: Update after changes to the managed types.
30306
30307         * reflection.c (encode_custom_modifiers): New helper function.
30308
30309         * reflection.c (method_encode_signature): Emit custom modifiers.
30310
30311         * reflection.c (field_encode_signature): Emit custom modifiers.
30312
30313 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30314
30315         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30316
30317         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30318         implementation.
30319
30320         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30321         icall.
30322
30323         * object.c (mono_field_get_value_object): New function.
30324
30325         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30326         specific.
30327
30328 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30329
30330         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30331         return a preallocated out-of-memory exception instance.
30332
30333         * object.c (out_of_memory): Use the new function.
30334
30335         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30336         flag is before the custom modifiers. Fixes #49802.
30337
30338 2003-11-16  Martin Baulig  <martin@ximian.com>
30339
30340         * class.c (mono_class_is_open_constructed_type): Implemented the
30341         MONO_TYPE_GENERICINST case.
30342
30343 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30344
30345         * assembly.c (mono_assembly_fill_assembly_name): New function to
30346         fill out the MonoAssemblyName structure.
30347         (mono_assembly_open): Use the new function.
30348
30349         * icall.c (fill_reflection_assembly_name): New helper function.
30350
30351         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30352         new function.
30353
30354         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30355
30356 2003-11-15  Martin Baulig  <martin@ximian.com>
30357
30358         * class.c (mono_class_is_open_constructed_type): New public
30359         function; checks whether a type is an open constructed type,
30360         ie. whether it still contains type parameters.
30361         (mono_class_inflate_generic_type): If we're a type parameter and
30362         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30363         type.
30364
30365         * class.h (MonoGenericInst): Added `guint32 is_open'.
30366
30367         * loader.c (method_from_methodspec): Check whether we're an open
30368         or closed constructed type and set `ginst->is_open'.
30369
30370         * reflection.c (mono_reflection_bind_generic_parameters): Check
30371         whether we're an open or closed constructed type and set
30372         `ginst->is_open'.
30373         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30374         from open constructed types.
30375
30376 2003-11-15  Martin Baulig  <martin@ximian.com>
30377
30378         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30379         a generic instance (instead of a generic type declaration) with
30380         unbound generic parameters, bind them to our actual types.
30381
30382 2003-11-14  Martin Baulig  <martin@ximian.com>
30383
30384         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30385
30386         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30387         an interface type, populate `res->interfaces' with instantiated
30388         versions of all the interfaces we inherit.
30389
30390 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30391
30392         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30393         when MONO_PATH is set but doesn't contain the install dir.
30394
30395 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30396
30397         * icall.c:
30398         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30399         it's also implemented in base classes. Fixes bug #50927.
30400
30401 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30402
30403         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30404         if this method is called from a finalizer. Fixes #50913.
30405
30406 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30407
30408         * threads.c: Implement VolatileRead/VolatileWrite
30409
30410         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30411
30412 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30413
30414         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30415         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30416         2.95.3.
30417
30418         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30419         from Peter Ross (pro@missioncriticalit.com).
30420         
30421 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30422
30423         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30424
30425 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30426
30427         * assembly.c (mono_assembly_load_references): Disable check because it
30428         triggers on older corlibs which lots of people have.
30429
30430 2003-11-12  Jackson Harper  <jackson@ximian.com>
30431
30432         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30433         load corlib.dll if mscorlib.dll is not found.
30434         * assembly.h: Remove corlib name define.
30435         * class.c:
30436         * domain.c:
30437         * image.c: Change corlib name to mscorlib.
30438         
30439 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30440
30441         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30442
30443 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30444
30445         * appdomain.h: Added loader_optimization here to sync with the C#
30446         code, and add disallow_binding_redirects field.
30447
30448 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30449
30450         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30451
30452         * reflection.c (mono_image_build_metadata): Fix crash on modules
30453         with no types.
30454
30455         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30456
30457         * icall.c (ves_icall_get_method_info): Return callingConvention as
30458         well.
30459
30460         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30461         namespaces from the EXPORTEDTYPE table as well.
30462
30463         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30464         from all modules inside the assembly.
30465         
30466 2003-11-11  Martin Baulig  <martin@ximian.com>
30467
30468         * reflection.c (mono_reflection_bind_generic_parameters): Make
30469         this work for interfaces.
30470
30471 2003-11-11  Martin Baulig  <martin@ximian.com>
30472
30473         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30474
30475 2003-11-11  Martin Baulig  <martin@ximian.com>
30476
30477         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30478         "MonoInflatedMethod" and "MonoInflatedCtor".
30479
30480 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30481
30482         * reflection.c (resolution_scope_from_image): Use the assembly table
30483         from the manifest module, since other modules don't have it.
30484
30485         * debug-helpers.c (mono_type_full_name): New helper function.
30486
30487         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30488
30489         * image.c (mono_image_load_file_for_image): New public function which
30490         is a replacement for the load_file_for_image in class.c.
30491
30492         * assembly.c (mono_assembly_load_module): A wrapper for the function
30493         above which does assembly association and reference loading too.
30494
30495         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30496
30497 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30498
30499         * appdomain.c: not all of the attributes for the full assembly name
30500         are required and the order doesn't matter. Fixes bug #50787.
30501
30502 2003-11-10  Dick Porter  <dick@ximian.com>
30503
30504         * locales.c: Use platform-endian UTF16
30505
30506 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30507
30508         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30509         
30510 2003-11-10  Martin Baulig  <martin@ximian.com>
30511
30512         * metadata.c
30513         (mono_metadata_load_generic_params): Make this actually work.
30514
30515         * reflection.c (mono_reflection_bind_generic_parameters): If our
30516         parent is a generic instance, pass all the `types' to it, no
30517         matter whether it has the same number of type parameters or not.
30518
30519 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30520
30521         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30522
30523         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30524         assignment code to this function so it gets called recursively for all
30525         modules.
30526
30527         * image.c (load_modules): Remove the assembly assignment since it is
30528         now done by mono_assembly_load_references.
30529         
30530         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30531         Add 'module' argument.
30532         (mono_module_get_types): New helper function.
30533         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30534
30535 2003-11-08  Martin Baulig  <martin@ximian.com>
30536
30537         * class.c (mono_class_inflate_generic_method): Interface method
30538         don't have a header.
30539
30540         * reflection.c (mono_image_get_methodspec_token): Take an
30541         additional `MonoGenericInst *' argument instead of reading it from
30542         the header; this is necessary to support interfaces.
30543         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30544         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30545         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30546         argument.
30547
30548         * reflection.h (MonoReflectionInflatedMethod): Added
30549         `MonoGenericInst *ginst'.
30550
30551 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30552
30553         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30554
30555 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30556
30557         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30558
30559 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30560
30561         * reflection.c 
30562         (reflection_methodbuilder_from_method_builder):
30563         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30564         initialize a ReflectionMethodBuilder structure.
30565         (mono_image_get_methodbuilder_token):
30566         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30567         tokens which point to types in another module inside the same assembly.
30568
30569         * reflection.c: Use the new helper functions.
30570         
30571         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30572
30573         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30574         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30575
30576         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30577         neccesary.
30578
30579         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30580         current module. Emit the manifest only for the main module.
30581
30582         * reflection.c (mono_image_create_token): Add assertion when a 
30583         memberref needs to be created.
30584
30585         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30586
30587         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30588         larger buffer for the custom attribute blob. Fixes #50637.
30589         
30590 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30591
30592         * threadpool.c: notify listener on async processing handles after
30593         invoking the async callback. Thanks to Zoltan.
30594
30595 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30596
30597         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30598         avoid code duplication.
30599
30600         * reflection.h (MonoDynamicImage): New type which is currently unused,
30601         but will be used through the ref.emit code in place of 
30602         MonoDynamicAssembly.
30603
30604         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30605         object layout.
30606
30607         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30608         a MonoDynamicImage instead of just a MonoImage.
30609         
30610         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30611         icalls to ModuleBuilder but keep their semantics, so they will work
30612         with moduleb->assemblyb. This will change later.
30613         
30614 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30615
30616         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30617         object layout.
30618
30619         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30620         main module, since it is now done by the managed code.
30621
30622 2003-11-03  Martin Baulig  <martin@ximian.com>
30623
30624         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30625         `ginst->klass' here.
30626         (method_encode_methodspec): Don't use the `ginst->generic_method's
30627         klass if it's a generic instance, use `ginst->klass' in this case.
30628
30629 2003-11-03  Martin Baulig  <martin@ximian.com>
30630
30631         * reflection.c (mono_image_get_generic_method_param_info):
30632         Removed, use mono_image_get_generic_param_info() instead.
30633         (mono_image_get_type_info): Write the GenericParam table before
30634         the Method table.  This is neccessary because in the GenericParam
30635         table, type parameters of the class (ie. '!0' etc.) must come
30636         before the ones from its generic methods (ie. '!!0' etc).
30637
30638 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30639
30640         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30641
30642 2003-11-02  Martin Baulig  <martin@ximian.com>
30643
30644         * reflection.c (create_generic_typespec): Take a
30645         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30646         the generic parameters from it.
30647
30648 2003-11-02  Martin Baulig  <martin@ximian.com>
30649
30650         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30651         instead of a `MonoClassField *' since we just need the type.
30652         (create_generic_typespec): New static function.  Creates a
30653         TypeSpec token for a generic type declaration.
30654         (mono_image_get_generic_field_token): New static function.
30655         (mono_image_create_token): If we're a FieldBuilder in a generic
30656         type declaration, call mono_image_get_generic_field_token() to get
30657         the token.
30658
30659 2003-11-02  Martin Baulig  <martin@ximian.com>
30660
30661         * reflection.h
30662         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30663         `MonoReflectionGenericInst *declaring_type' and
30664         `MonoReflectionGenericInst *reflected_type' fields.
30665
30666         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30667         `MonoReflectionGenericInst *declaring_type' and a
30668         `MonoReflectionGenericInst *reflected_type' argument instead of a
30669         single `MonoReflectionGenericInst *type' one.  Set
30670         `res->declaring_type' and `res->reflected_type' from them.
30671         (mono_reflection_inflate_field): Likewise.      
30672
30673 2003-11-02  Martin Baulig  <martin@ximian.com>
30674
30675         * class.c (mono_class_setup_vtable): Don't store generic methods
30676         in the vtable.  
30677
30678 2003-11-02  Martin Baulig  <martin@ximian.com>
30679
30680         * reflection.h (MonoReflectionGenericInst): Added
30681         `MonoReflectionType *declaring_type'.
30682
30683         * reflection.c (mono_reflection_bind_generic_parameters): Use
30684         `if (tb->parent)' instead of `klass->parent'.
30685
30686 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30687
30688         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30689         with an empty ASSEMBLY table.
30690
30691         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30692         variable in the inner and outer loops.
30693
30694 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30695
30696         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30697         argument.
30698
30699         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30700         
30701         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30702         icalls. Instead, do everything in managed code. This is needed since
30703         it is hard to restore the original domain etc. in unmanaged code in the
30704         presence of undeniable exceptions.
30705
30706         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30707         New icalls to push and pop appdomain refs.
30708
30709 2003-10-31  Martin Baulig  <martin@ximian.com>
30710
30711         * class.c (inflate_generic_type): Renamed to
30712         mono_class_inflate_generic_type() and made it public.
30713
30714         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30715         New interncall.
30716
30717         * loader.c (mono_field_from_memberref): Also set the retklass for
30718         typespecs.
30719
30720         * fielder.c (mono_image_get_inflated_field_token): New static
30721         method; creates a metadata token for an inflated field.
30722         (mono_image_create_token, fixup_method): Added support for
30723         "MonoInflatedField".
30724         (fieldbuilder_to_mono_class_field): New static function.
30725         (mono_reflection_inflate_field): New public function.
30726
30727         * reflection.h
30728         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30729         (MonoReflectionInflatedField): New typedef.     
30730
30731 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30732
30733         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30734         for Solaris and other platforms without s6_addr16
30735
30736 2003-10-30  Martin Baulig  <martin@ximian.com>
30737
30738         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30739         argument instead of two.
30740         (mono_class_inflate_generic_signature): Likewise.
30741         (inflate_generic_header): Likewise.
30742         (mono_class_inflate_generic_method): Likewise.  In addition, if
30743         `ginst->klass' is set, it becomes the new `method->klass'.
30744
30745         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30746         field.
30747
30748         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30749         first byte. [FIXME]
30750         (method_encode_methodspec): If we have generic parameters, create
30751         a MethodSpec instead of a MethodRef.
30752         (fixup_method): Added support for "MonoInflatedMethod" and
30753         "MonoInflatedCtor".
30754         (mono_image_create_token): Added support for "MonoInflatedMethod"
30755         and "MonoInflatedCtor".
30756         (inflated_method_get_object): New static function; returns a
30757         managed "System.Reflection.MonoInflatedMethod" object.
30758         (mono_reflection_bind_generic_method_parameters): Return a
30759         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30760         (mono_reflection_inflate_method_or_ctor): Likewise.
30761         (mono_image_get_generic_method_param_info): Initialize unused
30762         fields to zero.
30763         (mono_image_get_generic_param_info): Likewise.
30764
30765         * reflection.h (MonoReflectionInflatedMethod): New public
30766         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30767         "S.R.MonoInflatedCtor" classes.
30768
30769         * loader.c (method_from_memberref): If we're a TypeSpec and it
30770         resolves to a generic instance, inflate the method.
30771
30772 2003-10-28  Dick Porter  <dick@ximian.com>
30773
30774         * object.c (mono_runtime_run_main): Convert command-line arguments
30775         into utf8, falling back to the user's locale encoding to do so.
30776
30777 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30778
30779         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30780         at this time.
30781
30782         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30783
30784         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30785         up icalls at method definition time. Partially fixes #33569.
30786
30787 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30788
30789         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30790         marshalling of arrays. Fixes #50116.
30791
30792         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30793
30794         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30795         points to a vtable in the dying appdomain.
30796
30797         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30798         listeners into unmanaged code inside the lock.
30799
30800         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30801         domains and add some comments.
30802
30803 2003-10-25  Martin Baulig  <martin@ximian.com>
30804
30805         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30806
30807         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30808
30809         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30810         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30811         currently parsing.  Create the generic class and store it in
30812         `generic_inst->klass' before parsing the type arguments.  This is
30813         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30814         for an example.
30815         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30816         to support recursive typespec entries.
30817
30818         * class.c (mono_class_setup_parent): If our parent is a generic
30819         instance, we may get called before it has its name set.
30820         (mono_class_from_generic): Splitted into
30821         mono_class_create_from_generic() and mono_class_initialize_generic().
30822
30823 2003-10-25  Martin Baulig  <martin@ximian.com>
30824
30825         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30826         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30827         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30828         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30829
30830         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30831         (create_typespec): Likewise.
30832         (mono_reflection_bind_generic_parameters): Return a
30833         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30834         (mono_reflection_inflate_method_or_ctor): New public function.
30835
30836         * reflection.h (MonoReflectionGenericInst): New typedef.        
30837
30838 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30839
30840         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30841         inside the domain lock. Fixes #49993.
30842         
30843         * object.c (mono_class_vtable): When typed allocation is used, 
30844         allocate vtables in the GC heap instead of in the mempool, since the
30845         vtables contain GC descriptors which are used by the collector even
30846         after the domain owning the mempool is unloaded.
30847
30848         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30849
30850         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30851         reflect what it does. Also invalidate mempools instead of freeing
30852         them if a define is set.
30853
30854         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30855         of the appdomain.
30856         
30857         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30858         hold the finalizable objects in this domain.
30859
30860         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30861         appdomain.
30862
30863         * appdomain.c (mono_domain_set): New function to set the current
30864         appdomain, but only if it is not being unloaded.
30865
30866         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30867         appdomain which is being unloaded.
30868         
30869         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30870         unloading of the root appdomain.
30871
30872         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30873         icall to execute a method in another appdomain. Intended as a 
30874         replacement for InternalSetDomain, which can confuse the code 
30875         generation in the JIT.
30876
30877         * appdomain.c (mono_domain_is_unloading): New function to determine
30878         whenever an appdomain is unloading.
30879
30880         * appdomain.c (mono_domain_unload): New function to correctly unload
30881         an appdomain.
30882
30883         * assembly.c (mono_assembly_load_references): Check that an assembly
30884         does not references itself.
30885
30886         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30887         domain manually, it asks the finalizer thread to do it, then waits for
30888         the result. Also added a timeout.
30889
30890         * icall.c: Register the new icalls.
30891
30892         * threads.h threads.c: Export the mono_gc_stop_world and 
30893         mono_gc_start_world functions.
30894         
30895         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30896         function to fill out the mempool with 0x2a.
30897
30898 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30899
30900         * reflection.h (MonoReflectionMethodAux): New structure to store
30901         information which is rarely used, thus is not in the MonoMethod
30902         structure.
30903
30904         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30905         store the aux info.
30906
30907         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30908         and marshalling info into the aux structure.
30909
30910         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30911         from the aux structure.
30912
30913         * loader.c (mono_method_get_param_names): Retrieve the param names from
30914         the aux structure.
30915         
30916 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
30917
30918         * exception.h exception.c: Add AppDomainUnloadedException && fix 
30919         warning.
30920
30921 2003-10-21  Dick Porter  <dick@ximian.com>
30922
30923         * socket-io.c
30924         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
30925         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
30926
30927 2003-10-21  Martin Baulig  <martin@ximian.com>
30928
30929         * reflection.c (mono_reflection_bind_generic_parameters):
30930         `klass->parent' is NULL for interfaces.
30931
30932 2003-10-21  Martin Baulig  <martin@ximian.com>
30933
30934         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30935
30936 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
30937
30938         * exception.c (mono_exception_from_name_msg): New helper function for
30939         creating exceptions and initializing their message field.
30940
30941         * exception.c: Simplify functions using the new helper.
30942
30943         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
30944         New function.
30945
30946         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
30947         mono_raise_exception, since otherwise gcc doesn't generate the function
30948         epilog for raise_exception, confusing the stack unwinding in the JIT.
30949         Fixes #45043.
30950
30951         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
30952         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
30953         Fixes #49499.
30954
30955 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30956
30957         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
30958         utf8.
30959
30960 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
30961
30962         * icall.c: Removed GetUninitializedObject method because
30963           AllocateUninitializedClassInstance does the same.
30964
30965 2003-10-18  Martin Baulig  <martin@ximian.com>
30966
30967         * class.c (inflate_generic_signature): Renamed to
30968         mono_class_inflate_generic_signature() and made it public.
30969         (my_mono_class_from_generic_parameter): New static function; if we
30970         don't already have the generic parameter's MonoClass, create a
30971         very simple one which is just used internally in the runtime and
30972         not passed back to managed code.
30973
30974         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
30975
30976         * metadata.h (MonoMethodSignature): Moved the
30977         `MonoGenericParam *gen_params' to the MonoMethodHeader.
30978         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
30979
30980         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
30981         ves_icall_MonoMethod_GetGenericArguments(); this is now an
30982         interncall on the MonoMethod class, not on MethodInfo.
30983         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
30984         calling mono_reflection_bind_generic_method_parameters() directly.
30985
30986         * loader.c (mono_method_get_signature): If this is a MethodSpec;
30987         return the already computed `method->signature'.
30988         (method_from_methodspec): New static function to load a method
30989         from a MethodSpec entry.
30990         (mono_get_method_from_token): Call the new method_from_methodspec()
30991         for MethodSpec tokens.  
30992         (mono_get_method_from_token): If we're a generic method, load the
30993         type parameters.
30994
30995         * reflection.c (mono_image_get_memberref_token): Allow
30996         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
30997         table.
30998         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
30999         (mono_image_create_token): First check whether it's a generic
31000         method (so we'd need to create a MethodSpec), then do the other
31001         two alternatives.
31002         (mono_reflection_bind_generic_method_parameters): Return a
31003         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31004         called directly from the interncall.
31005
31006 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31007
31008         * reflection.c (load_public_key): Move loading of the public key
31009         into managed code.
31010
31011         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31012
31013         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31014         fields.
31015
31016         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31017         culture, hash_alg and public_key. Fixes #49555.
31018
31019 2003-10-17  Martin Baulig  <martin@ximian.com>
31020
31021         * class.h (MonoGenericInst): Moved this declaration here and added
31022         `MonoMethod *generic_method'.
31023
31024         * icall.c
31025         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31026         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31027
31028         * metadata.c (mono_metadata_type_equal): Two types of
31029         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31030         index; ie. don't compare the address of the `MonoGenericParam'
31031         structure.
31032         (mono_metadata_load_generic_params): Removed the `MonoMethod
31033         *method' argument.
31034
31035         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31036         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31037
31038         * reflection.c (method_encode_signature): Encode the number of
31039         generic parameters.
31040         (encode_generic_method_sig): New static function.
31041         (method_encode_methodspec): New static function; creates an entry
31042         in the MethodSpec table for a generic method.
31043         (mono_image_get_methodspec_token): New static function.
31044         (mono_image_create_token): Call mono_image_get_methodspec_token()
31045         for generic methods.
31046         (mono_reflection_bind_generic_method_parameters): New public
31047         function.  Instantiates a generic method.
31048
31049 2003-10-16  Martin Baulig  <martin@ximian.com>
31050
31051         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31052         *gen_params' here from MonoMethodHeader.
31053
31054         * metadata.c (mono_metadata_parse_method_signature): If we have
31055         generic parameters, initialize `method->gen_params' and then set
31056         the correct `type->data.generic_param' in all the parameters.
31057
31058 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31059
31060         * threads.c (mono_threads_get_default_stacksize): New function to 
31061         return the default stacksize.
31062
31063         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31064         termination of the finalizer thread, since the previous method had
31065         race conditions. Fixes #49628.
31066
31067         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31068         as for the other managed threads.
31069
31070 2003-10-16  Martin Baulig  <martin@ximian.com>
31071
31072         * class.c (inflate_generic_signature): Copy `generic_param_count'
31073         and `gen_params'.
31074
31075         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31076         New interncall.
31077
31078         * metadata.c (mono_metadata_parse_method_signature): Actually set
31079         the `method->generic_param_count' here.
31080         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31081
31082 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31083
31084         * object.h: Add a new field to TypedRef to simplify the implementation
31085         of the REFANY opcodes in the JIT.
31086
31087         * icall.c: Make use of the new field.
31088
31089         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31090         dynamically.
31091
31092 2003-10-15  Martin Baulig  <martin@ximian.com>
31093
31094         * class.c (mono_class_from_gen_param): Renamed to
31095         mono_class_from_generic_parameter() and moved most of the
31096         functionality from mono_reflection_define_generic_parameter()
31097         here; ie. we create a "real" class here.
31098         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31099         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31100         previously been called.
31101
31102         * class.h (MonoGenericParam): Moved the declaration of this struct
31103         here from metadata.h and added `MonoMethod *method'.
31104
31105         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31106         interncall.
31107
31108         * loader.c (mono_get_method_from_token): If we have any generic
31109         parameters, call mono_metadata_load_generic_params() to read them
31110         from the MONO_TABLE_GENERICPAR.
31111
31112         * metadata.c (mono_metadata_load_generic_params): Added
31113         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31114
31115         * metadata.h (MonoMethodSignature): Replaced
31116         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31117         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31118
31119         * reflection.c (mono_reflection_define_generic_parameter): Moved
31120         most of the functionality into the new
31121         mono_class_from_generic_parameter(); set the `method' field if
31122         we're a method parameter.       
31123
31124 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31125
31126         * marshal.c (emit_struct_conv): if native size is 0
31127         emit no code.
31128
31129 2003-10-14  Martin Baulig  <martin@ximian.com>
31130
31131         * icall.c: The generics API has changed in the spec since it was
31132         added to System.Type; these modifications make it match the spec
31133         again.
31134         (ves_icall_Type_GetGenericParameters): Renamed to
31135         `ves_icall_Type_GetGenericArguments'.
31136         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31137         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31138         `ves_icall_MonoType_get_HasGenericArguments'.
31139         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31140         `ves_icall_MonoType_get_IsGenericParameter'.
31141         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31142         this is no interncall anymore.
31143         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31144         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31145
31146 2003-10-14  Martin Baulig  <martin@ximian.com>
31147
31148         * reflection.c (mono_reflection_bind_generic_parameters): Also
31149         inflate generic methods if we're reading the class from IL.
31150
31151 2003-10-13  Martin Baulig  <martin@ximian.com>
31152
31153         * reflection.c (mono_reflection_define_generic_parameter): This
31154         method isn't called directly from the icall anymore; take a
31155         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31156         method generic parameters.
31157         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31158         (method_builder_encode_signature): Encode generic parameters.
31159         (mono_image_get_method_info): Write generic params to the
31160         MONO_TABLE_GENERICPARAM table.
31161
31162         * reflection.h (MonoReflectionMethodBuilder): Added
31163         `MonoArray *generic_params'.
31164
31165         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31166
31167         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31168         wrapper for mono_reflection_define_generic_parameter().
31169         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31170
31171 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31172
31173         * marshal.h: Add missing function to fix build.
31174
31175         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31176         the SetLastError pinvoke attribute.
31177
31178         * marshal.c (mono_marshal_set_last_error): New helper function called
31179         by the generated code.
31180         
31181         * marshal.c (mono_mb_emit_branch): New helper function.
31182
31183         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31184
31185         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31186         classes as parameters and return values of delegates. Fixes #29256. 
31187
31188 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31189
31190         * locales.c: use gint32 in non HAVE_ICU case
31191
31192 2003-10-11  Martin Baulig  <martin@ximian.com>
31193
31194         * mono-debug.c (mono_debug_add_method): Added a workaround for
31195         bug #48591.
31196
31197 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31198
31199         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31200         delegates passed to native code must use the STDCALL calling 
31201         convention. Fixes #35987.
31202
31203 2003-10-10  Martin Baulig  <martin@ximian.com>
31204
31205         * class.c (inflate_generic_type): If we're inflating for a generic
31206         type instance (and not for a generic method), return
31207         MONO_TYPE_MVAR unchanged.
31208
31209 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31210
31211         * string-icalls.c: Join ignores null strings in the source array.
31212         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31213         * threads.c: GetAvailableTheads is slightly more accurate.
31214
31215 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31216
31217         * threads.h threads.c : add mono_threads_set_default_stacksize
31218         and pass default to CreateThread calls.
31219
31220 2003-10-09  Dick Porter  <dick@ximian.com>
31221
31222         * icall.c:
31223         * locales.h:
31224         * locales.c: Internal calls for constructing CultureInfo and
31225         related objects from libicu (if its available.)
31226
31227 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31228
31229         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31230
31231 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31232
31233         * threadpool.c: added an argument to async_invoke_thread that is the
31234         item to process, pass the MonoAsyncResult to the thread start function
31235         when creating a new thread. This way we don't need to acquire any lock
31236         when we're creating a new thread. Readded a semaphore for faster
31237         response times (instead of that Sleep i added).
31238
31239 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31240
31241         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31242         get daylight change dates better on Windows, fix handling
31243         of platforms without tm_gmtoff.
31244
31245 2003-10-06  Martin Baulig  <martin@ximian.com>
31246
31247         * class.c (inflate_generic_method): Renamed to
31248         mono_class_inflate_generic_method() and made public.
31249         (mono_class_init): Don't inflate the generic methods here.
31250         (mono_class_from_generic): Added `gboolean inflate_methods'
31251         argument.  Inflate the methods here.
31252
31253         * loader.c (mono_method_get_param_names): Ignore instances of
31254         generic types for the moment.
31255
31256         * reflection.c (fixup_method): Added support for inflated methods.
31257         (mono_image_create_token): Use mono_image_get_methodref_token()
31258         for inflated methods.
31259         (mono_custom_attrs_from_param): Ignore instances of generic types
31260         for the moment.
31261         (mono_reflection_bind_generic_parameters): New public function.
31262         Moved all the functionality from
31263         ves_icall_Type_BindGenericParameters() here and added support for
31264         dynamic types.
31265         (mono_reflection_define_generic_parameter): Initialize
31266         `klass->methods' here.
31267
31268         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31269         functionality into mono_reflection_define_generic_parameter().
31270         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31271         TypeBuilder, return that TypeBuilder.
31272
31273 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31274
31275         * appdomain.c: removed mono_delegate_semaphore.
31276
31277         * threadpool.c:
31278         (mono_thread_pool_add): moved hash table creation inside and the thread 
31279         creation outside of the critical region.
31280         (mono_thread_pool_finish): removed obsolete code.
31281         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31282         continue or exit the thread depending on the queue.
31283
31284 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31285
31286         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31287         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31288         handle more bool marshalling options
31289
31290 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31291
31292         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31293         arrays of structs. Also add a more descriptive error message when
31294         a structure member is marshalled as LPArray.
31295
31296 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31297
31298         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31299         marshalling arrays of complex types. Fixes #29098. Also remove an
31300         usused and incomplete function.
31301
31302 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31303
31304         * gc.c: report heap_size - free_bytes as total memory allocated
31305         (bug#49362).
31306
31307 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31308
31309         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31310         fix timezone handling problems on Windows.
31311         
31312         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31313         asserts when the year is outside the range handled by ms the functions.
31314
31315         * class.c (setup_interface_offsets): If the class is an interface,
31316         fill out its interface_offsets slot.
31317
31318 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31319
31320         * threadpool.c: mark threadpool threads as background.
31321
31322 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31323
31324         * decimal.c - define DECINLINE to nothing if not using GCC
31325
31326 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31327
31328         * assembly.c: More refcount fixes.
31329
31330 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31331
31332         * string-icalls.c: if we're not trimming, return the same string.
31333         When not splitting, don't create a new string.
31334
31335 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31336
31337         * image.c:
31338         (mono_image_open): increment the ref_count inside the critical section.
31339
31340 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31341
31342         * image.c (mono_image_open): Fix reference counting bug.
31343
31344 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31345
31346         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31347         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31348         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31349         mono_lookup_pinvoke_call throws.        
31350
31351 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31352
31353         * reflection.c (mono_reflection_parse_type): Fix #49114.
31354
31355         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31356         temporary workaround for cygwin header problem.
31357
31358         * object.c (mono_object_isinst): Synchronize this with the code
31359         generated by the JIT for casts.
31360
31361 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31362
31363         * reflection.c (encode_type): Fix #38332.
31364
31365 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31366
31367         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31368         the original method from the wrapper method.
31369
31370 2003-09-25  Martin Baulig  <martin@ximian.com>
31371
31372         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31373         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31374         (ves_icall_Type_get_IsGenericInstance): New interncall.
31375
31376 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31377
31378         * object.c: fix cast warning in big endian code.
31379
31380 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31381
31382         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31383         
31384 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31385
31386         * assembly.c: don't call check_env from mono_assembly_load. It's
31387         already done once in mono_assemblies_init and may cause headaches when
31388         multiple threads are loading assemblies.
31389
31390 2003-09-19  Martin Baulig  <martin@ximian.com>
31391
31392         * reflection.c (mono_reflection_define_generic_parameter): Don't
31393         allocate `klass->methods', set `klass->flags' to
31394         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31395
31396 2003-09-18  Martin Baulig  <martin@ximian.com>
31397
31398         * class.c (mono_class_init): Don't create `class->methods' if it's
31399         already initialized.
31400
31401         * metadata.c (mono_metadata_load_generic_params): Make this
31402         actually work.
31403
31404         * reflection.c (mono_reflection_define_generic_parameter): Set
31405         parent class and interfaces from the constraints.
31406
31407         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31408         to keep this struct in sync with the declaration in TypeBuilder.cs.
31409
31410 2003-09-17  Martin Baulig  <martin@ximian.com>
31411
31412         * metadata.h (MonoType): Replaced the data's `int type_param'
31413         field with `MonoGenericParam *generic_param'.
31414         (MonoGenericParam): Added `MonoClass *klass'.
31415
31416         * class.c (mono_class_from_gen_param): Removed the
31417         `MonoImage *image' and `int type_num' arguments.
31418
31419         * metadata.c (mono_metadata_parse_generic_param): New static
31420         method; creates a MonoGenericParam which just contains the index.
31421         (do_mono_metadata_parse_type): Call
31422         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31423         MONO_TYPE_MVAR.
31424
31425         * reflection.c (mono_image_typedef_or_ref): Generic type
31426         parameters may be in the same assembly, but never use a typedef
31427         for them.
31428         (mono_reflection_define_generic_parameter): We're now creating a
31429         "real" class for the type parameter; it's now safe to call
31430         mono_class_from_mono_type() on the class'es type, it'll do the
31431         right thing.
31432
31433 2003-09-16  Martin Baulig  <martin@ximian.com>
31434
31435         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31436         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31437         the `symfile' data structure must be fully initialized before it
31438         gets added to the table.
31439
31440 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31441
31442         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31443
31444         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31445         class init trampolines.
31446
31447 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31448
31449         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31450         to the built-in profiler to turn off time and allocation profiling
31451         respectively.
31452
31453 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31454
31455         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31456         g_direct_equal.
31457
31458         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31459         in human readable form.
31460
31461 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31462
31463         * reflection.c icall.c: Fixed warnings.
31464
31465         * image.c (load_class_names): Use a temporary hash table to hold the
31466         namespaces in order to avoid doing many string comparisons.
31467
31468         * image.h: Fix typo.
31469
31470         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31471         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31472         since the NULL case is short-circuited inside g_hash_table_lookup, 
31473         leading to better performance.  
31474
31475         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31476         obtain the first custom attribute for a given index. Depends on the
31477         CustomAttribute table being sorted by the parent field.
31478
31479         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31480         for better performance.
31481
31482 2003-09-07  Martin Baulig  <martin@ximian.com>
31483
31484         * class.c (mono_class_init): If we're a generic instance, inflate
31485         all our methods instead of loading them from the image.
31486         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31487
31488 2003-09-07  Martin Baulig  <martin@ximian.com>
31489
31490         * mono-debug-debugger.c: Added support for constructors.
31491
31492 2003-09-06  Martin Baulig  <martin@ximian.com>
31493
31494         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31495         New interncall.
31496
31497         * reflection.c (mono_reflection_setup_generic_class): Call
31498         ensure_runtime_vtable() to create the vtable.
31499
31500 2003-09-05  Martin Baulig  <martin@ximian.com>
31501
31502         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31503         MONO_TYPE_MVAR.
31504
31505 2003-09-04  Martin Baulig  <martin@ximian.com>
31506
31507         * reflection.c (mono_reflection_define_generic_parameter): Generic
31508         parameters start with zero.
31509
31510 2003-09-04  Martin Baulig  <martin@ximian.com>
31511
31512         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31513
31514         * reflection.h (MonoReflectionGenericParam): New typedef.
31515         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31516         the generic parameters from the managed TypeBuilder.
31517
31518         * reflection.c (mono_reflection_define_generic_parameter): New function.
31519         (mono_reflection_create_runtime_class): Encode generic parameters.
31520         (mono_reflection_setup_generic_class): New function; this is
31521         called after adding adding all generic params to the TypeBuilder.
31522         (encode_type): Added MONO_TYPE_VAR.
31523
31524 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31525
31526         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31527         here from the JIT.
31528
31529         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31530         load hook.
31531
31532 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31533
31534         * reflection.h reflection.c class.h class.c: Delete duplicate 
31535         definition of mono_type_get_name () from reflection.c and export the
31536         one in class.c.
31537
31538         * class.c: Class loading fixes from Bernie Solomon 
31539         (bernard@ugsolutions.com).
31540
31541         * reflection.c: Endianness fixes from Bernie Solomon 
31542         (bernard@ugsolutions.com).
31543         
31544 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31545
31546         * assembly.h assembly.c: Define a file format version for AOT
31547         libraries.
31548         
31549         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31550
31551         * appdomain.h (MonoJitInfo): New field to determine whenever the
31552         code is domain neutral.
31553         
31554 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31555
31556         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31557
31558 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31559
31560         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31561         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31562         Avoid caching the result since strings must be domain specific. Fixes
31563         #48050.
31564
31565 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31566
31567         * marshal.c (mono_marshal_init): Make this callable multiple times
31568         since it is hard to find a correct place to call it.
31569
31570         * object.c (mono_runtime_class_init): Execute static constructors in
31571         the correct appdomain.
31572
31573         * image.c (build_guid_table): Handle the case when multiple images have
31574         the same GUID.
31575
31576 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31577
31578         * icall.c: added a couple of icalls for System.Web.
31579
31580 2003-08-28  Martin Baulig  <martin@ximian.com>
31581
31582         * icall.c (ves_icall_Type_BindGenericParameters): Use
31583         `klass->generic_inst' instead of `&klass->byval_arg' in the
31584         mono_type_get_object() call.  The returned type must be
31585         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31586
31587 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31588
31589         * NOTES: New file.
31590
31591         * object.c (mono_class_proxy_vtable): Make it thread safe.
31592
31593         * pedump.c: Fix warning.
31594
31595         * object.c appdomain.h: Get rid of metadata_section. 
31596         It is no longer needed and it was causing deadlocks with domain->lock.
31597
31598         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31599
31600 2003-08-26  Martin Baulig  <martin@ximian.com>
31601
31602         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31603
31604 2003-08-26  Martin Baulig  <martin@ximian.com>
31605
31606         * pedump.c (main): Call mono_metadata_init(),
31607         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31608         and mono_loader_init().
31609
31610 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31611
31612         * loader.h: Add missing include to fix build.
31613
31614         * image.h: mono_image_load_references is no more.
31615
31616         * assembly.c: Reworked assembly loading to make it really thread safe.
31617         After these changes, the assembly returned by mono_assembly_open is
31618         fully initialized, i.e. all its references assemblies are loaded.
31619
31620         * assembly.c (mono_image_load_references): Renamed to 
31621         mono_assembly_load_references, and made private, since clients no
31622         longer need to call it.
31623
31624         * class.c: Removed calls to mono_assembly_load_references, since it was
31625         a source of deadlocks.
31626
31627         * loader.h loader.c class.h class.c: Protect data structures using a 
31628         new lock, the loader lock.
31629
31630         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31631         GPtrArrays only when needed.
31632
31633         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31634         into empty structures by mcs. Fixes pinvoke7.cs.
31635         
31636         * domain.c (mono_init): Call a new initialization function.
31637
31638         * appdomain.c (mono_runtime_init): Call the new initializer function
31639         of the marshal module.
31640
31641         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31642         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31643
31644         * marshal.h marshal.c: Added locks around the wrapper caches to make
31645         this module thread safe.
31646
31647         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31648         this argument. Fixes pinvoke1.exe.
31649
31650 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31651
31652         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31653         enumeration of values. Removed fields to store remote call output values in
31654         MonoAsyncResult. Not needed any more.
31655         * object.c: Initialize call_type and async_result fields in mono_message_init.
31656         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31657         dispatching the message.
31658         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31659         async call to finish. To do it use a message with EndInvoke call type.
31660
31661 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31662
31663         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31664         determines whenever a method has marshalling info.
31665
31666 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31667
31668         * assembly.c: fix the build on windows.
31669
31670 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31671
31672         * object.cs: Fixed bug #47785.
31673
31674 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31675
31676         * string-icalls.c (StringReplace): If their are no occurances of
31677         the old string found return a reference to the supplied
31678         string. This saves some memory and matches MS behavoir.
31679         
31680 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31681
31682         * socket-io.c: fixed compilation for systems that define AF_INET6
31683         and don't define SOL_IP/SOL_IPV6.
31684
31685 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31686
31687         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31688         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31689
31690         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31691
31692         * domain.c: Make this module thread safe.
31693
31694         * domain.c (mono_init): Call new initialization function.
31695
31696         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31697         reference types too. Fixes #38812.
31698
31699         * image.c (mono_image_init): Fixed warnings.
31700
31701         * class.c (mono_class_from_typeref): Handle assembly load failure
31702         correctly.
31703
31704         * appdomain.c (add_assemblies_to_domain): Handle the case when
31705         the references of an assembly are not yet loaded.
31706
31707         * metadata.c image.c assembly.c: Moved initialization of global
31708         variables to a separate function called at startup since lazy 
31709         initialization of these variables is not thread safe.
31710         
31711         * image.c assembly.c: Made this module thread safe by adding locks in 
31712         the appropriate places.
31713
31714         * domain.c (mono_init): Call the new initialization functions of the
31715         three modules.
31716
31717 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31718
31719         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31720           make a direct call. It is proxy's work to make the call asynchronous.
31721           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31722           the return values.
31723         * object.cs: mono_method_call_message_new(): read AsyncResult and
31724           state object from parameters list, if this info is requested.
31725         * object.h: Added fields to store remote call output values in
31726           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31727
31728 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31729
31730         * object.h: add needed fields to MonoThread.
31731         * threads.c, threads.h: allow registering a function to cleanup data
31732         allocated per thread by the JIT.
31733
31734 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31735
31736         * loader.h: portability fix by Bernie Solomon
31737         * <bernard@ugsolutions.com>.
31738
31739 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31740
31741         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31742         return a MonoArray. This simplifies the code and also ensures that
31743         the cache allways contains an object reference as a value.
31744
31745         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31746         function.
31747
31748 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31749
31750         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31751         fixes a problem with byte ordering when getting the address family for
31752         a socket.
31753
31754 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31755
31756         * .cvsignore: Added monosn.
31757
31758         * reflection.h reflection.c loader.c: Added support for parameter
31759         marshalling to dynamically created types. Fixes #47295.
31760
31761 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31762
31763         * rand.c: remove useless warnings.
31764
31765 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31766
31767         * class.c: implemented ldtoken for methods and fieldrefs.
31768
31769 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31770
31771         * threadpool.c: when mono_async_invoke was called, no one took care of
31772         monitoring the queue. So if the method invoked took some time and we
31773         got new async invoke requests after 500 ms (the thread created waited
31774         that long in WaitForSingleObject), the new async invoke was not called
31775         until the previous one finished.
31776
31777         This is fixed now. Thanks to Totte for helping with it.
31778
31779 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31780
31781         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31782
31783 2003-08-11  Martin Baulig  <martin@ximian.com>
31784
31785         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31786
31787 2003-08-06  Martin Baulig  <martin@ximian.com>
31788
31789         * mono-debug-debugger.c: Added support for static fields,
31790         properties and methods.
31791
31792 2003-08-06  Martin Baulig  <martin@ximian.com>
31793
31794         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31795         make this work for applications with multiple application domains.
31796
31797 2003-08-04  Martin Baulig  <martin@ximian.com>
31798
31799         * mono-debug-debugger.c: Completely reworked the type support; the
31800         most important thing is that we're now just using one single
31801         `MonoType' instance per type.
31802
31803 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31804
31805         * mono-endian.h, mono-endian.c, icall.c: Added icall
31806         ves_icall_System_Double_AssertEndianity to assert double word endianity
31807         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31808
31809 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31810
31811         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31812         support, icalls and fixes.
31813
31814 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31815
31816         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31817         classes that are a punctuation character in .NET is not the same a
31818         g_unichar_ispunct.
31819
31820 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31821
31822         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31823
31824 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31825
31826         * icall.c: Add new MemCopy internalcall.
31827         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31828         Simplified code; It is not necessary to handle all the cases here,
31829         as the C# code takes care of it.  Only handle the case of the name
31830         resource embedded into the assembly.
31831
31832         Changed signature to return the data pointer and the size of the
31833         data. 
31834
31835 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31836
31837         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31838         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31839
31840 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31841
31842         * socket-io.c: ignore EINTR error in select.
31843
31844 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31845
31846         * class.h, class.c: removed unused subclasses field in MonoClass.
31847
31848 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31849
31850         * icall.c: improve fix of get_base_definition(). If the parent class
31851           doesn't have the mehod, look at the parent of the parent.
31852         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31853           to check if a parameter is an in or out parameter
31854           (PARAM_ATTRIBUTE_IN is not set by default).
31855           mono_method_return_message_restore(): Use mono_class_value_size to
31856           get the size of a value type. mono_type_stack_size (parameterType)
31857           does not return the correct value if parameterType is byRef.
31858           mono_load_remote_field(), mono_load_remote_field_new(),
31859           mono_store_remote_field(), mono_store_remote_field_new():
31860           raise exception if the remote call returns an exception.
31861
31862 2003-07-28  Martin Baulig  <martin@ximian.com>
31863
31864         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31865         method.  This is a wrapper around mono_runtime_invoke() which
31866         boxes the instance object if neccessary.
31867
31868 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31869
31870         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31871         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31872
31873 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31874
31875         * icall.c: disable mcs bug workaround.
31876
31877 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31878
31879         * object.c (mono_runtime_class_init): Take the metadata_section
31880         mutex before obtaining the domain mutex.
31881
31882         * appdomain.h: Added definition of metadata_section mutex here. 
31883
31884         * object.c: define metadata_mutex here.
31885
31886 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31887
31888         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31889         fixed.
31890
31891 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31892
31893         * reflection.c: Fix bug #46669
31894
31895 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31896
31897         * exception.c:
31898         * exception.h:
31899         * icall.c:
31900         * object.h: fill in the type name for TypeLoadException.
31901
31902 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31903
31904         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31905         relationship between TypeBuilders while compiling corlib) and bug
31906         45993 (Array types returned from the runtime while compiling
31907         corlib were from the loaded corlib).
31908
31909 2003-07-22  Martin Baulig  <martin@ximian.com>
31910
31911         * mono-debug-debugger.c: Reworked the type support a bit more;
31912         distinguish between types and classes.
31913
31914 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
31915
31916         * icall.c: add IsArrayImpl icall.
31917
31918 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
31919
31920         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
31921         initializing real_size only once. Also fix bug #46602.
31922
31923 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
31924
31925         * object.c: Renamed mono_metadata_section to metadata_section.
31926
31927 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
31928
31929         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
31930           empty array if the type is an array. Fixed.
31931           ves_icall_MonoMethod_get_base_definition: if the base method
31932           is abstract, get the MethodInfo from the list of methods of
31933           the class.
31934         * reflection.c: ParameterInfo.PositionImpl should be zero-based
31935           and it was 1-based. Fixed in mono_param_get_objects.
31936
31937 2003-07-20  Martin Baulig  <martin@ximian.com>
31938
31939         * mono-debug.h: Set version number to 31.
31940         (mono_debug_init): Added `MonoDomain *' argument.
31941
31942         * mono-debug-debugger.c: Reworked the type support; explicitly
31943         tell the debugger about builtin types; pass the `klass' address to
31944         the debugger.
31945
31946 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
31947
31948         * image.c: Allow new metadata tables to be loaded without a
31949         warning. Also update the warning message to give the new constant value.
31950                 
31951 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
31952
31953         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
31954         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
31955         array type representation changes.
31956
31957 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
31958
31959         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
31960         on Environment.Exit () call.
31961
31962 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31963
31964         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
31965         requires a matching corlib.
31966
31967 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31968
31969         * Changelog: My editor decided to add a CR to each line. Sorry about that.
31970           Committed again without the CRs.
31971         
31972 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31973
31974         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
31975           getting it from the "this" socket instance. Did not work
31976           if the socket is a subclass of Socket.
31977           Also fixed bug #35371.
31978
31979 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
31980
31981         * metadata.c: fixed size for TypedByRef.
31982         * loader.c: when searching for a method, consider the vararg amrker.
31983         * unicode.c, decimal.c: constify some arrays.
31984
31985 2003-07-15  Dick Porter  <dick@ximian.com>
31986
31987         * socket-io.c: Fixed compilation for gcc < 3.2.
31988
31989         Fixed compilation for machines that don't have AF_INET6 (thanks to
31990         Bernie Solomon <bernard@ugsolutions.com> for that part.)
31991
31992         Fixed compile warnings.
31993         
31994         Fixed formatting and line endings.
31995
31996 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
31997
31998         * socket-io.h:
31999         * socket-io.c: Added IPv6 support.
32000
32001 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32002
32003         * class.c (mono_class_is_assignable_from): New function to implement
32004         the is_assignable_from logic. Used by mono_object_isinst, 
32005         Type::IsAssignableFrom () and the interpreter.
32006
32007         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32008         Object, even interfaces.
32009         
32010         * object.c (mono_object_isinst): Implement in terms of 
32011         is_assignable_from.
32012
32013         * icall.c (ves_icall_type_is_assignable_from): New icall.
32014
32015 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32016
32017         * domain.c (foreach_domain): fix compiler warning.
32018
32019 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32020
32021         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32022         not available on all plattforms
32023
32024 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32025
32026         * image.h image.c: Store the metadata version string in MonoImage.
32027         * icall.c: New icall to retrieve the image version.
32028         * reflection.c (create_dynamic_image): Fill in the image version field
32029         * reflection.c (build_compressed_metadata): Use the image version
32030         from the image structure.
32031
32032 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32033
32034         * appdomain.c: modified comment.
32035         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32036         That will be its last iteration when mono_gc_cleanup is called from
32037         mono_runtime_cleanup and before the domain is unloaded.
32038
32039         Fixes bug #45962.
32040
32041 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32042
32043         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32044         attributes.
32045
32046 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32047
32048         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32049         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32050         Bernie Solomon <bernard@ugsolutions.com>.
32051
32052 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32053
32054         * object.c, object.h: provide mono_object_new_fast() for faster
32055         allocation in some special cases.
32056
32057 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32058
32059         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32060         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32061
32062 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32063
32064         * threadpool.c: fix leaks.
32065
32066 2003-07-01  Dick Porter  <dick@ximian.com>
32067
32068         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32069         using MonoGHashTables.  Fixes threadpool bug posted to list.
32070
32071 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32072
32073         * image.h, image.c: added support to load an assembly from a byte array.
32074         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32075         assembly bundle support.
32076
32077 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32078
32079         * threadpool.c (mono_thread_pool_add): keep a reference to the
32080         AsyncResult to prevent GC
32081
32082 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32083
32084         * class.c: leak fix.
32085
32086 2003-06-25  Dick Porter  <dick@ximian.com>
32087
32088         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32089         for the async object, the WaitHandle object will close the handle.
32090         Fixes bug 45321.
32091
32092 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32093
32094         * class.c: in mono_array_class_get (), lookup from the hash with the
32095         same type we insert: this works around a bug in
32096         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32097         lluis. The real fix will have to wait for after the release.
32098
32099 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32100
32101         * icall.c: fix memory leak when getting type members.
32102
32103 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32104
32105         * reflection.c: added more pubtoken special cases.
32106
32107 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32108
32109         * class.c: handle field offset correctly when class size
32110         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32111
32112 2003-06-20  Martin Baulig  <martin@ximian.com>
32113
32114         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32115         *image' field.
32116
32117 2003-06-20  Martin Baulig  <martin@ximian.com>
32118
32119         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32120
32121 2003-06-20  Martin Baulig  <martin@ximian.com>
32122
32123         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32124         just distinguish between variables in registers and variables at
32125         an offset relative to a register.
32126
32127 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32128
32129         * icall.c: #ifdef out latest changes until mcs is fixed.
32130
32131 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32132
32133         * icall.c: return members in metadata order.
32134
32135 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32136
32137         * icall.c: avoid infinite loop in GetTimeZoneData.
32138
32139 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32140
32141         * icall.c: added Marshal.Prelink/All icalls.
32142
32143 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32144
32145         * object.c, object.h: fix warnings and do some overflow checking
32146         when creating arrays.
32147
32148 2003-06-17  Dick Porter  <dick@ximian.com>
32149
32150         * file-io.h:
32151         * file-io.c: File attributes need to be tweaked slightly when
32152         passed from the managed to the w32 world.
32153
32154 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32155         * profiler.h profiler-private.h profiler.c: Rework last patch
32156         based on suggestion by Paolo.
32157         
32158 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32159
32160         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32161         instruction level coverage data collection.
32162         * profiler.h profiler.c (: Added new callback function which can be
32163         used by the profiler to limit which functions should have coverage
32164         instrumentation.
32165         * profiler.c (mono_profiler_load): Call g_module_build_path to
32166         generate the file name of the profiler library.
32167
32168 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32169
32170         * profiler.c, profiler.h, profiler-private.h: added basic block 
32171         coverage profiling API.
32172
32173 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32174
32175         * reflection.c (mono_reflection_create_runtime_class): Add support
32176         for events in dynamically generated code.
32177
32178         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32179         not allocated.
32180
32181 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32182
32183         * icall.c: when getting timezone info, return reasonable values if we
32184         can't get the actual data.
32185
32186 2003-06-14  Dick Porter  <dick@ximian.com>
32187
32188         * threads.c (start_wrapper): Remove the reference to the thread
32189         object in the TLS data, so the thread object can be finalized.
32190         This won't be reached if the thread threw an uncaught exception,
32191         so those thread handles will stay referenced :-( (This is due to
32192         missing support for scanning thread-specific data in the Boehm GC
32193         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32194
32195 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32196
32197         * reflection.c: ensure streams and tables are first allocated with
32198         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32199
32200 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32201
32202         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32203
32204 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32205
32206         * reflection.c (mono_reflection_create_runtime_class): Add support for
32207         properties to dynamically created classes.
32208         * reflection.c: Fix a few places where non-MonoObjects were inserted
32209         into the tokens hashtable.
32210
32211 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32212
32213         * object.c: some support to handle out of memory exceptions.
32214
32215 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32216
32217         * marshal.c (mono_marshal_get_native_wrapper): support reference
32218         return types
32219
32220 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32221
32222         * object.h, object.c: more portability stuff from Bernie Solomon.
32223         Unexport mono_object_allocate(). Added mono_object_unbox ().
32224         Set exitcode when an unhandled exception is thrown.
32225
32226 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32227
32228         * marshal.c (mono_marshal_get_native_wrapper): use custom
32229         marshaler for return types.
32230
32231 2003-06-10  Dick Porter  <dick@ximian.com>
32232
32233         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32234         ip_mreq is available
32235
32236 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32237
32238         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32239         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32240         by Bernie Solomon <bernard@ugsolutions.com>.
32241
32242 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32243
32244         * gc.c (mono_gc_init): Avoid error message on shutdown when
32245         GC_DONT_GC=1 is used.
32246
32247         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32248         New icall to return the GUID of a module.
32249
32250 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32251
32252         * class.c: ensure instance size always includes the parent's size
32253         even whem class size is set explicitly (fixes bug#44294).
32254
32255 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32256
32257         * profiler.h, profiler.c: made the simple profiler thread-safe,
32258         get more accurate timing info. Allow the loading of an
32259         externally-developed profiler module.
32260
32261 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32262
32263         * marshal.c (mono_marshal_get_native_wrapper): improved
32264         class/byref arguments.
32265         (mono_marshal_get_native_wrapper): better string marshaling support.
32266
32267 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32268
32269         * class.c: ensure .pack and .size are handled correctly and
32270         simplified layout of static fields.
32271
32272 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32273
32274         * appdomain.c
32275         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32276
32277         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32278         current directory (fix bug 44008)
32279
32280 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32281
32282         * marshal.c (mono_marshal_get_native_wrapper): started support for
32283         custom marshalers.
32284         (mono_delegate_to_ftnptr): consider marshalling specifications
32285
32286 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32287
32288         * reflection.c, reflection.h: emit custom marshal info.
32289
32290 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32291
32292         * object.c: free the GError.
32293         * icall.c: added CloseEvent_internal.
32294         * threads.[ch]:
32295         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32296         call.
32297
32298 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32299
32300         * loader.c (mono_method_get_signature): Add support for dynamic
32301         assemblies.
32302
32303 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32304
32305         * reflection.c: fixed bug #43905.
32306
32307 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32308
32309         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32310         handling TypedReference and ArgIterator.
32311         * loader.c, loader.h: added function to get signature at call site.
32312
32313 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32314
32315         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32316         data readonly. Buglets and warning fixes. Some MethodSpec support.
32317
32318 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32319
32320         * class.h, class.c, object.c: remove relative numbering support.
32321
32322 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32323
32324         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32325         free the string, until we get a chance to fix Gtk#
32326
32327 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32328
32329         * marshal.c: revert last patch.
32330
32331 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32332
32333         * icall.c: updates for new mono_class_vtable() not calling
32334         the type constructor anymore.
32335
32336 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32337
32338         * object.h, object.c: separate vtable creation from type
32339         initialization. Make running the .cctor thread safe.
32340
32341 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32342
32343         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32344
32345 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32346
32347         * loader.c (mono_get_method): consider calling convention
32348
32349 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32350
32351         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32352         to return the invisible global type for a module.
32353
32354         * reflection.c (mono_image_build_metadata): Emit global fields too.
32355
32356 2003-05-20  Peter Williams  <peterw@ximian.com>
32357
32358         * loader.c (mono_lookup_internal_call): Add a few newlines.
32359
32360 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32361
32362         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32363         literal strings.
32364
32365         * appdomain.c (set_domain_search_path): Recalculate search path when
32366         AppDomainSetup.PrivateBinPath changes.
32367
32368         * object.c (mono_class_compute_gc_descriptor): It turns out some
32369         parts of the class libs (like System.Thread) holds pointers to
32370         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32371         to treat native int a pointer type here.
32372         
32373 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32374
32375         * appdomain.h, domain.c: add hashtable for jump target resolution.
32376
32377 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32378
32379         * reflection.h reflection.c icall.c: Added new icalls 
32380         GetManifestResourceInfoInternal, GetModulesInternal and support
32381         infrastructure.
32382
32383 2003-05-16  Dick Porter  <dick@ximian.com>
32384
32385         * icall.c:
32386         * file-io.h:
32387         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32388
32389 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32390
32391         * object.c: mono_store_remote_field: little fix to previous patch.
32392
32393 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32394
32395         * class.c: add constructors to array classes.
32396         * icall.c: special case array construction for InternalInvoke (),
32397
32398 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32399
32400         * class.h class.c reflection.c object.c: Added support for field
32401         defaults in dynamically generated classes.
32402
32403 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32404
32405         * reflection.c: properly encode charset for ddlimport.
32406
32407 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32408
32409         * threads.c: allow compiling without GC.
32410
32411 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32412
32413         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32414         handling of thread static data.
32415
32416 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32417
32418         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32419
32420 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32421
32422         * class.c (mono_array_class_get): always set the serializable flags
32423         (mono_array_class_get): always set the SEALED attribute for array types
32424
32425 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32426
32427         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32428         attributes (fix for bug 42021).
32429
32430 2003-05-12  Dick Porter  <dick@ximian.com>
32431
32432         * gc.c: Don't run finalizers when the finalizer thread is
32433         finishing up, because the default domain has already been
32434         destroyed.
32435
32436 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32437
32438         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32439         value is null, we should throw an exception.   This is slightly
32440         different than the other conventions used for the constructor.
32441
32442 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32443
32444         * socket-io.c: fixed windows build.
32445
32446 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32447
32448         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32449
32450 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32451
32452         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32453         compilers.
32454
32455 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32456
32457         * class.c (mono_class_layout_fields): Add experimental GC aware
32458         auto layout facility. Requires class library changes to work correctly.
32459
32460         (mono_class_setup_vtable): Avoid overriding explicit interface
32461         method implementations. Fixes iface3.exe test.
32462
32463         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32464         object reference.
32465         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32466         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32467
32468         * metadata.h: Add new type classification macro which determines
32469         whenever the type holds an object reference.
32470
32471 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32472
32473         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32474
32475 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32476
32477         * gc.c (finalizer_thread): Work around a GC bug.
32478
32479 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32480
32481         * marshal.c (emit_struct_conv): allow unions
32482
32483         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32484
32485 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32486
32487         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32488
32489 2003-05-06  Martin Baulig  <martin@ximian.com>
32490
32491         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32492
32493 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32494
32495         * socket-io.c:
32496         (Select_internal): allow NULLs, don't create arrays if not needed.
32497         Coupled with Socket.cs changes.
32498
32499         * threadpool.c:
32500         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32501         register a finalizer for it that will close the semaphore handle. This
32502         fixes the leak and make Lupus' test run with > 4080 loops.
32503
32504 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32505
32506         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32507         Jerome Laban (bug #42287)
32508
32509 2003-05-02  Martin Baulig  <martin@ximian.com>
32510
32511         * debug-mono-symfile.h
32512         (MonoSymbolFile): Moved declaration into mono-debug.h.
32513         (MonoDebugMethodJitInfo): Likewise.
32514         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32515         argument.
32516         (_mono_debug_address_from_il_offset): Take a
32517         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32518
32519         * mono-debug.h
32520         (MonoDebugDomainData): New struct.
32521         (mono_debug_get_domain_data): New function.
32522         (mono_debug_add_method): Take an additional `MonoDomain *'
32523         argument.
32524         (mono_debug_source_location_from_address): Likewise.
32525         (mono_debug_il_offset_from_address): Likewise.
32526         (mono_debug_address_from_il_offset): Likewise.
32527
32528 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32529
32530         * reflection.c: one more check for null type in custom attrs.
32531
32532 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32533
32534         * reflection.c: avoid warning (comparison is always false due to limited
32535         range of data type).
32536
32537 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32538
32539         * icall.c: throw an exception in Type.GetField if the argument 'name'
32540         is NULL.
32541
32542 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32543
32544         * reflection.c: fixed handling of enums in named arguments to custom
32545         attributes (bug #42123).
32546
32547 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32548
32549         * reflection.c: use the right array element type and handle
32550         a null for a Type argument, too.
32551
32552 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32553
32554         * reflection.c: handle arrays as arguments to custom attributes.
32555
32556 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32557
32558         * reflection.c: handle a string value in a custom attr
32559         ctor that takes an object.
32560
32561 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32562
32563         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32564         (fix bug #42063)
32565
32566 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32567
32568         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32569
32570 2003-04-27  Martin Baulig  <martin@ximian.com>
32571
32572         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32573         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32574         MONO_DEBUGGER_EVENT_BREAKPOINT.
32575         (mono_breakpoint_trampoline_code): Removed.
32576         (mono_debugger_event_handler): The last argument is now a
32577         `guint32'.
32578         (mono_debugger_insert_breakpoint_full): Removed the
32579         `use_trampoline' argument.
32580         (mono_debugger_method_has_breakpoint): Likewise.
32581         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32582         mono_debugger_breakpoint_callback(); take the method and
32583         breakpoint number as arguments.
32584
32585 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32586
32587         * metadata.c: fix off by one when loading parameters attributes.
32588
32589 2003-04-24  Martin Baulig  <martin@ximian.com>
32590
32591         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32592
32593 2003-04-24  Martin Baulig  <martin@ximian.com>
32594
32595         * mono-debug-debugger.c: Moved all code which interacts with the
32596         Mono Debugger here.
32597
32598         * debug-mono-symfile.c: This code now just deals with the symbol
32599         file itself, the debugger code is now in mono-debug-debugger.c.
32600
32601 2003-04-23  Martin Baulig  <martin@ximian.com>
32602
32603         * mono-debug.c (mono_debug_source_location_from_il_offset):
32604         New method; like mono_debug_source_location_from_address(), but
32605         takes an IL offset instead of a machine address.
32606
32607 2003-04-23  Martin Baulig  <martin@ximian.com>
32608
32609         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32610         `line' field; this is now computed by the debugger.
32611
32612 2003-04-23  Martin Baulig  <martin@ximian.com>
32613
32614         * mono-debug.[ch]: New files.  This is the new debugging interface.
32615
32616         * mono-debug-debugger.[ch]: New files.  Moved all code which
32617         interacts with the Mono Debugger here.
32618
32619 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32620
32621         * domain.c (mono_init): initialize mono_defaults.monitor_class
32622
32623 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32624
32625         * reflection.c (method_encode_code): Add a spicy exception to help
32626         future compiler authors.
32627
32628 2003-04-21  Martin Baulig  <martin@ximian.com>
32629
32630         * icall.c
32631         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32632         Make this work with relative pathnames; g_filename_to_uri() needs
32633         an absolute filename.
32634
32635 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32636
32637         * icall.c: Track name changes in Object and ValueType.
32638
32639 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32640
32641         * metadata.c (mono_type_stack_size): size should be a multiple of
32642         sizeof (gpointer)
32643
32644 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32645
32646         * gc.c:
32647         (internal_domain_finalize): moved into mono_domain_finalize. No need
32648         to create another thread because the finalizers will be run in the
32649         finalizer thread.
32650         
32651         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32652         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32653         to be run (MS does this too).
32654
32655 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32656
32657         * object.c (mono_class_compute_gc_descriptor): Update comment.
32658
32659         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32660
32661         * image.h: Add synchronized wrapper cache.
32662
32663         * image.c (do_mono_image_open): Initialize cache.
32664
32665         * reflection.c (create_dynamic_mono_image): Initialize cache.
32666
32667 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32668
32669         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32670         ves_icall_System_Buffer_ByteLengthInternal.
32671
32672 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32673
32674         * reflection.c: setup klass->nested_in earlier. Allow
32675         a dash in the assembly name.
32676
32677 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32678
32679         * metadata.c (mono_type_to_unmanaged): dont access
32680         type->data.klass for MONO_TYPE_OBJECT
32681         (mono_type_to_unmanaged): consider System.Delegate class
32682
32683 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32684
32685         * class.c: just setup supertypes in the proper place instead of
32686         initializing the full element class for arrays.
32687
32688 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32689
32690         * class.c: ensure the element class of arrays is initialized.
32691         Setup the supertype info for array classes, too.
32692
32693 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32694
32695         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32696
32697 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32698
32699         * Makefile.am: re-added -m option when running cygpath. This way,
32700         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32701         separator.
32702         * mono-config.c: same codepath for locating mono config file for WIN32
32703         and the rest.
32704         * assembly.c: if mono_assembly_setrootdir is called, don't override
32705         the value set.
32706
32707 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32708
32709         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32710         MONO_ASSEMBLIES variable.
32711
32712 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32713
32714         * icall.c: added Assembly::GetNamespaces() icall.
32715
32716 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32717
32718         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32719
32720 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32721
32722         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32723         * object.c: fixed bug in the construction of vtable for proxies
32724
32725 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32726
32727         * object.c (mono_array_new): Mark mono_array_new as an icall.
32728
32729 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32730
32731         * class.c: fixed test for public method when overriding interfaces.
32732         Closes bug #40970.
32733
32734 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32735
32736         * appdomain.h, domain.c: added mono_domain_foreach() to
32737         be able to access the currently loaded appdomains.
32738         * object.c: make string interning work across sppdomains.
32739         Mark some functions for use as icalls.
32740
32741 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32742
32743         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32744
32745         * reflection.h reflection.c: Allocate long living data using 
32746         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32747
32748         * reflection.c: Double the allocation size in streams instead of
32749         increasing it, to prevent unneccesary copying on large assemblies.
32750         
32751         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32752         creation if the assembly does not have the Run flag set.
32753
32754 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32755
32756         * class.h: avoid the C++ keywords in header files (Jerome Laban
32757         spotted and fixed this).
32758
32759 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32760
32761         * object.c:
32762         (mono_unhandled_exception): fill in the arguments for the
32763         UnhandledException event. Only trigger that event for the default
32764         domain (as MS does).
32765
32766 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32767
32768         * object.c: Improve typed allocation stuff based on suggestions from
32769         Paolo. Also turn it on if the GC library supports it.
32770
32771 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32772
32773         * object.c object.h class.h: Added experimental typed allocation
32774         facility using the interfaces in gc_gcj.h.
32775
32776         * os/gc_wrapper.h: Added new include files.
32777         
32778 2003-04-03  Martin Baulig  <martin@ximian.com>
32779
32780         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32781         which is not yet enabled by default.
32782
32783         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32784         functions.
32785         (mono_gc_lock, mono_gc_unlock): New static functions.
32786
32787         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32788         functions; stop/start the world for the garbage collector.  This
32789         is using the windows API; we need to complete the SuspendThread()/
32790         ResumeThread() implementation in the io-layer to make this work on Unix.
32791         (mono_gc_push_all_stacks): New public function; tells the garbage
32792         collector about the stack pointers from all managed threads.
32793
32794 2003-04-03  Martin Baulig  <martin@ximian.com>
32795
32796         * object.h (MonoThread): Added `gpointer stack_ptr'.
32797
32798         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32799
32800 2003-04-03  Martin Baulig  <martin@ximian.com>
32801
32802         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32803
32804 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32805
32806         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32807         field.last.
32808
32809 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32810
32811         * loader.c (mono_lookup_internal_call): Report the corlib that is
32812         out of sync.
32813
32814 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32815
32816         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32817         System.DBNull (it's class not valuetype).
32818
32819 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32820
32821         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32822         if the array method was already assigned a token (fixes bug#40646).
32823
32824 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32825
32826         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32827         if no assembly is given.
32828
32829 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32830
32831         * metadata.h: Added the new tables.
32832
32833         * row-indexes.h: Added definitions for new tables.
32834
32835         * metadata.c: Add schemas for new tables, and add support for
32836         computing the sizes of them.
32837
32838         * class.c: Update for handling the new type cases.
32839
32840 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32841
32842         * metadata.h (MONO_TYPE_IS_VOID): new macro
32843
32844 2003-03-31  Martin Baulig  <martin@ximian.com>
32845
32846         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32847
32848         * threads.c (mono_thread_new_init): Call `thread_created' in the
32849         mono_thread_callbacks.
32850
32851 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32852
32853         * loader.h: added marshalbyrefobject_class to mono_defaults
32854         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32855         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32856           generation of output parameters.
32857           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32858         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32859           contextbound and the target object belongs to the context of the caller.
32860         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32861         * object.c: Implemented support for interfaces and abstract classes
32862           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32863           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32864
32865 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32866
32867         * class.h class.c (mono_class_is_subclass_of): New function.
32868         
32869         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32870         routines for most common case (calls from ArrayList::ToArray).
32871
32872         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32873         routine so programs which call Environment::Exit() can be profiled.
32874
32875         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32876         Added MONO_ARCH_SAVE_REGS.
32877
32878         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32879
32880 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32881
32882         * blob.h: Add a couple of new MonoType types definitions.
32883
32884         * tabledefs.h: Add a couple of new call convs.
32885
32886 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32887
32888         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32889         the layout of the class.
32890
32891         * reflection.c (alloc_table): double the size on overflow to avoid
32892         unnecessary copying.
32893
32894         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32895         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32896         null so it can be garbage collected.
32897         
32898 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32899
32900         * reflection.c (mono_reflection_get_type): Return the resolved type
32901         only if it is in the assembly we searched.
32902
32903         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32904
32905         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32906         method.
32907
32908 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32909
32910         * appdomain.c:
32911         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
32912         the right one is 'file:///blah', but MS allows it.
32913         * assembly.c:
32914         (mono_assembly_open): allow 'file://blah'
32915
32916         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
32917
32918 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
32919
32920         * socket-io.c: fixes bug #40310.
32921
32922 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
32923
32924         * reflection.c (mono_reflection_parse_type): handle deeply nested
32925         types correctly.
32926
32927         * reflection.c (mono_image_create_token): Use unique token values
32928         since they will be put into a hash table.
32929
32930         * class.c (mono_class_setup_vtable): If a method occurs in more than
32931         one place in the vtable, and it gets overriden, then change the
32932         other occurances too.
32933
32934         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
32935         object as return type.
32936
32937 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32938
32939         * icall.c: Deleted "ToString" implementation for double and float
32940         because they are full implemented in managed code.
32941
32942 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
32943
32944         * reflection.c, reflection.h: implemented and exported functions
32945         to retrieve info about custom attributes.
32946
32947 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32948
32949         * appdomain.c: moved Uri handling to assembly.c
32950         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
32951         work when using a file Uri in *nix and windows.
32952
32953         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
32954         GetReferencedAssemblies.
32955
32956 2003-03-18  Dick Porter  <dick@ximian.com>
32957
32958         * icall.c: Rename a couple of internal calls
32959
32960         * threads.c: Set the thread state to Stopped when a thread exits.
32961         Fixes bug 39377.
32962
32963 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
32964
32965         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
32966         New icall.
32967
32968         * object.c (mono_class_vtable): fix warning.
32969
32970 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
32971
32972         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
32973
32974         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
32975         memory.
32976         (method_encode_clauses): Create exception info structures in the right
32977         order.
32978         (mono_reflection_setup_internal_class): Initialize supertypes field.
32979
32980         * class.c object.c: Handle interfaces which implement other interfaces 
32981         correctly.
32982
32983         * class.h class.c: Move the supertypes array initialization code into 
32984         a separate function so it can be used for dynamic types too. Also call
32985         it earlier, in mono_class_init(), since it can be used before the
32986         type is initialized.
32987
32988 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32989
32990         * Makefile.am:
32991         * assembly.c:
32992         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
32993
32994         * appdomain.c:
32995         * appdomain.h:
32996         * marshal.c:
32997         * object.c: remove warnings.
32998
32999 2003-03-13  Martin Baulig  <martin@ximian.com>
33000
33001         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33002         (MonoDebugLexicalBlockEntry): New types.
33003
33004         * debug-mono-symfile.c
33005         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33006
33007 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33008
33009         * process.c: ret can be any non-zero value accroding to MS doc.
33010
33011 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33012
33013         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33014         fixing a warning for a miss-used prototype, would have cause
33015         random memory corruption.
33016
33017 2003-03-07  Martin Baulig  <martin@ximian.com>
33018
33019         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33020         getting really annoying ....
33021
33022 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33023
33024         * reflection.c (fixup_method): added support for array methods.
33025
33026 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33027
33028         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33029         (pointed out by Michael Adams).
33030
33031 2003-03-04  Dick Porter  <dick@ximian.com>
33032
33033         * icall.c: Temporarily reverted the Double and Single ToString()
33034         change, because it broke nunit.
33035
33036 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33037
33038         * object.h, threads.h: make include files compatible with C++
33039         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33040
33041 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33042
33043         * icall.c: Erased ToString helper functions for Double and Single.
33044         Now, that implementations ar all in managed code (Double and Single
33045         Formatters).
33046
33047 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33048
33049         * appdomain.c: Added method for initializing the default context of
33050         a domain. Added internal call for getting the default context.
33051         * appdomain.h: Added context variable in MonoDomain struct.
33052         * domain.c: mono_domain_set also sets the default context of the domain
33053         * icall.c: Mapped internal method InternalGetDefaultContext.
33054         * object.c: mono_object_get_virtual_method returns always a remoting
33055         wrapper if the object is a transparent proxy.
33056         mono_runtime_invoke_array: when creating an object by calling the
33057         constructor, if the created object is a proxy, then the constructor should
33058         be called using the a remoting wrapper.
33059
33060 2003-03-03  Dick Porter  <dick@ximian.com>
33061
33062         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33063         variable so it compiles on solaris.  Problem spotted by
33064         Christopher Taylor <ct@cs.clemson.edu>
33065
33066 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33067
33068         * appdomain.c:
33069         (get_info_from_assembly_name): don't leak value.
33070
33071         * icall.c:
33072         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33073         result.
33074
33075 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33076
33077         * assembly.c: export mono_image_load_references ().
33078         * class.c: handle function pointers. mono_class_from_name() now
33079         supports nested type names directly.
33080
33081 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33082
33083         * reflection.h reflection.c: Encode already created dynamic methods 
33084         and fields correctly as a DEF instead of a REF.
33085
33086         * reflection.c: Get rid of the force_ref argument to 
33087         mono_image_typedef_or_ref since it was wrong in the first place.
33088
33089         * string-icalls.c: add error checking to string constructors according
33090         to the MSDN docs.
33091
33092         * reflection.c: Emit types in the order their TypeBuilders were 
33093         created. Previously, a new table index was assigned to each type before
33094         the tables were emitted. This was wrong because the signature blob
33095         might already refer to a type by its original table index.
33096
33097 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33098
33099         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33100         change.
33101         
33102 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33103
33104         * Makefile.am: make assemblies dir have \ instead of / on windows.
33105
33106 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33107
33108         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33109         iterate over the NESTEDCLASS table using a linear search since the
33110         table is not guaranteed to be sorted by the secondary key.
33111
33112         * class.c (mono_class_create_from_typedef): fixed up call to
33113         mono_metadata_nesting_typedef.
33114         
33115 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33116
33117         * marshal.c (mono_string_to_byvalstr): clear the memory as
33118         suggested by Jerome Laban <jlaban@wanadoo.fr>
33119
33120 2003-02-26  Dick Porter  <dick@ximian.com>
33121
33122         * process.c: Cope with padding in .rsrc blocks
33123
33124 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33125
33126         * metadata.h: reverted the filter_len change, it breaks reflection
33127         
33128 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33129
33130         * metadata.h: added a new field to store the filter_len
33131         
33132
33133 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33134
33135         * reflection.c: handle custom attributes for types and members
33136         created with Reflection.Emit (bug#38422).
33137
33138 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33139
33140         * reflection.c: define RTSpecialName automatically for constructors for
33141         compatibility with MS.NET.
33142
33143         * reflection.c (mono_reflection_create_runtime_class): initialize
33144         nested_in field of dynamically created classes.
33145
33146 2003-02-22  Martin Baulig  <martin@ximian.com>
33147
33148         * debug-mono-symfile.h: Incremented version number.
33149
33150 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33151
33152         * object.h icall.c process.c: fix warnings.
33153
33154 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33155
33156         * appdomain.h appdomain.c:
33157         (mono_domain_try_type_resolve): split the 
33158         name_or_tb argument into a name and a tb argument.
33159         (mono_domain_has_type_resolve): new function to check whenever the
33160         application has registered a TypeResolve event handler.
33161         
33162         * icall.c reflection.h reflection.c: move the type resolve logic into
33163         mono_reflection_get_type () so it will be invoked when 
33164         Assembly::GetType () is called.
33165
33166         * reflection.c:
33167         (mono_reflection_get_type): renamed to get_type_internal.
33168         (mono_reflection_get_type): fixed type name generation so it works 
33169         for nested types too.
33170         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33171         costly type name generation if there is no resolve event handler.
33172
33173 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33174
33175         * class.c, image.c: load exported types from file references.
33176
33177 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33178
33179         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33180           used to cache the managed methods used to create proxies and make 
33181           remote invocation of methods.
33182         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33183           to be remotely created.
33184         * object.c: Modified the method mono_class_vtable(). It now initializes 
33185           the remote flag of the vtable. Modified mono_object_new_specific(), 
33186           so now it checks the remote flag.
33187         * icall.c: Added a couple of internal methods, one for enabling instance 
33188           creation interception for a type, and one for creating objects bypassing
33189           the remote check.
33190
33191 2003-02-18  Martin Baulig  <martin@ximian.com>
33192
33193         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33194         New interncall to get a method's metadata token.
33195
33196         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33197         New interncall for the debugger.
33198
33199 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33200
33201         * class.c (mono_class_setup_vtable): allocate supertype array
33202
33203 2003-02-18  Martin Baulig  <martin@ximian.com>
33204
33205         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33206
33207 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33208
33209         * reflection.c:
33210         (assembly_name_to_aname): jump over unknown properties (i've found
33211         something like: 'type, assembly, version=xxx, custom=null, public...',
33212         so now will ignore custom=null and still get the rest of the values).
33213
33214 2003-02-17  Dick Porter  <dick@ximian.com>
33215
33216         * threads.c: Have Thread.Start() wait for a semaphore to signal
33217         that the thread has set up all its local data.  This fixes bug
33218         34323, where Abort() raced the new thread's TLS data.
33219
33220         Also removes the handle_store() call from start_wrapper, because
33221         threads are now always created suspended and there is no longer a
33222         race between the parent and child threads to store the info.
33223
33224 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33225
33226         * image.c: explain the #- heap issue in a message, hopefully
33227         avoiding FAQs on mono-list.
33228
33229 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33230
33231         * icall.c:
33232         (GetEntryAssembly): if the domain has not invoked
33233         AppDomain.ExecuteAssembly yet, return the assembly of the default
33234         AppDomain.
33235
33236 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33237
33238         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33239
33240 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33241
33242         * metadata.c, reflection.c: simple speedup to type hash
33243         and equals code.
33244
33245 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33246
33247         * image.c, image.h, class.c, assembly.c: move module loading
33248         to MonoImage. When loading metadata, consider alignemnet from
33249         the start of metadata, not from the metadata address in memory.
33250
33251 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33252
33253         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33254         AssemblyBuilder objects. Factored out custom attribute creation into
33255         a separate function.
33256         (create_custom_attr): new function to create custom attributes.
33257
33258 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33259
33260         * Makefile.am: Got tired of typing the full pathname to pedump.
33261         Until there is another option, am installing this.
33262
33263 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33264
33265         * class.c (class_compute_field_layout): always set field->parent 
33266         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33267
33268 2003-02-11  Dick Porter  <dick@ximian.com>
33269
33270         * threads-types.h:
33271         * monitor.c: Rewrote Monitor, making lock much faster and
33272         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33273         creates them as needed.
33274
33275         * exception.c: Added SynchronizationLockException
33276
33277         * threads.c: Deleted old Monitor implementation.  The new one is
33278         in a new file.
33279
33280 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33281
33282         * class.c: handled TypedReference type code. Set the correct size for
33283         class data. Setup interface_offsets for interface classes, too.
33284
33285 2003-02-09  Martin Baulig  <martin@ximian.com>
33286
33287         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33288
33289 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33290
33291         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33292         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33293         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33294         * verify.c: check for code that runs after the end of the method.
33295
33296 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33297
33298         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33299         "System.Math::Round2".
33300         * sysmath.h: Added Floor, Round and Round2 definitions.
33301         * sysmath.c: Modified certain functions that were not 100% compliant
33302         with MS.NET (math precision) and added the implementation of Floor,
33303         Round and Round2.
33304
33305 2003-02-07  Martin Baulig  <martin@ximian.com>
33306
33307         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33308
33309 2003-02-07  Martin Baulig  <martin@ximian.com>
33310
33311         * debug-mono-symfile.c: Reflected latest symwriter changes.
33312         (mono_debug_create_mono_symbol_file): Removed.
33313         (mono_debug_open_mono_symbol_file): Take an argument which
33314         specifies whether to create a dynamic symbol file.
33315
33316 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33317
33318         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33319
33320 2003-02-05  Martin Baulig  <martin@ximian.com>
33321
33322         * reflection.c (mono_image_build_metadata): Make this public,
33323         protect it against being called multiple times, don't create
33324         resources and don't build the compressed metadata here.
33325         (mono_image_create_pefile): Do this here.
33326
33327         * icall.c
33328         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33329
33330 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33331
33332         * socket-io.c: fixed bug #36322.
33333
33334 2003-02-06  Piers Haken <piersh@friskit.com>
33335
33336         * appdomain.[ch]:
33337         * class.h:
33338         * debug-mono-symfile.c:
33339         * icall.c:
33340         * loader.c:
33341         * mono-config.c:
33342         * monosn.c:
33343         * reflection.c:
33344         * socket-io.c: warning cleanups
33345
33346 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33347
33348         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33349         function. works like remoting invoke, but does a check for the Proxy first.
33350
33351 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33352
33353         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33354
33355 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33356
33357         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33358         array of pointers.
33359         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33360         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33361
33362         * object.c (mono_store_remote_field_new): used by the new jit
33363         instead of mono_store_remote_field
33364         (mono_load_remote_field_new): used by the new jit
33365         instead of mono_load_remote_field
33366
33367 2003-02-05  Patrik Torstensson
33368
33369         * appdomain.c: changed unload to take the domain id instead
33370         of domain
33371         
33372         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33373
33374
33375 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33376
33377         * appdomain.c: don't look for assemblies in ApplicationBase if
33378         PrivateBinPathProbe is set.
33379
33380 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33381
33382         * object.c: make the first argument in main_args contain the absolute
33383         path to the assembly. Fixes bug #37511.
33384
33385 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33386
33387         * icall.c: get correct UTC offset for countries not using daylight
33388         time saving. Fixes bug #30030.
33389
33390 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33391
33392         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33393         and 1 are the family).
33394
33395 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33396
33397         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33398
33399         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33400
33401 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33402
33403         * reflection.c: added support for SignatureHelper tokens, which is
33404         needed by the Calli opcode.
33405
33406         * reflection.h: track changes to SignatureHelper class.
33407
33408         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33409
33410 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33411
33412         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33413
33414 2003-02-03  Patrik Torstensson
33415         * appdomain.[c|h], domain.c : 
33416          - Added support for getting a domain via domain id
33417          - Support for setting and getting domain from System.AppDomain 
33418            (used in cross appdomain channel)
33419          - Added support for get/set for a MonoAppContext on a thread 
33420            (Context class in System.Runtime.Remoting.Contexts),
33421          - Removed hack in Get/SetData and ExecuteAssembly.
33422         
33423         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33424         the managed world to get control when a proxy is created.
33425
33426         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33427         
33428 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33429
33430         * icall.c
33431         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33432         Populate the codebase field as well.
33433
33434 2003-02-02  Martin Baulig  <martin@ximian.com>
33435
33436         * debug-mono-symfile.c
33437         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33438         (mono_debug_symfile_add_method): Allow interncalls.
33439
33440 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33441
33442         * icall.c: throw parse exception if strtod fails or the string is empty.
33443
33444 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33445
33446         * marshal.c: handle object type separately from defined
33447         class types.
33448
33449 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33450
33451         * marshal.c: handle NATIVE_LPSTR for strings when it's
33452         explicitly specified.
33453
33454 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33455
33456         * reflection.c, reflection.h, icall.c: setup the reflection
33457         handle cache for ModuleBuilders and AssemblyBuilders.
33458
33459 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33460
33461         * reflection.c (reflection_methodbuilder_to_mono_method): set
33462         pinvoke flag
33463
33464 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33465
33466         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33467
33468 2003-01-29  Dick Porter  <dick@ximian.com>
33469
33470         * threads.c: No need for the fake_thread kludge now that Thread
33471         doesn't run a class constructor
33472         
33473 2003-01-29  Dick Porter  <dick@ximian.com>
33474
33475         * threads.c: Use g_direct_hash instead of the rather bogus
33476         g_int_hash
33477
33478 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33479
33480         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33481         (fix pinvoke12.exe)
33482         (mono_marshal_get_struct_to_ptr): generate valid IL code
33483         (mono_marshal_get_ptr_to_struct): generate valid IL code
33484         (*): correctly set sig->pinvoke, we need to memdup the signature
33485         to do that
33486
33487 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33488
33489         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33490         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33491
33492 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33493
33494         * profiler.c: provide more callers information.
33495
33496 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33497
33498         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33499
33500         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33501
33502         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33503
33504 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33505
33506         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33507         exception instead of going into an infinite loop on dates which it 
33508         can't yet handle.
33509
33510         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33511         out-of-range exception if needed.
33512
33513         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33514         an implementation for an interface method and to override an inherited
33515         method at the same time. 
33516         Imagine a scenario when a virtual method is used to override a
33517         virtual abstract method in a parent class, and this same method 
33518         provides an implementation for an method inherited from an interface. 
33519         In this case, the interface resolution code will set im->slot, which 
33520         means that the virtual method override pass will skip this method 
33521         which means a pointer to the abstract method inherited from the parent
33522         will remain in the vtable of this non-abstract class.
33523
33524         * class.c: (mono_class_setup_vtable): continue search for a real 
33525         method if only an abstract method is found.     
33526
33527 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33528
33529         * reflection.c: add size to encoding for ByValStr and ByValArray
33530         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33531
33532 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33533
33534         * class.c (mono_class_setup_vtable): pass the override info as an
33535         argument.
33536
33537         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33538         correctly.
33539         
33540         * reflection.c (ensure_runtime_vtable); add support for method 
33541         overrides.
33542         
33543 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33544
33545         * reflection.c (resolution_scope_from_image): Hack to work to work with
33546         dynamic assemblies.
33547
33548         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33549         added a 'force_ref' argument to force this function to allways return 
33550         a TypeRef. This is needed by mono_image_get_memberref_token ().
33551         
33552 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33553
33554         * reflection.c (mono_image_get_type_info): interfaces really don't have
33555         a parent.
33556
33557         * reflection.c (mono_image_basic_init): fill out missing fields of
33558         image structure.
33559
33560         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33561         dynamic assemblies. This is required so dynamic assemblies show up in
33562         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33563         Type::GetType() etc. This is consistent with MS behaviour.
33564
33565         * image.c image.h reflection.c: add newly created classes to the name 
33566         cache so mono_class_get () will find them.      
33567
33568 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33569
33570         First part of changes to get IKVM.NET running under mono.
33571         
33572         * appdomain.h, appdomain.c: added new function 
33573         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33574         This function will call AppDomain::DoTypeResolve to do the actual work.
33575
33576         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33577         moved existing code dealing with dynamic tokens to a new function 
33578         called mono_reflection_lookup_dynamic_token (). This function will 
33579         raise TypeResolve events when appropriate. Since reflection.c is not 
33580         part of libmetadata, a new hook function called 
33581         mono_lookup_dynamic_token() is added to class.c which will call this.
33582
33583         * assembly.h assembly.c: make the invoke_load_hook function public,
33584         so it can be called for dynamic assemblies.
33585
33586         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33587
33588         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33589         type isn't found.
33590
33591         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33592         MonoGHashTable, since it contains pointers to objects which the GC 
33593         needs to track.
33594
33595         * assembly.c (search_loaded): remove unused variable.
33596         
33597 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33598
33599         * object.c: fixed issue exposed by gcc-generated IL programs
33600         that use RVA data for pointers.
33601
33602 2003-01-25  Martin Baulig  <martin@ximian.com>
33603
33604         * threads.c (start_wrapper): Moved the initialization of
33605         `start_func' above the mono_new_thread_init() call to which we
33606         pass it as argument.
33607
33608 2003-01-24  Martin Baulig  <martin@ximian.com>
33609
33610         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33611         the MonoThread pointer.
33612
33613 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33614
33615         * icall.c: Rename `PowImpl' to Pow.
33616
33617 2003-01-23  Dick Porter  <dick@ximian.com>
33618
33619         * threads.c (start_wrapper): Create a Thread object if needed, so
33620         the Main() thread can do the class initialisation in a subthread
33621         that has been set up to allow managed code execution.
33622
33623         Pass the thread ID instead of the MonoThread pointer to the thread
33624         start and attach callbacks.  This change is required, because the
33625         jit thread start callback must be called _before_ the Thread
33626         object can be created.
33627         
33628         (mono_thread_init): Removed much object creation code that is no
33629         longer needed.  No managed code is called from here now.
33630
33631         * object.c (mono_runtime_exec_managed_code): Create a subthread
33632         for Main, and call back to the runtime to use it.
33633         Set the exit code when Main exits.
33634
33635         * gc.c: Make sure domain finalisation happens in a subthread.
33636         Re-enable threaded GC, fixing bug 31333 (again).
33637
33638         * environment.c: System.Environment internall calls (so far just
33639         ExitCode is here, the others are still in icall.c)
33640
33641         * appdomain.c (mono_runtime_cleanup): All threads running managed
33642         code should have finished before mono_runtime_cleanup() is
33643         reached, so no need to clean up threads.
33644
33645 2003-01-22  Martin Baulig  <martin@ximian.com>
33646
33647         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33648         `gpointer func' arguments.      
33649         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33650         but added `MonoThread *thread' argument.
33651         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33652
33653         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33654         and pass it to the mono_thread_start_cb callback.
33655         (mono_install_thread_callbacks): New public function to install a
33656         set of callbacks which are set by the debugger.
33657         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33658
33659 2003-01-22  Martin Baulig  <martin@ximian.com>
33660
33661         * Makefile.am: Install debug-mono-symfile.h.
33662
33663 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33664
33665         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33666
33667 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33668
33669         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33670         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33671         (mono_array_class_get): correctly set access levels of arrays
33672
33673 2003-01-20      Patrik Torstensson
33674         * image.h (MonoAssemblyName): changed major, minor, build, revision
33675         from signed to unsigned.
33676
33677 2003-01-20  sean kasun <skasun@azstarnet.com>
33678
33679         * reflection.c (load_cattr_value): Now this handles
33680         MONO_TYPE_SZARRAY.  Fixes bug #35629
33681
33682 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33683
33684         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33685         integer value
33686
33687 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33688
33689         * decimal.c: fixed bug #26056.
33690
33691 2003-01-17  Martin Baulig  <martin@ximian.com>
33692
33693         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33694
33695 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33696
33697         * exception.[ch]:
33698         (mono_get_exception_type_initialization): new function.
33699
33700         * object.c: throw a TypeInitializationException when an exception is
33701         thrown invoking the class constructor.
33702
33703 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33704
33705         * reflection.c: fixed attribute reading.
33706
33707 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33708
33709         * icall.c:
33710         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33711         provided, look for the type in the calling assembly and then in
33712         mscorlib; if the assembly name is provided, only try that one.
33713
33714 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33715
33716         * object.c: register the vtable before there is a chance it's
33717         queried again recursively.
33718
33719 2003-01-13  Duncan Mak  <duncan@ximian.com>
33720
33721         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33722         gc-internal.h. 
33723         
33724 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33725
33726         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33727
33728 2003-01-11  Martin Baulig  <martin@ximian.com>
33729
33730         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33731         this to 20 for the release.
33732
33733 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33734
33735         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33736
33737         * loader.c (mono_method_get_marshal_info): bug fix
33738
33739         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33740         structures with explicit layout
33741
33742 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33743
33744         * profiler.c: made the output more readable (and sorted). 
33745         Added caller information for the allocation profiler.
33746
33747 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33748
33749         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33750
33751 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33752
33753         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33754         to get value types.
33755         
33756 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33757
33758         * object.c, profiler.h, profiler.c, profiler-private.h:
33759         Added object allocation profiler.
33760
33761 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33762
33763         * reflection.h, reflection.c: handle global methods.
33764         Compress blob entries.
33765
33766 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33767
33768         * marshal.c: fix compilation.
33769
33770 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33771
33772         * loader.c (mono_method_get_marshal_info): impl.
33773
33774         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33775
33776 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33777
33778         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33779         for reference types.
33780
33781 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33782
33783         * loader.c: fixed off by one error in loaded parameter names.
33784
33785 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33786
33787         * marshal.c (mono_marshal_get_icall_wrapper): like
33788         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33789         instead of a MonoMethod.
33790
33791 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33792
33793         * decimal.c: fixed bug #36537.
33794
33795 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33796
33797         * marshal.c: throw a missing method exception if a
33798         P/Invoke method is not found.
33799
33800 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33801
33802         * icall.c: allow a null this for constructors.
33803
33804 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33805
33806         * icall.c: raise the proper exceptions if the arguments to the
33807         internal Invoke are incorrect.
33808
33809 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33810
33811         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33812
33813 2003-01-03  Martin Baulig  <martin@ximian.com>
33814
33815         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33816
33817 2002-12-31  Martin Baulig  <martin@ximian.com>
33818
33819         * debug-mono-symfile.c: Completely rewrote the type section.
33820         Instead of using individual malloc()ed fields, we use one big
33821         continuous memory area and offsets into this area.
33822         See the comments in the source code for details.
33823
33824 2002-12-30  Martin Baulig  <martin@ximian.com>
33825
33826         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33827
33828 2002-12-30  Martin Baulig  <martin@ximian.com>
33829
33830         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33831         line number table in this data blob instead of using an external
33832         pointer.
33833
33834 2002-12-28  Martin Baulig  <martin@ximian.com>
33835
33836         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33837
33838 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33839
33840         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33841         as a boxed return type.
33842
33843 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33844
33845         * appdomain.c
33846         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33847         g_build_filename to properly get separators on the filename created.
33848
33849         * object.h: Small change, introduce MonoMarshalByRefObject to
33850         track the layout of that structure in the C# universe as we make
33851         changes there.
33852
33853 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33854
33855         * object.c: removed assert to allow static fields on interfaces.
33856         * loader.c: a TypeSpec may be used for any type, not just arrays.
33857
33858 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33859
33860         * class.c, class.h: added mono_class_array_element_size ().
33861         Ignore static methods in interfaces.
33862
33863 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33864
33865         * threads.c: fixed the build under cygwin.
33866
33867 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33868
33869         * reflection.c: handle nullref constants. Allocate keys for
33870         reflection handles with the GC.
33871
33872 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33873
33874         * threads.c, threads.h: added mono_thread_get_abort_signal()
33875         to get a suitable signal for thread abort.
33876
33877 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33878
33879         * metadata.c: fix handling of ExportedType table.
33880
33881 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33882
33883         * icall.c: added WriteWindowsDebugString internal call.
33884
33885 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33886
33887         * reflection.h: added fields to match C# implementation.
33888
33889 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33890
33891         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33892
33893 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33894
33895         * gc.h, gc-internal.h: Rename header for GC internal calls to
33896         gc-internal.h from gc.h as to not clash with Boehm GC having its
33897         header installed as <gc.h> in outside include paths.
33898         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33899         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33900
33901 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33902
33903         * icall.c: assign minor, build and revision in FillName.
33904
33905 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33906
33907         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33908         Added support for running code generated by Reflection.Emit.
33909
33910 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33911
33912         * appdomain.c: check for NULL argument in LoadFrom.
33913
33914 2002-12-10  Dick Porter  <dick@ximian.com>
33915
33916         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
33917
33918 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33919
33920         * appdomain.c: fix buglet when building exe file name.  Handle full
33921         assembly name (needed after latest changes to AssemblyName).
33922         * image.c:
33923         (mono_image_close): free some hashtables.
33924
33925 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
33926
33927         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
33928         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
33929         on some systems (redhat 7.3) 
33930
33931 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
33932
33933         * threads.c: delete the critical section of a sync block,
33934         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
33935
33936 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
33937
33938         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
33939
33940 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33941
33942         * appdomain.[ch]: handle the assembly preload event to try loading the
33943         assemblies using the paths we have in the current domain.
33944
33945         * assembly.[ch]: created an assembly preload hook that is called to try
33946         loading the assembly by other means that the ones provided here.
33947
33948         * domain.c: initialize the domain search path.
33949
33950         From now on, assemblies (TODO: except corlib and System) are loaded
33951         according to these rules when using mono_assembly_load ():
33952
33953                 1. It tries to load the assembly from the ApplicationBase
33954                 of the current domain appending .dll and .exe (TODO: have to
33955                 try loading from name/name.dll and name/name.exe).
33956
33957                 2. It tries the search path specified in PrivateBinPath for the
33958                 current domain (if any).
33959
33960                 3. Previous behavior.
33961
33962 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
33963
33964         * icall.c: implemented GetInterfaceMap() related icall.
33965         * domain.c, loader.h: load MethodInfo in mono_defaults.
33966
33967 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
33968
33969         * gc.c: disable the finalizer thread for now, untill all the issues
33970         with it are resolved.
33971
33972 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33973
33974         * string-icalls.c: handle embedded nulls in string ctor when the
33975         length is specified.
33976
33977 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33978
33979         * class.c: look for explicit interface implementation in parent
33980         classes, too.
33981
33982 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
33983
33984         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
33985
33986 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
33987
33988         * gc.c: protect handles with a critical section.
33989
33990 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33991
33992         * icall.c:
33993         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
33994         parameters. If no assembly specified, try getting the type from all
33995         the assemblies in the current domain, else, load the assembly and get
33996         the type from it.
33997
33998 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33999
34000         * marshal.c: applied patch from Aleksey Demakov that fixes
34001         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34002
34003 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34004
34005         * icall.c: fixed get_location.
34006
34007 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34008
34009         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34010         declarations to make it work with older gcc. 
34011
34012         * loader.c (mono_get_method): set signature->pinvoke for native calls
34013
34014 2002-11-20  Dick Porter  <dick@ximian.com>
34015
34016         * threads.c (mono_thread_init): Set the main thread's handle
34017
34018 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34019
34020         * gc.c: allow compilation without GC support. Changed to match the
34021         mono coding style.
34022
34023 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34024
34025         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34026
34027 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34028
34029         * reflection.c: set a public key token on the core assemblies.
34030
34031 2002-11-18  Dick Porter  <dick@ximian.com>
34032
34033         * threads.c: Split out some thread initialisation so that other
34034         files can set the start callback function.
34035
34036         * gc.c: Run finalisers in a separate thread, to avoid stack
34037         overflow.  Fixes bug 31333.
34038
34039         * appdomain.c: Set up GC finalisation thread.
34040
34041         * reflection.c: 
34042         * object.c: 
34043         * domain.c: Use gc.h macros for GC_malloc
34044         
34045 2002-11-15  Dick Porter  <dick@ximian.com>
34046
34047         * threadpool.c: 
34048         * threads.c:
34049         * appdomain.c: Removed mono_runtime_init_with_attach(),
34050         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34051         merging the extra parameter with the existing function.  Removed
34052         unneeded code in mono_thread_attach().
34053
34054 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34055
34056         * image.c (mono_image_loaded_by_guid): a method to get loaded
34057         images by guid. 
34058         (load_metadata_ptrs): we store the guid as string.
34059
34060 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34061
34062         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34063
34064         * metadata.c (mono_guid_to_string): imported method form Zoltan
34065         Varga (slightly modified)
34066
34067         * assembly.c (mono_assembly_open): load precompiled code
34068
34069         * loader.h (MonoMethod): we store the method token for use in the
34070         aot compiler. 
34071
34072 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34073
34074         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34075         the hook function called when an assembly is loaded.
34076         
34077         * domain.c: Modified file.
34078         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34079
34080         Fixes bug #33196.
34081
34082 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34083
34084         * reflection.c: Map PEFileKind to the value expected by the WinNT
34085         image loader. 
34086
34087 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34088
34089         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34090         Read until the buffer is filled completely.
34091
34092 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34093
34094         * icall.c: implemented MonoType.InternalGetEvent ().
34095
34096 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34097
34098         * appdomain.c: implemented InitAppDomainSetup. Delayed
34099         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34100         the entry_assembly.
34101
34102         * assembly.c: base_dir is now an absolute path ending with
34103         G_DIR_SEPARATOR.
34104
34105         * icall.c: modified get_location according to the above changes.
34106
34107         * object.c: init AppDomain.SetupInformation for the default domain after
34108         we have the entry assembly.
34109
34110         * domain.c: when unloading a domain, setup = NULL.
34111
34112 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34113
34114         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34115
34116 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34117
34118         * object.h, object.c: introduced mono_object_get_virtual_method ()
34119         to lookup the method invoked on an object when a callvirt is done on
34120         a method.
34121         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34122
34123 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34124
34125         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34126         current domain when loaded an assembly and failed to load it.
34127
34128         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34129
34130 2002-10-31  Dick Porter  <dick@ximian.com>
34131
34132         * icall.c: 
34133         * file-io.h: 
34134         * file-io.c: Return the error status in a parameter, as the
34135         GetLastError() value has long since been blown away if we try and
34136         look it up in a subsequent internal call invocation.  Delete the
34137         GetLastError() internal call, because it's useless.
34138
34139 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34140
34141         * class.[ch]: added cast_class to fix bug 29517
34142
34143 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34144
34145         * marshal.c: create valid IL code in the filter clause:
34146         the new JIT is less forgiving:-)
34147
34148 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34149
34150         * icall.c: removed get_property internal call.
34151
34152 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34153
34154         * appdomain.h domain.c: Added an ID to appdomains.
34155         
34156         * threads.c threads.h icall.c: Implement icall
34157         Thread:GetDomainID(), and remove unused icall 
34158         CurrentThreadDomain_internal.
34159
34160 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34161
34162         * icall.c: Don't recurse through the base types in GetConstructor.
34163         Fixes bug #32063. 
34164
34165 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34166
34167         * mempool.h, mempool.c: added mono_mempool_empty() and
34168         mono_mempool_stats().
34169
34170 2002-10-23  Dick Porter  <dick@ximian.com>
34171
34172         * file-io.c: 
34173         * file-io.h: 
34174         * icall.c: Added MonoIO.GetFileType internal call
34175
34176 2002-10-17  Dick Porter  <dick@ximian.com>
34177
34178         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34179         delegate semaphore before waiting for all threads to finish,
34180         because new threads can also call async delegates.  Fixes bug
34181         32004.
34182
34183         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34184         of 3 seconds, in case another async job is queued.  (This part is
34185         needed because the bug fix reintroduced the 3s exit lag.)  This
34186         makes the mono_runtime_shutdown flag superfluous.
34187
34188 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34189
34190         * reflection.c: include ehader size in method section headers.
34191         Really check for suplicated modules entries.
34192
34193 2002-10-17  Martin Baulig  <martin@gnome.org>
34194
34195         * debug-mono-symfile.c: Added back support for locals.
34196
34197 2002-10-14  Martin Baulig  <martin@gnome.org>
34198
34199         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34200         MONO_TYPE_VOID.
34201
34202 2002-10-14  Martin Baulig  <martin@gnome.org>
34203
34204         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34205         mono_class_get() instead of looking in the class cache. 
34206
34207 2002-10-13  Martin Baulig  <martin@gnome.org>
34208
34209         * debug-mono-symfile.c: Set version number to 28, include the
34210         signature in method names.
34211
34212 2002-10-13  Martin Baulig  <martin@gnome.org>
34213
34214         * debug-mono-symfile.h: Set version number to 27.
34215
34216 2002-10-11  Martin Baulig  <martin@gnome.org>
34217
34218         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34219
34220 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34221
34222         * metadata.c, metadata.h: added helper function to allocate signatures.
34223
34224 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34225
34226         * icall.c: added internal call to get the location of machine.config.
34227
34228 2002-10-08  Martin Baulig  <martin@gnome.org>
34229
34230         * debug-mono-symfile.c: Ignore classes with a pending init for the
34231         moment.
34232
34233 2002-10-03  Dick Porter  <dick@ximian.com>
34234
34235         * threads.c: Freebsd pthread_t is a pointer
34236
34237 2002-10-03  Dick Porter  <dick@ximian.com>
34238
34239         * socket-io.c: Implemented GetHostName_internal
34240
34241 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34242
34243         * mono-config.c:
34244         (mono_config_parse_file): don't leak the text.
34245
34246 2002-10-02  Martin Baulig  <martin@gnome.org>
34247
34248         * debug-mono-symfile.c: Added support for methods.
34249
34250 2002-10-01  Martin Baulig  <martin@gnome.org>
34251
34252         * debug-mono-symfile.c: Don't emit methods and line numbers for
34253         the dynamic symbol file, just write the type table.  We can easily
34254         have an external helper program which creates a symbol file for an
34255         IL file.        
34256
34257 2002-10-01  Dick Porter  <dick@ximian.com>
34258
34259         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34260         Only add the handle to the cleanup array when we're about to
34261         launch the thread.  Bug 31425 deadlocked when the test was run on
34262         mono under w32.
34263
34264 2002-10-01  Martin Baulig  <martin@gnome.org>
34265
34266         * debug-mono-symfile.c: Added support for properties.
34267
34268 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34269
34270         * reflection.c: unaligned store fix from Mark Crichton
34271         <crichton@gimp.org>.
34272
34273 2002-09-27  Martin Baulig  <martin@gnome.org>
34274
34275         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34276         New interncall.
34277
34278 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34279
34280         * assembly.h, assembly.c: use a sane API to hook into the assembly
34281         loading process instead of a useless special-purpouse hack
34282         (ngen needs a hook, too, for example).
34283
34284 2002-09-27  Dick Porter  <dick@ximian.com>
34285
34286         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34287         io-layer can set up some process handle info.  Not needed on w32,
34288         but doesn't hurt either.
34289
34290         * process.c: Pass the program name in the second parameter to
34291         CreateProcess, so the path is searched.  Include the working
34292         directory. Implemented process name, process enumeration, and some
34293         process detail internal calls.
34294         
34295         * icall.c: Added internal calls for process lookup, and some
34296         process details
34297
34298 2002-09-26  Martin Baulig  <martin@gnome.org>
34299
34300         * assembly.c (mono_install_open_assembly_hook): New global
34301         function to install a function to be invoked each time a new
34302         assembly is loaded.
34303         (mono_assembly_open): Run this callback function if set.
34304
34305         * debug-mono-symfile.c: Put back line numbers for the dynamic
34306         symbol file and also record the .il file as source file.  This
34307         allows us to install the temporary symbol file as `file.dbg' just
34308         like a compiler-generated one.
34309
34310 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34311
34312         * Corrected typo in gc.c (BOHEM vs BOEHM).
34313
34314 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34315
34316         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34317         GetProperties. Also avoid calling g_slist_length in GetProperties and
34318         GetMethods.
34319
34320 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34321
34322         * reflection.c: avoid unaligned stores (bug spotted by
34323         Mark Crichton  <crichton@gimp.org>).
34324
34325 2002-09-25  Martin Baulig  <martin@gnome.org>
34326
34327         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34328         instead of guint64 for addresses and added prologue/epilogue info.
34329
34330 2002-09-25  Martin Baulig  <martin@gnome.org>
34331
34332         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34333         store line number info.  For the dynamic symbol file, we only need
34334         to provide the JIT generated dynamic line number info for the dynamic
34335         symbol file.
34336
34337 2002-09-25  Martin Baulig  <martin@gnome.org>
34338
34339         * debug-mono-symfile.h: Incremented version number.
34340
34341 2002-09-24  Martin Baulig  <martin@gnome.org>
34342
34343         * class.c (mono_debugger_class_init_func): New global function
34344         pointer variable.
34345         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34346         call it.
34347
34348         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34349         function.  This is called via the mono_debugger_class_init_func
34350         hook to add all types to the dynamic type table.
34351         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34352         from its metadata token.
34353
34354         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34355         New interncall for the debugger.
34356
34357 2002-09-24  Nick Drochak <ndrochak@gol.com>
34358
34359         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34360         before using it in case it is null.
34361         
34362 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34363
34364         * metadata.c: allow custom modifiers in local var signatures
34365         (bug spotted by Zoltan Varga).
34366
34367 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34368
34369         * class.c: deal with the <Module> class that may have a NULL vtable.
34370         Eliminate warnings.
34371
34372 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34373
34374         * image.c, image.h: more strong name helpers.
34375         * monosn.c: more work: convert pem keys to cryptoapi format.
34376
34377 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34378
34379         * string-icalls.c: speedup IndexOf.
34380
34381 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34382
34383         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34384
34385 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34386
34387         * icall.c: cleanup: use mono_object_domain ().
34388
34389 2002-09-23  Martin Baulig  <martin@gnome.org>
34390
34391         * debug-mono-symfile.c: Improved type support.
34392
34393 2002-09-22  Martin Baulig  <martin@gnome.org>
34394
34395         * debug-mono-symfile.c: Added support for reference types and strings.
34396
34397 2002-09-22  Martin Baulig  <martin@gnome.org>
34398
34399         * debug-mono-symfile.c: Started to work on the type table.
34400
34401 2002-09-21  Martin Baulig  <martin@gnome.org>
34402
34403         * debug-mono-symfile.c: Largely reworked the symbol table format.
34404         The symbol table is now incrementally updated each time a new
34405         method is added.  We're now also using our own magic and version
34406         so that you don't need to recompile all your classes if the
34407         dynamic table changes.
34408         (mono_debug_update_mono_symbol_file): Removed.
34409         (mono_debug_symfile_add_method): New function to add a method.
34410
34411 2002-09-21  Martin Baulig  <martin@gnome.org>
34412
34413         * icall.c
34414         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34415         New interncall.
34416
34417         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34418         New interncall to get a method from its metadata token.
34419
34420 2002-09-21  Martin Baulig  <martin@gnome.org>
34421
34422         * debug-mono-symfile.c: Create type table.
34423
34424 2002-09-20  Martin Baulig  <martin@gnome.org>
34425
34426         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34427
34428 2002-09-20  Martin Baulig  <martin@gnome.org>
34429
34430         * debug-mono-symfile.c: Provide information about params and locals.
34431
34432 2002-09-20  Martin Baulig  <martin@gnome.org>
34433
34434         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34435         New interncall.
34436
34437         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34438         interncall to get a method from its metadata token.
34439
34440 2002-09-20  Martin Baulig  <martin@gnome.org>
34441
34442         * debug-mono-symfile.c: Added a few checks for method->header
34443         being non-NULL.  This should never happen, but for the moment
34444         let's use a g_warning() rather than a g_assert().
34445
34446 2002-09-19  Mark Crichton  <crichton@gimp.org>
34447
34448         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34449         even if support for it isn't present.  Added an #ifdef to fix this.
34450
34451         * socket-io.c: Added checks back for Solaris support.
34452
34453 2002-09-19  Martin Baulig  <martin@gnome.org>
34454
34455         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34456         changes in the symbol file format.
34457
34458 2002-09-18  Martin Baulig  <martin@gnome.org>
34459
34460         * debug-mono-symfile.c: Set version number to 21.
34461
34462 2002-09-18  Dick Porter  <dick@ximian.com>
34463
34464         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34465         on netbsd.  Fixes bug 30051.
34466
34467 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34468
34469         * reflection.c:
34470         (set_version_from_string): little fix.
34471
34472 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34473
34474         * monosn.c, Makefile.am: added strong name utility.
34475         * reflection.h, reflection.c: implemented delayed signing,
34476         locale, version and hash id assembly attributes.
34477
34478 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34479
34480         * loader.c, metadata.c: load param attributes in signatures.
34481
34482 2002-09-16  Martin Baulig  <martin@gnome.org>
34483
34484         * debug-mono-symfile.c: Added string table with all method names.
34485
34486 2002-09-14  Martin Baulig  <martin@gnome.org>
34487
34488         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34489         fast method lookup.
34490
34491 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34492
34493         * reflection.c: record the public key token of referenced assemblies.
34494
34495 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34496
34497         * image.c, image.h: added functions to get the strong name and the
34498         public key of an assembly.
34499         * pedump.c: use them.
34500
34501 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34502
34503         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34504
34505 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34506
34507         * marshal.c (mono_marshal_get_managed_wrapper): Added
34508         MONO_TYPE_BOOLEAN 
34509
34510 2002-09-11  Martin Baulig  <martin@gnome.org>
34511
34512         * gc.c: Call GC_unregister_disappearing_link() on all links when
34513         finalizing them, this is necessary to aviod a crash in boehm's
34514         finalize handler.
34515
34516 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34517
34518         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34519         nick@chemlab.org.
34520
34521 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34522
34523         * icall.c: implemented MonoType::Module.
34524         * reflection.c, reflection.h: mono_module_get_object () from
34525         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34526
34527 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34528
34529         * icall.c: ignore overridden methods in GetMethods ().
34530         Fix for FieldInfo::SetValue().
34531         * object.c: handle float/double in runtime invoke.
34532
34533 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34534
34535         * object.c: allow a constructor to be called again on an object.
34536
34537 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34538
34539         * class.h, class.c: move field layout code to it's own function and
34540         export it. Get an interface id earlier. Move fields in MonoClass
34541         so they are more cache friendly and align the bitfields.
34542         * loader.c: temporary handle get_param_names() for a runtime method.
34543         * reflection.c, reflection.h: more code to handle runtime creation of
34544         types.
34545
34546 2002-09-09  Martin Baulig  <martin@gnome.org>
34547
34548         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34549         signature with the pinvoke field being set for the actual call.
34550
34551 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34552
34553         * icall.c: removed some unused icalls. Start of map of glib charsets
34554         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34555
34556 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34557
34558         * debug-helpers.c: break infinite loop (found and fixed by
34559         Holger Arnold <harnold@gmx.de>).
34560
34561 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34562
34563         * icall.c: target may be null in create_delegate.
34564
34565 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34566
34567         * marshal.c: handle a boolean return type.
34568
34569 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34570
34571         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34572
34573 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34574
34575         * gc.c: fix weakreferences.
34576
34577 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34578
34579         * icall.c: added icall to get default codepage.
34580
34581 2002-09-03  Dick Porter  <dick@ximian.com>
34582
34583         * threads.h: 
34584         * threads.c: Use MonoThread instead of MonoObject where
34585         apropriate.
34586
34587         Store running thread objects in a hash table, so that we have all
34588         the info to hand when waiting for them to finish
34589         (means we don't need OpenThread() any more, so mingw builds should
34590         be fully functional again.)
34591
34592         * verify.c:
34593         * object.h: Added thread ID to MonoThread
34594
34595 2002-09-03  Martin Baulig  <martin@gnome.org>
34596
34597         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34598
34599 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34600
34601         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34602
34603 2002-09-03  Martin Baulig  <martin@gnome.org>
34604
34605         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34606         argument to store the end address of the disassembled instruction.
34607
34608         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34609         here from debug-symfile.h.
34610         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34611         JIT into this struct.
34612         (MonoSymbolFile): Added `char *image_file' field.
34613         (MonoDebugGetMethodFunc): Removed.
34614         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34615         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34616         (mono_debug_find_method): New method.
34617
34618         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34619         create a full symbol file.
34620         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34621         and static symbol files.
34622         (mono_debug_find_method): The symbol file keeps an internal method hash,
34623         call this to get a MonoDebugMethodInfo from a MonoMethod.
34624
34625         * debug-symfile.[ch]: Removed.
34626
34627 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34628
34629         * image.c (do_mono_image_open): Remove linker version check.
34630
34631 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34632
34633         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34634         wrappers for instance methods.
34635         
34636 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34637
34638         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34639
34640 2002-08-28  Dick Porter  <dick@ximian.com>
34641
34642         * Makefile.am: Export HOST_CC for w32 builds
34643
34644 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34645
34646         * file-io.c process.c: MonoString are null terminated, no
34647         need for mono_string_to_utf16() anymore.
34648
34649 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34650
34651         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34652
34653 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34654
34655         * icall.c, reflection.h: speedup System.MonoType.
34656
34657 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34658
34659         * reflection.c: allow null as the value of a string argument in
34660         custom attributes constructors.
34661
34662 2002-08-27  Martin Baulig  <martin@gnome.org>
34663
34664         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34665         `trampoline_address' field.
34666
34667 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34668
34669         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34670         check (fixes bug #29486) 
34671
34672 2002-08-27  Martin Baulig  <martin@gnome.org>
34673
34674         * debug-mono-symfile.c: Changed the file format in a way that allows us
34675         open it read-only and to use a specially malloced area for all the
34676         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34677         debugging IL code and there is no MCS generated symbol file for it.
34678
34679 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34680
34681         * object.c: added a define for a good string and array
34682         creation speedup (not enabled by default because we need to deal with
34683         the synch stuff).
34684
34685 2002-08-26  Martin Baulig  <martin@gnome.org>
34686
34687         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34688         function to create a dynamic symbol file.  This is used by the
34689         debugger to create a symbol file for IL code on-the-fly.
34690
34691 2002-08-26  Martin Baulig  <martin@gnome.org>
34692
34693         * loader.c (mono_lookup_pinvoke_call): Include the error message
34694         from g_module_error() in the error message.
34695
34696 2002-08-24  Martin Baulig  <martin@gnome.org>
34697
34698         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34699         function to update the symbol file.  The symbol file is mmap()ed
34700         writable, but private.  This allows us to install the symbol file
34701         together with the assembly.
34702
34703 2002-08-24  Martin Baulig  <martin@gnome.org>
34704
34705         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34706         but they can read the new symbol file format which mcs is now creating.
34707
34708         * debug-symfile.c (mono_debug_find_source_location): Moved to
34709         debug-mono-symfile.c; this is now operating on the new symbol file.
34710
34711 2002-08-23  Martin Baulig  <martin@gnome.org>
34712
34713         * debug-helpers.c (mono_method_desc_from_method): New function to get
34714         a MonoMethodDesc from a MonoMethod.
34715
34716 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34717
34718         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34719         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34720
34721 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34722
34723         * string-icalls.[ch]: make helper methods static.
34724
34725 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34726
34727         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34728         types to it and to SetValueInternal.
34729
34730         * object.c: Moved handle_enum label to its proper place. This was the
34731         f... bug! ;-)
34732
34733         This time i compiled mcs and gtk-sharp and they both work.
34734
34735 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34736
34737         * icall.c: reverted partially my previous patch until 
34738         object.c:set_value handles enums correcly.
34739
34740 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34741
34742         * icall.c:
34743         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34744         (ves_icall_System_Environment_get_MachineName): removed warning when
34745         compiling under cygwin.
34746
34747 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34748
34749         * object.c: fixed field_get_value() for reference types.
34750
34751 2002-08-22  Dick Porter  <dick@ximian.com>
34752
34753         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34754         Don't free a buffer while it's still needed.  Patch from Jonathan
34755         Liger <Jonathan.liger@wanadoo.fr>
34756
34757 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34758
34759         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34760         internal call.
34761
34762 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34763
34764         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34765         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34766
34767         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34768         we call unmanaged code which throws exceptions.
34769
34770 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34771
34772         * appdomain.h: added per-domain entry_assembly.
34773         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34774         arguments.
34775         * icall.c: Assembly::GetEntryAssembly icall.
34776         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34777         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34778
34779 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34780
34781         * appdomain.h, gc.c: added mono_domain_finalize ().
34782
34783 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34784
34785         * object.c:
34786         (mono_print_unhandled_exception): changed g_warning by g_printerr
34787         because g_log has a 1024 characters limit (yeah, i got a big stack
34788         trace). Don't print exception name, that should be in ToString 
34789         returned string.
34790
34791 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34792
34793         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34794         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34795
34796 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34797
34798         * object.c:
34799         (mono_print_unhandled_exception): after previous commit, i realized
34800         that MS calls ToString on the exception. I changed this function to
34801         do that. This way we get stack_trace for free.
34802
34803 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34804
34805         * object.c:
34806         (mono_print_unhandled_exception): invoke Message property instead of
34807         getting 'message' field from Exception. Don't allocate memory for
34808         'trace' and 'message' if not needed.
34809
34810 2002-08-18  Dick Porter  <dick@ximian.com>
34811
34812         * unicode.c: Fix asserts to match Encoder.cs checks
34813
34814 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34815
34816         * marshal.c: fix unaligned store issue and a few wrong
34817         opcode argument types.
34818
34819 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34820
34821         * icall.c: added GetUninitializedObjectInternal internal call.
34822
34823 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34824
34825         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34826         to the right domain.
34827
34828 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34829
34830         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34831
34832         * class.c (class_compute_field_layout): set blittable to false for Strings
34833
34834         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34835
34836 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34837
34838         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34839         first chunk of code to create types at runtime. Code to
34840         handle ReflectedType/DeclaringType. Make reflection handles
34841         domain specific.
34842
34843 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34844
34845         * class.c: set correct name in arrays.
34846
34847 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34848
34849         * appdomain.c (mono_domain_transfer_object): make it work with
34850         valuetypes. bug fixes.
34851
34852 2002-08-12  Dick Porter  <dick@ximian.com>
34853
34854         * object.h: Rename some parameters to avoid c++ keywords (Patch
34855         from Joseph Wenninger <kde@jowenn.at>)
34856
34857 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34858
34859         * icall.c: added icall to implement Assembly.GetFile*.
34860
34861 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34862
34863         * reflection.h, reflection.c: code to embed managed resources.
34864
34865 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34866
34867         * class.c: move all the type size stuff into
34868         class_compute_field_layout().
34869
34870 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34871
34872         * class.c: ensure enums have always the correct instance size.
34873         * unicode.c: remove wrong assert.
34874
34875 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34876
34877         * assembly.c: fix mem corruption issue.
34878         * image.h, image.c: added mono_image_get_resource () to access
34879         managed resources.
34880         * icall.c: implemented Assembly.EntryPoint property and some
34881         Managed Resources related internalcalls.
34882
34883
34884 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34885
34886         * image.c, image.h: impemented mono_image_get_entry_point ().
34887         * appdomain.c: use mono_image_get_entry_point.
34888
34889 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34890
34891         * reflection.c: support the object type argument when loading
34892         custom attributes.
34893
34894 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34895
34896         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34897         String as return type.
34898
34899 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34900
34901         * reflection.c: fix encoding of named args for custom attrs to match
34902         the ms implementation. Read them back when instantiating custom
34903         attributes.
34904
34905 2002-08-02  Radek Doulik  <rodo@ximian.com>
34906
34907         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34908         by Dietmar as quick fix
34909         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34910         16 as stack size, used on more places as quick fix before Dietmar
34911         will fix it properly
34912
34913 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34914
34915         * object.h, object.c: added accessors for fields and properties.
34916
34917 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34918
34919         * class.c, class.h: made mono_class_get_field_from_name ()
34920         loop on parent types.
34921         Added mono_class_get_property_from_name ().
34922
34923 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34924
34925         * class.c, class.h: move the code to setup the type vtable in its own
34926         function so that it can be reused also for types created at runtime.
34927         Eliminate the "class" identifier from the header file.
34928         * reflection.c: setup the vtable for enums so that we can create
34929         objects for use in SetConstant ().
34930
34931 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
34932
34933         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
34934         instead of the delegate itself as this pointer (bug #28383)
34935
34936 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
34937
34938         * marshal.c (mono_marshal_get_managed_wrapper): added return type
34939         conversions.
34940
34941 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34942
34943         * loader.c: don't set the pinvoke bit on icalls.
34944
34945 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
34946
34947         * debug-helpers.c (mono_method_full_name): only print a number to
34948         indicate wrapper type (so that the output is more readable in traces).
34949
34950 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
34951
34952         * class.c (mono_class_init): include method override patch from Paolo
34953
34954 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
34955
34956         * icall.c: fixed GetTypeCode().
34957
34958 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
34959
34960         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
34961         use real delegate invoke function to make it work with multicast
34962         delegates (fix bug# 28291).
34963
34964 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
34965
34966         * object.c: load constant strings.
34967
34968 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
34969
34970         * reflection.c: no magic numbers.
34971         * tabledefs.h: security action enum.
34972
34973 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
34974
34975         * assembly.c: fix possible memory corruption.
34976
34977 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34978
34979         * reflection.h, reflection.c: added support for linking resources.
34980         * verify.c: check we have an updated corlib.
34981
34982 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
34983
34984         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
34985         string arrays.
34986         (mono_marshal_string_array): null terminate unmanaged string arrays.
34987         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
34988
34989 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
34990
34991         * icall.c: Type.GetType () can now return also types from the
34992         calling assembly.
34993
34994 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34995
34996         * loader.h, loader.c: stack walking support.
34997         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
34998         GetCallingAssembly.
34999
35000 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35001
35002         * marshal.c: added optimisations for blittable types 
35003
35004         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35005         (mono_class_setup_mono_type): set blittable attribute for single
35006         and double.
35007
35008         * marshal.c (mono_string_utf8_to_builder): impl.
35009         (mono_string_builder_to_utf8): impl.
35010         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35011
35012 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35013
35014         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35015         (mono_marshal_get_managed_wrapper): impl. byref types
35016
35017 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35018
35019         * icall.c:
35020         (search_method): don't display debug message. 
35021
35022 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35023
35024         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35025
35026 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35027
35028         * appdomain.c: set the missing filename when throwing exception.
35029
35030 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35031
35032         * metadata.c (mono_type_size): code cleanup
35033         (mono_type_stack_size): removed some test code
35034
35035 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35036
35037         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35038         mono_get_exception_file_not_found now.
35039
35040         * exception.c (mono_exception_from_name_two_strings): New version
35041         that will call a constructor with two string arguments. 
35042         (mono_get_exception_file_not_found): New helper routine, used to
35043         report file-not-found errors.
35044
35045 2002-07-20  Dick Porter  <dick@ximian.com>
35046
35047         * process.h:
35048         * process.c: Pass file handles to CreateProcess
35049         
35050         * icall.c:
35051         * file-io.h:
35052         * file-io.c: Implemented CreatePipe
35053
35054 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35055
35056         * metadata.c (mono_get_param_info): set alignment for value types
35057
35058 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35059
35060         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35061         Constify mono_domain_assembly_open().
35062         * loader.c: handle null namespace in icalls.
35063
35064 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35065
35066         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35067         (emit_str_to_ptr_conv): marshal object as structs
35068
35069         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35070
35071         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35072
35073 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35074
35075         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35076         (mono_marshal_get_native_wrapper): we an now return value types
35077
35078 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35079
35080         * verify.c: more checks implemented.
35081
35082 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35083
35084         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35085         (fix bug #27695)
35086         (mono_marshal_get_native_wrapper): allow byref arguments
35087         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35088         impl. PtrToStringXXX methods
35089         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35090         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35091         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35092         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35093         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35094
35095 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35096
35097         * reflection.c: fix buglet in parsing an assembly name.
35098
35099 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35100
35101         * marshal.c (emit_ptr_to_str_conv): first impl.
35102
35103 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35104
35105         * object.c, class.h: cache the vtable in the class as suggested by
35106         vargaz@freemail.hu (Zoltan Varga).
35107
35108 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35109
35110         * class.h, loader.c: added mono_field_from_token().
35111         * verify.c: first cut of type checking code.
35112
35113 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35114
35115         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35116
35117 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35118
35119         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35120         (fix bug #27782)
35121         (mono_marshal_get_remoting_invoke): impl.
35122         (mono_delegate_begin_invoke): impl.
35123         (mono_mb_emit_save_args): impl.
35124         (mono_delegate_end_invoke): impl.
35125         (mono_marshal_get_delegate_begin_invoke):
35126         (mono_marshal_get_delegate_end_invoke):
35127         (mono_marshal_get_delegate_invoke): generate a special name for
35128         those methods (including the signature) and associate them whith
35129         the delegate class. 
35130
35131 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35132
35133         * reflection.[ch]: 
35134         (mono_reflection_type_from_name): now it has a MonoImage parameter
35135         which is used as the default image to search the type in. If the image
35136         is NULL or getting the type from it fails, it defaults to corlib.
35137
35138         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35139         new parameter.
35140
35141 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35142
35143         * reflection.c: update the parameter table index.
35144
35145 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35146
35147         * domain.c: don't include the mark byte in the string hash.
35148
35149 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35150
35151         * icall.cs: icall for Type.GetTypeCode ().
35152         * verify: a couple of fixes and disabled local initialization checks.
35153
35154 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35155
35156         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35157
35158         * debug-helpers.c (mono_method_full_name): print the type of the
35159         runtime wrapper
35160
35161         * metadata.c (mono_signature_hash): a hash function for signatures
35162         (mono_signature_hash): better hash algorithm
35163
35164         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35165
35166         * debug-helpers.c (mono_method_full_name): this can now generate
35167         method names with signatures
35168
35169         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35170         method dont have this pointers.
35171
35172 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35173
35174         * reflection.c: fixup typebuilder tokens.
35175         * image.c: fix buglet.
35176         * marshal.h: remove whitespace.
35177         * metadata.h, metadata.c: reinstate code that was removed.
35178         * verify.c: handle catch directives and fix another couple of bugs.
35179
35180 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35181
35182         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35183         (mono_marshal_get_native_wrapper): make it comp. with the old code
35184         (mono_marshal_get_native_wrapper): support boolean
35185         (mono_marshal_get_managed_wrapper): support more types
35186
35187 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35188
35189         * class.c (class_compute_field_layout): compute class->blittable attribute.
35190
35191 2002-07-09  Dick Porter  <dick@ximian.com>
35192
35193         * threads.c: Make the thread cleaning up cope with threads that
35194         call ExitThread()
35195
35196 2002-07-08  Radek Doulik  <rodo@ximian.com>
35197
35198         * reflection.c (method_encode_code): use non-translated values to
35199         compute finally_start, this fixes exception handling on ppc, yay!
35200
35201         * decimal.h (struct signscale): fix endianess
35202
35203 2002-07-07  Radek Doulik  <rodo@ximian.com>
35204
35205         * reflection.c: swap box_val and not val
35206
35207 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35208
35209         * reflection.c, reflection.h: handle full assembly info in type name.
35210         Handle Type arguments when loading custom attributes.
35211         * icall.c: updated to use new mono_reflection_type_from_name () method.
35212
35213 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35214
35215         * loader.c:
35216         (method_from_memberref): also print assembly name when method not found.
35217
35218 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35219
35220         * icall.c:
35221         (ves_icall_TypeGetProperties): fixed bug #27473. 
35222
35223 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35224
35225         * reflection.c: display image name and token when cannot find the
35226         .ctor for an attribute.
35227
35228 2002-07-05  Martin Baulig  <martin@gnome.org>
35229
35230         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35231
35232 2002-07-04  Dick Porter  <dick@ximian.com>
35233
35234         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35235         compile on mingw.  This will cause mingw builds to not wait for
35236         subthreads to terminate after the main thread does.  I've lodged a
35237         bug with the mingw developers for them to wrap OpenThread().
35238
35239 2002-07-03  Dick Porter  <dick@ximian.com>
35240
35241         * threads.c: Store thread IDs instead of handles, because
35242         GetCurrentThread() returns a pseudohandle and therefore stores
35243         useless values.  mono_thread_cleanup() continues checking the
35244         array of threads until it is empty, to cope with subthreads
35245         spawning new threads after the main thread has finished.
35246
35247         * profiler.h:
35248         * profiler.c:
35249         * profiler-private.h: Pass the thread ID to thread profiler
35250         functions, instead of a handle
35251
35252 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35253
35254         * verify.c: fixes to make it more usable.
35255         * pedump.c: added --verify code to verify IL code in an assembly.
35256
35257 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35258
35259         * reflection.c: turn errors into warnings to allow compiling corlib.
35260
35261 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35262
35263         * reflection.c: add special cases to compile corlib.
35264
35265 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35266
35267         * reflection.c: handle properties with only a set method.
35268
35269 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35270
35271         * opcodes.h: add enum with opcodes in opval order.
35272
35273 2002-07-01  Dick Porter  <dick@ximian.com>
35274         
35275         * object.h:
35276         * object.c (mono_runtime_run_main): Removed unneeded argument
35277
35278 2002-06-28  Martin Baulig  <martin@gnome.org>
35279
35280         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35281
35282 2002-06-27  Dick Porter  <dick@ximian.com>
35283
35284         * threads.c: Store the handle in both the parent thread and in the
35285         subthread, to minimise the time between starting a new thread and
35286         storing its ID.
35287
35288 2002-06-26  Dick Porter  <dick@ximian.com>
35289
35290         * appdomain.c (mono_runtime_cleanup): Close the socket library
35291         after all the threads have finished, not before
35292
35293 2002-06-26  Martin Baulig  <martin@gnome.org>
35294
35295         * debug-symfile.c (mono_debug_find_source_location): Added
35296         `guint32 *line_number' argument.  If it's not NULL, store the line number
35297         there and return the file name without the line number.
35298
35299 2002-06-25  Dick Porter  <dick@ximian.com>
35300
35301         * icall.c:
35302         * process.h:
35303         * process.c: Process forking and other support functions
35304
35305 2002-06-25  Dick Porter  <dick@ximian.com>
35306
35307         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35308         things dont happen when the image is closed.
35309         (mono_image_lookup_resource): Walk the resource section looking
35310         for a particular entry
35311
35312         * cil-coff.h: PE resource section decoding
35313
35314 2002-06-25  Dick Porter  <dick@ximian.com>
35315         
35316         * assembly.h:
35317         * assembly.c: 
35318         (mono_assembly_foreach): Accessor functions to walk the list of
35319         loaded assemblies
35320         (mono_assembly_set_main):
35321         (mono_assembly_get_main): Process methods need to know which
35322         assembly is the "main" one
35323
35324         * object.c (mono_runtime_run_main): Record the main assembly
35325
35326         * debug-helpers.c: Fix typo
35327
35328 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35329
35330         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35331         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35332
35333 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35334
35335         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35336
35337 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35338
35339         * image.c (do_mono_image_open): Initialize reference count,
35340         otherwise we leak the MonoImage.
35341
35342 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35343
35344         * reflection.c: small tweak to handle self-hosting.
35345
35346 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35347
35348         * reflection.c: fix type name parse code.
35349
35350 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35351
35352         * reflection.c: break out of the loop.
35353         * image.c: special case corlib.
35354
35355 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35356
35357         * reflection.c: add all the custom attrs at the end to ensure the
35358         ctors have been properly initialized when the attributes are defined
35359         in the current assembly.
35360
35361 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35362
35363         * reflection.c: handle correctly multiple-nested types.
35364
35365 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35366
35367         * row-indexes.h: fix typos.
35368         * reflection.c: adjust for typos and fix method_def_or_ref
35369         encoding in MethodImpl table.
35370
35371 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35372
35373         * reflection.c: fix entry point patching (thanks Serge!).
35374
35375 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35376
35377         * verify.c: add check for System.Exception
35378
35379 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35380
35381         * image.c, class.c: minifix for code just c&p'ed.
35382         * reflection.c: warning fix.
35383         * object.h, loader.h, domain.c: load also StringBuilder.
35384
35385 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35386
35387         * marshal.h, marshal.c: some support code to handle complex marshaling.
35388
35389 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35390
35391         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35392         Better signatures with vtable error dump.
35393
35394 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35395
35396         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35397
35398 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35399
35400         * icall.c (ves_icall_Type_GetField): impl.
35401
35402 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35403
35404         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35405         to retrieve a marshal description blob for a field or param.
35406
35407 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35408
35409         * reflection.h, reflection.c: change order of nested type emission
35410         to avoid table corruption. The NestedTypes table is sorted.
35411         * icall.c: change order of GetConstructor results to workaround mcs bug.
35412
35413 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35414
35415         * reflection.h, reflection.c: handle field and param marshal
35416         information.
35417
35418 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35419
35420         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35421
35422 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35423
35424         * reflection.c: fix call convention.
35425
35426 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35427
35428         * reflection.h, reflection.c: mono_image_get_memberref_token()
35429         takes a type instead of a class, now. Added
35430         mono_image_get_array_token() to create tokens for the special
35431         multi-dim array methods.
35432
35433 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35434
35435         * assembly.c: handle modules (no assembly table). Split
35436         loading references in its own function.
35437         * class.c: handle moduleref resolution scope.
35438         * image.c, image.h: cache module name in image.
35439
35440 2002-06-07  Martin Baulig  <martin@gnome.org>
35441
35442         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35443         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35444
35445 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35446
35447         * icall.c: more signature fixes that used uint instead of int.
35448
35449 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35450
35451         * reflection.c: fixed signature of field refs.
35452
35453 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35454
35455         * class.c, reflection.c: handle typerefs of nested types
35456         (both on read and when writing files).
35457
35458 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35459
35460         * icall.c: fix method signatures that tried to workaround the previous
35461         typo, d'oh!
35462
35463 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35464
35465         * debug-helpers.c: fix typo.
35466
35467 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35468
35469         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35470         rewrote the PE/COFF writing code (our programs are understood by the
35471         ms runtime, now).
35472
35473 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35474
35475         * gc.c, gc.h, icall.c: weakreference support.
35476
35477 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35478
35479         * Makefile.am, mono-config.c: use $(sysconfdir).
35480
35481 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35482
35483         * icall.c: changed default precision of Double.ToString() to 15.
35484         Fixed memory leak. Unified with Single.ToString.
35485
35486 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35487
35488         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35489
35490 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35491
35492         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35493         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35494         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35495         and myself.
35496
35497 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35498
35499         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35500
35501 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35502
35503         * reflection.c, socket-io.c: more compilation fixes.
35504
35505 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35506
35507         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35508         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35509         unicode.c: warning and compiler compatibility fixes.
35510
35511 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35512
35513         * class.h, metadata.c: fixed warnings/compilation errors.
35514
35515 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35516
35517         * Makefile.am, mono-config.c, mono-config.h: configuration file
35518         support routines.
35519         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35520         config file. Export methods to insert and lookup mappings.
35521
35522 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35523
35524         * reflection.c: handle types and boxed objects in custom attr
35525         constructors.
35526
35527 2002-05-30  Martin Baulig  <martin@gnome.org>
35528
35529         * debug-symfile.c
35530         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35531
35532 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35533
35534         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35535         to lookup the implmap row for a P/Invoke method.
35536         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35537         P/Invoke method from the runtime on an as needed basis.
35538
35539 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35540
35541         * metadata.c (mono_metadata_parse_signature): impl.
35542
35543 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35544
35545         * class.c: handle .pack directive.
35546
35547 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35548
35549         * object.c: initialize static fields with RVA data.
35550
35551 2002-05-25  Martin Baulig  <martin@gnome.org>
35552
35553         * debug-symfile.c
35554         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35555
35556 2002-05-24  Martin Baulig  <martin@gnome.org>
35557
35558         * debug-symfile.c
35559         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35560         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35561         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35562
35563 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35564
35565         * object.c: special case string ctros in invoke.
35566         * gc.c: silly whitespace changes.
35567
35568 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35569
35570         * threadpool.[ch]: impl. a threadpool that can
35571         be used by mint and mono.
35572
35573 2002-05-22  Martin Baulig  <martin@gnome.org>
35574
35575         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35576         The first argument is now a `MonoReflectionModuleBuilder *', the return
35577         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35578         `methods' field to get the method builder.  The `token' argument is the
35579         unfixed token.
35580
35581         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35582         invalid characters instead of g_assert_not_reached()ing.  This seems
35583         to be the behaviour of mscorlib.
35584
35585 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35586
35587         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35588         Hestilow to fix bug #25104
35589
35590 2002-05-21  Martin Baulig  <martin@gnome.org>
35591
35592         * debug-symfile.c (mono_debug_find_source_location): New function.
35593         Looks up an IL offset in the line number table and returns the source
35594         location as a string.
35595
35596 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35597
35598         * icall.c:
35599         (mono_double_ToStringImpl): changed %f by %g until we have something
35600         better.
35601
35602 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35603
35604         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35605         parameters first in C#.
35606
35607 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35608
35609         * icall.c, reflection.h: added icall to get info about an event.
35610
35611 2002-05-20  Radek Doulik  <rodo@ximian.com>
35612
35613         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35614         endian
35615         (mono_value_box): don't use memcpy for small sizes on
35616         architectures with unaligned access
35617
35618 2002-05-20  Martin Baulig  <martin@gnome.org>
35619
35620         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35621         if `tb->parent == NULL'.
35622         (mono_reflection_create_internal_class): New function.  This is
35623         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35624         for enum types.
35625
35626         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35627         New interncall.
35628
35629 2002-05-19  Martin Baulig  <martin@gnome.org>
35630
35631         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35632         argument to get the length, don't default to the array length.
35633
35634 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35635
35636         * assembly.c (mono_assembly_setrootdir): New function used to
35637         override the MONO_ASSEMBLIES directory.
35638
35639 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35640
35641         * icall.c: ValueType_GetHashCode() initialize local var.
35642
35643 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35644
35645         * reflection.c: sort custom attributes table.
35646
35647 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35648
35649         * reflection.c: support named args in custom attributes (write support).
35650
35651 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35652
35653         * reflection.c: fix finally position calculation.
35654
35655 2002-05-15  Radek Doulik  <rodo@ximian.com>
35656
35657         * reflection.c: fixed endianess at many places
35658
35659         * icall.c (ves_icall_InitializeArray): comment out debug msg
35660
35661 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35662
35663         * object.c (mono_unhandled_exception): new function to handle
35664         unhandled exceptions.
35665         (mono_unhandled_exception): call the UnhandledException event.
35666         (mono_runtime_delegate_invoke): impl.
35667
35668 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35669
35670         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35671         returns the RVA, not the direct pointer to the data. Handle the case
35672         when the class size is fixed.
35673
35674 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35675
35676         * reflection.c: fix some endianess issues.
35677
35678 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35679
35680         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35681
35682         * threads.c (mono_thread_init): added a callback which is invoked
35683         at thread start.
35684
35685 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35686         
35687         * icall.c: make GetHashCode return non-negative values.
35688
35689 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35690
35691         * object.c, icall.c, gc.c: revert to address-based hashcode.
35692
35693 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35694
35695         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35696
35697 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35698
35699         * icall.c, class.c: special case <Module>.
35700
35701 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35702
35703         * icall.c: fix bug in GetNow().
35704
35705 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35706
35707         * object.c (mono_runtime_class_init): make sure that we call all
35708         static class constructors.
35709
35710 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35711
35712         * reflection.c: sort methodsemantics table.
35713
35714 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35715
35716         * reflection.h, reflection.c: honour init locals setting.
35717
35718 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35719
35720         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35721
35722 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35723
35724         * reflection.c: support ContructorBuilders in attribute blob creation.
35725
35726 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35727
35728         * reflection.c: some changes to build a binary that can be run
35729         directly in windows.
35730
35731 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35732
35733         * loader.c: print a big message when an icall can't be found.
35734
35735 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35736
35737         * string-icalls.c: fix bug 24248.
35738
35739 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35740
35741         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35742         icall.c, reflection.h: separate assembly loading by pathname and by
35743         assembly name. Use the MONO_PATH env var to search for assemblies.
35744
35745 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35746
35747         * assembly.c, image.h: add some support for assemblies
35748         with multiple modules.
35749         * class.c, class.h: export mono_class_from_typeref().
35750         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35751         instead.
35752
35753 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35754
35755         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35756         documentation says (the ECMA one is correct).
35757
35758 2002-05-02  Dick Porter  <dick@ximian.com>
35759
35760         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35761         Don't name the synchronisation mutex.
35762
35763 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35764
35765         * rand.c
35766         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35767         Make the prototypes match.
35768         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35769         Same.
35770
35771         * icall.c
35772         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35773         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35774         all systems have tm.tm_zone, so use strftime() with %Z to print
35775         the timezone abreviation into a temp string.
35776
35777         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35778         rather than mono_array_addr() on a MonoString on Big Endian
35779         machines.
35780
35781 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35782
35783         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35784         fix bug 24041
35785
35786 2002-04-30  Dick Porter  <dick@ximian.com>
35787
35788         * socket-io.c: Cope with SOCKET being an integer rather than a
35789         pointer now.
35790
35791         * threads.c: Added Thread_free_internal, to deal with thread
35792         handle cleanup.  Moved calls to handle_store() and handle_remove()
35793         to start_wrapper(), so each can only be called once.  Allocate
35794         synchronisation blocks with GC_malloc(), and use GC finalisation
35795         to close the handles.
35796
35797         * icall.c: added System.Threading.Thread::Thread_free_internal
35798
35799 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35800
35801         * icall.c: support Environment.Exit, CommandLineArgs().
35802
35803 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35804
35805         * object.c, object.h: added mono_runtime_run_main () and
35806         mono_runtime_get_main_args () for use in System.Environment.
35807
35808 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35809
35810         * gc.c: fix thinko, enable actual finalization since the jit is now
35811         fixed.
35812
35813 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35814
35815         * gc.c, object.c: take into account that an object may be offset wrt the address
35816         returned by GC_malloc().
35817
35818 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35819
35820         * image.c: handle files without entries in the assembly table (modules).
35821
35822 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35823
35824         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35825         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35826         allowed to be null when it's System.Object class setup.
35827
35828 2002-04-27  Martin Baulig  <martin@gnome.org>
35829
35830         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35831         if `tb->parent == NULL' rather than crashing.
35832
35833 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35834
35835         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35836         calling acos() where asin() should have been called.
35837
35838 2002-04-26  Martin Baulig  <martin@gnome.org>
35839
35840         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35841         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35842         there's a subdirectory called `System', but we don't want to read that
35843         subdirectory as an assembly.
35844
35845 2002-04-25  Martin Baulig  <martin@gnome.org>
35846
35847         * debug-symfile.c: Reflect latest MonoString changes.
35848
35849 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35850
35851         * rand.c, rand.h: instance method icalls need to have an explicit
35852         this pointer as first argument in the C implementation.
35853
35854 2002-04-25  Nick Drochak <ndrochak@gol.com>
35855
35856         * icall.c: Fix typo in map for GetNonZeroBytes
35857
35858 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35859
35860         * string-icalls.c : String does now passes unit tests without any 
35861         errors, the following changes has been made:
35862         
35863         Implemented replace methods.
35864         Renaming of methods to (try) follow the standard.
35865         Fixed compare ordinal
35866         Made all memory allocated directly to function instead of via icall function.
35867         Small performance fix in is_in_array function
35868                         
35869  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35870
35871         c (mono_string_Internal_ctor_charp_int_int):
35872         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35873         sindex < 0, throw ArgumentOutOfRangeException instead of
35874         ArgumentNullException.
35875
35876         Added new check for length == 0, however
35877         I need to make it return String.Empty from the C code.
35878         
35879         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35880         that calculate the length for us here.
35881         
35882         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35883         mono_string_new_utf16 with mono_string_new, since value is utf8.
35884
35885 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35886
35887         * object.c: register the object for finalization if needed.
35888         Allocate one more char in the string for the terminating 0 char.
35889
35890 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35891
35892         * class.c, class.h, image.c: check if a type implemenst a destructor.
35893         Use the proper key for array class lookups.
35894         * icall.c: register the icalls in the System.GC class.
35895         * gc.c, gc.h: GC-related functions and icalls.
35896
35897 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35898
35899         * icall.c:
35900         * socket-io.c:
35901         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35902         changed a couple of free () by g_free ().
35903
35904         * decimal.c: one-liner in the comments for decimal2string ().
35905
35906 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35907
35908         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35909
35910 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35911
35912         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
35913         * object.c (mono_runtime_invoke_array) : handle null in params
35914
35915 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35916
35917         * string-icalls.c: fixed bug in split (one off bug)
35918
35919 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35920
35921         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
35922         * icalls.c: added String::Equals as internal method
35923
35924 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35925
35926         * threads.c: fixed bug in the double interlocked functions
35927
35928 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
35929
35930         * threads.c: implemented all of the new interlocked icalls.
35931         * string-icalls.c: fix a bug in insert.
35932         * icalls.c: added the icalls for interlocked, removed old string functions.
35933         
35934 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35935
35936         * loader.c: fix off-by-one error when reading argument names.
35937
35938 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35939
35940         * profiler.c: win32 counter implementation (untested).
35941         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
35942         (the latter needs testing and more complete impl. from win32 folks).
35943
35944 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
35945
35946         * object.c: mono_array_new_full workaround mono_array_class_get
35947         problem.
35948
35949 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35950
35951         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
35952         * object.h (mono_string_chars): Changed casting type.
35953
35954 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35955
35956         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
35957                            method signatures to use gunichar2 instead of gint16.
35958
35959 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
35960
35961         * object.h, object.c: domain-specific versions of mono_object_new and
35962         mono_array_new.
35963
35964 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
35965
35966         * object.c: changed String layout
35967
35968         * string-icalls.c (mono_string_Internal_ctor_chara): added
35969         internal string constructors.
35970
35971 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
35972
35973         * threads.c: pass 'this' to the thread start routine.
35974
35975 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35976
35977         * string-icalls.c: fix IndexOf and LastIndexOf. Now
35978         InternalCompareStr don't call twice mono_string_cmp_char for the last
35979         character. Improved performance in mono_string_cmp_char.
35980
35981 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35982
35983         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
35984         code into its own library: libmonoruntime.
35985
35986 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
35987
35988         * object.h, object.c: changed array format so that szarrays do not
35989         require a bounds structure.
35990         * icall.c, appdomain.c: support for new szarray format.
35991
35992 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35993
35994         * metadata.c: compare also the retuns type when comparing signatures:
35995         we didn't do this as an optimization since really overloaded methods
35996         must differ also in the arguments, but this doesn't work with
35997         low-level IL code (or when using explicit conversion operators: see
35998         bug#23498 for an example).
35999
36000 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36001
36002         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36003
36004 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36005
36006         * icall.c: make MonoType::GetElementType its own icall.
36007
36008 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36009
36010         * icall.c: remove MonoMethod_get_Name().
36011         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36012         object.
36013
36014 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36015
36016         * string-icalls.c: optimized a few methods.
36017
36018 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36019
36020         * icall.c: added all new string internal calls
36021         * string-icalls.c: added, new string internal call implementation.
36022         * object.c: added mono_string_new_size for allocating a string a size
36023
36024 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36025
36026         * object.c (mono_object_isinst): use the same code as in the
36027         optimized x86 version.
36028
36029 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36030
36031         * profiler.c: TSC-based timer code (faster and more accurate).
36032         Not hooked up in configure, yet (set USE_X86TSC to 1).
36033
36034 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36035
36036         * profiler.c, profiler.h: track time spent compiling methods.
36037         * threads.c: track thread creation/destruction.
36038
36039 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36040
36041         * profiler.c, profiler.h, profiler-private.h: profiling interface
36042         and sample implementation. Moved here so that it can be used also by
36043         the jit.
36044
36045 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36046
36047         * reflection.c, reflection.h: keep types and other handles separate in
36048         the hash tables for referred tokens. Add guid for modules.
36049
36050 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36051
36052         * assembly.c: fix bugs found with valgrind.
36053         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36054
36055 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36056
36057         * threads: added icall support for getting current domain for
36058                    the thread.
36059  
36060 2002-04-13  Martin Baulig  <martin@gnome.org>
36061
36062         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36063         (MonoDebugVarInfo): Added `index' field for register based addresses.
36064         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36065         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36066         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36067         `MonoDebugVarInfo *this_var'.
36068
36069         * debug-symfile.c (relocate_variable): New static function to write
36070         a location description for a local variable or method parameter.
36071
36072 2002-04-12  Martin Baulig  <martin@gnome.org>
36073
36074         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36075         stack offset and begin/end scope address of a local variable.
36076         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36077         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36078         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36079
36080         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36081         Added new relocation types for start/end scope of a local variable.
36082
36083 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36084
36085         * object.h: add mono_object_domain() macro.
36086         * reflection.c: handle typespecs.
36087         * icall.c: MonoMethod::get_Name() implementation.
36088
36089 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36090
36091         * icall.c: String::GetHashCode() icall implementation.
36092
36093 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36094
36095         * icall.c: String::IndexOfAny icall.
36096         * object.c, object.h: make array->max_length more useful.
36097         Intrduced mono_object_class() and mono_string_length() macros.
36098
36099 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36100
36101         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36102         instead of g_unichar_isdigit.
36103
36104 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36105
36106         * icall.c: Implement a simple Double.ToString().
36107
36108 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36109
36110         * appdomain.h: only io-layer.h is supposed to be included.
36111         * icall.c: explicitly import environ. Fix warning.
36112
36113 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36114
36115         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36116                 return true even if it's not Daylight Savings time.
36117                 Only return false for the case where the function isn't
36118                 implemented for a plaform (read Windows).
36119
36120 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36121
36122         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36123         data with a mutex.
36124
36125 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36126
36127         * mempool.c (mono_mempool_alloc): only use g_malloc when
36128         absolutely necessary.
36129
36130 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36131
36132         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36133
36134         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36135         (mono_class_proxy_vtable): use domain mempool
36136
36137 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36138
36139         * appdomain.h, appdomain.c: split initialization that requires the
36140         execution engine support into mono_runtime_init().
36141
36142 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36143
36144         * class.c (mono_class_init): don't include vtable inside MonoClass
36145         to save some memory, gather some statistics.
36146         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36147
36148 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36149
36150         * icall.c: internalcall implementation for ValueType.Equals().
36151
36152 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36153
36154         * object.c (mono_message_init): moved 
36155         (mono_runtime_exec_main): new arch. independent impl.
36156         (mono_runtime_invoke_array): new method - like
36157         mono_runtime_invoke, but you can pass an array of objects.
36158         (mono_remoting_invoke): new arch. independent impl.
36159         (mono_message_invoke): new arch. independent impl.
36160         (mono_runtime_class_init): new arch. independent impl.
36161         (mono_runtime_object_init): new arch. independent impl.
36162
36163 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36164
36165         * metadata.c, object.c, reflection.c: documented the exported
36166         functions.
36167
36168 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36169
36170         * icall.c: simpler code to pass the assembly builder data to corlib.
36171         Implement GetNestedTypes() internalcall.
36172
36173 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36174
36175         * class.c: warn if a type can't be loaded.
36176
36177 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36178
36179         * image.h: typedef MonoImageOpenStatus
36180         * types.h: removed unused file
36181         
36182 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36183
36184         * icall.c: Enum_ToObject accepts enum value arguments.
36185
36186 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36187
36188         * class.c: move initialization of properties, events and nested
36189         classes, so that they happen for interfaces, too.
36190
36191 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36192
36193         * icall.c: cleanup some ugly casts in Array_SetValue*.
36194
36195 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36196
36197         * icall.c: the values array fro enums is of the correct type, now.
36198         Implement (correctly) getFullName instead of assQualifiedName for
36199         MonoType.
36200         * reflection.h, reflection.c: added mono_type_get_name ().
36201
36202 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36203
36204         * assembly.c, image.h: for each MonoImage, record from wich assembly
36205         it was loaded.
36206         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36207         Make Type.Assembly work.
36208
36209 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36210
36211         * debug-symfile.h: use char* instead of gpointer to avoid
36212         unnecessary casts.
36213
36214         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36215
36216         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36217         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36218
36219 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36220
36221         * icall.c (mono_message_init): impl. (code cleanup)
36222         (ves_icall_InternalExecute): impl. FieldGetter
36223
36224         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36225         defined we call all (non-static)methods through the vtable. 
36226
36227 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36228
36229         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36230         finalizer even though the memory is still referenced (and the chunk of
36231         memory is not freed).
36232
36233 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36234
36235         * assembly.c: fix brokeness.
36236
36237 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36238
36239         * class.c: kill some warnings. Check explicit interface method
36240         implementation also without considering the namespace.
36241         Load also literal strings in static class data.
36242
36243 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36244
36245         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36246         (default_assembly_name_resolver): Make the resolver take the
36247         "base" directory where the assembly was originally defined, so we
36248         can load DLLs that are in the same directory as the assembly that
36249         is being referenced.
36250
36251 2002-03-28  Dick Porter  <dick@ximian.com>
36252
36253         * file-io.h: 
36254         * file-io.c:
36255         * socket-io.c: 
36256         * unicode.h: 
36257         * unicode.c: Warning cleanups
36258
36259 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36260
36261         * object.h, reflection.h: use the correct type instead of MonoObject.
36262
36263 2002-03-28  Martin Baulig  <martin@gnome.org>
36264
36265         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36266         (mono_debug_update_symbol_file): Initialize classes if necessary.
36267
36268 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36269
36270         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36271         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36272
36273 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36274
36275         * assembly.h: fix function prototype.
36276         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36277         * mono-endian.h: use const cast.
36278
36279 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36280
36281         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36282
36283 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36284
36285         * loader.c: don't assert when a typeref can't be loaded, give
36286         a chance to the runtime to trow an exception instead.
36287         * loader.h: fix warning.
36288
36289 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36290
36291         * class.c (mono_class_proxy_vtable): added proxy support
36292
36293 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36294
36295         * icall.c: removed last of PAL calls, added System.Environment
36296         * file-io.h, file-io.c: MonoIO implementation
36297         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36298
36299 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36300
36301         * appdomain.c: do not use the byte marker in ldstr table lookup.
36302         * debug-helpers.c: allow two ':' to separate class and method name.
36303         * object.c: allocate arrays bounds with the GC, too.
36304         * verify: add a few more checks.
36305
36306 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36307
36308         * reflection.c: output also literal strings. Allocate parameter data
36309         with GC_malloc() (thanks, Martin, for catching this!).
36310
36311 2002-03-26  Martin Baulig  <martin@gnome.org>
36312
36313         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36314         include the `this' offset in the `param_offsets'.
36315
36316 2002-03-25  Martin Baulig  <martin@gnome.org>
36317
36318         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36319         mono_debug_get_class() function to get the classes. Added new
36320         relocation types for arrays and strings.
36321         (mono_debug_get_class): New static function to search in all
36322         referenced assemblies for a metadata token.
36323
36324         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36325
36326 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36327
36328         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36329         hold gc-allocated objects. Make the string heap a stream like the
36330         others. Removed duplicated code when writing stream info.
36331         Added asserts to catch possible buffer overflows. Set the sorted map
36332         for tables that need sorting. Added some documentation.
36333
36334 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36335
36336         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36337         for interned strings and vtables.
36338
36339 2002-03-24  Martin Baulig  <martin@gnome.org>
36340
36341         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36342         it in the array since it was created with g_slist_prepend().
36343
36344 2002-03-24  Martin Baulig  <martin@gnome.org>
36345
36346         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36347         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36348         (mono_debug_method_from_token): Renamed to
36349         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36350         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36351
36352         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36353         relocation types.
36354
36355         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36356
36357 2002-03-24  Martin Baulig  <martin@gnome.org>
36358
36359         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36360         (mono_debug_method_from_token): New func.
36361
36362         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36363         New interncall, calls mono_debug_local_type_from_signature().
36364         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36365         calls mono_debug_method_from_token().
36366
36367 2002-03-23  Martin Baulig  <martin@gnome.org>
36368
36369         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36370         specifies the number of bytes to be converted, not the array size.
36371         Return the number of chars, not the number of bytes.
36372         (ves_icall_iconv_get_chars): The `byteCount' argument
36373         specifies the number of bytes to be converted, not the array size.
36374
36375 2002-03-23  Martin Baulig  <martin@gnome.org>
36376
36377         * reflection.h (MonoReflectionSigHelper): New type.
36378
36379         * reflection.c (mono_reflection_sighelper_get_signature_local),
36380         (mono_reflection_sighelper_get_signature_local): New functions.
36381
36382         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36383         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36384         interncalls.
36385
36386 2002-03-23  Martin Baulig  <martin@gnome.org>
36387
36388         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36389         is_writeable is set.
36390         (mono_raw_buffer_update): New function to write the modified map
36391         back to disk.
36392
36393         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36394
36395         * debug-symfile.c (mono_debug_update_symbol_file): Call
36396         mono_raw_buffer_update() when done writing.
36397
36398 2002-03-23  Martin Baulig  <martin@gnome.org>
36399
36400         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36401
36402         * debug-symfile.c: Added support for arguments and local variables.
36403
36404 2002-03-23  Dick Porter  <dick@ximian.com>
36405
36406         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36407         protected by ifdefs, hence breaking the w32 build.
36408
36409 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36410
36411         * object.c: implement is_interned() the right way.
36412
36413 2002-03-21  Martin Baulig  <martin@gnome.org>
36414
36415         * debug-symfile.[ch]: New files to handle debugging information
36416         files. There's also support to dynamically update these symbol
36417         files to include machine dependent information.
36418
36419 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36420
36421         * threads.c (mono_thread_create): new function to create thread
36422         from C
36423
36424 2002-03-20  Martin Baulig  <martin@gnome.org>
36425
36426         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36427         method is a constructor.
36428         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36429         points to ves_icall_InternalInvoke().
36430
36431 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36432
36433         * file-io.c: Flush shouldn't throw exceptions.
36434
36435 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36436
36437         * file-io.c: FileStream flush support; FileSetLength now
36438         restores file pointer.
36439
36440 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36441
36442         * class.c: set image for pointer classes.
36443
36444 2002/03/19  Nick Drochak <ndrochak@gol.com>
36445
36446         * sysmath.c: Forgot one.
36447
36448 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36449
36450         * sysmath.c: Avoid redefining existing names.
36451
36452 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36453
36454         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36455         handled by runtime as icall rather than dllimport from libm.so
36456         * file-io.c, file-io.h: fixed handle argument type.
36457
36458 2002-03-18  Dick Porter  <dick@ximian.com>
36459
36460         * reflection.c (mono_image_get_type_info): rename interface to
36461         iface, because of "#define interface struct" on windows.
36462
36463 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36464
36465         * class.c, class.h: rename and export mono_ptr_class_get().
36466         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36467         * reflection.c, reflection.h, icall.c: better/saner type name
36468         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36469         method signatures.
36470
36471 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36472
36473         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36474
36475         * icall.c (ves_icall_InternalInvoke): impl.
36476
36477 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36478
36479         * reflection.c: output the interface map table, too.
36480
36481 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36482
36483         * class.c (class_compute_field_layout): separate computation of 
36484         static field layout
36485
36486 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36487
36488         * icall.c: added System.Buffer support.
36489         * file-io.c: moved file icalls from PAL to FileStream.
36490
36491 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36492
36493         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36494
36495 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36496
36497         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36498
36499 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36500
36501         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36502
36503 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36504
36505         * debug-helpers.{c,h}: moved here from monograph some useful functions
36506         to locate a method by name/signature in a class or image. Included
36507         also a small and flexible IL disassembler.
36508
36509 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36510
36511         * reflection.c: fixup tokens in methods with small header size, too.
36512
36513 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36514
36515         * object.c (mono_string_to_utf8): remove assert(!error), instead
36516         print a warning. 
36517
36518 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36519
36520         * icall.c: update to the new mono_Array_class_get interface.
36521
36522 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36523
36524         * appdomain.c, object.c: Boehm-GC enable.
36525         * icall.c: make get_data_chunk() support split data requests.
36526         Ensure a class is initialized in more cases. Return only the first
36527         property found in GetProperties() or the compiler gets confused. 
36528         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36529         * reflection.h, reflection.c: add fixup mechanism for field and method
36530         tokens. Initialize assembly->typeref in a single place. Output
36531         properties after events. Support custom attributes for events, too.
36532         Typo fix for paramter custom attrs.
36533
36534 2002-03-07  Martin Baulig  <martin@gnome.org>
36535
36536         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36537
36538 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36539
36540         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36541
36542 2002-03-06  Martin Baulig  <martin@gnome.org>
36543
36544         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36545         non-zero lower bounds. See testcases #F10-#F13.
36546
36547 2002-03-05  Martin Baulig  <martin@gnome.org>
36548
36549         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36550
36551         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36552         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36553         here.
36554         (ves_icall_System_Array_SetValue): Likewise.
36555         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36556         as argument and does the actual work. This function is used when copying a
36557         multi-dimensional array.
36558         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36559         now do all the widening conversions of value types.
36560         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36561
36562 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36563
36564         * class.c: remove some magic numbers and use the smbolic names,
36565         instead. Added init_events() to load event info at class init time.
36566         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36567         and mono_metadata_methods_from_event().
36568         * reflection.h, reflection.c: added support for writing out the evnets
36569         related information.
36570
36571 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36572
36573         * reflection.h, icall.c: use a different method (GetInterfaces)
36574         to gather interface info and add isbyref, isprimitive and
36575         ispointer to the ves_icall_get_type_info() return value.
36576
36577 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36578
36579         * class.h: stared adding support for events.
36580         * icall.c: split find_members implementation. Added debug icall to get
36581         the address of an object.
36582         * reflection.c: handle TypeBuilders in mono_type_get_object().
36583
36584 2002-03-01  Martin Baulig  <martin@gnome.org>
36585
36586         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36587         ArgumentOutOfRangeException(), not an ArgumentException().
36588         (ves_icall_System_Array_GetLowerBound): Likewise.
36589         (ves_icall_System_Array_GetValue): Improved argument checking.
36590         (ves_icall_System_Array_SetValue): Improved argument checking.
36591
36592 2002-03-01  Martin Baulig  <martin@gnome.org>
36593
36594         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36595         called with invalid arguments rather than just dying with g_assert().
36596         (ves_icall_System_Array_SetValue): Likewise.
36597         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36598         raise a NotImplementedException instead.
36599         (ves_icall_System_Array_GetLength): Added argument checking.
36600         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36601
36602 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36603
36604         * object.h (mono_assert): new macros mono_assert and
36605         mono_assert_not_reached
36606
36607 2002-02-28  Martin Baulig  <martin@gnome.org>
36608
36609         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36610         and "System::String::IsInterned" to "System::String::_IsInterned".
36611
36612 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36613
36614         * icall.c: remove hacks for typebuilder. Added icall to create a
36615         modified type from a tybebuilder.
36616         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36617         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36618         to create a backing MonoClass for a TypeBuilder.
36619
36620 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36621
36622         * class.c, class.h: more refactoring of class init.
36623         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36624
36625 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36626
36627         * marshal.c, marshal.h: start of marshaling interface.
36628
36629 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36630
36631         * icall.c: fix order in assembly qualified name icall.
36632
36633 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36634
36635         * class.c: do not free str, since we store it in the hash table.
36636         * reflection.h: add label field to MonoILExceptionInfo.
36637         * reflection.c: handle references to more than one assembly. Handle
36638         case when there isn't a module created in the assembly.
36639
36640 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36641
36642         * class.c: Fix typo. Start refactoring of class init code.
36643
36644 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36645
36646         * appdomain.c: exit with 1 on error.
36647         * class.c: we already have the name in MonoClassField.
36648         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36649         MonoStreamHeader instead of an offset of image->raw_metadata.
36650
36651 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36652
36653         * appdomain.c (mono_init): Be even more descriptive about the error.
36654
36655 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36656
36657         * appdomain.c: give the user an informative message when corlib can't
36658         be loaded.
36659
36660 2002-02-26  Martin Baulig  <martin@gnome.org>
36661
36662         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36663         New icall to get the time zone data.
36664
36665 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36666
36667         * reflection.c: set virtual and raw size of section correctly.
36668         * threads.c: transfer domain information to newly created threads.
36669
36670 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36671
36672         * class.c: when instancing a class in a domain, load the default
36673         vaules for static fields from the constant table. Fix System.Enum to
36674         not be an enum.
36675         * icall.c: implement Object::GetType() internalcall. Implemented
36676         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36677         Fixed checking of binding flags in find_members().
36678         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36679         * reflection.c: handle enumerations when writing to the constant
36680         table. Use a different object cache for types.
36681
36682
36683 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36684
36685         * object.c (mono_object_isinst): fix for arrays
36686
36687         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36688
36689 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36690
36691         * object.c: don't use mprotect ()  and fix intern pool hash table
36692         lookup for big endian systems.
36693
36694 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36695
36696         * icall.c: change type_is_subtype_of () signature.
36697
36698 2002-02-21  Mark Crichton  <crichton@gimp.org>
36699
36700         * rand.c, rand.h: Added random number generator for
36701         System.Security.Cryptography classes.
36702
36703         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36704
36705         * icall.c: Added System.Security.Cryptography calls.
36706
36707 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36708
36709         * class.c, icall.c, metadata.c: better support for pointer types.
36710         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36711         * reflection.c: Add support for getting custom attrs for properties
36712         and simplify some code.
36713
36714 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36715
36716         * icall.c: change getToken () and add custom attribute GetBlob()helper
36717         method.
36718         * reflection.h: add custom attrs array to the reflection builder structures.
36719         * reflection.c: encode and emit custom attributes for all the relevant
36720         reflection objects. Cache fieldref and methodref tokens. Change
36721         mono_image_create_token() interface to take a MonoDynamicAssembly.
36722         More complete custom attributes decoder. Load custom attributes for
36723         Assembly, Field, Method and Constructor objects, too. Make the
36724         returned array an Attribute[] one, not object[]. Added
36725         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36726         custom attribute constructor.
36727
36728 2002-02-20  Dick Porter  <dick@ximian.com>
36729
36730         * icall.c:
36731         * rawbuffer.c:
36732         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36733         problem code out for now).
36734
36735 2002-02-19  Radek Doulik  <rodo@ximian.com>
36736
36737         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36738
36739 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36740
36741         * icall.c: register the GetCustomAttributes method.
36742         * object.c, object.h: add mono_string_new_len ().
36743         * reflection.h, reflection.c: added mono_runtime_invoke(),
36744         mono_install_runtime_invoke(). Added
36745         mono_reflection_get_custom_attrs () to load custom attributes and
36746         create the attribute objects.
36747
36748 2002-02-19  Dick Porter  <dick@ximian.com>
36749         * threads-dummy-types.c:
36750         * threads-dummy-types.h:
36751         * threads-dummy.c:
36752         * threads-dummy.h:
36753         * threads-pthread-types.c:
36754         * threads-pthread-types.h:
36755         * threads-pthread.c:
36756         * threads-pthread.h:  Deleted obsolete files
36757
36758 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36759
36760         * class.c (mono_class_vtable): runtime init the class when we
36761         allocate static class data.
36762
36763         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36764
36765         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36766         and String - but we will need generic marshalling support in the
36767         future. 
36768         (mono_init): set the domain name in a ms compatible way
36769
36770         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36771         String[].
36772
36773 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36774
36775         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36776         for sizes
36777
36778         * appdomain.c (mono_domain_unload): impl.
36779
36780 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36781
36782         * appdomain.c, object.c: fix intern pool implementation.
36783         * class.c: fix alignment code.
36784
36785 2002-02-16  Radek Doulik  <rodo@ximian.com>
36786
36787         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36788         and s2 > s1, just copy lower bytes to be compatible with little
36789         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36790         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36791
36792         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36793         force big_endian to be 1 for big endian machines 
36794         (ves_icall_iconv_new_decoder): ditto
36795
36796 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36797
36798         * socket-io.c (convert_sockopt_level_and_name): If the system
36799         doesn't define SOL_IP or SOL_TCP, get them by hand using
36800         getprotobyname() and caching the values (because this could be a
36801         slow operation).
36802         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36803         Use the appropriate struct when the system does support it. Ie,
36804         not all systems have struct ip_mreqn so use struct ip_mreq when
36805         appropriate.
36806
36807 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36808
36809         * reflection.c: handle finally clauses.
36810
36811 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36812
36813         * socket-io.c: use g_snprintf() instead of snprintf.
36814
36815 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36816
36817         * reflection.c (mono_param_get_objects): Cast second argument to
36818         mono_method_get_param_names to a const char** to silence the
36819         compiler warning.
36820
36821         * appdomain.c (mono_domain_assembly_open): Put parens around the
36822         truth statement in the for-loop.
36823
36824         * unicode.c (iconv_convert): Got rid of a compiler warning about
36825         int i being unused when the system has a new iconv.
36826         (iconv_get_length): Same.
36827
36828         * image.c (load_class_names): Cast the second argument to
36829         g_hash_table_insert() to char* to hush compiler warnings about the
36830         arg being a const.
36831         (mono_image_open): Same here.
36832
36833         * socket-io.c: Don't conditionally include sys/filio.h or
36834         sys/sockio.h here anymore since we now get them from
36835         io-layer/io-layer.h
36836         (inet_pton): If the system doesn't support inet_aton, implement
36837         using inet_addr and also #define INADDR_NONE if it isn't defined
36838         by the system.
36839
36840 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36841
36842         * metadata.c, metadata.h: added function to get packing and size info
36843         of a typedef.
36844         * reflection.h, reflection.c: handle field RVA data. Save info about
36845         the table layout if needed. Assign typedef indexes to all the types
36846         before dumping the info about them to avoid forward reference problems.
36847
36848 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36849
36850         * socket-io.c (convert_sockopt_level_and_name): ifdef
36851         SO_ACCEPTCONN because it is not defined on my system (old debian)
36852
36853 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36854
36855         * opcode.c: use stddef.h to get NULL.
36856
36857 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36858
36859         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36860         for FIONBIO, FIONREAD and SIOCATMARK.
36861         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36862         define INADDR_NONE and besides, inet_addr() is deprecated and
36863         should not be used. Use inet_pton() instead - it also has the
36864         added bonus that it can easily handle IPv6 addresses as well.
36865         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36866
36867 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36868
36869         * decimal.c: remove _MSC_VER conditional.
36870
36871 2002-02-13  Dick Porter  <dick@ximian.com>
36872
36873         * socket-io.c: 
36874         * icall.c: Internal calls for Blocking, Select, Shutdown,
36875         GetSocketOption and SetSocketOption
36876
36877 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36878
36879         * assembly.cs: better resolver: use it instead of some kludgy
36880         code.
36881
36882 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36883
36884         * reflection.c: the best way to speed-up the compiler is to avoid
36885         infinite loops.
36886
36887 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36888
36889         * class.c (mono_class_vtable): changed the object layout
36890         (obj->vtable->class). 
36891         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36892
36893 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36894
36895         * assembly.c: look for assemblies in the assembly dir, too.
36896
36897 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36898
36899         * class.c: fix thinko in mono_class_from_type().
36900
36901 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36902
36903         * exception.h, exception.c: added TypeLoadException.
36904         * object.h, object.c: added mono_array_clone ().
36905         * icall.c: handle throwOnError in AssemblyGetType().
36906         Added Array.Clone().
36907         * opcode.h, opcode.c: use a single value for the opcode val.
36908         Compile fix for non-gcc compilers.
36909
36910 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36911
36912         * opcodes.c, opcodes.h: export interesting info about opcodes.
36913
36914 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
36915
36916         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
36917         icalls. 
36918
36919         * class.c (class_compute_field_layout): set element_class for enums
36920         (mono_class_create_from_typedef): set element_class for normal classes
36921
36922         * icall.c (ves_icall_System_Enum_get_value): impl.
36923
36924         * class.c (mono_class_create_from_typedef): do not set valuetype
36925         flag for System.ValueType and System.Enum
36926
36927 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
36928
36929         * unicode.c (iconv_convert): fix big endian problem.
36930
36931 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36932
36933         * class.c: add asserts if we are ever going to scribble over memory.
36934         * socket-io.c: not all systems have AF_IRDA defined.
36935
36936 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
36937
36938         * class.c (class_compute_field_layout): do not consider static
36939         fields to compute alignment
36940
36941 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
36942
36943         * appdomain.c (mono_appdomain_get): impl.
36944         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
36945
36946 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36947
36948         * icall.c: ignore "file://" prefix when loading an assembly.
36949
36950 2002-01-23  Dick Porter  <dick@ximian.com>
36951
36952         * socket-io.c:
36953         * icall.c:
36954         * Makefile.am: Added socket support
36955
36956 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36957
36958         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
36959         code back.  This should return the assemblies that are loaded by
36960         the runtime on behalf of an application domain. 
36961
36962         The current implementation is still broken, it just returns every
36963         assembly loaded, but until we get real applications domain this
36964         will do.
36965
36966 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
36967
36968         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
36969         AppDomain object.
36970
36971 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36972
36973         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
36974         the mono_class_from_name lookup.
36975         (ves_icall_get_parameter_info): ditto.
36976         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
36977         method.
36978         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
36979
36980 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
36981
36982         * class.c: load also nested classes on class init.
36983         System.ValueType instance methods gets passed boxed
36984         values, unless methods in derived classed that get a pointer to the
36985         data.
36986         * icall.c: use better name parsing code in GetType().
36987         * image.c, image.h: add mono_image_loaded ().
36988         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
36989         * reflection.c, reflection.h: added mono_reflection_parse_type().
36990
36991 2002-01-22  Veronica De Santis <veron78@interfree.it>
36992
36993         * icall.c : Added mapping of internal calls for Manual and Auto reset events
36994         * threads.c : Added the implementation of internal calls for events
36995         * threads.h : Added prototypes of internal calls for events
36996         
36997 2002-01-21  Radek Doulik  <rodo@ximian.com>
36998
36999         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37000
37001 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37002
37003         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37004         (mono_class_value_size): use min_align
37005
37006 2002-01-20  Dick Porter  <dick@ximian.com>
37007
37008         * threads.h:
37009         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37010         so it compiles on w32.
37011
37012 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37013
37014         * metadata.c (mono_type_stack_size): impl.
37015
37016         * class.c (mono_class_get_field): impl. memberref token
37017
37018 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37019
37020         * icall.h : Added the internal calls mapping for CreateMutex_internal
37021                     and ReleaseMutex_internal.
37022         * threads.h : Added the prototype of mutexes internal calls.
37023         * threads.c : Added the implementations of mutexes internal calls.
37024
37025 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37026
37027         * metaparse.h: removed unused file.
37028         * reflection.c, reflection.h: added stream_data_align () function 
37029         to align data in streams and keep stream aligned. Add support for
37030         exception support in method headers.
37031
37032 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37033
37034         * unicode.c: make iconv_convert () return the number of bytess written
37035         in the output buffer.
37036
37037 2002-01-15  Dick Porter  <dick@ximian.com>
37038         * threads.c: Make the runtime's idea of infinite timeouts coincide
37039         with the class library's
37040
37041         Fix a particularly egregious bug in mono_thread_cleanup(). That
37042         code was so utterly bogus it must have been written on a Monday.
37043
37044 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37045
37046         * reflection.h: add subtypes field to TypeBuilder.
37047         * reflection.c: encode constants for literal fields.
37048         Handle subtypes. Fix user string token (and add a zero byte)
37049         at the end.
37050         
37051 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37052
37053         * class.c (mono_class_init): bug fix: assign slot numbers for
37054         abstract methods.
37055
37056 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37057
37058         * reflection.c: don't try to output a code RVA for abstract methods.
37059         Small fixes for method header format. Output parameter info to the
37060         ParamDef table. Save method overriding info to MethodImpl table.
37061         Fix property support. Allow typedef.extends to be a type in the
37062         building assembly.
37063         * verify.c: fix off-by-one error.
37064
37065 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37066
37067         * class.c: fix mono_class_from_mono_type () for szarray types.
37068         Remove unused cache check in mono_class_from_type_spec().
37069         * icall.c: *type_from_name () functions handle simple arrays and byref.
37070         * reflection.c: handle byref and szarray types. Handle methods without
37071         body (gets P/Invoke compilation working). Handle types and fields in
37072         get_token ().
37073         * reflection.h: add rank to MonoTypeInfo.
37074
37075 2002-01-10  Dick Porter  <dick@ximian.com>
37076
37077         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37078         internal calls
37079
37080 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37081
37082         * icall.c: initialize class in type_from_handle ().
37083         Loop also in parent classes for get_method ().
37084         * reflection.c: properly encode class and valuetype types.
37085         Start on encoding TypeBuilder types. Handle fieldrefs.
37086         Use correct length when registering a user string.
37087         Handle ConstructorBuilder and MonoMethod in get_token ().
37088         Make mono_type_get_object () aware of cached types.
37089         * object.c: back out change to mono_string_new ().
37090
37091 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37092         * object.c: mono_string_new should return a NULL when the string 
37093         passed in is NULL -- not try to deference it.
37094         
37095 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37096
37097         * icall.c: hack to make IsSubType work for TypeBuilders.
37098         * reflection.c: emit constructors before methods.
37099         Retrieve param names in mono_param_get_objects().
37100
37101 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37102
37103         * Makefile.am: fix list of headers and sources so automake 1.5
37104         doesn't complain. Removed \# at end of list.
37105
37106 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37107
37108         * reflection.c: get token for a method ref. Set return type of
37109         constructor to void.
37110         * loader.c: debug message.
37111         * class.c: typo fix.
37112
37113 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37114
37115         * icall.c: fix array init with rank > 1. FindMembers
37116         loops in parent class as well.
37117         * image.c: do not insert nested types in name cache.
37118         * reflection.c: warning fix.
37119         * reflection.h: add override method (for interface impl).
37120
37121 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37122
37123         * metadata.c: fix customattr decoding.
37124
37125 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37126
37127         * rawbuffer.cs: Added native Win32 implementation, avoids using
37128         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37129
37130 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37131
37132         * class.c: make the low-level routines handle the cache.
37133
37134 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37135
37136         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37137
37138 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37139
37140         * class.c: fix mono_array_element_size() for objects.
37141         * class.h, class.c: add properties to MonoClass and load them
37142         at init time.
37143         * icall.c: check with isinst() when assigning a value to an array
37144         instead of requiring the classes to match exactly.
37145         Implemented icall for System.Type::GetType().
37146         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37147         enums. Handle bindingflags when looking for methods and fields.
37148         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37149         and mono_metadata_methods_from_property().
37150         * reflection.h, reflection.c: added structures for propreties,
37151         parameters and enums. Implemented mono_property_get_object() and
37152         mono_param_get_objects().
37153
37154 2001-12-18  Dick Porter  <dick@ximian.com>
37155
37156         * file-io.c: Use mono_string_to_utf16() instead of
37157         mono_string_chars()
37158
37159         * object.c: Added mono_string_to_utf16(), which copies the non
37160         NULL-terminated MonoString into a new double-null-terminated
37161         buffer.
37162
37163 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37164
37165         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37166
37167 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37168
37169         * file-io.c: raise exceptions if handle is invalid.
37170
37171 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37172
37173         * assembly.c: yet another check for mscorlib.
37174         * class.c, class.h: load nesting info for classes.
37175         * icall.c: many new functions to support the Reflection classes.
37176         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37177         * reflection.h, reflection.c: mono_image_create_token(),
37178         mono_assembly_get_object(), mono_type_get_object(),
37179         mono_method_get_object(), mono_field_get_object(): methods to return
37180         objects that parallel the C representation of assemblies, types,
37181         methods, fields.
37182
37183 2001-12-11  Dick Porter  <dick@ximian.com>
37184
37185         * icall.c:
37186         * file-io.c: Internal calls for file IO.
37187
37188 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37189
37190         * tabledefs.h: missing FileAttributes.
37191         * verify.h, verify.c: use is_valid_string () to simplify and check for
37192         valid strings more correctly. Fix warnings and speeling.
37193         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37194         Check code: branches, maxstack, method calls.
37195
37196 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37197
37198         * object.c (mono_object_allocate): removed static, so that the jit
37199         can allocate value types.
37200
37201         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37202
37203 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37204
37205         * class.c: init enum types right away and register the
37206         token->MonoClass map in mono_class_create_from_typedef ().
37207         * verify.h, verify.c: first cut of the verifier.
37208         * pedump.c: add --verify switch to verify metadata tables.
37209         * tabledefs.h: add some missing enums.
37210
37211 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37212
37213         * class.c (mono_install_runtime_class_init): impl.
37214         (mono_class_init): renamed mono_class_metadata_init to
37215         mono_class_init, also removed the metadata_inited flag
37216
37217         * object.c (mono_object_isinst): use faster algorithm
37218
37219 2001-11-30  Radek Doulik  <rodo@ximian.com>
37220
37221         * mono-endian.h: reverted last change
37222         added function prototypes
37223
37224         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37225         add mono-endian.c back
37226
37227         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37228         for unaligned access, I've mistaked it with endianess. I am
37229         sorry.
37230         (mono_read16): fix reverted endianess
37231         (mono_read64): ditto
37232         (mono_read32): ditto
37233
37234 2001-11-30  Dick Porter  <dick@ximian.com>
37235
37236         * exception.c: Implement mono_exception_from_name()
37237
37238 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37239
37240         * metadata.h, metadata.c: remove params_size and locals_size and their
37241         calculation from the metadata code: they are only usefult to the
37242         interp.
37243
37244 2001-11-29  Radek Doulik  <rodo@ximian.com>
37245
37246         * object.c (mono_ldstr): swap bytes here, it's probably not the
37247         best place, but works for me now, I'll redo it once I know mono
37248         better, also note that I add PROT_WRITE and don't reset back, also
37249         note that it's only affects big endians, so x86 should be OK
37250
37251         * mono-endian.h (read16): use just glib macros for both endians
37252
37253         * mono-endian.c: removed as glib macros are used in in
37254         mono-endian.h so we don't need to care about endianess for read
37255         macros as glib does that for us already
37256
37257 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37258
37259         * class.h, class.h: take minimum alignment into consideration so
37260         that the fields of a class remain aligned also when in an array.
37261
37262 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37263
37264         * loader.h, loader.c: add mono_method_get_param_names().
37265         * class.c: 0-init class fields.
37266
37267 2001-11-26  Dick Porter  <dick@ximian.com>
37268
37269         * icall.c:
37270         * threads-types.h:
37271         * threads.c: New file that handles System.Threading on all platforms
37272
37273         * object.c: 
37274         * object.h: Remove the synchronisation struct from MonoObject,
37275         replace it with a pointer that gets initialised on demand
37276
37277         * Makefile.am: Replace all the system-specific threading code with
37278         a single file that uses the new wrapper library
37279
37280 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37281
37282         * class.c, class.h: add mono_install_trampoline() so that the runtime
37283         can register a function to create a trampoline: removes the ugly
37284         requirement that a runtime needed to export arch_create_jit_trampoline.
37285         * object.h, object.c: added mono_install_handler() so that the runtime
37286         can install an handler for exceptions generated in C code (with
37287         mono_raise_exception()). Added C struct for System.Delegate.
37288         * pedump.c: removed arch_create_jit_trampoline.
37289         * reflection.c: some cleanups to allow registering user strings and
37290         later getting a token for methodrefs and fieldrefs before the assembly
37291         is built.
37292         * row-indexes.h: updates and fixes from the new ECMA specs.
37293
37294 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37295
37296         * class.h, class.c: add enum_basetype field to MonoClass.
37297         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37298         to get index in the constant table reated to a field, param or
37299         property.
37300         * reflection.h, reflection.c: handle constructors. Set public-key and
37301         version number of the built assembly to 0.
37302         * row-indexes.h: update from new ECMA spec.
37303
37304 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37305
37306         * class.h, class.c: add a max_interface_id to MonoClass.
37307         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37308         since it's used to do that. Added mono_type_type_from_obj().
37309         Make GetType() return NULL instead of segfaulting if the type was not
37310         found. Handle simple arrays in assQualifiedName.
37311         * object.h: add a struct to represent an Exception.
37312         * reflection.c: output call convention in method signature.
37313         Add code to support P/Invoke methods and fixed offsets for fields.
37314
37315 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37316
37317         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37318         the value.
37319         * icall.c: use mono_array_addr instead of array->vector: fixes the
37320         reflection image writing.
37321         * reflection.c: init call convention byte to 0 in method signature.
37322         Encode the property signature. Don't output property-related methods
37323         twice. Really process the properties for a type (don't cast a field to
37324         a property, my mom always told me that).
37325         Fix 64 bit issues in pointer alignment in a different and more
37326         readable way.
37327
37328 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37329
37330         * loader.h: Removed type class from MonoDefaults, added monotype
37331
37332         * loader.c: Loaded MonoType, removed loading of Type
37333
37334         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37335         and fills in System.Type._impl with a RuntimeTypeHandle rather
37336         than the actual MonoClass *
37337
37338         (ves_icall_type_from_handle): change from type_class to
37339         monotype_class
37340
37341         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37342         implemented
37343
37344         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37345         implemented
37346
37347         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37348
37349         (ves_icall_System_Reflection_Assembly_GetType): implemented
37350
37351         (ves_icall_System_MonoType_assQualifiedName): implemented
37352
37353         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37354
37355 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37356
37357         * assembly.c (mono_assembly_open): Implement a cache for the
37358         assemblies. 
37359
37360         (mono_assembly_close): only destroy the assembly when the last
37361         reference is gone.
37362         
37363 2001-11-09  Dick Porter  <dick@ximian.com>
37364
37365         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37366
37367 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37368
37369         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37370
37371 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37372
37373         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37374         from Martin Weindel.
37375         * object.h: add mono_string_chars ().
37376
37377 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37378
37379         * reflection.c (build_compressed_metadata): Eliminates warnings
37380         and uses 64-bit clean code.
37381
37382         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37383         (mono_type_equal): Change signature to eliminate warnings.
37384
37385 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37386
37387         * icall.c, loader.c: remove the internalcall array constructors.
37388         Changes to match the new MonoArray structure.
37389         * object.h, object.c: an array object doesn't allocate an extra
37390         vector. Add mono_array_new_full () to create jagged arrays easily.
37391
37392 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37393
37394         * metadata.h, metadata.c: add mono_metadata_field_info () to
37395         retreive all the info about a field from vairous tables.
37396         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37397         * class.h, class.c: augment MonoClassField with more info.
37398         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37399         policy and load a field's RVA if needed.
37400
37401 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37402
37403         * class.c (mono_class_metadata_init): create a trampoline for all
37404         virtual functions instead of actually compiling them.
37405
37406 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37407
37408         * class.h, class.c: include name in MonoClassField.
37409         * class.c: fix fundamental type of System.Object and System.String.
37410         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37411         tokens in ldtoken.
37412         * icall.c: remove internalcalls for the Reflection stuff that is now
37413         done in C# code.
37414         * loader.c: mono_field_from_memberref () implementation.
37415         * mono-endian.c: thinko (s/struct/union/g).
37416         * object.c, object.h: make the mono_string_* prototypes actually use
37417         MonoString instead of MonoObject.
37418         * reflection.c, reflection.h: updates for changes in the reflection
37419         code in corlib: we use C structures that map to the actual C# classes.
37420         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37421         fat method header if needed and use the info from the ILGenerator for
37422         methods. Handle fields in types. Misc fixes.
37423
37424 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37425
37426         * class.c (mono_class_metadata_init): bug fix: always allocate
37427         space for static class data
37428
37429 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37430
37431         * class.c (mono_compute_relative_numbering): use relative
37432         numbering to support fast runtime type checks.
37433
37434 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37435
37436         * class.c (mono_class_create_from_typeref): added debugging output
37437         to print class name when MonoDummy is returned instead of real class
37438
37439 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37440
37441         * class.c (mono_class_metadata_init): interface offset table now
37442         contains pointers into the vtable - this is more efficient for the jit
37443
37444 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37445
37446         * class.c (mono_class_metadata_init): use a temporary vtable (the
37447         old algorithm only worked for the interpreter, but not for the jit)
37448
37449 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37450
37451         * loader.c (method_from_memberref): use mono_class_get to get the
37452         class of an array instead of using System.Array directly.
37453         (mono_get_method): also add MEMBERREF methods to the method cache
37454         which usefull for arrays.
37455
37456 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37457
37458         * pedump.c (arch_compile_method): added to compute vtable entry
37459
37460         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37461         number of interfaces.
37462         
37463         * class.h: merged MonoArrayClass into MonoClass
37464
37465         * class.c (mono_class_create_from_typedef): compute the vtable size and
37466         allocate space to include the vtable inside MonoClass
37467         (mono_class_metadata_init): initialize the vtable
37468
37469 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37470
37471         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37472         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37473         * image.c: endian fixes by Laurent Rioux.
37474         * object.h, object.c: rename MonoStringObject to MonoString and
37475         MonoArrayObject to MonoArray. Change some function names to conform to
37476         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37477         guint16* as first argument, so don't use char*.
37478         Provide macros to do the interesting things on arrays in a portable way.
37479         * threads-pthread.c: updates for the API changes and #include <sched.h>
37480         (required for sched_yield()).
37481         * icall.c: updates for the API changes above.
37482         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37483         platforms that need them.
37484
37485 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37486
37487         * class.c: set the correct type for all the fundamental
37488         type when loading the class.
37489
37490 2001-10-05  Dick Porter  <dick@ximian.com>
37491
37492         * threads-pthread.c (pthread_mutex_timedlock): Simple
37493         compatibility version for C libraries that lack this call.
37494
37495 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37496
37497         * class.c: MonoTypes stored in MonoClass are stored as
37498         fundamental MonoTypes when the class represents a
37499         fundamental type (System.Int32, ...).
37500         The TypeHandle return by ldtoken is a MonoType*.
37501         * icall.c: ves_icall_get_data_chunk () write out all the
37502         PE/COFF stuff. Implement ves_icall_define_method (),
37503         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37504         * image.c: properly skip unknown streams.
37505         * loader.h, loader.c: add type_class to mono_defaults.
37506         * metadata.c, metadata.h: export compute_size () as
37507         mono_metadata_compute_size () with a better interface.
37508         Typo and C&P fixes.
37509         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37510         * reflection.c, reflection.h: many cleanups, fixes, output method
37511         signatures and headers, typedef and typeref info, compress the metadata
37512         tables, output all the heap streams, cli header etc.
37513         * row-indexes.h: typo fixes.
37514
37515 2001-10-04  Dick Porter  <dick@ximian.com>
37516
37517         * object.h: Add a synchronisation mutex struct to MonoObject
37518
37519         * object.c (mono_new_object): Initialise the object
37520         synchronisation mutexes
37521
37522         * icall.c: System.Threading.Monitor internal calls
37523         
37524         * threads-pthread.h:
37525         * threads-pthread.c: System.Threading.Monitor internal calls
37526
37527         * threads-types.h: New file, includes the system-specific thread
37528         structures
37529         
37530         * threads-pthread-types.h:
37531         * threads-pthread-types.c: New files, handle pthread-specific
37532         synchronisation types
37533
37534         * threads-dummy-types.h: 
37535         * threads-dummy-types.c: New files of dummy support for
37536         thread-specific types
37537
37538         * metadata.c:
37539         * image.c:
37540         * pedump.c: include mono-endian.h not endian.h
37541         
37542         * Makefile.am: More threads files.
37543         Name mono-endian.h not endian.h
37544
37545 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37546
37547         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37548         stuff and implement a few more bits.
37549         * icall.c: a field needs to be dereferenced twice. Do not use the same
37550         name for two variables in the same scope.
37551         * image.c, image.h: cleanups.
37552
37553 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37554
37555         * class.c (mono_class_metadata_init): bug fix: compute the right size
37556
37557 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37558
37559         * icall.c: implemented some of the Reflection internalcalls.
37560         * image.c, image.h: start writing out the PE/COFF image.
37561         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37562         that does the reverse than decode_blob_size ().
37563         * object.c: use mono_metadata_encode_value (). Move here
37564         temporary implementation of mono_string_to_utf8 ().
37565         * rawbuffer.c: make malloc_map static.
37566
37567 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37568
37569         * metadata.c: fix type comparison for arrays.
37570         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37571         Added a couple of new classes to monodefaults.
37572         * icall.c: added a couple of Reflection-related internalcalls.
37573         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37574         Added a byval_arg MonoType to MonoClass.
37575
37576 2001-09-28  Dick Porter  <dick@ximian.com>
37577
37578         * icall.c:
37579         * threads-pthread.h: 
37580         * threads-pthread.c: Implemented internal calls for
37581         LocalDataStoreSlot operations.  Applied mutexes around all shared
37582         data.  Reworked the thread creation and Start() operations to
37583         avoid a race condition.
37584         
37585         * threads-dummy.h:
37586         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37587
37588 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37589
37590         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37591
37592 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37593
37594         * class.c, loader.c: warn and return NULL instead of erroring out.
37595         * icall.c: added System.AppDomain::getCurDomain().
37596         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37597
37598 2001-09-25  Dick Porter  <dick@ximian.com>
37599
37600         * threads-pthread.h:
37601         * threads-pthread.c: Implemented timed thread joining and added
37602         System.Threading.Thread::Join_internal internal call
37603
37604         * icall.c: Added System.Threading.Thread::Join_internal internal call
37605
37606         * threads-dummy.h:
37607         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37608
37609 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37610
37611         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37612         mono_string_intern () to implement the semantics of the ldstr opcode
37613         and the interning of System.Strings.
37614         * icall.c: provide hooks to make String::IsIntern and String::Intern
37615         internalcalls.
37616
37617 2001-09-23  Dick Porter  <dick@ximian.com>
37618
37619         * threads-dummy.c: 
37620         * threads-dummy.h: New files of dummy threading routines
37621
37622         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37623         support code based on system specifics
37624
37625         Rename PTHREAD_LIBS to THREAD_LIBS
37626         
37627 2001-09-23  Dick Porter  <dick@ximian.com>
37628
37629         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37630         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37631         internal calls.
37632         (mono_thread_init): Set up a Thread object instance to return when
37633         the main thread calls Thread.CurrentThread
37634         (mono_thread_cleanup): Wait for all subthreads to exit
37635
37636         * icall.c: New internal calls for System.Threading.Thread::Sleep
37637         (including Schedule) and CurrentThread
37638
37639         * threads.h: New file, to insulate thread-specific stuff from the
37640         rest of the code
37641
37642 2001-09-21  Dick Porter  <dick@ximian.com>
37643
37644         * threads-pthread.h: 
37645         * threads-pthread.c: New file, for handling pthreads-style
37646         threading support.  Start() now starts a new thread and executes
37647         the ThreadStart delegate instance.
37648
37649         * icall.c: Added the internalcall for
37650         System.Threading.Thread::Start_internal
37651
37652         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37653
37654 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37655
37656         * loader.c: work around the different signatures for delegates
37657         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37658
37659 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37660
37661         * class.h, class.c: add mono_class_get_field_from_name ().
37662         * *: Fix C comments and other ANSI C issues.
37663
37664 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37665
37666         * endian.h, assembly.c: fix some endianness issues.
37667
37668 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37669
37670         * loader.h, load.c: add delegate_class to mono_defaults.
37671         Handle runtime provided methods in mono_get_method ().
37672
37673 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37674
37675         * loader.c (mono_get_method): use pinvoke for internal call
37676
37677         * icall.c: use pinvoke for internal call
37678
37679         * loader.c (method_from_memberref): set the method name
37680
37681 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37682
37683         * metadata.c: help the compiler generate better code for
37684         mono_class_from_mono_type ().
37685
37686 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37687
37688         * class.c (mono_class_metadata_init): delayed computing of the
37689         class size to mono_class_metadata_init ()
37690
37691 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37692
37693         * class.c, class.h: add an interfaces member to MonoClass.
37694         * image.c, image.h: add assembly_name field to MonoImage
37695         from the assembly table.
37696         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37697
37698 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37699
37700         * class.c: Handle Array in mono_class_from_mono_type ().
37701         * metadata.c, pedump.c: some endian fixes.
37702
37703 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37704
37705         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37706         * metadata.c: fix small problem introduced with the latest commit.
37707
37708 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37709
37710         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37711         We don't need a MonoMetadata pointer anymore to compare signatures in
37712         mono_metadata_signature_equal (), update callers.
37713         Reduced memory usage an number of allocations for MonoMethodHeader and
37714         MonoMethodSignature.
37715
37716 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37717
37718         * metadata.c: added compare for szarray.
37719
37720 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37721
37722         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37723         and add a couple more types to it and mono_defaults. Give an hint on
37724         classes that need implementing in our corlib and are referenced
37725         in mscorlib.
37726
37727 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37728
37729         * class.h, class.c: keep track if a class is also an Enum.
37730         * loader.c: Implement a couple more types for use in libffi
37731         marshalling. Gives better diagnostics when failing to dlopen
37732         a library. Set method->klass for P/Invoke methods, too.
37733
37734 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37735
37736         * class.c, class.h: add a MonoType this_arg to MonoClass that
37737         represents a pointer to an object of the class' type that
37738         can be used by the interpreter and later the type cache.
37739         Add best guess alignment info for valuetype objects.
37740
37741 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37742
37743         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37744         into MonoType: one less level of indirection and allocation and
37745         simplifies quite a bit of code. Added cache for MonoTypes that are
37746         used frequently, so that we don't need to allocate them all the time.
37747
37748 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37749
37750         * class.c (mono_class_create_from_typedef): System.Enum is also a
37751         value type, although it does not derive from System.ValueType
37752         (maybe a bug in the ms compiler?)
37753
37754         * metadata.c (mono_type_size): return the right size for value types
37755
37756         * loader.c (mono_get_method): only initialize method header if not abstract
37757
37758         * class.c (mono_class_from_mono_type): use mono_default values. 
37759
37760 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37761
37762         * *: use MonoClass pointers instead of <type_tokens>
37763         
37764         * class.h: new flag: metadata_inited.
37765
37766         * class.c (mono_class_metadata_init): impl.
37767         (mono_class_instance_size): impl.
37768         (mono_class_data_size): impl.
37769
37770 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37771
37772         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37773         MonoClass now has the name and name_space fields. 
37774         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37775         mono_get_method () takes and optional MonoClass as argument.
37776         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37777         instead that takes advantage of a map from class names to typedef
37778         tokens in MonoImage.
37779
37780 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37781
37782         * metadata.c: zero is not a valid alignment boundary.
37783         Merge MONO_TYPE_VOID in default decoding code.
37784
37785 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37786
37787         * image.h: merged MonoMetadata into MonoImage
37788
37789         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37790         identify the type of elements.
37791
37792 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37793
37794         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37795         * cil-coff.h: split MonoMSDOSHeader and add size info.
37796         * image.c: add some consistency checks.
37797         * metadata.c: fix row size computation: one programmer
37798         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37799         add explanation for the locator routine.
37800         Fix decoding of size in method header.
37801         
37802 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37803
37804         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37805         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37806         function from gnome-libs.  This uses the right path separator
37807         based on the OS, and also works around a bug in some systems where
37808         a double slash is not allowed. 
37809         (default_assembly_name_resolver): Use g_concat_dir_and_file
37810         (mono_assembly_open): ditto.
37811
37812 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37813
37814         * metadata.c (mono_metadata_signature_equal): impl.
37815
37816         * *: void is now a realy MonoType (instead of using NULL)
37817         
37818         * metadata.c (do_mono_metadata_parse_type): use
37819         mono_metadata_parse_type to parse void value.
37820
37821 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37822
37823         * metadata.c, metadata.h: in the signature and method header store
37824         only the space required for holding the loca vars and incoming arguments.
37825
37826 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37827
37828         * metadata.c (do_mono_metadata_parse_type): treat void like any
37829         other type (instead of assigning NULL);
37830
37831 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37832
37833         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37834
37835 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37836
37837         * image.c (do_mono_image_open): added a cache for arrays.
37838
37839 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37840
37841         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37842         decode a single column from a row in a metadata table and changes
37843         to take advantage of it in the typedef locator (gives a nice speed up).
37844         Store offset info for function params.
37845
37846 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37847
37848         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37849
37850 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37851
37852         * assembly.c: how could mono_assembly_close () had ever worked?
37853         * metadata.c, metadata.h: provide offset info for local vars.
37854         Implement mono_type_size () to take care of alignment as well
37855         as size (it was mono_field_type_size in cli/class.c before).
37856
37857 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37858
37859         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37860
37861         * assembly.h (CORLIB_NAME): set to corlib.dll
37862
37863         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37864
37865 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37866
37867         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37868         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37869         tokentype.h: massive namespace cleanup.
37870
37871 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37872
37873         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37874
37875 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37876
37877         * metadata.c (mono_metadata_free_type): added check for type !=
37878         NULL (void) before calling mono_metadata_free_type()
37879
37880 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37881
37882         * metadata.h, row_indexes.h: added header with enumerations to use
37883         to index in the columns from tables in metadata and to decode coded
37884         tokens: we should start using this instead of embedding magic numbers
37885         all over the code.
37886
37887 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37888
37889         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37890         Move metadata_t info from cli_image_info_t to MonoImage, where
37891         it's easily accessible. Changed all the uses accordingly.
37892         Added the method and class caches to MonoImage.
37893         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37894         and mono_metadata_decode_value () signature to be more consistent
37895         with the other parse functions (and simplify code). Taken advantage
37896         of zero-length array allocation with GCC. Removed reduntant (and
37897         wrong) MonoFieldType struct and use MonoParam instead. Changed
37898         mono_metadata_parse_field_type () to use common code for parsing.
37899         Added mono_metadata_typedef_from_field () and
37900         mono_metadata_typedef_from_method () to lookup a typedef index from a
37901         field or method token.
37902         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37903
37904 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37905
37906         * metadata.c (mono_metadata_parse_field_type): Implement. 
37907         (do_mono_metadata_parse_type): Split engine from
37908         mono_metadata_parse_type, so that we can create smaller structures
37909         for things that just have one pointer to the MonoType (look at
37910         the MonoFieldType)
37911
37912 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
37913
37914         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
37915         as Jan Gray found out, it is incorrect. 
37916
37917 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
37918
37919         * assembly.c: Implement asssembly loading.  This loads an image
37920         and loads all the referenced assemblies.  Come to think of it, we
37921         could always do lazy loading of the assemblies. 
37922
37923         * image.c (mono_image_open): Keep loaded images in a hashtable.
37924
37925         * image.h (MonoImage): Add reference count.
37926
37927 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
37928
37929         * assembly.c (mono_assembly_open): Keep track of the file name in
37930         case the assembly has no ASSEMBLY table.
37931
37932         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
37933         from get.c here.
37934
37935 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
37936
37937         * metadata.c, metadata.h: decode local vars in method header
37938         parse function. Change callers accordingly.
37939
37940 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
37941
37942         * metadata.h, cil-coff.h: protect against multiple inclusion.
37943         Added some new structures to hold information decoded from metadata:
37944         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
37945         and relevant decoding/free functions.
37946         * metadata.c: implement decoding functions. Add warning for out of bounds
37947         index in mono_metadata_locate(). Implement mono_get_method () to retreive
37948         all the info about a method signature and invocation. Remove check on
37949         uninitialized local var in parse_mh() and fix memory leak.
37950
37951 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
37952
37953         * metadata.h: More macros.
37954
37955         * tokentype.h: New file.
37956
37957 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
37958
37959         * assembly.c: added a consistency check and initialize
37960         some structures with g_new0().
37961         * metadata.c: fixed a couple more bugs in table size computation
37962         and add other checks for out-of bound access to metadata.
37963
37964 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
37965
37966         * metatada.c: fix bugs computing table sizes. Spew a
37967         warning when index in string heap is out of bounds.
37968
37969 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
37970
37971         * metadata.h: Add a couple of macros to manipulate tokens. 
37972
37973 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37974
37975         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
37976         cli_section_tables).
37977
37978 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
37979
37980         * metadata.c (mono_metadata_user_string): New function, provides
37981         access to the UserString heap. 
37982
37983 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
37984
37985         * metadata.c: Add inline documentation.
37986
37987 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
37988
37989         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
37990         files. 
37991
37992 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
37993
37994         * typeattr.h: New file, TypeAttribute flags. 
37995
37996 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
37997
37998         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
37999         mono_assembly_ensure_section): Section loading code.
38000         (load_section_tables): Load the sections.
38001
38002         * mono/metadata/metadata.c (mono_metadata_locate_token,
38003         mono_metadata_locate): Functions to locate the information
38004         definition given a token or a table and an index.
38005         (mono_metadata_compute_table_bases): New.
38006         (compute_size): New function to compute the sizes of the various
38007         tables.
38008
38009         * mono/metadata/metadata.h: Finish listing the different index
38010         types. 
38011
38012         * mono/metadata/pedump.c: Improve to dump new information.
38013
38014 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38015
38016         * mono/metadata/metadata.c: Entered all the tables matching
38017         Beta2. 
38018
38019         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2